platform/upstream/automake.git
11 years agoconfigure: the testsuite shell must support 'test -e' and 'test ! -e'
Stefano Lattarini [Thu, 28 Jun 2012 20:49:28 +0000 (22:49 +0200)]
configure: the testsuite shell must support 'test -e' and 'test ! -e'

* configure.ac: Require that the shell that is to be selected to run
the testsuite understands "set -e" and "set ! -e".

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: remove stale workarounds for Solaris /bin/sh
Stefano Lattarini [Thu, 28 Jun 2012 19:52:37 +0000 (21:52 +0200)]
tests: remove stale workarounds for Solaris /bin/sh

Our testsuite cannot be run with that shell anymore (as it is
not POSIX-compliant).

* t/tap-more.sh: Remove outdated workarounds for Solaris /bin/sh.
* t/self-check-exit.tap: Likewise.
* t/ansi2knr-no-more.sh: Likewise.
* t/add-missing.tap: Likewise.
* t/dist-auxfile.sh: Likewise.
* t/test-driver-custom-multitest-recheck2.sh:  Likewise.
* t/ax/test-init.sh: Remove obsolete references to Solaris
/bin/sh.
* t/confh5.sh: Likewise.
* t/uninstall-fail.sh: Likewise.  And update comments about
quirks of Solaris /bin/ksh and /usr/xpg4/bin/sh.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests init: don't bother allowing '$me' to be overridable
Stefano Lattarini [Thu, 28 Jun 2012 16:21:33 +0000 (18:21 +0200)]
tests init: don't bother allowing '$me' to be overridable

