* tests/defs.in ($am_skip_defs): New variable, to be used when
./defs must be sourced multiple times. If set, unset it and
only define $srcdir; otherwise, also go through the rest of
the script.
($am_defs_included): Remove, no more needed.
* tests/Makefile.am ($(parallel_tests)): Update accordingly,
using only $srcdir from defs.
Fixes potential test failures of tests that use $required.
Fix distcheck failure with distributed generated parallel tests.
* tests/Makefile.am ($(parallel_tests)): Cope with $(srcdir)
being different from the value at developer `make dist' time.
* tests/defs.in: Protect against mutiple inclusion, by using ...
($am_defs_included): ... this new variable.
($srcdir): Do not compute, but simply define to `@abs_srcdir@'
as substituted by configure.
Report, suggestions and first fix by Ralf Wildenhues, final
patch by Stefano Lattarini.
Generated tests are now just a thin layer around other tests.
* tests/Makefile.am: Rewrite the rule to generate the `*-p.test'
test scripts so that any of them simply includes the corresponding
`*.test' script (after setting `$parallel_tests' to `yes').
* tests/.gitignore: Add wildcard for temporary files used in the
generation of `*-p.test' tests.
* Makefile.am (path-check): To be safe, do not use `chmod -R' on
$(distdir) before removing it (as Solaris `chmod -R' touches
symlink targets). Instead, use the cleanup strategy used in
distdir.am (which is also employed in tests/defs.in).
* tests/defs.in: In the generated `configure.in' snippet: call
`AM_INIT_AUTOMAKE' with the `parallel-tests' option if the shell
variable `parallel_tests' is set to `yes'.
* tests/Makefile.am (defs-p): Target removed.
(check_SCRIPTS): Removed `defs-p'.
(clean-local-check): Do not unlink `defs-p' anymore.
($(parallel_tests)): Transformation rules for the test scripts
adjusted.
* tests/gen-parallel-tests: Selection rules for the test
scripts adjusted.
* tests/parallel-tests.test: Set `$parallel_tests' to `yes'
then include `./defs' (rather than simply including `./defs-p').
* tests/parallel-tests2.test: Likewise.
* tests/parallel-tests3.test: Likewise.
* tests/parallel-tests4.test: Likewise.
* tests/parallel-tests5.test: Likewise.
* tests/parallel-tests6.test: Likewise.
* tests/parallel-tests7.test: Likewise.
* tests/parallel-tests8.test: Likewise.
* tests/parallel-tests9.test: Likewise.
* tests/parallel-tests10.test: Likewise.
* tests/README (Section "Writing Test Cases", subsection "Do"):
Adjusted the parts referring to tests checking `parallel-tests'
behaviour. Some other minor related improvements.
* tests/.gitignore (defs-p): Removed.
Ralf Wildenhues [Mon, 22 Feb 2010 17:53:51 +0000 (18:53 +0100)]
Deprecate dist-lzma in favor of dist-xz.
* doc/automake.texi (The Types of Distributions, Options):
Adjust text to reflect renaming of lzma to xz.
* NEWS: Update.
Missing deprecation noted by Antonio Diaz Diaz.
Add tests about support of wildcards in EXTRA_DIST.
* tests/extra10.test: New test, check basic support of wildcards
in EXTRA_DIST.
* tests/extra11.test: New test, check more complex usage of
wildcards in EXTRA_DIST.
* tests/extra11.test: New test, check usage of wildcards in
EXTRA_DIST when $builddir != $srcdir.
* tests/Makefile.am (TESTS): Updated accordingly.
Necessity of these new tests suggested by Braden McDaniel
and Ralf Wildenhues.
Dmitry V. Levin [Sat, 30 Jan 2010 19:21:19 +0000 (22:21 +0300)]
Fix exit status of signal handlers in shell scripts.
The value of `$?' on entrance to signal handlers in shell scripts
cannot be relied upon, so set the exit code explicitly to
128 + SIG<SIGNAL>.
* lib/am/check.am (am__check_pre): Use `exit 143' in signal handler.
* lib/elisp-comp: Likewise.
* lib/install-sh: Likewise.
* lib/ylwrap: Likewise. Also, fix script to trap signal 13, not 3.
* NEWS, THANKS: Update.
Bug report, analysis, and initial patch by Dmitry V. Levin.
Ralf Wildenhues [Sun, 24 Jan 2010 11:36:47 +0000 (12:36 +0100)]
Fix silent-rules output for disabled dependency tracking.
* lib/am/depend2.am [!%FASTDEP%]: Rework silent-rules variable
expansion code to also work in the case where %AMDEP% expands
to FALSE at config.status time, using new substitution string
%VERBOSE-NODEP%.
* automake.in (verbose_nodep_flag): New function, appending
`@am__nodep@' to the verbose-variable name.
(handle_languages): If dependencies are not disabled, use it to
set %VERBOSE-NODEP%.
* m4/depend.m4: Substitute am__nodep as '_no', so the second
verbose-variable will always expand to an empty string, if
dependencies are enabled.
* tests/silent5.test: Also test --disable-dependency-tracking;
also test per-target flags for non-C language files.
* tests/silent9.test: New test, like silent4.test but disable
dependency tracking.
* tests/Makefile.am: Adjust.
* NEWS, THANKS: Update.
Report by Dmitry V. Levin <ldv@altlinux.org>.
Slighty improve tests acoutbs.test and acoutbs2.test.
* tests/acoutbs2.test: Enable `errexit' shell flag. Check that
autoconf and configure work, that the file `zot' is created by
configure, and that no file containing a backslash in its name is
created.
* tests/acoutbs.test: Likewise, plus updated copyright years.
* tests/acoutbs2: In the generated configure.in: add proper calls
to AC_INIT and AM_INIT_AUTOMAKE, and remove explicit definition of
PACKAGE and VERSION. Add a call to aclocal before calling automake.
Updated copyright years.
* tests/Makefile.am (XFAIL_TESTS): Removed acoutbs2.test.
* tests/Makefile.am (TESTS): Added test scripts present on the
filesystem, which were erroneously left out from $(TESTS):
acoutbs2.test, badopt.test, extra2.test.
(XFAIL_TESTS): Added acoutbs2.test.
Replace unlzma, gunzip, bunzip2 with pack tool -d invocation.
* lib/am/distdir.am (distcheck): Use lzma -d, gzip -d, bzip2 -d,
instead of the respective un$tool invocation, to avoid depending
on another tool.
* THANKS: Update.
Ralf Wildenhues [Sat, 5 Dec 2009 13:39:15 +0000 (14:39 +0100)]
Use $DJDIR rather than $DJGPP to detect running on DJGPP.
* automake.in (Language): Use $ENV{'DJDIR'} for the
$ENV{'SHELL'} override.
* bootstrap: Use $DJDIR for setting BOOTSTRAP_SHELL, to fix
bootstrapping under MinGW when $DJGPP has been set.
Ralf Wildenhues [Sat, 5 Dec 2009 13:13:43 +0000 (14:13 +0100)]
Do not rely on Perl symlink status, for MSYS perl.
* automake.in (require_file_internal): Ensure presence of
symlink target file; MSYS perl symlink doesn't return an error
status when the file could not be created (copied, on this
system). Fixes symlink.test failure.
* tests/vala4.test: New variable $cwd, holding the full path of the
current directory. Use it instead of `pwd` command substitution,
to avoid Heirloom/Solaris Sh bug with `set -e'.
Jim Meyering [Sat, 28 Nov 2009 20:05:33 +0000 (21:05 +0100)]
do not put world-writable directories in distribution tarballs
* lib/am/distdir.am (distdir): Do not make all directories
group- or world-writable. Instead, use 755.
* tests/subpkg4.test (test-distdir-is-readable): Check for new,
more restricted permissions.
Ralf Wildenhues [Sun, 15 Nov 2009 19:32:29 +0000 (20:32 +0100)]
Merge branch 'perl-coverage'
* perl-coverage:
Coverage for corner cases in derive_suffix.
Coverage for user-provided _LINK variables.
Coverage: warn about substitutions that need EXTRA_PRIMARY.
Coverage: warn about configure substitution in EXTRA_PRIMARY.
Coverage for syntax errors with conditionals in included fragments.
Coverage: diagnose variables with forbidden dist_ prefix.
Coverage for conditional `else' and `endif' arguments.
Jim Meyering [Sat, 31 Oct 2009 16:47:58 +0000 (17:47 +0100)]
Don't let an envvar setting of "$fail" cause build failure.
Without this change, in a project using an automake-generated
Makefile, "make fail=anything" would fail inappropriately,
due to the `test -z "$$fail"' at the end of this emitted rule:
* lib/am/subdirs.am ($(RECURSIVE_TARGETS)): Initialize "fail=" to keep
an envvar setting of that variable from causing unwarranted failure.
($(RECURSIVE_CLEAN_TARGETS)): Likewise.
* tests/subdir10.test: New test.
* tests/Makefile.am: Update.
Ralf Wildenhues [Sun, 18 Oct 2009 15:38:55 +0000 (17:38 +0200)]
Merge branch 'perl-coverage'
* perl-coverage:
Simplify Variable::_check_ambiguous_condition.
Coverage for DisjConditions.pm.
Coverage and fixes for Condition.pm.
Coverage for Wrap.pm.
Coverage for Version.pm.
Pod coverage for Perl modules.
Ralf Wildenhues [Sun, 18 Oct 2009 10:05:43 +0000 (12:05 +0200)]
Simplify Variable::_check_ambiguous_condition.
* lib/Automake/Variable.pm (_check_ambiguous_condition): No need
to check for $def since ambiguous_p returns an empty $message if
there is no other condition which is ambiguous to $cond.
Ralf Wildenhues [Sun, 18 Oct 2009 10:03:29 +0000 (12:03 +0200)]
Coverage for DisjConditions.pm.
* lib/Automake/tests/DisjConditions.pl (test_basics): Increase
test coverage: test ->human, ->merge, ->simplify, ->multiply.
* lib/Automake/tests/DisjConditions-t.pl (test_basics): Likewise
changes, but including state copies across thread creation.
* lib/Automake/tests/DisjCon2.pl: New test.
* lib/Automake/tests/DisjCon3.pl: Likewise.
* lib/Automake/tests/Makefile.am (TESTS, XFAIL_TESTS): Adjust.
Ralf Wildenhues [Sun, 18 Oct 2009 10:01:46 +0000 (12:01 +0200)]
Coverage and fixes for Condition.pm.
* lib/Automake/Condition.pm (new): Catch common programming
errors better by checking type of passed argument before
munging them to all be strings through split.
* lib/Automake/tests/Condition.pl (test_basics): Also test
->human.
(test_merge): New function, test ->merge, ->merge_conds,
->strip.
* lib/Automake/tests/Condition-t.pl (test_basics, test_merge):
Likewise changes, but including state copies across thread
creation.
* lib/Automake/tests/Cond2.pl: New test for programming error.
* lib/Automake/tests/Cond3.pl: Likewise.
* lib/Automake/tests/Makefile.am (TESTS, XFAIL_TESTS): Update.
Ralf Wildenhues [Sun, 18 Oct 2009 09:55:10 +0000 (11:55 +0200)]
Coverage for Wrap.pm.
* lib/Automake/tests/Wrap.pl (@tests): Add test for word with
trailing space.
(test_makefile_wrap, @makefile_tests): New function, new list of
tests, to test makefile_wrap.
Ralf Wildenhues [Sun, 18 Oct 2009 09:46:14 +0000 (11:46 +0200)]
Coverage for Version.pm.
* lib/Automake/tests/Version.pl (test_version_compare): Also
try Automake::Version::check for the version pairs, taking into
account the special-case naming of code forks.
(@tests): Add more test cases.
(test_bad_versions, @bad_versions): New function, new test cases,
to ensure bad version strings are rejected.
* lib/Automake/tests/Version2.pl: New test.
* lib/Automake/tests/Version3.pl: Likewise.
* lib/Automake/tests/Makefile.am (TESTS): Add tests here ...
(XFAIL_TESTS): ... and here, new.
Ralf Wildenhues [Sun, 18 Oct 2009 08:00:28 +0000 (10:00 +0200)]
Pod coverage for Perl modules.
* lib/Automake/ChannelDefs.pm (parse_warnings): Fix
typo in Pod documentation.
* lib/Automake/Condition.pm: Add a couple of missing `=back'
lines.
(_has): Renamed from ...
(has): ... this, as this is an internal method.
(strip, false, true_when): Adjust callers.
* lib/Automake/Configure_ac.pm: Add Pod `Functions' section with
documentation for find_configure_ac and require_configure_ac.
* lib/Automake/Location.pm: Fix typo in Pod. Add `Methods'
section, document methods.
* lib/Automake/RuleDef.pm: New `Methods' Pod section.
* lib/Automake/VarDef.pm: Document `raw_value'.
* lib/Automake/Wrap.pm (_tab_length): Rename from ...
(tab_length): ... this, as this is an internal method.
(wrap): Adjust callers.
* lib/Automake/XFile.pm: Reorganize Pod a bit, add `Methods'
section.
Ralf Wildenhues [Sat, 17 Oct 2009 16:14:33 +0000 (18:14 +0200)]
Perl coverage support using Devel::Cover.
This introduces makefile rules to run the testsuite with Perl
coverage enabled. It skips tests that use perl ithreads, by
unsetting AUTOMAKE_JOBS and setting WANT_NO_THREADS to make the
threaded tests skip.
* Makefile.am (PERL_COVERAGE_DB, PERL_COVERAGE_FLAGS)
(PERL_COVER): New variables.
(check-coverage, recheck-coverage, clean-coverage): New phony
targets.
(check-coverage-run, recheck-coverage-run): New phony helper
targets.
(clean-local): New, depend on clean-coverage.
* lib/Automake/tests/Condition-t.pl: Skip if WANT_NO_THREADS is
set.
* lib/Automake/tests/DisjConditions-t.pl: Likewise.
* tests/defs.in: New required entry 'perl-threads'.
* tests/parallel-am.test: Use it to skip if WANT_NO_THREADS is
set.
* tests/parallel-am2.test: Likewise.
* tests/parallel-am3.test: Likewise.
Ralf Wildenhues [Sat, 17 Oct 2009 06:00:02 +0000 (08:00 +0200)]
dist: allow running several compressors in parallel.
* lib/am/distdir.am (am__post_remove_distdir): New internal
variable.
(DIST_TARGETS): New variable, set to list of chosen distribution
formats. Order formats by expected duration, slowest first, for
better parallelism.
(dist-gzip, dist-bzip2, dist-lzma, dist-xz, dist-tarZ)
(dist-shar, dist-zip): Use $(am__post_remove_distdir).
(dist, dist-all): Do not depend on distdir. Instead of
replicating each compression command, use a recursive invocation
to allow running all $(DIST_TARGETS) in parallel.
* NEWS: Update.
Report by Peter Breitenlohner.
Ralf Wildenhues [Sun, 11 Oct 2009 14:58:27 +0000 (16:58 +0200)]
Fix race condition in werror2.test due to sanity sleep change.
* tests/werror2.test: Generate Makefile.in before configure so
that a Makefile.am update after configure has run is guaranteed
to be newer than Makefile.in.
* tests/subdir5.test: Document why this test does not need to be
fixed.
* tests/subdir8.test: Likewise.
Ralf Wildenhues [Sun, 11 Oct 2009 11:44:37 +0000 (13:44 +0200)]
Improve description of the various *LINK variables.
* doc/automake.texi (Program and Library Variables): _LINK also
receives libraries to link against. _LINK may be generated.
(Program Variables): Document reasons when per-target _LINK is
used instead of LINK.
(How the Linker is Chosen): Document how a per-target _LINK
variable and per-target link flags override linker selection.
* THANKS: Update.
Report by Dave Korn against gcc/libstdc++-v3.
Ralf Wildenhues [Sun, 11 Oct 2009 11:33:43 +0000 (13:33 +0200)]
Allow variable override of, rather than by, silent variables.
When overriding variables, check the VAR_SILENT status of the
old condition, not the new one: we allow non-silent overrides
of silent variables (these do not hit ordering bugs in the
automake output), but there is no use case for doing so the
other way round. Fixes conditional overrides of variables
annotated AM_SUBST_NOTMAKE in configure.ac.
* lib/Automake/Variable.pm (_check_ambiguous_condition): Check
for VAR_SILENT in $ambig_cond not $cond.
* tests/cond44.test, tests/cond45.test: New tests, analogous to
cond23.test and cond24.test.
* tests/Makefile.am: Update.
Spotted originally in binutils/bfd.
Ralf Wildenhues [Sun, 11 Oct 2009 11:23:11 +0000 (13:23 +0200)]
Fix in-tree `recheck' after failed test that runs `check'.
If a test like pr401b-p.test fails for some reason, a `make
recheck' would cause another reason for failure because it sets
AM_MAKEFLAGS which gets propagated into the test and causes its
`make check' to fail.