bug#7333: [PATCH] {maint} Fix a bug in variable concatanation with `+='.
* Glenn Morris wrote on Tue, Nov 09, 2010 at 08:34:23AM CET: Ralf Wildenhues wrote (on Mon, 8 Nov 2010 at 22:46 +0100): The commands above (Bcc:ed to control at debbugs) should merge and close both bugs. The (first) close didn't work, I think it was because your version number started with a `v', not a digit. The second close worked. Can that be fixed in debbugs? I would love to have both 'git describe' output as well as commit SHA1 strings be acceptable as version strings. git describe output starts with v but then contrains fairly much arbitrary characters as put in the last signed git tag. SHA1's are easier, and if the other is a problem then those would still be better than no version information, I guess. Thanks, Ralf
bug#7333: [PATCH] {maint} Fix a bug in variable concatanation with `+='.
Actually, that was probably too glib a response. The version number information is probably used in other places, and needs to be sortable so that the fixed/found commands can work. So I don't think arbitrary version strings can work. You could use the date of a commit perhaps.
bug#7333: [PATCH] {maint} Fix a bug in variable concatanation with `+='.
* Glenn Morris wrote on Wed, Nov 10, 2010 at 09:46:01PM CET: Actually, that was probably too glib a response. The version number information is probably used in other places, and needs to be sortable so that the fixed/found commands can work. So I don't think arbitrary version strings can work. You could use the date of a commit perhaps. If that's the case, let's I'd say just live with it. Anyway better to send mail to NNN-done, where one can include arbitrary detail. Thanks for checking, Ralf
Re: More problems with `make -n' in automake-generated rules.
* Ralf Wildenhues wrote on Mon, Nov 01, 2010 at 10:18:55PM CET: Fix and document rules to not touch the tree with `make -n'. * doc/automake.texi (Multiple Outputs): Document the problem of modifications during dry-run execution, propose solution. * NEWS: Update. * automake.in (lang_vala_finish_target): Split recipe so the stamp file is not removed with GNU `make -n'. (lang_yacc_target_hook): Separate removal of parser output file and header remaking. * lib/am/lisp.am ($(am__ELCFILES)): Determine whether -n was passed to make, take care not to remove any files in that case. * lib/am/remake-hdr.am (%CONFIG_H%): Separate removal of %STAMP% file from induced remaking of config header. * tests/autohdrdry.test, tests/lispdry.test, tests/yaccdry.test: New tests. * tests/Makefile.am (TESTS): Update. This test needed a fixup, as yaccdry requires nonempty $YACC. Found by the NixOS Hydra, kudos to them! http://hydra.nixos.org/build/741504 The test could probably also be written without requiring bison (make -t or so), but I'd prefer to have the setup be realistic, that's more important than having coverage on every system out there. Pushed to maint. Thanks, Ralf Fix yaccdry.test failure: require bison. * tests/yaccdry.test: Require bison. Found by NixOS Hydra. diff --git a/tests/yaccdry.test b/tests/yaccdry.test index d11d3fe..d2e7632 100755 --- a/tests/yaccdry.test +++ b/tests/yaccdry.test @@ -16,6 +16,7 @@ # Removal recovery rules for headers should not remove files with `make -n'. +required=bison . ./defs || Exit 1 set -e
Re: [PATCH 2/7] Tests defs: prefer $curdir over `pwd`.
* Stefano Lattarini wrote on Sun, Nov 07, 2010 at 04:16:53PM CET: * tests/defs.in: We already save the value of `pwd` in $curdir early in the file, so there no need to recalculate it later, when the current working directory is not changed. OK. Thanks, Ralf
Re: [PATCH 4/7] Tests defs: do not print message Running test $0 anymore.
* Stefano Lattarini wrote on Sun, Nov 07, 2010 at 04:18:53PM CET: * tests/defs.in: Printing the message === Running test $0 at the beginning of each tests made sense when Automake used the old test-driver, which sent all the output directly to stdout/stderr. Now that the parallel test-driver is used, which saves output of each test in its correspoding log file, that old message is just useless noise. OK. It's not completely noise, as it still served as a guide to the eye when the ./defs preparation code ended and the actual test code started (but you broke that in an earlier patch in this patch series), when the test was run with 'sh -x ./test'. Thanks, Ralf
Re: [PATCH 3/7] Tests defs: rename $curdir - $testbuilddir
* Stefano Lattarini wrote on Sun, Nov 07, 2010 at 04:17:48PM CET: * tests/defs.in: Rename $curdir to $testbuildir, for clarity and consistency with $testsrcdir and $top_testsrcdir. OK. Thanks, Ralf
Re: [PATCH 5/7] Tests defs: $testsbuilddir is now AC_SUBST'ed.
* Stefano Lattarini wrote on Sun, Nov 07, 2010 at 04:19:55PM CET: * tests/defs.in ($testsbuilddir): Initialize statically with the value AC_SUBST'ed from @abs_builddir@, rather than dinamically with the value returned by `pwd`. dynamically You could also just write instead: * tests/defs.in ($testsbuilddir): Substitute from @abs_build...@. Add sanity check on $testsbuilddir, similar to those on $testsrcdir and $top_testsrcdir. OK. Thanks, Ralf
Re: [PATCH 6/7] Tests defs: new AC_SUBST'ed variable $top_testsbuilddir.
* Stefano Lattarini wrote on Sun, Nov 07, 2010 at 04:21:09PM CET: * tests/defs.in ($top_testsbuilddir): New variable, initialized with the value AC_SUBST'ed from @abs_top_build...@. Mostly for completeness and consistency with $testsrcdir and $top_testsrcdir. Let's add this only when we need it. Do we? Thanks, Ralf
Re: [PATCH 1/7] Tests defs: various reorderings, some improvements.
* Stefano Lattarini wrote on Sun, Nov 07, 2010 at 04:00:47PM CET: This is basically just a reordering patch, which should organize the code in `tests/defs.in' in a clearer and more rational way. * tests/defs.in: Reordered various snippets of code in a clearer way. Improved a couple of error messages, by reporting the test name in them. Some comments added. I cannot review this patch. Either just reordering, or just other changes, but not both in one patch please. Thanks, Ralf
Re: [PATCH 7/7] Tests defs: move static definitions in a new file `minidefs'.
* Stefano Lattarini wrote on Sun, Nov 07, 2010 at 04:29:27PM CET: Tests defs: move static definitions in a new file `minidefs'. minidefs is not a good name, as it is bound to not stay mini. How about defs-static or defs-init? (And yes, I'm shying away from renaming defs, that's just too big and churny a change for such a slight misnomer.) The new file is designed to be idempotent w.r.t. mutiple inclusions, s/designed/meant/, no? I don't see a design document. ;- and this will help us to cope better with e.g. generated tests and tests with complex setups, scaffoldings or indirections. What is scaffoldings? I think the first line of the summary text was completely sufficient. * tests/defs.in: Removed, it's contents split among ... its * tests/defs: ... this new file ... * tests/minidefs.in: ... and this new file. You need to mention the remaining changes here; e.g., that defs sources the other file now. * configure.ac (AC_CONFIG_FILES): Remove `tests/defs', add `tests/minidefs'. * configure.ac (AC_CONFIG_LINKS): Add `tests/defs'. * tests/Makefile.am ($(parallel_tests)): Update. ($(instspc_tests)): Likewise. * tests/.gitignore: Update. OK with those changes. Thanks, Ralf
Re: [PATCH 5/5] Tests defs: improve messages for skipped tests.
* Stefano Lattarini wrote on Wed, Sep 08, 2010 at 08:57:19PM CEST: * tests/defs.in: Give meaningful messages about the reasons of a test skip; this is especially useful as this file is run without verbose xtraces on. Related reorderings in the code and new comments. What happened to this patch in the new, rebased patch series? Was it already subsumed in some other series? Thanks, Ralf --- a/tests/defs.in +++ b/tests/defs.in @@ -261,6 +261,7 @@ do export GCJ echo $me: running $GCJ --version ( $GCJ --version ) || exit 77 + echo $me: running $GCJ -v ( $GCJ -v ) || exit 77 ;; g++) @@ -297,11 +298,16 @@ do (echo foo $priv_check_temp) /dev/null 21 overwrite_status=$? rm -f $priv_check_temp - test $overwrite_status = 0 exit 77 + if test $overwrite_status = 0; then +echo $me: this test shouldn't be run as root +exit 77 + fi ;; perl-threads) - # Skip with Devel::Cover: it cannot cope with threads. - test $WANT_NO_THREADS = yes exit 77 + if test x$WANT_NO_THREADS = xyes; then +echo $me: skip with Devel::Cover: it cannot cope with threads. +exit 77 + fi ;; python) # Python doesn't support --version, it has -V @@ -317,7 +323,10 @@ do (: $ro_dir_temp/probe) /dev/null 2/dev/null create_status=$? rm -rf $ro_dir_temp - test $create_status = 0 exit 77 + if test $create_status = 0; then +echo $me: support of read-only directories is required +exit 77 + fi ;; rst2html) # Try the variants that are tried in check.am. @@ -326,6 +335,7 @@ do echo $me: running $r2h --version $r2h --version break 2 done +echo $me: no proper rst2html program found exit 77 done ;; @@ -333,13 +343,16 @@ do # DejaGnu's runtest program. We rely on being able to specify # the program on the runtest command-line. This requires # DejaGnu 1.4.3 or later. - echo $me: running runtest --version + echo $me: running runtest SOMEPROGRAM=someprogram --version (runtest SOMEPROGRAM=someprogram --version) || exit 77 ;; tex) # No all versions of Tex support `--version', so we use # a configure check. - test -n @TEX@ || exit 77 + if test x'@TEX@' = x; then +echo $me: TeX is required, but it wasn't found by configure +exit 77 + fi ;; texi2dvi-o) # Texi2dvi supports `-o' since Texinfo 4.1. @@ -354,6 +367,37 @@ do esac done +# Using just `$testbuilddir' for the check here is ok, since the +# further temporary subdirectory where the test will be run is +# ensured not to contain any whitespace character. +case $testbuilddir in + *\ *|*\*) +case $required in + *' libtool '* | *' libtoolize '* ) +echo $me: libtool/libtoolized cannot cope correctly +echo $me: with spaces in the build tree. +exit 77 +;; +esac +;; +esac + +# This test is necessary, although Automake's configure script bails out +# when $srcdir contains spaces. This is because $testsrcdir is in not +# configure-time $srcdir, but is instead configure-time $abs_srcdir, and +# that is allowed to contain spaces. +case $testsrcdir in + *\ * |*\ *) +case $required in + *' libtool '* | *' libtoolize '* | *' gettext '* ) +echo $me: our testsuite setup cannot cope correctly with spaces +echo $me: in the source tree for libtool/gettext tests. +exit 77 +;; + esac + ;; +esac + # We might need extra macros, e.g., from Libtool or Gettext. # Find them on the system. # Use `-I $top_testsrcdir/m4' in addition to `--acdir=$top_testsrcdir/m4', @@ -384,16 +428,20 @@ case $required in fi done case $required in - *' libtool '* | *' libtoolize '* ) test $libtool_found = yes || exit 77;; - *' gettext '* ) test $gettext_found = yes || exit 77;; -esac -# Libtool cannot cope with spaces in the build tree. Our testsuite setup -# cannot cope with spaces in the source tree name for Libtool and gettext -# tests. Using just `$testbuilddir' for the check here is ok, since the -# furter temporary subdirectory where the test will be run is ensured not -# to contain any space. -case $testsrcdir,$testbuilddir in - *\ * | *\ *) exit 77;; + *' libtool '*|*' libtoolize '*) +if test x$libtool_found != xyes; then + echo $me: libtool/libtoolize is required, but libtool.m4 wasn't + echo $me: found in directories $aclocaldir $extra_includes + exit 77 +fi +;; + *' gettext '*) +if test x$gettext_found != xyes; then + echo $me: gettext is required,
Re: [PATCH 6/7] Tests defs: new AC_SUBST'ed variable $top_testsbuilddir.
On Wednesday 10 November 2010, Ralf Wildenhues wrote: * Stefano Lattarini wrote on Sun, Nov 07, 2010 at 04:21:09PM CET: * tests/defs.in ($top_testsbuilddir): New variable, initialized with the value AC_SUBST'ed from @abs_top_build...@. Mostly for completeness and consistency with $testsrcdir and $top_testsrcdir. Let's add this only when we need it. Do we? Not at the moment, but I thought it would be nice to have it anyway, if only for consistency/simmetry reasons. But I'm OK with removing it, too, if you insist. Do you? Thanks, Stefano
Re: [PATCH 1/7] Tests defs: various reorderings, some improvements.
On Wednesday 10 November 2010, Ralf Wildenhues wrote: * Stefano Lattarini wrote on Sun, Nov 07, 2010 at 04:00:47PM CET: This is basically just a reordering patch, which should organize the code in `tests/defs.in' in a clearer and more rational way. * tests/defs.in: Reordered various snippets of code in a clearer way. Improved a couple of error messages, by reporting the test name in them. Some comments added. I cannot review this patch. Either just reordering, or just other changes, but not both in one patch please. Well, the patch is almost just code reordering, with the very minor exceptions that: 1. in the older version, some error messages could be printed before `$me' was defined, so they couldn't use it; now `$me' is defined early, so those error messages has been amended to include it; 2. in the older version, a test might be skipped from within code in `tests/defs' *after* the exit trap was installed, so a call to Exit 77 was in order; now the skips only happens before the installation of the exit trap, so exit 77 is enough; 3. some comments has been slighty adjusted and extended, because the act of reordering the code suggested them to me. Anyway, none of these additional minor changes is really required to make the new `tests/defs.in' work correctly, so I agree that they should have been done in follow-up patches. I've respin and split my patch to do so (see the attached four patches). Thanks and sorry for the noise, Stefano From d402d06c01d3f065ce7d2c0d05885d1873dac410 Mon Sep 17 00:00:00 2001 From: Stefano Lattarini stefano.lattar...@gmail.com Date: Wed, 2 Jun 2010 22:25:25 +0200 Subject: [PATCH 1/4] Tests defs: various reorderings. * tests/defs.in: Reordered various snippets of code in a clearer way. --- ChangeLog |6 + tests/defs.in | 347 - 2 files changed, 199 insertions(+), 154 deletions(-) diff --git a/ChangeLog b/ChangeLog index 657ea37..8fd8bad 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2010-11-10 Stefano Lattarini stefano.lattar...@gmail.com + + Tests defs: various reorderings. + * tests/defs.in: Reordered various snippets of code in a + clearer way. + 2010-11-06 Stefano Lattarini stefano.lattar...@gmail.com New tests on obsoleted usages of automake/autoconf macros (such diff --git a/tests/defs.in b/tests/defs.in index fe67b0f..57a9cde 100644 --- a/tests/defs.in +++ b/tests/defs.in @@ -20,6 +20,11 @@ # Defines for Automake testing environment. # Tom Tromey tro...@cygnus.com + +## - ## +## Shell and environment sanitizing (plus some early initializations). ## +## - ## + # Absolutely necessary variable(s). testsrcdir='@abs_srcdir@' top_testsrcdir='@abs_top_srcdir@' @@ -44,26 +49,20 @@ else case `(set -o) 2/dev/null` in *posix*) set -o posix;; esac fi -# Ensure we are running from the right directory. -test -f ./defs || { - echo defs: not found in current directory 12 - exit 1 -} - -# Ensure $testsrcdir is set correctly. -test -f $testsrcdir/defs.in || { - echo $testsrcdir/defs.in not found, check \$testsrcdir 12 - exit 1 -} +echo === Running test $0 me=`echo $0 | sed -e 's,.*[\\/],,;s/\.test$//'` + +## --- ## +## Initialization: AC_SUBST'ed and/or environment variables. ## +## --- ## + APIVERSION='@APIVERSION@' PATH_SEPARATOR='@PATH_SEPARATOR@' # Make sure we override the user shell. -SHELL='@SHELL@' -export SHELL +SHELL='@SHELL@'; export SHELL # User can override various tools used. test -z $PERL PERL='@PERL@' test -z $MAKE MAKE=make @@ -75,8 +74,7 @@ test -z $MISSING MISSING=$top_testsrcdir/lib/missing # (Tests for which this is inappropriate should use -Wno-error.) test -z $ACLOCAL ACLOCAL=aclocal-$APIVERSION -Werror # Extra flags to pass to aclocal before all other flags added by this script. -ACLOCAL_TESTSUITE_FLAGS= -export ACLOCAL_TESTSUITE_FLAGS +ACLOCAL_TESTSUITE_FLAGS=''; export ACLOCAL_TESTSUITE_FLAGS # See how Automake should be run. We put --foreign as the default # strictness to avoid having to create lots and lots of files. A test @@ -86,11 +84,130 @@ export ACLOCAL_TESTSUITE_FLAGS # should use -Wnone or/and -Wno-error test -z $AUTOMAKE AUTOMAKE=automake-$APIVERSION --foreign -Werror -Wall -PATH=`pwd`$PATH_SEPARATOR$PATH +# POSIX no longer requires 'egrep' and 'fgrep', +# but some hosts lack 'grep -E' and 'grep -F'. +EGREP='@EGREP@' +FGREP='@FGREP@' + +# The amount we should wait after modifying files depends on the platform. +# For instance, Windows '95, '98 and ME have 2-second granularity +# and can be up to 3 seconds in the future w.r.t. the system clock. +sleep='sleep @MODIFICATION_DELAY@' + +# An old timestamp that
Re: [PATCH 5/5] Tests defs: improve messages for skipped tests.
On Wednesday 10 November 2010, Ralf Wildenhues wrote: * Stefano Lattarini wrote on Wed, Sep 08, 2010 at 08:57:19PM CEST: * tests/defs.in: Give meaningful messages about the reasons of a test skip; this is especially useful as this file is run without verbose xtraces on. Related reorderings in the code and new comments. What happened to this patch in the new, rebased patch series? Nothing; I just left it out, because my main concern in the new patch series was to arrive quickly at the separation of defs/defs-static which I need to write the patch optimizing the `instspc*.test' tests. Was it already subsumed in some other series? No; I'm going to rebase it, and repropose it as a stand-alone patch soonish (after the present patch series is done with). Regards, Stefano
Re: [PATCH 7/7] Tests defs: move static definitions in a new file `minidefs'.
* Stefano Lattarini wrote on Thu, Nov 11, 2010 at 12:16:27AM CET: On Wednesday 10 November 2010, Ralf Wildenhues wrote: * Stefano Lattarini wrote on Sun, Nov 07, 2010 at 04:29:27PM CET: Tests defs: move static definitions in a new file `minidefs'. [...] * tests/defs: ... this new file ... * tests/minidefs.in: ... and this new file. You need to mention the remaining changes here; e.g., that defs sources the other file now. Is this OK? * tests/defs.in: Removed, its contents split among ... * tests/defs-static.in: ... this new file ... * tests/defs: ... and this new file, including the former. Sure, if that really is all that was changed. Thanks, Ralf
Re: [PATCH 1/7] Tests defs: various reorderings, some improvements.
* Stefano Lattarini wrote on Thu, Nov 11, 2010 at 12:37:23AM CET: Well, the patch is almost just code reordering, with the very minor exceptions that: 1. in the older version, some error messages could be printed before `$me' was defined, so they couldn't use it; now `$me' is defined early, so those error messages has been amended to include it; 2. in the older version, a test might be skipped from within code in `tests/defs' *after* the exit trap was installed, so a call to Exit 77 was in order; now the skips only happens before the installation of the exit trap, so exit 77 is enough; 3. some comments has been slighty adjusted and extended, because the act of reordering the code suggested them to me. Anyway, none of these additional minor changes is really required to make the new `tests/defs.in' work correctly, so I agree that they should have been done in follow-up patches. I've respin and split my patch to do so (see the attached four patches). Thank for respinning. The patches are ok then, but I think you should take care that the newly-introduced `pwd` is replaced by the variable you later introduce for this (in the later patch, of course). Thanks, Ralf
Silencing doxygen output
Hi all, I'm using AM_SILENT_RULES([yes]) to silence make output and I'm pretty happy with it. However, I have a doxygen command in a Makefile.am: doxygen reference.doxygen and I can't figure out how to silence it. Clues? Cheers, Erik -- -- Erik de Castro Lopo http://www.mega-nerd.com/
Re: Silencing doxygen output
On Wed, Nov 10, 2010 at 10:45:03PM +1100, Erik de Castro Lopo wrote: Hi all, I'm using AM_SILENT_RULES([yes]) to silence make output and I'm pretty happy with it. However, I have a doxygen command in a Makefile.am: doxygen reference.doxygen and I can't figure out how to silence it. Clues? I use: foo.log: foo.dox $(top_srcdir)/configure $(RM) -rf foo/html $(DOXYGEN) foo.dox touch $@ @UNDOCUMENTED=$$(cat $@); \ if [ -n $$UNDOCUMENTED ]; then \ echo -- UNDOCUMENTED CODE --; \ echo $$UNDOCUMENTED; \ fi with WARN_LOGFILE in foo.dox. I would suggest just redirecting the doxygen output to another file when running silently. Regards, Roger -- .''`. Roger Leigh : :' : Debian GNU/Linux http://people.debian.org/~rleigh/ `. `' Printing on GNU/Linux? http://gutenprint.sourceforge.net/ `-GPG Public Key: 0x25BFB848 Please GPG sign your mail. signature.asc Description: Digital signature
Re: Force a file to be compiled always
On Nov 4, 2010, Benjamin Bihler benjamin.bih...@twt-gmbh.de wrote: As to the third suggestion: I use the __DATE__ and __TIME__ macros in my code as a kind of version information. Therefore the compilation result differs with every compilation, although my source file does not change. Is there yet a better method to store the compilation time stamp in a library without fiddling with make targets? We do fiddle with make targets, but in this way: --[Makefile.am]8=== some_SOURCES=app.c # ensure to compile-in the current date app.$(OBJEXT): $(LIBDEPS) $(l...@mainmodulename@_a_SOURCES) Makefile ===8--- app.c includes some --[app.c]--8=== const char *const version = SYS_VERSION #if defined(DEBUG) (DEBUG), compiled __DATE__ __TIME__ #endif /* non-debug (but release-) versions are guaranteed to have a * unique dedicated SYS_VERSION */ ; ===8--- I'm not sure if this is best (correct), but seems to work well. I think the big advantage over .PHONY is that is does not re-genereate the binary (a new binary, actually!) if nothing was changed at all, which IMHO would be a bad habit. oki, Steffen
bug#7364: Typo in manual
Script are not distributed by default - Scripts are not distributed by default -- http://rrt.sc3d.org
Re: Silencing doxygen output
Hi Erik, * Erik de Castro Lopo wrote on Wed, Nov 10, 2010 at 12:45:03PM CET: I'm using AM_SILENT_RULES([yes]) to silence make output and I'm pretty happy with it. However, I have a doxygen command in a Makefile.am: doxygen reference.doxygen and I can't figure out how to silence it. target: deps $(AM_V_GEN)doxygen reference.doxygen There is more information and a more complex example in the documentation at 'info Automake --index silent-rules'. Cheers, Ralf
bug#7364: Typo in manual
Hi Reuben, * Reuben Thomas wrote on Wed, Nov 10, 2010 at 03:24:14PM CET: Script are not distributed by default - Scripts are not distributed by default Thanks, this has already been fixed in the git tree of Automake. Cheers, Ralf