We once used that feature in our wrapper tests; but now (and probably
even since commit 'v1.11-1308-g375f23d' of 2011-09-08, "testsuite:
revamp generation of autogenerated tests") it is not needed anymore.
By removing it we can simplify our growingly complex testsuite framework
a little.

* t/ax/test-inist.sh ($me): Do not initialize it here (and only if not
already set), instead ...
* defs-static.in ($me): ... initialize it here unconditionally.
Do not check anymore that $me doesn't come from the environment: that
wouldn't cause any problem now.
Now that '$me' is defined early, prefer it over 'argv0' in early error
messages, both here ...
* defs: ... and here.
* Makefile.am (AM_TESTS_ENVIRONMENT): Do not bother "nullifying" $me
anymore.
* t/self-check-env-sanitize.tap: Adjust.
* t/self-check-me.tap: Likewise.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests init: typofixes in comments
Stefano Lattarini [Thu, 28 Jun 2012 15:50:20 +0000 (17:50 +0200)]
tests init: typofixes in comments

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: one test was not executable, make it so
Stefano Lattarini [Thu, 28 Jun 2012 15:40:10 +0000 (17:40 +0200)]
tests: one test was not executable, make it so

* t/subdir-order.sh: This test.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoreadme: fix typo in t/README: s/$((...)/$((...))/
Stefano Lattarini [Thu, 28 Jun 2012 15:32:15 +0000 (17:32 +0200)]
readme: fix typo in t/README: s/$((...)/$((...))/

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: don't skip if $(abs_builddir) or $(abs_srcdir) contain whitespace
Stefano Lattarini [Thu, 28 Jun 2012 15:08:34 +0000 (17:08 +0200)]
tests: don't skip if $(abs_builddir) or $(abs_srcdir) contain whitespace

We used to explicitly skip libtool and gettext tests if the absolute
path of the builddir or of the srcdir which Automake was configured
with contained any whitespace (or other metacharacters).

But several other tests would spuriously fail in such an unholy setup.
To be precise, it would cause 61 'FAIL's and 42 'ERROR's in the whole
Automake testsuite.

The fact that, as of today, nobody has reported any failure of this kind
means that (thankfully) nobody is building automake with $(abs_srcdir)
or $(abs_builddir) mangled by whitespace.  So, instead of trying to cater
to such a broken setup consistently, we just drop the extra check in the
libtool/gettext tests.

In case someone will ever reports a failure due to extra whitespace in
either $(abs_srcdir) or or $(abs_builddir), we will simply enhance our
'configure.ac' to bail out flatly and loudly at such a setup.

* t/ax/test-init.sh: Simplify accordingly.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: avoid spurious maintainer-check failures
Stefano Lattarini [Thu, 28 Jun 2012 14:43:43 +0000 (16:43 +0200)]
tests: avoid spurious maintainer-check failures

* t/ax/test-init.sh: Here, by adding extra quoting for two
occurrences of the string "perl".

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: remove obsolete hacks around maintainer-check false positives
Stefano Lattarini [Thu, 28 Jun 2012 12:35:12 +0000 (14:35 +0200)]
tests: remove obsolete hacks around maintainer-check false positives

* gen-testsuite-part, t/test-trs-recover.sh: Here.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoMerge branch 'simplify-exit-trap-workaround' into maint
Stefano Lattarini [Thu, 28 Jun 2012 11:05:29 +0000 (13:05 +0200)]
Merge branch 'simplify-exit-trap-workaround' into maint

* simplify-exit-trap-workaround:
  tests: simpler workaround for shells losing the exit status in exit trap

+ Extra non-trivial edits:

* t/am-missing-prog.sh: Use 'exit, not 'Exit'.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agocoverage: tests AM_MISSING_PROG usage
Stefano Lattarini [Thu, 28 Jun 2012 08:55:13 +0000 (10:55 +0200)]
coverage: tests AM_MISSING_PROG usage

Now that AM_MISSING_PROG is documented, we want to make sure it
works as expected when used in third-party code.

* t/am-missing-prog.sh: New test.
* t/ammissing: Rename ...
* t/am-macro-not-found.sh: ... like this, to avoid confusion (this
test has nothing to do with the 'missing' script nor with the
'AM_MISSING_PROG' macro).
* t/list-of-tests.mk: Adjust.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agodocs: document AM_MISSING_PROG
Eric Blake [Wed, 27 Jun 2012 21:55:14 +0000 (15:55 -0600)]
docs: document AM_MISSING_PROG

Addresses automake bug#11793.

This macro has been present for a long time, and coreutils has been
relying on it despite no documentation, which argues that it is stable
enough to be worth documenting.

Furthermore, since we are hoping to change our preferred invocation
from 'missing --run program' to 'missing program' in a future version
of automake, we need a way for packages to consistently get the
preferred invocation form rather than open-coding a call to 'missing'.
In particular, the Autoconf manual would love to recommend this macro
when discussing how to integrate an autotest suite with automake.

* doc/automake.texi (Public Macros): Document AM_MISSING_PROG.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: fix a spurious failure with Solaris make
Stefano Lattarini [Wed, 27 Jun 2012 13:07:03 +0000 (15:07 +0200)]
tests: fix a spurious failure with Solaris make

* t/subdir-order.sh: Run make in parallel only if the make implementation
truly supports it.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: simpler workaround for shells losing the exit status in exit trap
Stefano Lattarini [Sun, 24 Jun 2012 08:36:15 +0000 (10:36 +0200)]
tests: simpler workaround for shells losing the exit status in exit trap

Now that we can assume our tests are run by a decent POSIX shell, we
can simplify our workaround aimed at having the exit status propagated
correctly to the code in the exit trap.  Unfortunately, we cannot
dispense with such a workaround altogether, because it's still required
by some shells we need to support (at least Solaris 10 /bin/ksh and
/usr/xpg4/bin/sh).

For more information about the need of that workaround, see the entry
about 'trap' in the section "Limitations of Shell Builtins" in the
Autoconf manual:
<http://www.gnu.org/software/autoconf/manual/autoconf.html#trap>

The new workaround has been tested successfully with the following
shells:

  - Bash 4.1
  - Bash 3.2
  - Bash 3.0
  - Bash 2.05b
  - dash 0.5.5.1
  - dash 0.5.2
  - AT&T Ksh 93u (from official Debian package)
  - MirBSD Korn Shell 40.2 (from official Debian package)
  - Solaris 9, 10 and 11 /bin/ksh
  - Solaris 9, 10 and 11 /usr/xpg4/bin/sh
  - NetBSD 5.1 /bin/sh
  - NetBSD 5.1 /bin/ksh

* t/ax/test-init.sh (Exit): Rename ...
(_am_exit): ... like this.
(exit): New alias for '_am_exit'.  We cannot simply redefine 'exit'
as a shell function, because some shells (dash 0.5.5.1, Solaris 10
/bin/ksh and /usr/xpg4/bin/sh) do not allow it.
(_am_exit, trap): Add extra escaping for 'exit' calls, to ensure we
really invoke the 'exit' builtin and not our alias with the same
name.
* configure.ac: Check that the shell selected to run our testsuite
supports aliases named like shell builtins.
* t/REAMDE: Adjust.
* All tests: Adjust, by simply using 'exit' instead of 'Exit'.
* t/self-check-explicit-skips.sh: Adjust: the first usage of 'exit'
after it has been redefined as an alias must be on a new line w.r.t.
that where the alias is defined, in order for the redefinition to be
honored.
* syntax-checks.mk (sc_tests_Exit_not_exit): Delete.
(sc_tests_exit_not_Exit): New.
(syntax_check_rules): Adjust.
(sc_tests_automake_fails): Simplify the recipe a little.
* Several tests: Remove now useless spurious quoting once required
to placate the 'sc_tests_Exit_not_exit' maintainer check.
* gen-testsuite-part: Likewise.  Also, avoid uses of 'Exit' in the
generated scripts.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: avoid several spurious failures on Solaris
Stefano Lattarini [Sun, 24 Jun 2012 15:57:10 +0000 (17:57 +0200)]
tests: avoid several spurious failures on Solaris

* t/ax/is_newest: Rewrite to be Bourne-compatible, for /bin/sh shells like
Solaris' that are not POSIX-conforming.  The script is so small that such
a rewrite is easier than going through the hoops that would be required to
ensure this script is always executed with a POSIX shell.
* t/ax/is: Add a comment stating that this script is to be kept Bourne
compatible as well.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: avoid a spurious failure on NetBSD
Stefano Lattarini [Sun, 24 Jun 2012 14:52:51 +0000 (16:52 +0200)]
tests: avoid a spurious failure on NetBSD

* t/maken.sh: Do not expect the timestamp of the current directory
to be unchanged after a "make -n".

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: fix automatic re-execution of tests with Zsh
Stefano Lattarini [Sat, 23 Jun 2012 11:42:10 +0000 (13:42 +0200)]
tests: fix automatic re-execution of tests with Zsh

* defs: Use '$argv0' instead of '$0'.  With Zsh not started right
away in Bourne-compatibility mode, the latter will be the path not
of the test script itself, but of the file it's currently sourcing
-- i.e., in our case, './defs'.  This would cause the automatic
re-execution code to execute './defs' (basically a no-op) rather
than re-run the test correctly.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: drop support for older Zsh shells
Stefano Lattarini [Sat, 23 Jun 2012 09:16:08 +0000 (11:16 +0200)]
tests: drop support for older Zsh shells

* defs-static.in: Here.  The fact that such support has been broken for
almost a year (only fixed by today's commit 'v1.12.1-57-gf1e0300'),
causing no bug reports from anyone, shows that such support is not truly
warranted.  And it will get in the way of future improvements in the
handling of the exit trap (because bugs in older Zsh versions will
prevent some of our planned improvements).  So just drop it.
* t/README: Remove obsolete advice for working around bugs in older
versions of Zsh; instead, indicate version 4.3 is the oldest Zsh now
supported.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: allow AM_TEST_RUNNER_SHELL to be overridden
Stefano Lattarini [Sat, 23 Jun 2012 08:39:33 +0000 (10:39 +0200)]
tests: allow AM_TEST_RUNNER_SHELL to be overridden

* defs-static.in: Here.  This will make it easier for the maintainer
to run some self checks (like those in 't/self-check-exit.tap') with
different shells, to look for possible portability problems.  Fix a
typo (doubled "the") while we are at it.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: fix setup for older Zsh
Stefano Lattarini [Sat, 23 Jun 2012 08:34:29 +0000 (10:34 +0200)]
tests: fix setup for older Zsh

* defs-static.in: After the addition of TAP-based tests and our renaming
of "simple" test scripts from 'tests/foo.test' to 't/foo.sh', a test name
is valid if it matches the wildcard "*.sh" or "*.tap", not the wildcard
"*.test".  Adjust accordingly.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: avoid one last `...` command substitution in 'test-init.sh'
Stefano Lattarini [Fri, 22 Jun 2012 22:12:08 +0000 (00:12 +0200)]
tests: avoid one last `...` command substitution in 'test-init.sh'

* t/ax/test-init.sh (me): In the definition of this variable.  This
also shave off a couple of forks, and the need for a sanity check
only required in fringe situations.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agomaintcheck: guard against `...` for command substitution in test cases
Stefano Lattarini [Fri, 22 Jun 2012 22:06:10 +0000 (00:06 +0200)]
maintcheck: guard against `...` for command substitution in test cases

But still allow them in configure.ac, Makefile.am and shell scripts
created or used inside test cases itself, because Autoconf (as of
version 2.69) does not yet ensure that $CONFIG_SHELL will be set to
a proper POSIX shell.

* syntax-checks.mk (sc_tests_command_subst): New check.
(syntax-check_rules): Add it.
* t/tap-global-log.sh: Minimal tweakings to avoid triggering the
new maintainer check.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: more uses of $(...) over `...` for command substitution
Stefano Lattarini [Fri, 22 Jun 2012 21:31:00 +0000 (23:31 +0200)]
tests: more uses of $(...) over `...` for command substitution

Somehow missed by the previous changes.  No big deal, fix them now.

* t/ax/depcomp.sh: Here.
* t/autodist.sh: And here.
* t/autodist-no-duplicate.sh: And here.
* t/autodist-subdir.sh: Ad here.
* t/remake11.sh t/self-check-me.tap: And here.
* t/perf/testsuite-summary.sh: And here.
* t/perf/testsuite-recheck.sh: And here.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agocosmetics: quote `like this', not 'like this', in a couple of tests
Stefano Lattarini [Fri, 22 Jun 2012 21:18:54 +0000 (23:18 +0200)]
cosmetics: quote `like this', not 'like this', in a couple of tests

* t/ansi2knr-no-more.sh: Here.
* t/aclocal-verbose-install.sh: And here.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoreadme: clarify/extend few entries in 't/README'
Stefano Lattarini [Fri, 22 Jun 2012 21:14:38 +0000 (23:14 +0200)]
readme: clarify/extend few entries in 't/README'

* t/README (Writing test cases): Here.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoreadme: better separation of entries in 't/README'
Stefano Lattarini [Fri, 22 Jun 2012 21:06:55 +0000 (23:06 +0200)]
readme: better separation of entries in 't/README'

* t/README (Writing test cases): Prepend different entries with a '*'
character acting like a bullet in a list.  This make different entries
better separated, visually-wise.  Minor related reformatting.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoreadme: subsections "Do" and "Do not" in 't/README' merged
Stefano Lattarini [Fri, 22 Jun 2012 21:01:37 +0000 (23:01 +0200)]
readme: subsections "Do" and "Do not" in 't/README' merged

* t/README (Writing test cases): Merge subsections "Do" and "Do not".
The distinction was rather artificial, and more confusing than helpful.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: new requirement 'grep-nonprint'
Stefano Lattarini [Fri, 22 Jun 2012 20:31:35 +0000 (22:31 +0200)]
tests: new requirement 'grep-nonprint'

* t/ax/test-inist.sh ($esc): New, a literal escape character.
(grep-nonprint): New requirement, check that the grep implementation
available that can handle non-printing characters correctly.
* t/color.sh: Use it instead of hand-rolled equivalent, and do not
(re)define '$esc' explicitly.
* t/color2.sh: Likewise.
* t/tap-color.sh: Likewise.
* t/vtexi4.sh: Likewise.
* t/parallel-tests-no-color-in-log.sh: Likewise.  Also prefer the use
of grep over that of $FGREP, because the new requirement only check
grep, and ensure we only grep non-printing characters from a pipe, to
avoid hitting a BSD grep limitation.
* t/parallel-tests-reset-term.sh: Likewise.
* t/ax/tap-summary-aux.sh: Use '$esc' instead of hard-coding the
literal escape character.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agocosmetics: fix description of an expected error message in a test
Stefano Lattarini [Fri, 22 Jun 2012 19:59:26 +0000 (21:59 +0200)]
cosmetics: fix description of an expected error message in a test

* t/vartypo2.sh: Here.  This reflects the change from `this style'
of quoting to 'this style'.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: assume automake quotes 'like this', not `like this'
Stefano Lattarini [Fri, 22 Jun 2012 19:44:15 +0000 (21:44 +0200)]
tests: assume automake quotes 'like this', not `like this'

* t/add-missing.tap: Here.  This slightly simplifies and/or enhances
some grepping checks on automake diagnostic.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: prefer using 'is_newest' over 'ls -t' hacks
Stefano Lattarini [Fri, 22 Jun 2012 16:15:21 +0000 (18:15 +0200)]
tests: prefer using 'is_newest' over 'ls -t' hacks

To verify that a file 'new' is newer than the file 'old', it's much
cleaner to use "is_newest new old" rather than the more clumsy
"ls -t". Adjust several of our tests accordingly.

* syntax-checks.mk (sc_tests_ls_t): New check, guard against uses
of "ls -t" and similar.
(syntax_check_rules): Add it.
* t/maken.sh: Adjust.
* t/autohdr4.sh: Likewise.
* t/extradep2.sh: Likewise.
* t/lex-depend-cxx.sh: Likewise.
* t/extradep.sh: Likewise.
* t/yacc-depend2.sh: Likewise.
* t/yacc-pr204.sh: Likewise.
* t/lex-pr204.sh: Likewise.
* t/yacc8.sh: Likewise.
* t/acloca13.sh: Likewise.
* t/lex-depend.sh: Likewise, and enhance.
* t/acloca14.sh: Likewise.
* t/aclocal7.sh: Likewise.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: implement is_newest as an auxiliary script, not shell function
Stefano Lattarini [Fri, 22 Jun 2012 14:18:28 +0000 (16:18 +0200)]
tests: implement is_newest as an auxiliary script, not shell function

This will allow to also use it in the makefile recipes used in our
test cases.

* t/ax/test-init.sh (is_newest): Remove.
* t/ax/is_newest: New script.
* Makefile.am (EXTRA_DIST): Add it.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: fix some spurious failures in VPATH setup
Stefano Lattarini [Fri, 22 Jun 2012 13:34:12 +0000 (15:34 +0200)]
tests: fix some spurious failures in VPATH setup

* t/self-check-cleanup.tap: No need to copy the 'ax/t/test-init.sh'
file over in our temporary directory.
* t/self-check-reexec.tap: Likewise.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: work in VPATH setup again
Stefano Lattarini [Fri, 22 Jun 2012 13:14:20 +0000 (15:14 +0200)]
tests: work in VPATH setup again

* defs: Drop overly paranoid sanity checks that was causing all the tests
to fail spuriously when run in a VPATH setup, with a message like:
"../t/nodef.sh: ./t/ax/test-init.sh: not found in current directory".
Those checks looked for invariants that, even if broken, would still
cause the test to fail very early and with a pretty clear error message
anyway.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: automatic re-execution works for non-POSIX shells too
Stefano Lattarini [Fri, 22 Jun 2012 09:40:39 +0000 (11:40 +0200)]
tests: automatic re-execution works for non-POSIX shells too

Some inferior shells are too greedy in parsing their input.  If a
non-POSIX Bourne shell (like Solaris 10 /bin/sh) was used to launch
one of our test scripts, it would fail unconditionally, because it
unexpectedly saw some (by it) unsupported constructs, notwithstanding
such constructs being placed *after* the code implementing automatic
test re-execution with a better shell.  In conclusion, the shell
bailed out like this:

    $ /bin/sh t/ar.sh
    $ t/ar.sh: syntax error at line 257: `is_newest_files=$' unexpected

By moving all the potentially problematic code in a separate file, to
be sourced only after the code for automatic re-execution with a better
shell, we ensure that inferior shell cannot see such code by mistake.

* defs: All code after automatic shell re-execution moved out ...
* t/ax/test-init.sh: ... to this new file.
* syntax-checks.mk (xdefs): Add it.
* Makefile.am (dist_check_DATA): Add it.  Also move in 'defs' from
a less explicit 'check_DATA' declaration.
(nodist_check_DATA):  Move in 'defs-static' from a less explicit
'check_DATA' declaration.
(check_DATA): Remove.
* t/self-check-sanity.sh: Remove, it was actually too hacky and brittle,
sanity-checking situations we don0t actually care about.
* t/list-of-tests.mk: Adjust.
* t/self-check-explicit-skips.sh: Adjust, and fix a botched heading
comments while we are at it.
* t/self-check-reexec.tap: Adjust.
* t/self-check-cleanup.tap: Likewise.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: use more POSIX shell features our test scripts
Stefano Lattarini [Thu, 14 Jun 2012 11:13:58 +0000 (13:13 +0200)]
tests: use more POSIX shell features our test scripts

Since commit 'v1.12-36-g2d68fd9' of 2012-05-07, "configure: search a
sturdy POSIX shell to be used in the testsuite", the shell running
our test script is assured to be a POSIX-conforming shell, so we can
use the more modern and flexible idioms and features that we couldn't
use when we also aimed at compatibility with non-POSIX Bourne shells,
like Solaris /bin/sh.

* t/README: Suggest to use POSIX shell features liberally in test cases,
with possible exception of Makefile recipes and configure shell code.
* Several tests: Adjust to use more POSIX shell features; e.g., $(...)
rather than `...`, $((...)) rather than `expr ...`, "if ! CMD; then ..."
instead of "if CMD; then :; else ...", and so on.
In several places, when using the 'test' built-in, prefer '-eq' over
'=' for numeric comparisons, and prefer "grep -c PATTERN FILE" over
"grep PATTERN FILE | wc -l".
Throw in other low-hanging easy improvements and fixlets while we are
at it.
* t/ax/depcomp.sh, t/ax/tap-summary-aux.sh, t/ax/tap-functions.sh,
defs, defs-static.in: Likewise.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agodocs: avoid failures with development version of Texinfo (4.13.90)
Stefano Lattarini [Thu, 21 Jun 2012 11:13:04 +0000 (13:13 +0200)]
docs: avoid failures with development version of Texinfo (4.13.90)

* doc/automake-history.texi: Use '@item' instead of '@itemx' where
appropriate.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotypofix: s/test derivers/test drivers/ in check.am comments
Stefano Lattarini [Thu, 21 Jun 2012 09:43:54 +0000 (11:43 +0200)]
typofix: s/test derivers/test drivers/ in check.am comments

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotypofix: s/env/even/ in comments in GNUmakefile
Stefano Lattarini [Wed, 20 Jun 2012 21:32:44 +0000 (23:32 +0200)]
typofix: s/env/even/ in comments in GNUmakefile

Spotted by Eric Blake.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agobootstrap: overhaul and improve
Stefano Lattarini [Wed, 20 Jun 2012 16:28:02 +0000 (18:28 +0200)]
bootstrap: overhaul and improve

This fixes several weaknesses and buglets in the 'bootstrap' convenience
target offered in GNUmakefile (and its supporting code).  Refer to the
extensive code comments in there for more details.

* GNUmakefile: Almost completely rewritten.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agodocs: quote 'like this', not `like this'
Stefano Lattarini [Wed, 20 Jun 2012 15:27:57 +0000 (17:27 +0200)]
docs: quote 'like this', not `like this'

* doc/automake.texi: Fix the reported warnings and informative messages
from automake to quote 'like this' rather than as `like this'.  Do the
same for comments and some text in our examples.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoMerge branch 'docs-recursion' into maint
Stefano Lattarini [Fri, 15 Jun 2012 08:09:19 +0000 (10:09 +0200)]
Merge branch 'docs-recursion' into maint

* docs-recursion:
  docs: recursive make considered harmful

11 years agoMerge branch 'silent-custom' into maint
Stefano Lattarini [Fri, 15 Jun 2012 08:09:04 +0000 (10:09 +0200)]
Merge branch 'silent-custom' into maint

* silent-custom:
  silent: new $(AM_V_P) variable, tell if we're running in silent mode
  refactor: silent rules handling (a little)
  refactor: &define_verbose_var: accept a third optional argument

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: minor reorganization of few tests
Stefano Lattarini [Thu, 14 Jun 2012 21:27:42 +0000 (23:27 +0200)]
tests: minor reorganization of few tests

* t/subdir3.sh: Rename ...
* t/sourcefile-in-subdir.sh: ... like this.
* t/subdir4.sh: Rename ...
* t/depcomp-implicit-auxdir.sh: ... like this.
* t/subdir6.sh: Rename ...
* t/confh-subdir-clean.sh: ... like this.
* t/subdir7.sh: Renamed ...
* t/dir-named-obj-is-bad.sh: ... like this, and enhance.
* t/srcsub.sh, t/srcsub2.sh: Unify ...
* t/src-acsubst.sh: ... as this test.
* t/list-of-tests.mk: Adjust.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agofixup: adjust t/list-of-tests.mk for renamed/added tests
Stefano Lattarini [Thu, 14 Jun 2012 21:04:33 +0000 (23:04 +0200)]
fixup: adjust t/list-of-tests.mk for renamed/added tests

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agosubdirs: enhance coverage, tweak and rename few tests
Stefano Lattarini [Thu, 14 Jun 2012 20:47:28 +0000 (22:47 +0200)]
subdirs: enhance coverage, tweak and rename few tests

* t/subdir5.sh: Rename ...
* t/subdir-add-pr46.sh: ... like this.
* t/subdir8.sh: Rename ...
* t/subdir-add2-pr46.sh: ... like this.
* t/cond2.sh: Rename ...
* t/subdir-cond-err.sh: ... like this.
* t/subdir9.sh: Rename ...
* t/subdir-with-slash.sh: ... like this; improve heading comments.
* t/subcond.sh: Rename ...
* t/subdir-cond-gettext.sh: ... like this; improve m4 quoting.
* t/subcond2.sh: Rename ...
* t/subdir-am-cond.sh: ... like this; adjust heading comments.
* t/subcond3.sh: Rename ...
* t/subdir-ac-subst.sh: ... like this; adjust heading comments.
* t/subdir2.sh: Rename ...
* t/subdir-subsub.sh: ... like this; enhance so that it also runs
'./configure' and 'make'.
* t/subdir-order.sh: New test, check that the $(SUDBIRS) entries
are processed in the order they are specified.
* doc/automake.texi: Adjust references to tests.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agosync: update files from upstream with "make fetch"
Stefano Lattarini [Thu, 14 Jun 2012 14:32:47 +0000 (16:32 +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>
11 years agopy-compile: consistently quote 'like this', not `like this'.
Stefano Lattarini [Thu, 14 Jun 2012 14:30:16 +0000 (16:30 +0200)]
py-compile: consistently quote 'like this', not `like this'.

* lib/py-compile (usage_error): Here.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agodocs: recursive make considered harmful
Stefano Lattarini [Tue, 12 Jun 2012 15:24:21 +0000 (17:24 +0200)]
docs: recursive make considered harmful

In the documentation, we shouldn't confuse "packages using subdirectories"
with "packages using recursive make invocations".  A package can have a
careful organization in subdirectories, make no (or almost no) use of make
recursion (examples of such packages are GNU bison, GNU cppi, and Automake
itself).

In fact, make recursion should be used as seldom as possible, because it
makes the build system more brittle and dependency declarations less
faithful.  See Peter Miller's article "Recursive Make Considered Harmful"
for more a more in-depth discussion:

    http://miller.emu.id.au/pmiller/books/rmch/

* doc/automake.texi (Directories): Clarify how a build system based on
make recursion does.  Observe that such a system, albeit being very
widespread, has its own issues and drawbacks, and that one can have a
non-recursive setup also for projects using complex directory layout.
(Recursing subdirectories): Speak of "packages that use make recursion"
rather than of "packages with subdirectories".

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoMerge branch 'subdirs-simplify' into maint
Stefano Lattarini [Tue, 12 Jun 2012 14:12:45 +0000 (16:12 +0200)]
Merge branch 'subdirs-simplify' into maint

* subdirs-simplify:
  docs: clean rules are not run in reverse order of build rules anymore

11 years agodocs: clean rules are not run in reverse order of build rules anymore
Stefano Lattarini [Tue, 12 Jun 2012 14:10:19 +0000 (16:10 +0200)]
docs: clean rules are not run in reverse order of build rules anymore

At least since commit 'v1.12.1-12-gec6a135' of 2012-06-10, "subdirs: unify
rules for "cleaning" and "normal" recursive targets"

* doc/automake.texi (Recursing subdirectories): Adjust.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoMerge branch 'subdir-objects-pr10697' into maint
Stefano Lattarini [Mon, 11 Jun 2012 19:27:12 +0000 (21:27 +0200)]
Merge branch 'subdir-objects-pr10697' into maint

* subdir-objects-pr10697:
  maintcheck: fix failures, both real and spurious

11 years agomaintcheck: fix failures, both real and spurious
Stefano Lattarini [Mon, 11 Jun 2012 19:21:32 +0000 (21:21 +0200)]
maintcheck: fix failures, both real and spurious

* syntax-checks.mk (sc_rm_minus_f): Whitelist the
't/subobj-clean*-pr10697.sh' tests.
* t/subobj-clean-pr10697.sh: When redefining PATH,
use '$PATH_SEPARATOR', not hard-coded ':'.
* t/subobj-clean-lt-pr10697.sh: Likewise.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: merged some testsuite fixlets
Stefano Lattarini [Mon, 11 Jun 2012 17:48:08 +0000 (19:48 +0200)]
tests: merged some testsuite fixlets

* fix-cxx-libtool-demo:
  tests: avoid failure due to libtool quirks in C++ demo test

* subdir-objects-pr10697:
  tests: fix spurious failures due to missing '$sleep'

* subdirs-simplify:
  subdir tests: avoid an use of "make -j4", for portability

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agosubdir tests: avoid an use of "make -j4", for portability
Stefano Lattarini [Mon, 11 Jun 2012 17:46:46 +0000 (19:46 +0200)]
subdir tests: avoid an use of "make -j4", for portability

Otherwise, a spurious failure with Solaris CCS make can be triggered.
The coverage is not actually reduced, since the code path is still
covered when one runs the testsuite with AM_TESTSUITE_MAKE="make -jN"
(as should be done periodically).

* t/subdir-distclean.sh : Call simply "make maintainer-check", not
"make -j4 maintainer-check".

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: avoid failure due to libtool quirks in C++ demo test
Stefano Lattarini [Mon, 11 Jun 2012 17:38:54 +0000 (19:38 +0200)]
tests: avoid failure due to libtool quirks in C++ demo test

Revealed by failures on NetBSD 5.1.

* t/cxx-lt-demo.sh: In "make distcheck" invocation, don't define 'CC'
to "false", as that value would be exported and passed to the child
./configure invocation, and some configure checks generated by libtool
autoconf macros can still require a C preprocessor even for packages
using only C++, and bail out if it's not found.  The problem was not
apparent on Solaris and GNU/Linux because those systems have a
'/lib/cpp' program, and configure detected and used that as a fallback
C preprocessor.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: fix spurious failures due to missing '$sleep'
Stefano Lattarini [Mon, 11 Jun 2012 16:52:38 +0000 (18:52 +0200)]
tests: fix spurious failures due to missing '$sleep'

Revealed by failures on NetBSD 5.1.

* t/subobj-clean-pr10697.sh: Call '$sleep' before modifying the
files that should trigger an automatic remake.
* t/subobj-clean-lt-pr10697.sh: Likewise.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoMerge branches 'subdirs-simplify' and 'subdir-objects-pr10697' into maint
Stefano Lattarini [Mon, 11 Jun 2012 15:35:35 +0000 (17:35 +0200)]
Merge branches 'subdirs-simplify' and 'subdir-objects-pr10697' into maint

* subdirs-simplify:
  subdirs: unify rules for "cleaning" and "normal" recursive targets
  tests: add a "demo" test on C support

* subdir-objects-pr10697:
  subdir-objects: improve "make mostlyclean" efficiency and flexibility
  tests: look for '.lo' rather than '.o' object when using Libtool with C++
  cosmetics: few typofixes in older ChangeLogs, suggested by "codespell.py"

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agosubdirs: unify rules for "cleaning" and "normal" recursive targets
Stefano Lattarini [Sun, 10 Jun 2012 21:08:07 +0000 (23:08 +0200)]
subdirs: unify rules for "cleaning" and "normal" recursive targets

Before this change, the recursive invocation of cleaning targets in
the $(SUBDIRS) where done in inverse order, i.e., starting from the
last $(SUBDIRS) entry and proceeding towards the first.  According
to the code comments, this was done ...

    ... in an attempt to alleviate a problem that can happen when
    dependencies are enabled.  In this case, the .P file in one
    directory can depend on some automatically generated header
    in an earlier directory.  Since the dependencies are required
    before any target is examined, make bombs.

But this comment does not apply anymore to the current implementation
of automatic dependency tracking: the '.Po' and '.Plo' files does not
depend on any C header or source file, ever!

So it seems that the distinction between "normal" and "cleaning"
recursive targets is a stale leftover of an older implementation of
the automatic dependency tracking.  In fact, the Automake History
manual seems to confirm this suspect; the section "First Take on
Dependency Tracking" reads:

    Because each .P file was a dependency of Makefile, this meant
    that dependency tracking was done eagerly by make.  For instance,
    "make clean" would cause all the dependency files to be updated,
    and then immediately removed.  This eagerness also caused problems
    with some configurations; if a certain source file could not be
    compiled on a given architecture for some reason, dependency
    tracking would fail, aborting the entire build.

and the following section "Dependencies As Side Effects" reads:

    In this approach, the .P files were included using the -include
    command, which let us create these files lazily.  This avoided
    the "make clean" problem.

So the distinction between "normal" and "cleaning" recursive targets
has likely been obsolete since by then already.  We can thus remove
such distinction, thus reducing some complications and duplication in
our rules.  Doing so, the whole testsuite still passes (both with GCC
and Sun C 5.9), even the test 'c-demo.sh', which, among the other
things, exercise the setup described in the obsolete code comment
referenced above.

Finally, note that we still keep '$(RECURSIVE_CLEAN_TARGETS)' and
'$(RECURSIVE_TARGETS)' as two distinct variables, to ensure a better
backward-compatibility for any user-defined rules that happen to use
those variables.

* NEWS: Update.
* lib/am/subdirs.am ($(RECURSIVE_CLEAN_TARGETS), $(CLEAN_TARGETS)):
Merge their recipes.
* t/subdir-distclean.sh: New test, check that "./configure && make
&& make distclean" is actually a no-op, even when conditional SUBDIRS
are involved.
* t/list-of-tests.mk: Add it.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: add a "demo" test on C support
Stefano Lattarini [Sun, 10 Jun 2012 22:49:18 +0000 (00:49 +0200)]
tests: add a "demo" test on C support

Showing and testing non-trivial use of C support, and its interaction
with other features.

* t/c-demo.sh: New test.
* t/list-of-tests.mk: Add it.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: look for '.lo' rather than '.o' object when using Libtool with C++
Stefano Lattarini [Sat, 9 Jun 2012 18:13:43 +0000 (20:13 +0200)]
tests: look for '.lo' rather than '.o' object when using Libtool with C++

* t/cxx-lt-demo.sh: ... in this test.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agocosmetics: few typofixes in older ChangeLogs, suggested by "codespell.py"
Stefano Lattarini [Sat, 9 Jun 2012 18:04:24 +0000 (20:04 +0200)]
cosmetics: few typofixes in older ChangeLogs, suggested by "codespell.py"

The typofixes offered by this patch have been suggested by the
"codespell.py" script.  Reference:
<http://git.profusion.mobi/cgit.cgi/lucas/codespell/>

* old/ChangeLog.01, old/ChangeLog.02, old/ChangeLog.03: Fix few typos.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agosilent: new $(AM_V_P) variable, tell if we're running in silent mode
Stefano Lattarini [Mon, 11 Jun 2012 14:12:01 +0000 (16:12 +0200)]
silent: new $(AM_V_P) variable, tell if we're running in silent mode

Addresses part of automake bug#8665.

* automake.in (handle_silent): Define a new make variable '$(AM_V_P)',
that expands to a shell conditional that can be used in make recipes to
determine whether they are being run in silent mode or not.  The choice
of the name derives from the LISP convention of appending the letter
'P' to denote a predicate (see also "the '-P' convention" in the Jargon
File); we do so for lack of a better convention.
* t/automake.texi, NEWS: Document the new variable.
* t/silent6.sh: Adjust and extend.  Move out the checks that didn't
actually deal with user extension of silent rules ...
* t/silent-obsolescent-warns.sh: ... into this test (bound to be
removed once 'maint' is merged into the 'master' branch).
* t/list-of-tests.mk: Add the new test.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agorefactor: silent rules handling (a little)
Stefano Lattarini [Mon, 11 Jun 2012 11:00:23 +0000 (13:00 +0200)]
refactor: silent rules handling (a little)

* automake.in (handle_languages): Move definition of $(AM_V_GEN)
variable ...
(define_verbose_tagvar): ... and of '$(AM_V_at)' variable ...
(handle_silent): ... in this new subroutine.
(generate_makefile): Call it.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agorefactor: &define_verbose_var: accept a third optional argument
Stefano Lattarini [Mon, 11 Jun 2012 10:48:29 +0000 (12:48 +0200)]
refactor: &define_verbose_var: accept a third optional argument

This is only required by future changes.

* automake.in (define_verbose_var): Accept a third optional argument,
specifying the value to assign to the given make variable when silent
rules are disabled.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agomaint: grammar fixes: s/all these/all of these/
Jim Meyering [Sun, 10 Jun 2012 20:03:49 +0000 (22:03 +0200)]
maint: grammar fixes: s/all these/all of these/

Run this command:
  git grep -li '\<all.these\>' \
    |xargs perl -pi -e 's/\b([Aa])ll these\b/${1}ll of these/'

11 years agosubdir-objects: improve "make mostlyclean" efficiency and flexibility
Stefano Lattarini [Sun, 10 Jun 2012 11:38:58 +0000 (13:38 +0200)]
subdir-objects: improve "make mostlyclean" efficiency and flexibility

Fixes automake bug#10697.

Before this change, the generated Makefile issued one 'rm' invocation
for each subdir object file.  Not only was this very inefficient when
there were several such files, but it also caused stale object files
to be left behind when a source file was renamed or removed.

* automake.in (handle_single_transform): When a subdir object is seen,
update '%compile_clean_files' to clean all the compiled objects in its
same subdirectory, and all the libtool compiled objects ('.lo') there
as well is that subdir object is a libtool one.
* t/subobj-clean-pr10697.sh: New test.
* t/subobj-clean-lt-pr10697.sh: Likewise.
* t/list-of-tests.mk: Add them.
* NEWS: Update.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: look for '.lo' rather than '.o' object when using Libtool with C++
Stefano Lattarini [Sat, 9 Jun 2012 18:13:43 +0000 (20:13 +0200)]
tests: look for '.lo' rather than '.o' object when using Libtool with C++

* t/cxx-lt-demo.sh: ... in this test.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agocosmetics: few typofixes in older ChangeLogs, suggested by "codespell.py"
Stefano Lattarini [Sat, 9 Jun 2012 18:04:24 +0000 (20:04 +0200)]
cosmetics: few typofixes in older ChangeLogs, suggested by "codespell.py"

The typofixes offered by this patch have been suggested by the
"codespell.py" script.  Reference:
<http://git.profusion.mobi/cgit.cgi/lucas/codespell/>

* old/ChangeLog.01, old/ChangeLog.02, old/ChangeLog.03: Fix few typos.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: add basic semantic tests on C++ support
Stefano Lattarini [Sat, 9 Jun 2012 13:11:10 +0000 (15:11 +0200)]
tests: add basic semantic tests on C++ support

Strange as it might seem, we were still missing them (yikes).

* t/cxx-demo.sh: New test.
* t/cxx-lt-demo.sh: Likewise (using libtool).
* t/list-of-tests.mk: Add them.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: minor tweak to 't/objc-megademo.sh'
Stefano Lattarini [Sat, 9 Jun 2012 11:50:12 +0000 (13:50 +0200)]
tests: minor tweak to 't/objc-megademo.sh'

* t/objc-megademo.sh (am_create_testdir): Define to "empty" before
including ./defs, because this test doesn't rely on the files usually
pre-set by the setup in there.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agonews: document deprecation of configure.in
Stefano Lattarini [Sat, 2 Jun 2012 07:34:29 +0000 (09:34 +0200)]
news: document deprecation of configure.in

* NEWS (Warnings and deprecations): We now warn if 'configure.in' is
used instead of 'configure.ac' as autoconf input.
(Future backward-incompatibilities): Adjust.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agonews: put planned backward compatibilities early
Stefano Lattarini [Sat, 2 Jun 2012 07:24:29 +0000 (09:24 +0200)]
news: put planned backward compatibilities early

* NEWS (Future backward-incompatibilities): Put them in the news
entries for the future 1.12.2 release.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agosync: update files from upstream with "make fetch"
Stefano Lattarini [Fri, 1 Jun 2012 18:24:20 +0000 (20:24 +0200)]
sync: update files from upstream with "make fetch"

* lib/config.sub, lib/gitlog-to-changelog, lib/texinfo.tex: Update.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agomaint: deprecate 'configure.in' as autoconf input
Stefano Lattarini [Fri, 1 Jun 2012 17:15:29 +0000 (19:15 +0200)]
maint: deprecate 'configure.in' as autoconf input

It has been years since that has been deprecated in the documentation,
in favour of 'configure.ac':

    Previous versions of Autoconf promoted the name configure.in, which
    is somewhat ambiguous (the tool needed to process this file is not
    described by its extension), and introduces a slight confusion with
    config.h.in and so on (for which '.in' means "to be processed by
    configure"). Using configure.ac is now preferred.

It's now time to start giving runtime warning about the use of
'configure.in', so that support for it can be removed in future
versions of autoconf/automake.

See also, in the Autoconf repository, commit 'v2.69-4-g560f16b' of
2012-05-23, "general: deprecate 'configure.in' as autoconf input".

* lib/Automake/Configure_ac.pm: Issue a warning in the 'obsolete'
category if 'configure.in' is detected.  Since this module is synced
from Automake, this change is to be backported there (and will be
soon).
* t/help.sh: Adjust.
* t/configure.sh: Adjust and enhance.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agomaint: post-release minor version bump
Stefano Lattarini [Fri, 1 Jun 2012 16:55:14 +0000 (18:55 +0200)]
maint: post-release minor version bump

* configure.ac (AC_INIT): Bump version number to 1.12.1a.
* m4/amversion.m4: Likewise (automatically regenerated by
"make bootstrap").

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agorelease: stable release 1.12.1 v1.12.1
Stefano Lattarini [Fri, 1 Jun 2012 13:50:03 +0000 (15:50 +0200)]
release: stable release 1.12.1

* configure.ac (AC_INIT): Bump version number to 1.12.1.
* m4/amversion.m4: Likewise (auto-updated by "./bootstrap").

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agocopyright: update copyright years in a couple of files
Stefano Lattarini [Fri, 1 Jun 2012 13:47:17 +0000 (15:47 +0200)]
copyright: update copyright years in a couple of files

* doc/help2man, t/aclocal-verbose-install.sh: Update copyright,
thanks to "make update-copyright".

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agotests: avoid spurious failures with Solaris 9 cscope program
Stefano Lattarini [Fri, 1 Jun 2012 10:37:41 +0000 (12:37 +0200)]
tests: avoid spurious failures with Solaris 9 cscope program

* t/cscope.tap: Also check that the cscope program in use supports the
'-q' option; if this is not the case, some cscope usages in the generated
Makefiles would fail, so we must skip the checks involving those usages.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agomaintcheck: fix a spurious failure
Stefano Lattarini [Fri, 1 Jun 2012 09:49:16 +0000 (11:49 +0200)]
maintcheck: fix a spurious failure

* Makefile.am (test_subdirs): Add 't/perf'.  Fix spurious failure
of the 'maintainer-check-list-of-tests' target.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agoperf: beginning of a performance testsuite
Stefano Lattarini [Tue, 29 May 2012 09:58:02 +0000 (11:58 +0200)]
perf: beginning of a performance testsuite

Some tests in the Automake testsuite already aims only at verifying
the performance, rather than the correctness, of some operations.
Still, they are somewhat shoehorned and forced into the PASS/FAIL
framework (say, with the 'ulimit' shell builtin used to verify some
operation doesn't take up too much time or memory), but that is
conceptually a stretch, and has already caused problems in practice
(see automake bug#11512 for an example).

So we start moving the "performance tests" out of the testsuite proper,
and make them run only "on demand" (when the user exports the variable
'AM_TESTSUITE_PERF' to "yes").  Ideally, we should provide those tests
with a custom runner/driver that measures and displays the relevant
performance information, but doing that correctly and with the right
APIs is definitely more difficult, so we leave it for a later step
(an hope we'll take such a step eventually).

* t/cond29.sh: Move ...
* t/perf/cond.sh: ... here, and adjust.
* t/testsuite-recheck-speed.sh: Move ...
* t/perf/testsuite-recheck.sh: ... here.
* t/testsuite-summary-speed.sh: Move ...
* t/perf/testsuite-summary.sh: ... here.
* t/list-of-tests.mk (perf_TESTS): New variable, listing the tests in
the 't/perf' directory.
(handwritten_TESTS): Adjust.
* defs: Skip any tests in the 't/perf/' subdirectory unless the
'AM_TESTSUITE_PERF' variable is set to "yes" or "y".
* .gitignore: Update.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agoMerge branch 'fix-pr11543' into maint
Stefano Lattarini [Tue, 29 May 2012 07:36:26 +0000 (09:36 +0200)]
Merge branch 'fix-pr11543' into maint

* fix-pr11543:
  aclocal: declare function prototypes, do not use '&' in function calls

12 years agoaclocal: declare function prototypes, do not use '&' in function calls
Stefano Lattarini [Mon, 28 May 2012 11:32:03 +0000 (13:32 +0200)]
aclocal: declare function prototypes, do not use '&' in function calls

This change will also fix automake bug#11543 (from a report by Matt
Burgess).

* aclocal.in: Declare prototypes for almost all functions early, before
any actual function definition (but omit the prototype for the dynamically
generated '&search' function).  Add prototypes to any function definition.
Remove '&' from function invocations (i.e., simply use "func(ARGS..)"
instead of "&func(ARGS...)").
* THANKS, NEWS: Update.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agonews: support for configure.in will be dropped in future automake versions
Stefano Lattarini [Mon, 28 May 2012 11:52:34 +0000 (13:52 +0200)]
news: support for configure.in will be dropped in future automake versions

The use of configure.in as Autoconf input has been deprecated for a
very long time in the Autoconf documentation, and the next version of
Autoconf (2.70) will start warning about it ar runtime as well (see
commit 'v2.69-4-g560f16b' or 2012-05-23, "general: deprecate
'configure.in' as autoconf input", in the Autoconf's git repository).

* NEWS (Future backward-incompatibilities): Update.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agotests: fix botched heading comments in 'lex-clean-cxx.sh'
Stefano Lattarini [Sat, 26 May 2012 16:01:23 +0000 (18:01 +0200)]
tests: fix botched heading comments in 'lex-clean-cxx.sh'

* t/lex-clean-cxx.sh: This file tests lex, not yacc.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years ago[ng] maintcheck: some tweaks and fixlets
Stefano Lattarini [Fri, 25 May 2012 16:49:07 +0000 (18:49 +0200)]
[ng] maintcheck: some tweaks and fixlets

* syntax-checks.mk (sc_no_brace_variable_expansions): Do not complain
about ${MAKEVAR} usages in comments: they might be legitimate.  This
change is not strictly required for mainline automake, but will help
in the Automake-NG branch.
* sc_tests_here_document_format: Relax a bit, so that usages like
"cout << "string" << endl;" in the test scripts (usages which can be
used in here documents defining C++ sources) are not flagged as uses
of bad delimiters for here documents.  This change is not strictly
required for mainline automake, but will help in the Automake-NG
branch, and will anyway be more future proof w.r.t. possible future
testsuite additions.
(sc_tests_Exit_not_exit): Do not whitelist lines containing $PERL
explicitly (that was only required for one test); instead ...
* t/ext2.sh: ... use "exit (1)" instead of "exit 1" in the perl
invocation of the guilty script.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agohelp: fix a typo in the list of warning categories
Stefano Lattarini [Mon, 21 May 2012 13:44:14 +0000 (15:44 +0200)]
help: fix a typo in the list of warning categories

* lib/Automake/ChannelDefs.pm (usage): s/none'/none/.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agomaint: version bump after beta release
Stefano Lattarini [Sat, 19 May 2012 13:27:21 +0000 (15:27 +0200)]
maint: version bump after beta release

* configure.ac (AC_INIT): Bump version number to 1.12.0c.
* m4/amversion.m4: Likewise (auto-updated by "./bootstrap").

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agorelease: beta release 1.12.0b (will become 1.12.1) v1.12.0b
Stefano Lattarini [Sat, 19 May 2012 13:18:43 +0000 (15:18 +0200)]
release: beta release 1.12.0b (will become 1.12.1)

* configure.ac (AC_INIT): Bump version number to 1.12.0b.
* m4/amversion.m4: Likewise (auto-updated by "./bootstrap").

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agorelease: remove overly picky check
Stefano Lattarini [Sat, 19 May 2012 13:11:36 +0000 (15:11 +0200)]
release: remove overly picky check

* Makefile.am (git-tag-release): Do not check that the version number
NEWS is updated w.r.t. $(VERSION); given the new way we manage NEWS,
that would cause gratuitous spurious failures.
* HACKING: Update.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agoMerge branch 'ylwrap-line-filename' into maint
Stefano Lattarini [Sat, 19 May 2012 11:22:12 +0000 (13:22 +0200)]
Merge branch 'ylwrap-line-filename' into maint

* ylwrap-line-filename:
  ylwrap: preserve subdirectories in "#line" munging
  ylwrap: preparatory refactoring

12 years agotests: use 'parallel-tests' Automake option by default
Stefano Lattarini [Tue, 15 May 2012 14:12:09 +0000 (16:12 +0200)]
tests: use 'parallel-tests' Automake option by default

This will help our transition from 'serial-tests' to 'parallel-tests'
as the default test suite driver enabled by a TESTS assignment in the
input Makefile.am.  Note that that change of default will only take
place in master, though.

* defs: Pass the 'parallel-tests' option to the AM_INIT_AUTOMAKE
invocation in the created 'configure.ac' stub, unless the variable
'am_serial_tests' is set to "yes".  Don't pay attention anymore to
the 'am_parallel_tests' variable, that's obsolete now.
* defs-static.in: Warn if the 'am_serial_tests' variable is set in the
environment; conversely, don't warn anymore about 'am_parallel_tests'
being set in the environment.
* Makefile.am (AM_TESTS_ENVIRONMENT): Nullify the 'am_serial_tests'
variable instead of the now-obsolete 'am_parallel_tests' one.
* syntax-checks.mk (sc_tests_obsolete_variables): Also warn against
uses of 'am_parallel_tests', which is now deprecated in favor of
'am_serial_tests'.  Similarly, if a use of 'parallel_tests' is seen,
suggest using 'am_serial_tests' instead, not 'am_parallel_tests'.
* gen-testsuite-part: Now that we use the 'parallel-tests' by default
in our tests, we need to completely change the logic and semantics of
generation of sibling tests for those tests that check the Automake
generated testsuite harness itself.  Do that, and give a complete
explanation of the new logic and semantics in the relevant comments.
* t/README: Update.
* Lots of test cases: Adjust.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agodoc: fix location of Automake's own test-suite.log file
Stefano Lattarini [Thu, 17 May 2012 10:36:23 +0000 (12:36 +0200)]
doc: fix location of Automake's own test-suite.log file

* doc/automake.texi (Reporting Bugs): The global testsuite log of
Automake is now (basically since we have removed make recursion from
the Automake's build system) saved in the file 'test-suite.log', not
in the file 'tests/test-suite.log'.  Adjust accordingly.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agoylwrap: preserve subdirectories in "#line" munging
Nikolai Weibull [Wed, 16 May 2012 16:16:41 +0000 (18:16 +0200)]
ylwrap: preserve subdirectories in "#line" munging

If Automake is used in non-recursive mode and one of the inputs is a
yacc file, for example, "src/grammar.y", ylwrap will remove too many
directories from the output file when it adjusts the paths in it.
This results in #line directives referring to "grammar.y" instead of
"src/grammar.y".

This is a result of $input_rx simply taking all the directory
components of the absolute input path and removing them.

One solution is to store the path passed to ylwrap and replace
$input_rx with it.  This is what we do.

Suggestion and initial patch (without tests) by Nikolai Weibull:
<http://lists.gnu.org/archive/html/automake/2012-05/msg00013.html>
Final patch by Stefano Lattarini.

* lib/ylwrap ($input_sub_rx): New.
When munging the #line directives, substitute '$input_rx' with it,
instead of stripping it altogether.
Adjust comments.
* t/yacc-line.sh, t/lex-line: Adjust and extend.
* NEWS, THANKS: Update.

Copyright-paperwork-exempt: yes
Co-authored-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agoylwrap: preparatory refactoring
Stefano Lattarini [Wed, 16 May 2012 15:35:05 +0000 (17:35 +0200)]
ylwrap: preparatory refactoring

This commit should cause no semantic change in the ylwrap behaviour.
It will only be needed in light of a future change.  See:
<http://lists.gnu.org/archive/html/automake/2012-05/msg00013.html>

* lib/ylwrap (get_dirname, quote_for_sed): New functions, factoring
out some non-trivial code.  Use them where appropriate.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agoyacc tests: avoid a spurious failure with Sun C++ 5.9
Stefano Lattarini [Wed, 16 May 2012 14:26:39 +0000 (16:26 +0200)]
yacc tests: avoid a spurious failure with Sun C++ 5.9

* t/yacc-cxx.sh (parse1.yy): When calling the 'getchar' function declared
in the #included <cstdio>, fully qualify it as std::getchar', to avoid
Sun C++ 5.9 erroring out with:
"parse1.yy", line 5: Error: The function "getc" must have a prototype.
* t/yacc-clean-cxx.sh (sub1/parsefoo.yxx): Likewise.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agoself tests: cater for /bin/ksh symlinked to Zsh
Stefano Lattarini [Wed, 16 May 2012 14:10:06 +0000 (16:10 +0200)]
self tests: cater for /bin/ksh symlinked to Zsh

* t/self-check-reexec.tap: When searching for a suitable non-Bash
shells, be sure to reject any shell that is Zsh "in disguise" (as
can be found on some Debian systems, where /bin/ksh can be symlinked
to /bin/zsh4).  This is required because our testsuite does not
support older versions of Zsh, and that was causing the test to fail
in the setup just described.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agotests: fix spurious failures due to dpkg install-info
Stefano Lattarini [Wed, 16 May 2012 13:50:14 +0000 (15:50 +0200)]
tests: fix spurious failures due to dpkg install-info

* t/install-info-dir.sh: Skip some checks if 'install-info' is the one
from dpkg, not the one from GNU info; the former might try to create
files in '/var/backups/', causing spurious failures like this for any
non-root user:

    install-info(.../install-info-dir.dir/_inst/info/foo.info): \
      creating new section `Dummy utilities'
    cp: cannot create regular file `/var/backups/infodir.bak': \
      Permission denied
    install-info(.../install-info-dir.dir/_inst/info/foo.info): \
      could not backup .../install-info-dir.dir/_inst/info/dir in \
      /var/backups/infodir.bak: No such file or directory

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agotests: fix spurious failure due to i18n issue
Stefano Lattarini [Sat, 12 May 2012 06:42:37 +0000 (08:42 +0200)]
tests: fix spurious failure due to i18n issue

Fixes automake bug#11452.

* t/parallel-tests-fork-bomb.sh: Export LANG, LANGUAGE and LC_ALL to
'C', to ensure error messages will be in English, and thus avoiding
possible false negatives in our grepping of them.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
12 years agotests: add few missing 'cc' and 'c++' requirements
Stefano Lattarini [Thu, 10 May 2012 12:32:27 +0000 (14:32 +0200)]
tests: add few missing 'cc' and 'c++' requirements

Without that requirements, the configure-time overrides of CC and CXX
wouldn't be honored in the affected tests.

* t/silent-yacc.sh ($required): Require 'cc'.
* t/silent-yacc-headers.sh: Likewise.
* t/silent-lex.sh: Likewise.
* t/lex-clean.sh: Likewise.
* t/lex-depend.sh: Likewise.
* t/lex-line.sh: Likewise.
* t/lex-depend.sh: Likewise.
* t/lex-pr204.sh: Likewise.
* t/yacc-deleted-headers.sh: Likewise.
* t/yacc-line.sh: Likewise.
* t/yacc-depend.sh: Likewise.
* t/yacc-depend2.sh: Likewise.
* t/yacc-dist-nobuild-subdir.sh: Likewise.
* t/yacc-bison-skeleton.sh: Likewise.
* t/yacc-bison-skeleton-cxx.sh ($required): Require 'c++'.
* t/yacc-clean-cxx.sh: Likewise.
* t/yacc-d-cxx.sh: Likewise.
* t/yacc-cxx.sh: Likewise.
* t/yacc-mix-c-cxx.sh ($required): Require 'cc' and 'c++'.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>