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.
Ralf Wildenhues [Sun, 17 May 2009 13:32:40 +0000 (15:32 +0200)]
Revert Automake license to GPLv2+.
Automake will move to GPLv3+ once the Exception statement has
been rewritten to use the new GPLv3 exception language. This
change does not impact the COPYING file that may be installed
by `automake --add-missing'.
* COPYING: Revert to GPLv2. All uses changed.
* NEWS: Update.
* Makefile.am (release-stats): Output stderr of pstops in
addition to catching it, for better debugging.
* doc/automake.texi (Releases): Add line for 1.10.2.
Ralf Wildenhues [Sun, 17 May 2009 10:03:47 +0000 (12:03 +0200)]
Cope with parallel BSD make -jN semantics.
When BSD `make -jN' is used without `-B' which enables backwards
compatible semantics, it may reuse the same shell for several
commands within a rule; so ensure we do not leave it in a
different directory, nor `exit 0' early in a multi-command rule.
* lib/am/distdir.am (distcheck): After running `distcleancheck',
change back to original working directory.
* lib/am/remake-hdr.am (%CONFIG_HIN%): Run autoheader in a
subshell.
* lib/am/mans.am (uninstall-man%SECTION%): Do not `exit 0' early
in a rule that consists of several shell invocations. Parallel
NetBSD `make -jN' without `-B' will use only one shell for all
commands, but won't respawn one after `exit 0'. Fixes
notrans.test failure.
* tests/makej2.test: New test.
* tests/Makefile.am: Update.
Matthias Klose [Sun, 17 May 2009 09:29:16 +0000 (11:29 +0200)]
Let AM_PATH_PYTHON honor python's idea about the site directory.
* m4/python.m4 (AM_PATH_PYTHON): When computing pythondir and
pyexecdir, pass the expanded prefix resp. exec_prefix as `prefix'
to get_python_lib, so python can determine the name of the site
directory depending on the install location. Afterwards, replace
the directory names with the unexpanded values of $PYTHON_PREFIX
resp. $PYTHON_EXEC_PREFIX again, to allow override according to
the documentation. Fixes site directory computation for Debian
and Ubuntu (`dist-packages' for a prefix of `/usr' or `/usr/local',
`site-packages' elsewhere).
* NEWS, THANKS: Update.
Ralf Wildenhues [Sun, 17 May 2009 08:26:15 +0000 (10:26 +0200)]
Vala: for now, require GNU make.
* doc/automake.texi (Vala Support): GNU make is currently
required for Vala sources.
* tests/vala2.test, tests/vala3.test, tests/vala5.test: Require
GNU make.
Jürg Billeter [Fri, 15 May 2009 13:51:03 +0000 (15:51 +0200)]
Vala: Use $(srcdir) in rebuild rules.
valac is always run in srcdir as the generated files are distributed.
So srcdir needs to be taken into account in the rebuild rules to not
wrongly trigger a rebuild in the wrong directory.
* automake.in (lang_vala_finish_target): Rebuild files in
$(srcdir).
* tests/vala2.test: Test rebuild rules from VPATH build.
Jürg Billeter [Fri, 15 May 2009 13:50:59 +0000 (15:50 +0200)]
Vala: Add and test rebuild rules for generated header and vapi files.
valac will generate additional files when using, for example, -H in
VALAFLAGS. We need to recognize these options and add appropriate
rebuild rules to fix parallel build.
* automake.in (lang_vala_finish_target): Recognize -H, -h,
--header, --internal-header, --vapi, --internal-api, --gir flags
to valac and rebuild rules for generated headers; distribute
and maintainer-clean them.
* tests/vala2.test: Test rebuild rules.
Jürg Billeter [Sun, 17 May 2009 08:14:13 +0000 (10:14 +0200)]
Vala: Fix build when using per-target VALAFLAGS.
This does not yet implement full per-target support for VALAFLAGS,
however, this change at least fixes building when there is only one
target per source file, which is the most common situation.
* automake.in: Remove `VALAFLAGS' from `flags' in language struct.
(lang_vala_finish_target): Handle `*_VALAFLAGS rewriting' manually
here; check `VALAFLAGS' user variables.
* tests/Makefile.am (XFAIL_TESTS): Remove vala5.test.
* doc/automake.texi (Vala Support): Document per-target flag
limitations.
Ralf Wildenhues [Mon, 11 May 2009 22:15:43 +0000 (00:15 +0200)]
Document some formatting restrictions for Makefile.am files.
For PR automake/540:
* doc/automake.texi (General Operation, Usage of Conditionals):
Variable assignments should not be indented by TABs, rule commands
should. Conditional keyword statements should not be indented.
Report by luoyi.ly@gmail.com.
Ralf Wildenhues [Sun, 3 May 2009 07:47:58 +0000 (09:47 +0200)]
distdir: avoid duplicate `find' traversal with subpackages.
* lib/am/distdir.am (distdir) [%?SUBDIRS%]: When recursing, set
`am__skip_mode_fix'.
[%?TOPDIR_P%]: When `$(am__skip_mode_fix)' is set, avoid tree
walk.
* tests/subpkg4.test: New test, to ensure that we still walk the
whole tree while fixing permissions. We don't ensure it is
walked once only.
* tests/Makefile.am: Update.
Ralf Wildenhues [Sun, 3 May 2009 07:32:44 +0000 (09:32 +0200)]
Disable test cleanup trap with OSF1/Tru64 sh.
* configure.ac: Test whether /bin/sh has working 'set -e'
in conjunction with an exit trap. Set $am_cv_sh_errexit_works
accordingly, substitute sh_errexit_works, and warn about
leftover test directories with broken shells like Tru64 /bin/sh.
* tests/defs.in: Do not install any traps with broken shells.
Bruno Haible [Sat, 2 May 2009 07:26:58 +0000 (09:26 +0200)]
Recommend *-local hooks without commands, for extensibility.
* doc/automake.texi (Clean): Show how to write the clean-local
extension with separate phony target.
* tests/Makefile.am (clean-local-check): Practice what we preach
by marking this phony. For consistency, rename from ...
(check-clean-local): ... this.
silent-rules: fix alignment of less verbose output.
* automake.in (define_verbose_var): Define `$silent_var' as
VAR_ASIS, not VAR_PRETTY, to avoid squashing of multiple
adjacent spaces.
* tests/silent.test: Amend test.
Report by Jan Engelhardt.