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.
Testsuite: do not use `chmod -R' when cleaning up.
* tests/Makefile.am (clean-local-check): Do not use `chmod -R' on
the test directories, as that may change or try to change the mode
of installed files: the test directory may contain symlinks to
ltmain.sh files from a Libtool installation, and Solaris `chmod -R'
touches symlink targets. Instead, use the cleanup strategy used
in distdir.am (which is also employed in tests/defs.in).
Bruno Haible [Tue, 6 Oct 2009 20:03:33 +0000 (22:03 +0200)]
Fix 'compile' script to not call mv when target equals source.
* lib/compile: Don't attempt to move the generated file to its
target destination when it is already at the target destination.
Avoids an mv failure with subdir-objects.
* tests/ccnoco3.test: New test.
* tests/Makefile.am: Adjust.
* tests/README (Supported shells): Changed the recommended way
to run automake's test scripts with Zsh. Now we tell to use
the Zsh's command line option `-o no_function_argzero', not
`--no-function-argzero', since the latter does not work with
versions 3.x of Zsh.
It seems cscope is not able to take into account relative
file names of included cscope.files files, but it is able to
canonicalize file names containing '../' sequences.
This patch makes the cscope references relative again, and
fixes some corner cases.
* .gitignore: Ignore files generated by `make cscope'.
* NEWS: Reword a bit.
* THANKS: Update.
* automake.in (handle_tags): Use $(am__cd). Provide default
empty rule for the `cscope' target, for empty sources.
* lib/am/tags.am (cscopelist): Construct relative path to files
in $(srcdir) if $(srcdir) is relative.
[TOPDIR_P] (cscope): Do not depend on cscope-clean. Only invoke
$(CSCOPE) if cscope.files is nonemtpy.
(clean-cscope): Rename from ...
(cscopeclean): ... this.
(cscope.files): Depend on clean-cscope.
(distclean-tags) [!TOPDIR_P]: No need to remove cscope files
here.
* tests/cscope.test, tests/cscope2.test, tests/cscope3.test: New
tests.
* tests/Makefile.am: Adjust.
Avoid sleeping for one second most of the time in sanity check.
* m4/sanity.m4 (AM_SANITY_CHECK): Try sanity check first without
sleeping for a second, and only if that failed, sleep and try
again, to avoid the delay in the common case of a configure
script that is older than a second, or a system with sub-second
time stamp granularity.
Report and different patch by Jim Meyering.
* tests/README (User interface, Getting details from failures):
Explicitly state that every test is a "shell script", not just
a "script", and that it's run by `/bin/sh' by default.
* tests/README (User interface, Supported shells): New subsection,
telling about expected portability of the automake test scripts,
describing a zsh incompatibility (w.r.t. $0), and a workaround to
it (with the `--no-function-argzero' option).
Ralf Wildenhues [Sun, 24 May 2009 07:03:00 +0000 (09:03 +0200)]
parallel-tests: avoid GNU make 3.80 substitution bug.
* lib/am/check.am [PARALLEL_TESTS] (check-TESTS): Remove any
`.log' entries from `$(TEST_LOGS)' even if the list is nonempty,
to work around GNU make 3.80 substitution reference issue with
trailing white space in the variable.
* tests/parallel-tests10.test: New test.
* tests/parallel-tests6.test: Update comment.
* tests/Makefile.am: Update.
* NEWS: Update.
Report by Bob Friesenhahn.
* tests/defs.in: Before test execution, be sure to unset all
installation directory variables, so they cannot have an effect
on a `make -e install' command within a test.
Report by Dagobert Michelsen.
Ralf Wildenhues [Sat, 23 May 2009 21:05:17 +0000 (23:05 +0200)]
testsuite: do not change the mode of installed Libtool files.
* tests/defs.in: Do not use `chmod -R' on the test directory, as
that may change or try to change the mode of installed files:
the test directory may contain symlinks to ltmain.sh files from
a Libtool installation, and Solaris `chmod -R' touches symlink
targets. Instead, use the cleanup strategy used in distdir.am.
* NEWS: Update.
Report by Dagobert Michelsen.
Ralf Wildenhues [Sat, 23 May 2009 20:54:15 +0000 (22:54 +0200)]
testsuite: do not fail in cleanup code.
* tests/defs.in: Turn off errexit in the cleanup trap, to avoid
a test failure due to a nonzero command.
* THANKS: Update.
Report by Dagobert Michelsen.
Peter O'Gorman [Sat, 23 May 2009 20:13:14 +0000 (22:13 +0200)]
python: do not install in system directories on Darwin 9.
On Darwin 9, get_python_lib returns a path below `/Library/Python'
regardless of the `prefix' argument it was passed, causing `make
install' to target the system directories regardless of `--prefix'
argument used. Work around this Darwin bug by ignoring the result
of get_python_lib if it points outside of the passed prefix, and
the prefix was not a system directory.
* m4/python.m4 (AM_PATH_PYTHON): If the prefix does not match the
initial portion of the pythondir returned by get_python_lib, then
ignore it unless the configured prefix is `/usr' or starts with
`/System'. Fixes instmany-python.test failure on Mac OS X 10.5.7.
* NEWS: Update.
Ralf Wildenhues [Sat, 23 May 2009 20:06:07 +0000 (22:06 +0200)]
Clarify how to enable `silent-rules' and other global options.
* doc/automake.texi (Options): When introducing options, be more
careful to note that not all of them can be specified in
AUTOMAKE_OPTIONS statements, and that some do not make sense in
subdirectories. Note more prominently that `silent-rules' can
only be specified in configure.ac.
* lib/Automake/Options.pm (_process_option_list): Improve error
message for `silent-rules', `tar-v7', `tar-ustar', `tar-pax'
options specified in Makefile.am files.
Report by Bruno Haible.
Ralf Wildenhues [Mon, 18 May 2009 18:57:05 +0000 (20:57 +0200)]
testsuite: also try `jot' as `seq' replacement.
* tests/instmany-mans.test: Try BSD `jot' before resorting to a
slow but portable shell loop.
* tests/instmany-python.test: Likewise.
* tests/instmany.test: Likewise.
Suggestion by Peter O'Gorman.
Ralf Wildenhues [Mon, 18 May 2009 18:52:59 +0000 (20:52 +0200)]
Fix test failure when pkg.m4 is not found, only pkg-config.
* tests/vala5.test: Update comment, this test is not expected to
fail any more. Require valac version 0.7.0. Skip if configure
fails, could be due to unexpanded PKG_CHECK_MODULES or too old
valac.
Report by Simon Josefsson.