Stefano Lattarini [Tue, 24 Jul 2012 21:51:44 +0000 (23:51 +0200)]
Merge branch 'maint'
* maint:
tests: avoid non-textual output in a '.log' file
Stefano Lattarini [Tue, 24 Jul 2012 20:56:01 +0000 (22:56 +0200)]
tests: avoid non-textual output in a '.log' file
* t/dist-formats.tap: Here. Otherwise, some inferior awk implementations,
like OpenIndiana /usr/xpg4/bin/awk, could be confused and cause spurious
errors in the testsuite harness.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Tue, 24 Jul 2012 17:58:45 +0000 (19:58 +0200)]
tags: refactor to reduce code duplication (2)
No semantic change is intended.
* lib/am/tags.am (am__define_uniq_tagged_files): New variable,
factor out some code common to ...
(ctags-am, tags-am, ID): ... the recipes of these targets.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Tue, 24 Jul 2012 17:25:02 +0000 (19:25 +0200)]
tags: refactor to reduce code duplication (1)
No semantic change is intended.
* lib/am/tags.am (am__uniquify_input): New variable, factor
out some code common to ...
(ctags-am, tags-am, ID): ... the recipes of these targets.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Tue, 24 Jul 2012 16:43:50 +0000 (18:43 +0200)]
Merge branches 'tags-simplify-recursion' and 'color-tests-always'
* tags-simplify-recursion:
tags: unify recursion for tags targets with that of "usual" targets
* color-tests-always:
tests: better name for a couple of tests
check: support colorized testsuite output by default
Stefano Lattarini [Mon, 23 Jul 2012 11:35:28 +0000 (13:35 +0200)]
tests: avoid a spurious failure with Solaris /bin/sh
The /bin/sh shell on Solaris is dumb enough not to set the exit
status to 127 after the execution of a non-existing command is
attempted:
$ /bin/sh -c 'nonesuch'; echo stat = $?
/bin/sh: nonesuch: not found
stat = 1
This means that the missing script, when run through that shell,
cannot discriminate between a real failure of a maintainer tool
and a failure due to its absence. This is not a big deal in
practice (especially because all the 'missing' invocations in
our Makefiles are done with $(SHELL), and that is almost surely
set by configure to a proper POSIX shell), but was causing an
annoying failure in our testsuite. Fix it.
* t/missing3.sh: If 'missing' is run with a /bin/sh shell suffering
from the just-described bug, skip the check that would spuriously
fail due to that bug.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Mon, 23 Jul 2012 11:15:13 +0000 (13:15 +0200)]
tests: fix buglet in t/missing3.sh
* t/missing3.sh: Be sure to use 'run_cmd' also in the first invocation
of 'missing', to ensure the stderr will actually be saved in a file we
can later grep.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Mon, 23 Jul 2012 10:27:15 +0000 (12:27 +0200)]
Merge branch 'maint'
* maint:
self tests: avoid spurious failures on older bash
tests: remove t/parallel-tests-many.sh (fixes spurious failure)
typofix: in a comment in the automake script
news: minor fixlets and reordering
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Mon, 23 Jul 2012 08:51:48 +0000 (10:51 +0200)]
Merge branch 'fix-pr11909' into maint
* fix-pr11909:
self tests: avoid spurious failures on older bash
Stefano Lattarini [Sat, 14 Jul 2012 11:56:34 +0000 (13:56 +0200)]
self tests: avoid spurious failures on older bash
Fixes automake bug#11909.
* t/self-check-explicit-skips.sh: Remove or rework few checks for use
cases that are no more relevant nor supported now that we've got rid
of the need to use the 'Exit' function explicitly. Make the other
existing checks stricter.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Mon, 23 Jul 2012 08:37:17 +0000 (10:37 +0200)]
tests: remove t/parallel-tests-many.sh (fixes spurious failure)
That test was checking for automake#7868 "parallel-tests and command-line
length limit issue". That bug is still open, and the tests was xfailing.
What concerns us is that the test was also causing an annoying problem.
On Solaris 10, it produced a '.log' file with two overly-long lines (more
than 1 million characters long!) and that was causing the test harness to
experience spurious failures, with Solaris XPG4 awk complaining that:
/usr/xpg4/bin/awk: line 0 (NR=734): Record too long (LIMIT: 19999 bytes)
A little consideration shows that the bug#7868 checked by the culprit
test cannot be solved "by accident", e.g., by another bug fix or some
simple refactoring, so there is little added value in keeping the xfailing
test for it, if this causes other problems (and we've seen it does).
So we just remove the test. In case we ever manage to fix the bug in
mainline automake, we can copy over the similar test(s) from Automake-NG,
which has actually managed to fix the bug (and have simpler test cases
for it).
* t/parallel-tests-many.sh: Delete.
* t/list-of-tests.mk (XFAIL_TESTS, handwritten_TESTS): Remove it.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sun, 22 Jul 2012 15:06:04 +0000 (17:06 +0200)]
tests: better name for a couple of tests
* t/color.sh: Rename ...
* t/color-tests.sh: ... like this.
* t/color2.sh: Rename ...
* t/color-tests2.sh: ... like this.
* t/list-of-tests.mk: Adjust.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sun, 22 Jul 2012 14:38:47 +0000 (16:38 +0200)]
check: support colorized testsuite output by default
Fixes automake bug#11855.
With this change, we make the 'color-tests' option enabled by default.
That option remains still silently accepted as a no-op, for backward
compatibility.
The developer of a package is still free to disable testsuite coloring on
a per-makefile basis (by adding "AM_COLOR_TESTS = no" to the Makefile.am)
or on a whole-project basis (by AC_SUBST'ing AM_COLOR_TESTS to "no" in
configure.ac). But now the user will be able to request the testsuite
output to be colorized, if he really wants to:
# With GNU make:
make AM_COLOR_TESTS=yes check
# With non-GNU make:
make AM_COLOR_TESTS=yes AM_MAKEFLAGS=AM_COLOR_TESTS=yes check
* NEWS: Update.
* doc/automake.texi: Updated, and some related minor reformatting
and rewording.
* automake.in (handle_tests): No need to pass the transform '%COLOR%'
when processing "check.am".
* lib/am/parallel-tests.am: Remove use of the '%?COLOR%' transform;
just act as if it were unconditionally TRUE.
* t/color.sh: No need to specify 'color-tests' in 'AUTOMAKE_OPTIONS'
nor in 'AM_INIT_AUTOMAKE'.
* t/ax/testsuite-summary-checks.sh: Likewise.
* t/ax/tap-summary-aux.sh: Likewise.
* t/color2.sh: Likewise. Also, ensure that colorized testsuite output
can be disabled by default by calling "AC_SUBST([AM_COLOR_TESTS], [no])".
* t/tap-realtime.sh: Define 'AM_COLOR_TESTS' to "no" in Makefile.am, to
avoid spurious colorization of the output due to the use of the 'expect'
program.
* t/color-tests-opt.sh: New test, check that the 'color-tests' option is
still recognized as a no-op.
* t/list-of-tests.mk: Add the new test.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sun, 22 Jul 2012 09:07:22 +0000 (11:07 +0200)]
tags: unify recursion for tags targets with that of "usual" targets
This change has a side effect: now any failure of the 'tags', 'ctags',
'cscope' and 'cscopelist' targets in a subdirectory will cause the
recursive command issued from the top directory to fail. We believe
that this behavioural change is not only justified by the simplification
this patch entails, but actually offers better semantics: ignoring
failures by default is never a good idea, and with make, the user can
anyway order the completion of commands in the face of possible failures
with the '-k' option.
* NEWS: Update.
* automake.in (%required_targets): Add keys 'cscopelist-am', 'tags-am'
and 'ctags-am'.
(handle_tags): Greatly simplified, the major part of the handling of
recursion for the 'tags', 'ctags' and 'cscopelist' now moved out to ...
* lib/am/tags.am: ... this file, that has been adjusted and extended
accordingly.
* t/maken3.sh: Remove testing of the 'TAGS' target, that is now just
an alias to 'tags'. Without this change, this test would spuriously
fail.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sat, 21 Jul 2012 13:47:46 +0000 (15:47 +0200)]
typofix: in a comment in the automake script
* automake.in (process_file): Here.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Tue, 17 Jul 2012 10:29:37 +0000 (12:29 +0200)]
news: minor fixlets and reordering
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Mon, 16 Jul 2012 09:16:15 +0000 (11:16 +0200)]
Merge branch 'maint'
* maint:
fixup: delete "# serial" line in m4/amversion.in
news: update about recent ylwrap changes and fixes
m4: get rid of "# serial" lines
configure: ${#param} must be supported by the shell for the testsuite
yacc tests: fix a spurious failure with parallel make
ylwrap: use proper quoting inside a `...` substitution
ylwrap: don't uselessly reset the exit status in case of failure
ylwrap: fix C++ support for Bison
ylwrap: refactor: move loop invariant
ylwrap: refactoring: don't rely on the file order
tests: upgrade and fix Bison test case
tests: fix bison input file
ylwrap: comment changes
ylwrap: modernize idioms
ylwrap: rename header inclusion in generated parsers
ylwrap: simplify the list of renamings
ylwrap: refactor: less duplication
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Mon, 16 Jul 2012 09:11:34 +0000 (11:11 +0200)]
fixup: delete "# serial" line in m4/amversion.in
Otherwise, when m4/amversion.m4 is regenerated, it will contain a
serial line as well.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Mon, 16 Jul 2012 08:57:41 +0000 (10:57 +0200)]
Merge branch 'yacc-work' into maint
* yacc-work:
news: update about recent ylwrap changes and fixes
yacc tests: fix a spurious failure with parallel make
ylwrap: use proper quoting inside a `...` substitution
ylwrap: don't uselessly reset the exit status in case of failure
ylwrap: fix C++ support for Bison
ylwrap: refactor: move loop invariant
ylwrap: refactoring: don't rely on the file order
tests: upgrade and fix Bison test case
tests: fix bison input file
ylwrap: comment changes
ylwrap: modernize idioms
ylwrap: rename header inclusion in generated parsers
ylwrap: simplify the list of renamings
ylwrap: refactor: less duplication
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Akim Demaille [Sun, 15 Jul 2012 09:23:59 +0000 (11:23 +0200)]
news: update about recent ylwrap changes and fixes
* NEWS: In ylwrap, renamings are properly propagated, and unknown
files are preserved.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sat, 14 Jul 2012 16:49:25 +0000 (18:49 +0200)]
m4: get rid of "# serial" lines
The "#serial" lines are only considered by aclocal for the system-wide
third-party '.m4' files, not for the Automake-provided ones. So they
serve no real purpose in the Automake '.m4' files.
In addition, now that we use git and topic branches, and that we are also
writing the Automake-NG fork, the "#serial" lines are becoming more and
more unreliable (e.g., different version of the same file in different
branches can easily end up having the same serial numbers).
So let's just nuke all the "#serial" lines. See also automake bug#11932.
* m4/*.m4: All "# serial" lines removed.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sat, 14 Jul 2012 16:38:31 +0000 (18:38 +0200)]
configure: ${#param} must be supported by the shell for the testsuite
This will be required at least by the Automake-NG branch.
* configure.ac: Require the $AM_TEST_RUNNER_SHELL supports ${#param} as
a way to obtain the length of the expansion of the variable $param.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sat, 14 Jul 2012 10:31:19 +0000 (12:31 +0200)]
yacc tests: fix a spurious failure with parallel make
* t/yacc-bison-skeleton.sh (Makefile.am): Add 'zardoz.h'
to BUILT_SOURCES.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sat, 14 Jul 2012 09:07:34 +0000 (11:07 +0200)]
ylwrap: use proper quoting inside a `...` substitution
* lib/ylwrap ($target): Here, when redefining this to a temporary file.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sat, 14 Jul 2012 09:04:42 +0000 (11:04 +0200)]
ylwrap: don't uselessly reset the exit status in case of failure
* lib/ylwrap: Here. In case of a failure in the wrapped yacc/lex
invocation, '$ret' (holding the final exit status of ylwrap) was
being uselessly reset to '1' in the later if/else.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Akim Demaille [Sat, 14 Jul 2012 14:57:02 +0000 (16:57 +0200)]
ylwrap: fix C++ support for Bison
Fixes automake bug#7648.
The current logic of ylwrap is to call yacc in a sub directory, and
pull out of it all the files that were requested on its command line.
Reverse this approach: export *all* the files created in the
subdirectory, but rename them according to what the command says.
This way, extra files, such as position.hh, location.hh and stack.hh
for C++ parsers, but also parser.xml or parser.dot if XML or Dot
output is enabled, will be preserved.
* lib/ylwrap (pairlist): Remove.
(main loop): Don't loop over pairlist, but over the files in the
temporary directory.
* t/list-of-tests.mk (XFAIL_TESTS): Fixes t/yacc-bison-skeleton-cxx.sh.
* THANKS (James Bostock): Add, he reported bug#7648.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Akim Demaille [Sat, 14 Jul 2012 08:09:15 +0000 (10:09 +0200)]
ylwrap: refactor: move loop invariant
* lib/ylwrap (input_rx): Move its definition next to its sibling's,
outside of the main loop.
Akim Demaille [Sat, 14 Jul 2012 08:08:52 +0000 (10:08 +0200)]
ylwrap: refactoring: don't rely on the file order
Forthcoming changes will make us iterate over the files in a different
order.
lib/ylwrap (first): Remove, replaced by...
(parser): this.
Akim Demaille [Sat, 14 Jul 2012 08:01:40 +0000 (10:01 +0200)]
tests: upgrade and fix Bison test case
* t/yacc-bison-skeleton-cxx.sh: Request locations, to be
even more stressful.
Use %union to make sure the %{...%} is inserted where appropriate.
Fix some indentation/coding style issues.
Akim Demaille [Sat, 14 Jul 2012 07:07:52 +0000 (09:07 +0200)]
tests: fix bison input file
Do not provide implementations in the %{...%} section, especially if the
header is included elsewhere, since then the linker will complain about
multiple definitions.
Reported by Stefano Lattarini,
<http://lists.gnu.org/archive/html/automake-patches/2012-07/msg00126.html>.
* t/yacc-bison-skeleton.sh (zardoz.y): Define yylex and yyerror in the
epilogue.
Akim Demaille [Fri, 13 Jul 2012 11:14:44 +0000 (13:14 +0200)]
ylwrap: comment changes
* lib/ylwrap: Improve some comments.
Akim Demaille [Fri, 13 Jul 2012 12:33:38 +0000 (14:33 +0200)]
ylwrap: modernize idioms
* lib/ylwrap: Prefer printf to echo when special characters may
occur.
Replace the historical ',' sed separator with '|'.
Akim Demaille [Fri, 13 Jul 2012 12:32:22 +0000 (14:32 +0200)]
ylwrap: rename header inclusion in generated parsers
Some types of Bison parsers, such as the GLR ones, generate a header
file that they include. ylwrap, which renames the generated files,
does not rename the included file. Fix this shortcoming, reported
for instance here:
<http://lists.gnu.org/archive/html/bug-bison/2012-06/msg00033.html>.
Fixes t/yacc-bison-skeleton.sh, see Automake bug#7648 and PR automake/491.
* lib/ylwrap (quote_for_sed): Accept arguments.
Catch more special characters.
(rename_sed): New.
Improve the previous renaming sed commands using quote_for_sed.
Suggested by Stefano Lattarini here:
<http://lists.gnu.org/archive/html/automake-patches/2012-07/msg00095.html>.
(main loop): Use rename_sed to rename the dependencies to other files.
* t/yacc-d-basic.sh: Exercise this case, even if bison/yacc was
not issuing such an include.
* t/list-of-tests.mk (XFAIL_TESTS): Adjust.
Akim Demaille [Thu, 12 Jul 2012 13:13:29 +0000 (15:13 +0200)]
ylwrap: simplify the list of renamings
* lib/ylwrap (pairwise): Instead of being a straightforward copy from
the command line arguments, and having to deal with y.tab vs. y_tab
later, let pairwise store the real file names to process, y_tab
conversion included when needed.
(main loop): Use $to instead of $2, for symmetry with $from.
Akim Demaille [Thu, 12 Jul 2012 12:52:44 +0000 (14:52 +0200)]
ylwrap: refactor: less duplication
* lib/ylwrap (guard): New function.
Move functions before actual code.
Stefano Lattarini [Fri, 13 Jul 2012 12:58:17 +0000 (14:58 +0200)]
Merge branch 'maint'
* maint:
news: mention fixed testsuite weaknesses
news: bump, for future 1.12.3
tests: verify the shell test scripts are syntactically valid
tests: don't use C instead of C++ compiler on case-insensitive platforms
tests: avoid spurious TAP errors on Mac OS X 10.7
tests: fix spurious failure in aclocal7.sh on fast machines
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Fri, 13 Jul 2012 12:47:54 +0000 (14:47 +0200)]
news: mention fixed testsuite weaknesses
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Fri, 13 Jul 2012 12:43:36 +0000 (14:43 +0200)]
news: bump, for future 1.12.3
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Fri, 13 Jul 2012 11:55:58 +0000 (13:55 +0200)]
Merge branches 'fix-pr11898' and 'fix-pr-11893-and-10766' into maint
* fix-pr11898:
tests: verify the shell test scripts are syntactically valid
* fix-pr-11893-and-10766:
tests: don't use C instead of C++ compiler on case-insensitive platforms
Stefano Lattarini [Wed, 11 Jul 2012 08:51:15 +0000 (10:51 +0200)]
tests: verify the shell test scripts are syntactically valid
Fixes automake bug#11898.
This measure of extra safety is mostly motivated by the fact that some
shells (at least some versions of Bash in the 3.x release series, one
of which serves as /bin/sh on Mac OS X 10.7, as well as Bash 4.0 and the
/usr/xpg4/bin/sh shell from Solaris 10) erroneously exit with exit status
0 upon encountering a syntax error, if an exit trap is sett (as it is in
our test scripts).
* Makefile.am (check-tests-syntax): New, check that the shell test
scripts listed in $(TESTS) are syntactically correct.
(.PHONY, check-local): Depend on it.
* t/self-check-exit.tap : Remove checks verifying that a script exits
with non-zero status upon encountering a syntax error; as explained
above, we can't depend on that.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Wed, 11 Jul 2012 12:36:13 +0000 (14:36 +0200)]
tests: don't use C instead of C++ compiler on case-insensitive platforms
This change fixes automake bug#11893 and bug#10766.
On at least Cygwin and Mac OS X 10.7, the file system where the system
compilers are located can be case-insensitive, so that looking for a
program named 'CC' might actually find the C compiler in /usr/bin/cc.
Now, the Automake configure script looks for a C++ compiler named 'CC'
before looking for more obvious names like c++ or g++ (that is done to
increase testsuite "coverage in the wild", e.g., preferring, on Solaris,
the Sun Studio C++ compiler /usr/bin/CC over the GNU C++ compiler).
Since the checks done in AC_PROG_CXX are apparently not strict enough
to rule out C compilers like those from GCC or Clang (which are smart
enough to recognize if a file has a C++ extension, passing it to the
C++ front end) the testsuite might end up using a C compiler where a
C++ one is expected, with some subtle bad consequences.
* configure.ac: Don't look for a C++ compiler named 'CC' if the
"top-level" file system(s) (where /bin and /usr/bin are) are detected
to be case-insensitive.
Reported-by: Peter Rosin <peda@lysator.liu.se>
Reported-by: Max Horn <max@quendi.de>
Helped-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Tue, 10 Jul 2012 13:29:57 +0000 (15:29 +0200)]
tests: avoid spurious TAP errors on Mac OS X 10.7
Fixes automake bug#1897. Reported by Max Horn.
* t/suffix8.tap: The libtool bug#11895 was causing the ./configure script
to output a stray "ok" string on a line of its own, confusing the TAP
driver into thinking this was an extra test result (which resulted in the
next, real test results being flagged as "OUT-OF-ORDER"). Fix this by
protecting configure output.
* t/suffix10.tap: Likewise, and for the "make distcheck" output as well.
* THANKS: Update.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Adam Sampson [Tue, 10 Jul 2012 13:08:15 +0000 (15:08 +0200)]
tests: fix spurious failure in aclocal7.sh on fast machines
Fixes automake bug#11896. Issue introduced in commit v1.12.1-46-g13dd512.
* t/aclocal7.sh: Since aclocal rewrites aclocal.m4 unless the input files
are all older than the existing aclocal.m4, so we must sleep to ensure
somedefs.m4 has an older timestamp than the aclocal.m4 the next aclocal
call will generate.
Copyright-paperwork-exempt: yes
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Mon, 9 Jul 2012 17:33:03 +0000 (19:33 +0200)]
Merge branch 'maint' (with fix for CVE-2012-3386)
This makes the fix for a locally-exploitable security vulnerability
(CVE-2012-3386) available to the Automake master branch.
* maint:
sync: update files from upstream with "make fetch"
news: improve wording in entry about CVE-2012-3386
maint: post-release minor version bump
release: stable release 1.12.2
distcheck: never make part of $(distdir) world-writable
compat: automake should substitute @mkdir_p@, for backward compatibility
fixup: t/README: it's ./runtest, not ./t/ax/runtest
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Mon, 9 Jul 2012 16:26:56 +0000 (18:26 +0200)]
sync: update files from upstream with "make fetch"
* lib/config.guess, lib/gitlog-to-changelog, lib/texinfo.tex: Update.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Mon, 9 Jul 2012 16:20:33 +0000 (18:20 +0200)]
news: improve wording in entry about CVE-2012-3386
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Mon, 9 Jul 2012 16:19:55 +0000 (18:19 +0200)]
maint: post-release minor version bump
* configure.ac (AC_INIT): Bump version number to 1.12.2a.
* m4/amversion.m4: Likewise (automatically regenerated by
"make bootstrap").
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Mon, 9 Jul 2012 15:26:14 +0000 (17:26 +0200)]
release: stable release 1.12.2
* configure.ac (AC_INIT): Bump version number to 1.12.2.
* m4/amversion.m4: Likewise (auto-updated by "./bootstrap").
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Mon, 9 Jul 2012 14:51:06 +0000 (16:51 +0200)]
Merge branch 'distcheck-vulnerability-CVE-2012-3386' into maint
* distcheck-vulnerability-CVE-2012-3386:
distcheck: never make part of $(distdir) world-writable
Stefano Lattarini [Fri, 6 Jul 2012 20:43:04 +0000 (22:43 +0200)]
distcheck: never make part of $(distdir) world-writable
This fixes a locally-exploitable security vulnerability (CVE-2012-3386).
In the 'distcheck' rule, we used to make the just-extracted (from
the distribution tarball) $(distdir) directory and all its files and
subdirectories read-only; then, in order to create the '_inst' and
'_build' subdirectories in there (used by the rest of the recipe) we
made the top-level $(distdir) *world-writable* for an instant (the
time to create those two directories) before making it read-only
again.
Making that directory world-writable (albeit only briefly) introduced a
locally exploitable race condition for those who run "make distcheck" with
a non-restrictive umask (e.g., 022) in a directory that is accessible by
others. A successful exploit would result in arbitrary code execution
with the privileges of the user running "make distcheck" -- game over.
Jim Meyering wrote a proof-of-concept script showing that such exploit is
easily implemented.
This issue is similar to the CVE-2009-4029 vulnerability:
<http://lists.gnu.org/archive/html/automake/2009-12/msg00012.html>
* lib/am/distdir.am (distcheck): Don't make $(distdir) world-writable,
not even for an instant; make it user-writable instead, which is enough.
Helped-By: Jim Meyering <jim@meyering.net>
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Mon, 9 Jul 2012 08:33:49 +0000 (10:33 +0200)]
compat: automake should substitute @mkdir_p@, for backward compatibility
That has been unwittingly broken by commit v1.12-19-g7a1eb9f of 2012-04-28,
"AM_PROG_MKDIR_P: deprecate, to be removed in Automake 1.13". We thought it
wasn't a big deal, but Jim Meyering reported that @mkdir_p@ is used in
gettext's Makefile.in.in template:
<http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
* lib/am/header-vars.am (mkdir_p): Don't define.
* m4/init.m4 (AM_INIT_AUTOMAKE): AC_SUBST 'mkdir_p' with $(MKDIR_P).
* t/mkdir_p.sh, t/mkdirp-deprecation.sh: Enhance.
* NEWS: Update.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sun, 8 Jul 2012 07:56:18 +0000 (09:56 +0200)]
fixup: t/README: it's ./runtest, not ./t/ax/runtest
* t/README (Supported shells): Here. And remove an extra empty line.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sat, 7 Jul 2012 10:55:29 +0000 (12:55 +0200)]
Merge branch 'maint'
* maint:
tests: move 'runtest' into the top-level directory
Stefano Lattarini [Sat, 7 Jul 2012 10:08:05 +0000 (12:08 +0200)]
tests: move 'runtest' into the top-level directory
Move our wrapper script 'runtest' (meant to allow the execution of
Automake test cases from the command line) from the 't/ax/' directory
to the top-level one. This makes the script easier to find and to
invoke. Much more importantly, our DejaGNU-checking test cases won't
try anymore to use that script instead of the 'runtest' program provided
by DejaGNU (that happened because '$(srcdir)/t/ax/' is automatically
added early to the $PATH variable in our test cases), which was causing
spurious SKIPs.
* t/ax/runtest.in: Move ...
* runtest.in: ... here.
* Makefile.am, t/README, .gitignore: Adjust.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sat, 7 Jul 2012 09:54:28 +0000 (11:54 +0200)]
Merge branch 'maint'
* maint:
cosmetics: rename t/ax/test-runner => t/ax/runtest
fixup: another "make recheck" failure with BSD make
test runner: work correctly in VPATH setups
compat: automake should define $(mkdir_p), for backward compatibility
coverage: test that AM_PROG_MKDIR_P and $(mkdir_p) still works
tests init: don't automatically re-execute tests with a POSIX shell
yacc tests: fix spurious failure with parallel make
tests: ignore minor 'recheck' regression for BSD make
tests: don't clutter the top-level dir with temporary test directories
tests: avoid spurious failures when @MKDIR_P@ points to "install-sh -d"
lisp: better support of VPATH builds
news: fixlets and updates
+ Extra non-trivial edits:
* NEWS: State that $(mkdir_p) is still provided as an alias to
$(MKDIR_P), for (partial) backward-compatibility.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Fri, 6 Jul 2012 21:42:11 +0000 (23:42 +0200)]
cosmetics: rename t/ax/test-runner => t/ax/runtest
The latter is shorter and clearer. Better to do the rename early,
before other developers or contributors begin to get used to the
'test-runner' name.
* t/ax/test-runner.in: Rename ...
* t/ax/runtest.in: ... like this.
* Makefile.am, t/README, .gitignore: Adjust.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Fri, 6 Jul 2012 21:22:03 +0000 (23:22 +0200)]
fixup: another "make recheck" failure with BSD make
* t/parallel-tests-log-override-recheck.sh: Here, add a proper $sleep
before calling "make recheck". This should ideally have been done
in the earlier commit 'v1.12.1-100-g19d84bc', but it somehow slipped
through the cracks.
* t/test-metadata-recheck.sh: Likewise.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Fri, 6 Jul 2012 20:17:59 +0000 (22:17 +0200)]
test runner: work correctly in VPATH setups
Due to a "feature" of AC_CONFIG_FILES, because 't/ax/test-runner.in'
is in a subdirectory, the '@srcdir@' value that is AC_SUBST'd in it
gets tweaked to contain as much '..' components as are the directory
components of 't/ax/test-runner'. Because our build system operates
in a non-recursive setup, this substitution is wrong; for example,
the final 't/ax/test-runner' build in a VPATH builds where the source
directory is ".." contains the line:
: ${srcdir='../../../t/ax'}
instead of the expected (and correct):
: ${srcdir='../t/ax'}
We solve the issue by building 't/ax/test-runner' with a Makefile
recipe instead of config.status substitutions; this is already done
for other testsuite-related files, like 'defs-static'.
* configure.ac (AC_CONFIG_FILES): Don't build 't/ax/test-runner'
anymore.
* Makefile.am (t/ax/test-runner): New rule.
(EXTRA_DIST): Add 't/ax/test-runner.in'.
(CLEANFILES, noinst_SCRIPTS): Add 't/ax/test-runner'.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Fri, 6 Jul 2012 19:29:52 +0000 (21:29 +0200)]
Merge branch 'fix-pr11806' into maint
* fix-pr11806:
lisp: better support of VPATH builds
Stefano Lattarini [Fri, 6 Jul 2012 10:24:33 +0000 (12:24 +0200)]
tests init: don't automatically re-execute tests with a POSIX shell
I've unwittingly broken support for that feature *again* in some of
my recent testsuite tweaking. In this case, the re-execution code
works correctly when the tests are executed with a POSIX shells, but
breaks when they are invoked by an old-style Bourne shells (e.g.,
/bin/sh on Solaris).
It's time to face it: that feature is too much brittle, and too seldom
used (because the Makefile takes care of running the tests with the
correct shell anyway, so that a breakage is only experienced when
running the tests by hand). It just don't remain working for long, not
when we often touch the testsuite setup (which we are going to do again
when we'll try to move part of our testsuite framework to Gnulib, or a
similar project).
So, instead of trying to be extra-smart and automatically re-execute the
tests with the correct shell, we now offer a simple wrapper script that
the user can employ to run the test scripts with the proper shell. And
while we are at it, we write this wrapper to also deal with TAP tests in
a better way, running them through the prove(1) utility, so that their
results are correctly recognized and reported.
* t/ax/test-runner.in: New file; the wrapper script we were talking about.
* configure.ac (AC_CONFIG_FILES): Process it into 't/ax/test-runner'.
* .gitignore: Add 't/ax/test-runner'.
* defs: Remove code for automatic re-execution of the scripts with the
correct shell. This file now just a very thin layer around 'defs-static'
and 't/ax/test-init.sh'.
* t/README: Adjust, and remove or fix some imprecise or outdated text in
the process (like "... test scripts are written with portability in mind,
so that they should run with any decent Bourne-compatible shell ..." ).
* Makefile.am (AM_TESTS_ENVIRONMENT): No need to export 'AM_TESTS_REEXEC'
to "no" anymore.
* t/self-check-explicit-skips.sh: Likewise.
* t/self-check-exit.tap: Likewise.
* t/self-check-me.tap: Likewise.
* t/self-check-dir.tap: Likewise.
* t/self-check-reexec.tap: Remove as obsolete.
* t/list-of-tests.mk: Adjust.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Fri, 6 Jul 2012 19:15:37 +0000 (21:15 +0200)]
yacc tests: fix spurious failure with parallel make
* t/yacc-deleted-headers.sh: Here, by adding a missing dependency
in the Makefile.am. Revealed by a failure with Sun Distributed make
run on Solaris 10 in parallel mode.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Fri, 6 Jul 2012 12:35:04 +0000 (14:35 +0200)]
tests: ignore minor 'recheck' regression for BSD make
It turns out that, with NetBSD 5.1 make and FreeBSD 9 make, running
"make recheck" two times in a row quickly fails to correctly re-run
the failed tests in the second run.
That issue has been introduced likely introduced in commit
'v1.12.1-95-gd5443e4' of 20102-07-01, "parallel-tests: reimplement
fix for bug#11791".
Anyway, the use case that has been broken is not realistic (who is
going to run "make recheck" two times in one second, without modifying
any of the tests or the tested programs in the meantime?), so we believe
the best fix is to simply work around the issue in the affected test
cases, rather than risking to slow down or uglify the 'recheck' rule.
* t/parallel-tests9.sh: Enhance a little.
* t/tap-recheck.sh: Adjust adding proper '$sleep' calls were required.
* t/parallel-tests-log-override-recheck.sh: Likewise.
* t/test-driver-custom-multitest-recheck.sh: Likewise.
* t/test-driver-custom-multitest-recheck2.sh: Likewise.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Fri, 6 Jul 2012 18:49:15 +0000 (20:49 +0200)]
tests: don't clutter the top-level dir with temporary test directories
* t/self-check-me.tap: Be sure to initialize '$am_create_testdir' to "no"
in all the shell invocations sourcing './defs'. Otherwise, when running
the testsuite with 'keep_testdirs=yes', the following temporary director
are left cluttering the top-level directory:
./012.dir
./abc..dir
./a.b.c.dir
./foo.dir
./foo.bar.dir
./foo-bar-.dir
./_foo__bar.dir
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Fri, 6 Jul 2012 13:16:12 +0000 (15:16 +0200)]
tests: avoid spurious failures when @MKDIR_P@ points to "install-sh -d"
* t/self-check-cleanup.tap: Several checks in this test were failing on
NetBSD 5.1. That happened because on that system, '@MKDIR_P@' expands to
an "install-sh -d" invocation that references the $(builddir), and the
code trying to duplicate some of the Automake testsuite infrastructure
in the test subdirectory of this self test wasn't smart enough to cater
to that situation. Granted, we could tweak the test case once more to
fix this Yet Another Spurious Failure, but at this point it has become
clear that the extra coverage offered by this test is not worth all the
hassle. Just remove the test. Since the testsuite is regularly run on
several systems and with different setups, most issues with the testsuite
framework will reveal themselves anyway; no actual need to unit-test them
in our testsuite, if that's too tricky.
* t/list-of-tests.mk: Adjust.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Fri, 6 Jul 2012 08:12:30 +0000 (10:12 +0200)]
compat: automake should define $(mkdir_p), for backward compatibility
That has been unwittingly broken by commit 'v1.12-19-g7a1eb9f'
of 2012-04-28, "AM_PROG_MKDIR_P: deprecate, to be removed in
Automake 1.13".
Report from Benoit Sigoure and Diego Elio Pattenò:
<http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
* lib/am/header-vars.am (mkdir_p): Define as an alias for $(MKDIR_P).
* t/list-of-tests.mk (XFAIL_TESTS): Remove 't/mkdir_p.sh'.
* NEWS: Update.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Fri, 6 Jul 2012 07:59:23 +0000 (09:59 +0200)]
coverage: test that AM_PROG_MKDIR_P and $(mkdir_p) still works
They are deprecated, but should continue to work in the 1.12.x
release series. Report from Benoit Sigoure and Diego Elio Pattenò:
<http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
* t/mkdirp-deprecation.sh: Enhance.
* t/mkdir_p.sh: New test, check that AM_INIT_AUTOMAKE still defines
the $(mkdir_p) make variable. Currently xfailing.
* t/list-of-tests.mk (handwritten_TESTS, XFAIL_TESTS): Add the new
test.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Jack Kelly [Thu, 5 Jul 2012 16:50:37 +0000 (18:50 +0200)]
lisp: better support of VPATH builds
Fixes automake bug#11806.
* lib/am/lisp.am: Pass the value of '$(abs_srcdir)' to the
elisp-compile script in the environment.
* lib/elisp-comp: Add the vale of '$abs_srcdir' to the emacs
load-path.
* t/lisp-pr11806.sh: New test.
* t/list-of-tests.mk: Add it.
Copyright-paperwork-exempt: yes
Co-authored-by: Stefano Lattarini <stefano.lattarini@gnu.org>
Reported-by: Makoto Fujiwara <makoto@ki.nu>
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Tue, 3 Jul 2012 21:48:47 +0000 (23:48 +0200)]
tests: make 't/aclocal-macrodir.tap' executable
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Tue, 3 Jul 2012 21:22:46 +0000 (23:22 +0200)]
maintcheck: fix spurious failure in 'maintainer-check-list-of-tests'
* Makefile.am (test_subdirs): Add 'contrib/t', otherwise we would get a
spurious error like:
List of tests in Makefile an on filesystem differ
+ diff -u in-makefile on-filesystem
--- tests-in-makefile-list.tmp 2012-07-03 23:07:47.
000000000 +0200
+++ tests-on-filesystem-list.tmp 2012-07-03 23:07:47.
000000000 +0200
@@ -1,7 +1,3 @@
-contrib/t/help-multilib.sh
-contrib/t/multilib.sh
-contrib/t/parallel-tests-html-recursive.sh
-contrib/t/parallel-tests-html.sh
t/ac-output-old.tap
t/acloca10.sh
t/acloca11.sh
make: *** [maintainer-check-list-of-tests] Error 1
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Tue, 3 Jul 2012 19:56:08 +0000 (21:56 +0200)]
build: fix cleaning of test directories in contrib (and in t/perf)
* Makefile.am (clean-local-check): Update recipe to cater to the fact
that some tests using a temporary directory have been placed in other
directories that the 't/' directory (for the moment, at least 't/perf'
and 'contrib/t').
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Tue, 3 Jul 2012 19:15:33 +0000 (21:15 +0200)]
Merge branch 'aclocal-trace-macrodir'
* aclocal-trace-macrodir:
aclocal: deprecate ACLOCAL_AMFLAGS, trace AC_CONFIG_MACRO_DIR instead
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Tue, 5 Oct 2010 15:14:00 +0000 (17:14 +0200)]
aclocal: deprecate ACLOCAL_AMFLAGS, trace AC_CONFIG_MACRO_DIR instead
Maintaining ACLOCAL_AMFLAGS in the Makefile.am to pass extra flags
to aclocal is (and have always been) quite of an hack. For example,
autoreconf is forced to grep Makefile.am to honour those flags. But
this is a bad obsolescent behaviour; in fact, the autotools have moved
consistently in the past years from custom grepping of Makefile.am and
configure.ac to tracing of m4 macro calls, which is more consistent,
more reliable and more flexible.
And when autoreconf is not used, the developer is forced to add *by hand*
the flags specified by ACLOCAL_AMFLAGS to the aclocal calls not triggered
by make rebuild rules; here lie again more duplication and more chances
for errors.
Moreover, ACLOCAL_AMFLAGS has only two typical use cases:
- to instruct aclocal to look for extra macro definition in a local
directory (as with "ACLOCAL_AMFLAGS = -I m4"); and
- to further instruct aclocal to copy in that local directory the
required third-party .m4 files found in the system-wide directory
(as with "ACLOCAL_AMFLAGS = -I m4 --install").
The first use case can be better covered if aclocal can instead trace and
honours call to the AC_CONFIG_MACRO_DIR autoconf macro; and the second
use case shouldn't be considered really legitimate, as it is quite (and
subtly) brittle (see automake bug#9037).
Thus we now make aclocal trace AC_CONFIG_MACRO_DIR macro, and act
accordingly. For backward compatibility, we continue to support the
ACLOCAL_AMFLAGS special variable (although removing any mention of it
from the documentation). Future Automake releases will likely start
to warn about the use of that variable, and eventually remove support
for it altogether.
From a suggestion by Eric Blake.
This is a much simplified (and IMHO saner) version of the patch series
discussed in the threads:
<http://lists.gnu.org/archive/html/automake-patches/2010-10/msg00045.html>
<http://lists.gnu.org/archive/html/automake-patches/2010-12/msg00156.html>
* aclocal.in ($ac_config_macro_dir): New global variable.
(trace_used_macros): Also trace the macro 'AC_CONFIG_MACRO_DIR',
and set the '$ac_config_macro_dir' variable accordingly.
(parse_arguments): Code for diagnosis of '--install' used without
any user-specified include directory moved ...
(while (1)): .. into the main loop. Which now also updates the
list of user-specified include directories to include the directory
given as argument to the call (if any) of 'AC_CONFIG_MACRO_DIR'.
* lib/am/configure.am: Update comments.
* NEWS: Updated.
* doc/automake.texi: Likewise. Also, stop advising the use of the
'--install' in ACLOCAL_AMFLAGS (see automake bug#9037 for a rationale),
and remove any reference to ACLOCAL_AMFLAGS (which is now considered
obsolescent).
* t/aclocal-path-install.sh: Adjust grepping check in the aclocal
error messages.
* t/subpkg.sh: Updated: add 'AC_CONFIG_MACRO_DIR' call to configure.ac,
remove setting of 'ACLOCAL_AMFLAGS' in Makefile.am and use of aclocal
command line arguments.
* t/subpkg2.sh: Likewise.
* t/subdir8.sh: Likewise.
* t/remake10c.sh: Likewise.
* t/remake8a.sh: Likewise.
* t/remake8b.sh: Likewise.
* t/aclocal4.sh: Likewise.
* t/aclocal6.sh: Likewise.
* t/acloca14.sh: Likewise.
* t/acloca22.sh: Likewise.
* t/aclocal5.sh: Likewise, and do not not invade the Automake
namespace (this avoids spurious failures).
* t/acloca14b.sh: New test, identical to the previous version of
'acloca14.test'; it is kept to verify backwards compatibility with
the use of ACLOCAL_AMFLAGS.
* t/acloca22b.sh: Likewise (but for 'acloca22.test').
* t/aclocal-amflags.sh: New test, check for backwards
compatibility that ACLOCAL_AMFLAGS still works.
* t/remake-macrodir.sh: New test, checking that aclocal's honoring of
AC_CONFIG_MACRO_DIR interacts nicely with automatic rebuild rules.
* t/list-of-tests.mk: Add the new tests.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Tue, 3 Jul 2012 08:43:31 +0000 (10:43 +0200)]
news: fixlets and updates
* NEWS: Here. In particular, report the change in 'missing'
semantics.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Mon, 2 Jul 2012 19:05:34 +0000 (21:05 +0200)]
contrib: check-html: pass flags to rst2html invocations
Related to automake bug#11287.
* contrib/t/check-html.am (.log.html): Here, passing $(AM_RST2HTMLFLAGS)
and $(RST2HTMLFLAGS) (in that order).
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Mon, 2 Jul 2012 18:58:23 +0000 (20:58 +0200)]
contrib: simple improvements to check-html
Related to automake bug#11287.
* contrib/t/check-html.am (.log.html): Do not look for $RST2HTML in
the environment, looking for $(RST2HTML) should be enough (also, the
pre-existing code was broken, because it single-quoted $RST2HTML).
Fix the loop-and-search implementation to be more similar to the
one in 'contrib/t/parallel-tests-html.sh'. Prefer 'mv -f' over bare
'mv'. Do not break the recipe in
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Mon, 2 Jul 2012 18:33:03 +0000 (20:33 +0200)]
coverage: check-html can be used recursively
Addresses the main part of Automake bug#11287.
* contrib/t/parallel-tests-html-recursive.sh: New test.
* contrib/t/local.am: Add it.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Mon, 2 Jul 2012 15:24:24 +0000 (17:24 +0200)]
tests: tests for stuff in contrib goes in 'contrib/t'
* t/help-multilib.sh: Move ...
* contrib/t/help-multilib.sh: .. here. Remove a now-obsolete
"FIXME" comment.
* t/multlib.sh: Move ...
* contrib/t/multilib.sh: .. here. Remove a now-obsolete
"FIXME" comment.
* t/parallel-test2.sh: Move ...
* contrib/t/parallel-tests-html.sh: .. here. Remove a
now-obsolete "FIXME" comment.
* contrib/t/local.am: New, basically defining the list of
tests for stuff in 'contrib/'.
* t/list-of-tests.mk, Makefile.am: Adjust.
* .gitignore: Update.
* syntax-checks.mk (xtests): Likewise.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Mon, 2 Jul 2012 13:04:12 +0000 (15:04 +0200)]
Merge branch 'user-recursive-targets'
* user-recursive-targets:
recursion: support user-defined recursive targets
tests: rename 'recurs*.sh' to 'var-recurs*.sh'
tests: minor improvements to 'recurs*.sh'
Stefano Lattarini [Tue, 12 Jun 2012 12:48:12 +0000 (14:48 +0200)]
recursion: support user-defined recursive targets
The user can now define his own recursive targets that recurse
in the directories specified in $(SUBDIRS). That can be done by
specifying the name of such targets in invocations of the new
'AM_EXTRA_RECURSIVE_TARGETS' m4 macro.
The API goes like this:
$ cat configure.ac
AC_INIT([pkg-name], [1.0]
AM_INIT_AUTOMAKE
AM_EXTRA_RECURSIVE_TARGETS([foo])
AC_CONFIG_FILES([Makefile sub/Makefile])
AC_OUTPUT
$ cat Makefile.am
SUBDIRS = sub
foo-local:
@echo This will be run by "make foo".
$ cat sub/Makefile.am
foo-local:
@echo This too will be run by a "make foo" issued either in
@echo the 'sub/' directory or in the top-level directory.
Like for the "default" recursive targets (e.g., 'all' and 'check'),
the user-defined recursive targets descend in the $(SUBDIRS) in a
depth-first fashion, and process '.' last (unless that is explicitly
specified in $(SUBDIRS)).
* NEWS, doc/automake.texi: Document the new feature.
* automake.in (@extra_recursive_targets): New global variable.
(scan_autoconf_traces): Trace macro '_AM_EXTRA_RECURSIVE_TARGETS'.
(handle_user_recursion): New subroutine; among other things, it defines
the new internal '$(am__extra_recursive_targets)' make variable, and
the '*-am', '*-local' and '*-recursive' targets associated with the
user-specified user recursive targets.
(generate_makefile): Call the new subroutine.
* lib/am/subdirs.am (am__recursive_targets): New internal make variable,
listing all of '$(RECURSIVE_TARGETS)', '$(RECURSIVE_CLEAN_TARGETS)' and
'$(am__extra_recursive_targets)' together.
(AM_RECURSIVE_TARGETS): Adjust the definition of this variable ...
(.PHONY, .MAKE): ... and the list of dependencies of these special targets
to take advantage of the new '$(am__recursive_targets)' variable.
($(am__recursive_targets)): New targets, superseding ...
($(RECURSIVE_TARGETS), $(RECURSIVE_CLEAN_TARGETS)): ... these, and
inheriting their rules. This way, the rules to handle recursion for
built-in recursive targets (e.g., 'all', 'dvi', 'clean') and for user
defined recursive targets are the same.
* m4/extra-recurs.m4: New file, contain definition of new macro
'AM_EXTRA_RECURSIVE_TARGETS' and '_AM_EXTRA_RECURSIVE_TARGETS'.
These macros are basically dummy, only used for tracing by automake.
* m4/Makefile.am (dist_automake_ac_DATA): Update.
* t/recurs-user.sh: New test.
* t/recurs-user2.sh: Likewise.
* t/recurs-user-deeply-nested.sh: Likewise.
* t/recurs-user-indir.sh: Likewise.
* t/recurs-user-keep-going.sh: Likewise.
* t/recurs-user-many.sh: Likewise.
* t/recurs-user-no-subdirs.sh: Likewise.
* t/recurs-user-no-top-level.sh: Likewise.
* t/recurs-user-override.sh: Likewise.
* t/recurs-user-phony.sh: Likewise.
* t/recurs-user-wrap.sh: Likewise.
* t/remake-recurs-user.sh: Likewise.
* t/list-of-tests.mk: Update.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Tue, 12 Jun 2012 08:11:35 +0000 (10:11 +0200)]
tests: rename 'recurs*.sh' to 'var-recurs*.sh'
* t/recurs.sh: Rename ...
* t/var-recurs.sh: ... to this.
* t/recurs2.sh: Rename ...
* t/var-recurs2.sh: ... to this.
* tests/list-of-tests.mk: Adjust.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Tue, 5 Oct 2010 20:19:46 +0000 (22:19 +0200)]
tests: minor improvements to 'recurs*.sh'
* t/recurs.sh: Removed useless calls to AM_CONDITIONAL in
the generated 'configure.ac'.
* t/recurs2.sh: Add trailing ':' command.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sun, 1 Jul 2012 16:01:35 +0000 (18:01 +0200)]
Merge branch 'maint'
* maint:
tests: don't trust the exit status of "make -k" for non-GNU makes
parallel-tests: reimplement fix for bug#11791
tests setup: unset CDPATH
tests setup: more namespace safeness
tests setup: remove an unused variable
tests setup: less hard-coding of the test subdirectory
Stefano Lattarini [Sun, 1 Jul 2012 11:31:54 +0000 (13:31 +0200)]
tests: don't trust the exit status of "make -k" for non-GNU makes
* t/parallel-tests-recheck-pr11791.sh: Here. At least some versions
of FreeBSD make botch it up, returning success when failure should be
returned.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sun, 1 Jul 2012 10:56:22 +0000 (12:56 +0200)]
parallel-tests: reimplement fix for bug#11791
* lib/am/check.am: Here. The new implementation is shorter, slightly
more efficient (requiring less forks), less brittle in the face of
signals or unexpected interruptions in the make process, and should
also be easier to merge in the 'ng/master' branch (as of now, due to
the difficulties in merging our previous version of the fix in the
'ng/master' codebase, Automake-NG still lacks a fix for bug#11791).
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sun, 1 Jul 2012 09:50:54 +0000 (11:50 +0200)]
tests setup: unset CDPATH
So that our test scripts can safely chdir around using relative
paths as well, without having to worry abut possible CDPATH
interferences.
* defs-static.in: unset CDPATH.
* t/ax/tests-init.sh: Remove a now-unneeded workaround.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sun, 1 Jul 2012 09:01:02 +0000 (11:01 +0200)]
tests setup: more namespace safeness
* t/ax/tests-init.sh ($testSubDir): Rename ...
($am_test_subdir): ... to this, throughout the file.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sun, 1 Jul 2012 08:54:26 +0000 (10:54 +0200)]
tests setup: remove an unused variable
* defs-static.in ($testprefix): This one.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sun, 1 Jul 2012 08:36:34 +0000 (10:36 +0200)]
tests setup: less hard-coding of the test subdirectory
* t/ax/tests-init.sh: Make the code creating the temporary
test subdirectory smart enough to automatically create it
in the same subdirectory of the test that is being run.
* defs-static.in ($MKDIR_P, $am_rel_srcdir): New variables,
AC_SUBST'd from @MKDIR_P@ and @srcdir@ respectively, and
used in the new 'tests-init.sh' code.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sun, 1 Jul 2012 08:14:23 +0000 (10:14 +0200)]
Merge branch 'maint'
* maint:
parallel-tests: silence an overly verbose recipe
tests: fix some uses of 'Exit', where 'exit' should now be used instead
maintcheck: test scripts should be executable, check for that
Stefano Lattarini [Sat, 30 Jun 2012 21:37:57 +0000 (23:37 +0200)]
parallel-tests: silence an overly verbose recipe
* lib/am/check.am (check-TESTS): Here, the part of the recipe
removing the stale '.log' and '.trs' files.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sat, 30 Jun 2012 21:34:56 +0000 (23:34 +0200)]
tests: fix some uses of 'Exit', where 'exit' should now be used instead
* t/parallel-tests-recheck-pr11791.sh: Here.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sat, 30 Jun 2012 21:26:17 +0000 (23:26 +0200)]
maintcheck: test scripts should be executable, check for that
* syntax-checks.mk (sc_tests_executable): Here, in this new check.
(syntax_check_rules): Add it.
* Makefile.am (dist-hook): Drop, no need to make test cases executable
anymore.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sat, 30 Jun 2012 20:17:22 +0000 (22:17 +0200)]
Merge branch 'maint'
* maint:
parallel-tests: recipes for "check" and "recheck" are separated again
Stefano Lattarini [Sat, 30 Jun 2012 19:59:56 +0000 (21:59 +0200)]
Merge branch 'recheck-fix' into maint
* recheck-fix:
parallel-tests: recipes for "check" and "recheck" are separated again
Stefano Lattarini [Sat, 30 Jun 2012 19:32:20 +0000 (21:32 +0200)]
Merge branch 'maint'
* maint:
parallel-tests: "recheck" behaves better in case of compilation failures
scripts: quote 'like this', not `like this'
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sat, 30 Jun 2012 18:53:39 +0000 (20:53 +0200)]
parallel-tests: recipes for "check" and "recheck" are separated again
* lib/am/check.am: Here. They have distinctly diverged recently, and
the reduction in code duplication obtained keeping their recipes united
is not anymore worth the extra complications.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sat, 30 Jun 2012 18:20:22 +0000 (20:20 +0200)]
Merge branch 'recheck-fix' into maint
* recheck-fix:
parallel-tests: "recheck" behaves better in case of compilation failures
scripts: quote 'like this', not `like this'
Stefano Lattarini [Sat, 30 Jun 2012 17:46:13 +0000 (19:46 +0200)]
tests: prefer "test ! -e FILE" to check that a file doesn't exist
* t/autohdrdry.sh: Here, rather than using "test ! -r FILE".
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Jim Meyering [Sat, 30 Jun 2012 11:53:37 +0000 (13:53 +0200)]
texi: clean after Texinfo manuals in $(SUBDIRS) directories correctly
Fixes the regression exposed by previous commit 'v1.12.1-165-g498492f'.
* automake.in (handle_texinfo_helper): Add $infobase.{t2d,t2p}
to @mostly_cleans, but *without* the '$relative_dir/' prefix.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Stefano Lattarini [Sat, 30 Jun 2012 14:37:06 +0000 (16:37 +0200)]
coverage: regression in texinfo "make mostlyclean" with $(SUBDIRS)
After commit v1.12.1-91-g205c757 of 2012-06-20, "texi: require
Texinfo >= 4.9, related enhancements", the presence of a Texinfo manual
'manual.texi' in a subdir (say 'doc/') of a package using a recursive
make setup would cause "make distcheck" to fail, due to the presence of
the 'manual.t2d/' directory created by texi2dvi. That directory would
not be correctly removed because the 'mostlyclean' rule would run, from
within the 'doc/' sub-directory, "rm -rf doc/manual.t2d", instead of
the expected (and correct) "rm -rf manual.t2d".
Reported by Jim Meyering:
<http://lists.gnu.org/archive/html/automake-patches/2012-06/msg00203.html>
* t/txinfo21.sh: Enhance to expose the issue.
* t/txinfo-no-clutter.sh: Likewise, and other miscellaneous improvements.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>