Ralf Wildenhues [Sat, 14 Mar 2009 10:14:38 +0000 (11:14 +0100)]
Merge branch 'ad-parallel-tests' into next
* ad-parallel-tests:
Fix LAZY_TEST_SUITE handling and $(TEST_SUITE_LOG) recreation.
Fix parallel-tests with empty $(TESTS) for BSD make.
Mark check-html and check-TESTS as recursive for BSD make.
Match XFAIL_TESTS correctly with Solaris make.
Use append mode to capture parallel test output.
parallel-tests: Fix summary output.
Overhaul of tests/README.
Documentation for the parallel-tests driver.
New tests for `parallel-tests'.
parallel-tests: Ensure backward-compatible semantics.
Parallel test execution: new option `parallel-tests'.
Ralf Wildenhues [Sat, 14 Mar 2009 10:13:18 +0000 (11:13 +0100)]
Merge branch 'je-silent' into next
* je-silent:
Rename `silent' mode to `silent-rules' mode.
`silent' mode unconditionally overrides portability-recursive.
Drop extra line from compile rules when `silent' is not used.
Keep `--silent-rules' across triggered automake reruns.
Provide variables for silencing of user rules.
Redo variable naming for `silent' machinery.
Let -Wportability turn on/off the portability-recursive channel.
New automake command line option `--silent-rules'.
Documentation and tests for the `silent' option.
Implement `silent' build rules.
New channel `portability-recursive'.
Ralf Wildenhues [Wed, 11 Mar 2009 19:36:14 +0000 (20:36 +0100)]
Fix LAZY_TEST_SUITE handling and $(TEST_SUITE_LOG) recreation.
* lib/am/check.am (check-TESTS): Expand `$(TEST_LOGS)' only once
in the rule command, for systems with low command line limits.
Remove $(TEST_SUITE_LOG) even in LAZY_TEST_SUITE mode.
($(TEST_SUITE_LOG)): Always recreate $(TEST_SUITE_LOG). Mention
lazy mode in the summary output.
* tests/parallel-tests.test: Test LAZY_TEST_SUITE semantics.
Ralf Wildenhues [Tue, 10 Mar 2009 22:57:01 +0000 (23:57 +0100)]
Fix parallel-tests with empty $(TESTS) for BSD make.
* lib/am/check.am [PARALLEL_TESTS] ($(TEST_SUITE_LOG)): Ignore
empty line stemming from empty $(TEST_LOGS), to avoid counting
zero tests as one.
(check-TESTS): If `$(TESTS)' is empty, override TEST_LOGS to be
empty, rather than `.log', for BSD make.
* tests/parallel-tests6.test: New test.
* tests/Makefile.am: Update.
Ralf Wildenhues [Tue, 10 Mar 2009 21:02:15 +0000 (22:02 +0100)]
Match XFAIL_TESTS correctly with Solaris make.
* lib/am/check.am [PARALLEL_TESTS]: VPATH rewriting may have
changed test names, so srcdir needs to be taken into account
explicitly when checking against the list of tests expected
to fail. Fixes spurious FAILures from XFAIL_TESTS.
Ralf Wildenhues [Tue, 10 Mar 2009 20:10:25 +0000 (21:10 +0100)]
parallel-tests: Fix summary output.
* lib/am/check.am (am__text_box): Fix unportable sed script,
replacing `\n' in the right hand side of an `s' command with
a literal newline. Kudos to Bruno Haible for the newline idea.
* tests/parallel-tests.test: Update test to expose this.
Ralf Wildenhues [Sun, 8 Mar 2009 13:08:18 +0000 (14:08 +0100)]
Overhaul of tests/README.
* tests/README: General overhaul. Mention parallel test suite
execution, the test-suite.log file; document `Exit' vs. `exit',
`defs' vs. `defs-p', the naming of `parallel-tests' tests.
* README: Simplify, point to tests/README.
Ralf Wildenhues [Sun, 8 Mar 2009 13:05:56 +0000 (14:05 +0100)]
New tests for `parallel-tests'.
* tests/parallel-tests.test: New file, to expose a bunch of
features of `parallel-tests': VERBOSE, clean, TEST_SUITE_LOG,
test dependencies, DISABLE_HARD_ERRORS.
* tests/parallel-tests2.test: New file, test check-html.
* tests/parallel-tests3.test: New file, test concurrency.
* tests/parallel-tests4.test: New file, test suffix rules.
* tests/parallel-tests5.test: New file, demonstrate compile/test
concurrency.
* tests/defs.in: Add a `required' check for rst2html.
* tests/Makefile.am: Update.
For each test in Automake's test suite that uses TESTS, generate
an identical one that uses the `parallel-tests' option, for
coverage of backward-compatible functionality.
* tests/gen-parallel-tests: New file, generates distributed
Makefile.am snippet tests/parallel-tests.am to list all tests
that use the TESTS interface but not yet the `parallel-tests'
option, with names mangled to use suffix `-p.test', in ...
(parallel_tests): ... this new make macro.
* tests/Makefile.am ($(srcdir)/parallel-tests.am)
($(parallel_tests), defs-p): New rules.
(TESTS): Add check11.test and $(parallel_tests).
(check_SCRIPTS): Add defs-p, $(parallel_tests).
(check-clean-local): Remove `defs-p'.
(EXTRA_DIST): Distribute gen-parallel-tests.
(MAINTAINERCLEANFILES): New variable, remove $(parallel_tests).
* bootstrap: Generate parallel-tests.am.
* tests/check8.test: Check for circular dependencies in rules.
* tests/check11.test: New test, check that SKIPs are not counted
as passed tests.
* tests/defs.in: Unset DISABLE_HARD_ERRORS, LAZY_TEST_SUITE,
VERBOSE, so the tests are not influenced by the way our test
suite is invoked.
Akim Demaille [Sun, 8 Mar 2009 10:29:03 +0000 (11:29 +0100)]
Parallel test execution: new option `parallel-tests'.
* automake.in (handle_tests): Set new conditional PARALLEL_TESTS
when reading check.am. Handle option `parallel-tests' and all
its semantics. Define macros TEST_EXTENSIONS, TEST_SUITE_LOG,
TEST_SUITE_HTML, TEST_LOGS, TEST_LOGS_TMP, suffix rules if
applicable, and per-target rules for other tests. Add all log
files to %clean_files at the `MOSTLY_CLEAN' level.
* lib/Automake/Options.pm (_process_option_list): Accept
`parallel-tests'.
* lib/am/check.am [!PARALLEL_TESTS] (check-TESTS): Move existing
testsuite driver under this new conditional.
[PARALLEL_TESTS]
(am__rst_title, am__rst_section, am__text_box am__sh_e_setup)
(am__check_pre, am__check_post): New internal macros.
($(TEST_SUITE_LOG), check-TESTS, .log.html, check-html): New
rules.
* lib/am/check2.am: New file.
* lib/am/Makefile.am (dist_am_DATA): Add check2.am.
* tests/Makefile.am (AUTOMAKE_OPTIONS): Use `parallel-tests'.
(clean-local): Renamed from distclean-local.
* tests/defs.in: Drop VERBOSE handling, not needed here any more.
Ralf Wildenhues [Thu, 12 Mar 2009 21:03:43 +0000 (22:03 +0100)]
Ignore warnings from autom4te about Libtool macros.
* tests/ltinstloc.test: When testing for presence of warnings,
filter out any that are not interesting for this test, e.g.,
warnings about installed files or about bogusly named cache
variables in libtool.m4, emitted by recent Autoconf when older
Libtool is used.
* automake.in (parse_arguments): Don't handle a global `silent'
option here; instead, ...
(handle_options): ... handle the "normal" `silent' option here.
Override `portability-recursive' here, at the last point we deal
with options, instead ...
* lib/Automake/Options.pm (_process_option_list): ... of here.
* tests/silent6.test: Replace unportable make snippet, remove
FIXME note, add more test cases of options passed in the various
locations.
Ralf Wildenhues [Tue, 10 Mar 2009 21:59:00 +0000 (22:59 +0100)]
Keep `--silent-rules' across triggered automake reruns.
* automake.in (usage): Reformat to be a bit clearer.
(handle_configure): Remove substitutions %STRICTNESS% and
%USE-DEPS% in favor of a new substitution %AUTOMAKE-OPTIONS%
that carries over all needed flags.
* lib/am/configure.am (%MAKEFILE-IN%): Adjust rule.
* tests/flavor.test: New test, to ensure --$flavor (gnu,
gnits, foreign, cygnus), --ignore-deps, and --silent-rules are
preserved across automake reruns.
* tests/Makefile.am: Update.
Ralf Wildenhues [Mon, 9 Mar 2009 21:06:22 +0000 (22:06 +0100)]
Relax depcomp test for MSVC to not require minuso.
* m4/depend.m4 (_AM_DEPENDENCIES): When checking the msvisualcpp
and msvcmsys depmodes, do not require `-c -o' to work just yet.
It is not needed by the depcomp script for these depmodes, and
works around the ordering issue between the tests.
Report by Peter Rosin.
Ralf Wildenhues [Mon, 9 Mar 2009 20:45:57 +0000 (21:45 +0100)]
Redo variable naming for `silent' machinery.
The public variables are named `AM_V_' plus the compiler
short-hand now, e.g.: AM_V_CC, AM_V_CXXLD, AM_V_GEN. The
dispatch variables are internal details and begin with
`am__v_'.
* automake.in (verbose_var): Update comment.
(verbose_private_var): New function. Order functions so that
ones not needed outside this section are listed first.
(verbose_dispatch): Remove, no need to factor this.
(define_verbose_var, define_verbose_libtool): Use
verbose_private_var.
(define_verbose_tagvar): Likewise; and simplify.
Report by Jan Engelhardt.
Ralf Wildenhues [Mon, 9 Mar 2009 20:20:20 +0000 (21:20 +0100)]
Let -Wportability turn on/off the portability-recursive channel.
* lib/Automake/ChannelDefs.pm (switch_warning): switch
`portability-recursive' channel as well if changing the
`portability' channel.
* tests/dollarvar2.test: New test.
* tests/Makefile.am: Update.
Ralf Wildenhues [Sat, 7 Mar 2009 15:01:34 +0000 (16:01 +0100)]
New automake command line option `--silent-rules'.
* automake.in (parse_arguments): Accept `--silent-rules; let it
override command line warning settings.
(usage): Document it.
* doc/automake.texi (Invoking Automake): Document it.
* NEWS: Update.
* tests/dollarvar.test: Also test `--silent-rules'.
* tests/pr300-ltlib.test: Use `$MAKE V=1' to enable verbose
output, which is matched later in the test.
* tests/silent6.test: New test.
* tests/Makefile.am: Update.
Ralf Wildenhues [Sat, 7 Mar 2009 14:59:24 +0000 (15:59 +0100)]
Documentation and tests for the `silent' option.
* NEWS: Update.
* doc/automake.texi (Invoking Automake): `silent' turns off some
portability warnings.
(Libtool Flags): `silent' silences libtool.
(Options): Document the `silent' flag.
* tests/dollarvar.test, tests/silent.test, tests/silent2.test,
tests/silent3.test, tests/silent4.test, tests/silent5.test: New
tests.
* tests/Makefile.am: Update.
* Makefile.am (maintainer-check): Ignore `DESTDIR' and `V' when
checking for make variables that should not be overridden from
the command line.
Jan Engelhardt [Sat, 7 Mar 2009 14:58:07 +0000 (15:58 +0100)]
Implement `silent' build rules.
* automake.in (ccer): New field in the language structure.
Initialize it for all registered languages.
(verbose_var, verbose_flag, verbose_dispatch)
(silent_flag, define_verbose_var, define_verbose_tagvar)
(define_verbose_libtool): New functions.
(handle_languages, handle_programs, handle_libraries)
(handle_ltlibraries, handle_configure)
(define_compiler_variable, define_linker_variable)
(define_per_target_linker_variable): Use them where appropriate
to define variables to implement the silent output machinery.
* lib/Automake/Options.pm (_process_option_list): Accept
`silent', turning off `portability-recursive'.
* lib/am/depend2.am: Add %VERBOSE% and %SILENT% prefixes where
appropriate.
* lib/am/lex.am: Likewise.
* lib/am/library.am: Likewise.
* lib/am/ltlibrary.am: Likewise.
* lib/am/program.am: Likewise.
* lib/am/yacc.am: Likewise.
* m4/init.m4 (AM_INIT_AUTOMAKE): Substitute, but do not define,
AM_BACKSLASH.
* tests/defs.in: Unset `V', to avoid influencing inner tests.
Ralf Wildenhues [Sat, 7 Mar 2009 09:42:34 +0000 (10:42 +0100)]
Improve NetBSD 'make -n' output for many standard targets.
* automake.in (handle_tags): Let .MAKE depend on
`tags-recursive' and `ctags-recursive' if appropriate.
(handle_all): Likewise for `all'.
(do_check_merge_target): Likewise for `check-am' and `check'.
* lib/am/ansi2knr.am (.MAKE): Depend on %ANSI2KNR-DIR%/ansi2knr.
* lib/am/install.am [%?maybe_BUILT_SOURCES%] (.MAKE): Depend on
`install'.
* tests/maken3.test, tests/maken4.test: New tests.
* tests/Makefile.am: Update.
Ralf Wildenhues [Sat, 7 Mar 2009 08:00:19 +0000 (09:00 +0100)]
Improve `make -n dist' and `make -n distcheck' for GNU make.
Ensure that `make -n dist' and `make -n distcheck' do not change
files, due to GNU make executing rules containing `$(MAKE)'.
* lib/am/distdir.am (distdir): Separate the creation of
`$(distdir)/$$subdir' for `$(DIST_SUBDIRS)' and the recursion
into the `$(DIST_SUBDIRS)' in two separate rule commands.
(distcheck): Exit recursive rule early when run with `make -n',
as detected by a witness file.
* tests/maken.test, tests/maken2.test: New tests.
* tests/Makefile.am: Update.
* NEWS: Update.
Ralf Wildenhues [Sat, 7 Mar 2009 06:40:06 +0000 (07:40 +0100)]
Solaris make testsuite fixes.
* tests/check10.test: When a rule fails, Solaris make will
output the complete command that failed; in this case the test
suite driver. Adjust the test to not bogusly match lines from
the driver, rather than its output.
* tests/distcleancheck.test: Avoid triggering VPATH rewriting,
not desirable in this test.
* tests/specflg10.test: Use BUILT_SOURCES to specify an
intermediate target, so Solaris make knows what to do.
Ralf Wildenhues [Sat, 7 Mar 2009 00:41:29 +0000 (01:41 +0100)]
testsuite: SKIP compile tests if configure found no compiler.
* tests/depend6.test: configure will exit 77 if AC_PROG_CC found
no working compiler. Allow the test to be SKIPped in that case.
* tests/postproc.test: Likewise.
* tests/pr243.test: Likewise.
* tests/pr266.test: Likewise.
Extract correct man section from files in man_MANS.
* lib/am/mans.am: Extract correct man section in the presence of
multiple dots in the file base name and/or directory components.
* tests/man5.test: New test case.
* tests/Makefile.am: Update.
William Pursell [Mon, 1 Dec 2008 21:06:10 +0000 (21:06 +0000)]
Replace bare `automake' with `@command{automake}' or `Automake'.
* doc/automake.texi: Avoid bare `automake' in the manual,
replacing occurrences with `@command{automake}' when the command
is meant, and `Automake' when speaking about the software
package in general.
Ralf Wildenhues [Wed, 4 Mar 2009 19:40:43 +0000 (20:40 +0100)]
gnupload touchups.
* lib/gnupload (conffile): New variable. Use throughout.
(dry_run): Use `false' and `:' values. Show, don't execute,
gpg signing commands upon --dry-run.
(usage): Typo and formatting fixes. Mention that commands are
applied in order.
(argument loop): Factorize a bit, fix quoting.
(dprint, mkdirective, mksymlink, upload): Formatting and
portability fixes.
Add support for uploading to download.gnu.org.ua.
Add support for a .gnupload configuration file.
Support creating and removing symlinks.
Allow for several operations in a single invocation.
Add debugging features.
* lib/gnupload: New options --delete, --symlink, --rmsymlink,
--symlink-regex, --dry-run; support `--' to separate options and
commands from files. New target download.gnu.org.ua. Expand
`.gnupload' file contents before command line arguments.
(usage): Expand.
(dprint, mkdirective, mksymlink, upload): New functions.
* THANKS: Update.
Peter Rosin [Tue, 3 Mar 2009 21:29:12 +0000 (22:29 +0100)]
Add depmode=msvcmsys for Microsoft Visual C++ on MSYS.
* lib/depcomp [msvisualcpp]: Fork fewer processes. Filter out
libtool in the preprocessor invocation (as is done in
depmode=cpp). Silence compiler stderr.
[msvcmsys]: New depmode as a derivative of depmode=msvisualcpp.
msvcmsys transforms any backslashes into forward slashes to
make the grep in depend.m4 match, instead of the "cygpath -u"
that is used in msvisualcpp.
Ralf Wildenhues [Tue, 3 Mar 2009 20:10:43 +0000 (21:10 +0100)]
Fix w32 path handling in the `compile' script.
* lib/compile: Handle colons and backslashes in win32 paths.
* tests/compile2.test: New test.
* tests/Makefile.am: Update.
Report and initial patch by Peter Rosin.
Ralf Wildenhues [Tue, 3 Mar 2009 19:44:42 +0000 (20:44 +0100)]
Fix `use constant' usage for MSYS Perl 5.6.0.
* automake.in (QUEUE_MESSAGE, QUEUE_CONF_FILE, QUEUE_LOCATION)
(QUEUE_STRING): Define using one `use constant' each; as perl
5.6.0 (on MSYS) does not understand `use constant { ... }'.
* THANKS: Update.
Report by Peter Rosin.
Ralf Wildenhues [Sat, 31 Jan 2009 09:33:00 +0000 (10:33 +0100)]
Fix mmodely.test to work on Solaris 10.
* tests/mmodely.test: Define yylex, to satisfy needed symbol in
libfl. Return from main instead of using exit, undeclared.
* THANKS: Update.
Report by Chris Hoogendyk.
Ralf Wildenhues [Sun, 21 Dec 2008 21:38:37 +0000 (22:38 +0100)]
Revamp semantics for `missing help2man' and manpage distribution.
Previously, `missing help2man' would create a missing man page
containing an error message, and exit 1. This does not play
well with `make': the next run will see this particular man page
as being up to date, and will only error out on the next
generated man page, if any; repeat until all pages are done.
This patch changes `missing' to exit successfully in this case,
but `make dist' will ensure that no such man pages are packaged.
* lib/missing: Exit successfully even if we create a replacement
page due to missing help2man.
* automake.in (make_paragraphs): Define %HAVE-MANS% to be true
if this makefile deals with man pages.
* lib/am/distdir.am (distdir): If %INSTALL-MAN% and %HAVE-MANS%,
check that no man page in $(MANS) contains the replacement text
from `missing'.
* tests/man4.test: New test.
* tests/Makefile.am: Update.
* NEWS: Reorder a bit, update.
* THANKS: Update.
Report by Werner Lemberg and Karl Berry.
Ralf Wildenhues [Sun, 21 Dec 2008 21:26:14 +0000 (22:26 +0100)]
Do not use 'global' for makefile-wide settings.
* doc/automake.texi (Linking, Libtool Flags)
(Program and Library Variables, Flag Variables Ordering):
Reword instances of `global variables' that really mean
makefile-wide ones.
* THANKS: Update.
Report by Andreas Bergmeier.
Ralf Wildenhues [Sun, 21 Dec 2008 16:33:17 +0000 (17:33 +0100)]
Fix config.status depfiles failure.
* m4/depout.m4 (_AM_OUTPUT_DEPENDENCY_COMMANDS): Commands are
again a single shell brace group, so they are correctly skipped
when dependencies are turned off. The failure is noisy with
ksh only.
* tests/depend6.test: New test.
* tests/Makefile.am: Adjust.
* THANKS: Update.
Report and different suggested patch by Markus Duft.
Ralf Wildenhues [Sat, 29 Nov 2008 10:03:32 +0000 (11:03 +0100)]
Fixup release rules.
* Makefile.am (cvs-diff): Remove.
(git-dist): Do not use clcommit any more. Use new-style tag
name. Pass $(AM_MAKEFLAGS) to $(MAKE).
(git-diff): Adjust.
(git-release): Do not upload to sources.redhat.com.
Ralf Wildenhues [Thu, 27 Nov 2008 21:27:15 +0000 (22:27 +0100)]
Fix portability issues in distcleancheck_listfiles doc example.
* doc/automake.texi (Dist): In the `distcleancheck_listfiles'
code example, add `.' path, for Solaris `find', also rewrite so
`{}' appears only once and as separate argument, for Posix.
* tests/distcleancheck.test: New test.
* tests/Makefile.am: Update.
* THANKS: Update.
Report by Jan Engelhardt and Andreas Schwab.
Ralf Wildenhues [Thu, 27 Nov 2008 20:46:36 +0000 (21:46 +0100)]
Cope with whitespace in $MISSING and $install_sh.
* configure.ac (am_AUTOHEADER): New substitution, save the value
of $AUTOHEADER before AM_INIT_AUTOMAKE may add $MISSING.
* tests/defs.in: Use am_AUTOHEADER.
* lib/am/install.am: Fix typo.
* m4/install-sh.m4 (AM_PROG_INSTALL_SH): Add suitable
single-quote quoting to install_sh, but only if needed.
* m4/missing.m4 (AM_MISSING_HAS_RUN): Add suitable double-quote
quoting to MISSING, but only if needed.
* m4/sanity.m4 (AM_SANITY_CHECK): Abort configure if `pwd` or
$srcdir contain shell meta-characters that cannot be handled;
space and tab are allowed in the former only.
* tests/sanity.test: New test.
* tests/Makefile.am: Adjust.
* NEWS: Update.
Reports by Jim Meyering and others.
Ralf Wildenhues [Mon, 24 Nov 2008 06:44:33 +0000 (07:44 +0100)]
Let `missing' also work with versioned and prefixed programs.
* lib/missing: Ignore prefixes of `gnu-', `gnu', and `g' when
testing for known programs; also, ignore suffixes.
* tests/missing.test: Amend test.
* NEWS, THANKS: Update.
Report by Tim Rice.
Jim Meyering [Sat, 22 Nov 2008 11:02:36 +0000 (12:02 +0100)]
Add xz compression support.
* NEWS: Mention xz, as well as lzma (xz will displace lzma).
* automake.in (handle_dist): Recognize dist-xz.
(make_paragraphs): Map XZ to dist-xz.
* doc/automake.texi (Dist): Add dist-xz.
(Options): Likewise.
* lib/Automake/Options.pm (_process_option_list): Accept
dist-xz.
* lib/am/distdir.am (dist-xz): New rule.
(dist dist-all): Add command to create an xz-compressed tarball.
(distcheck): Handle xz-compressed tarballs just like the others.
* tests/xz.test: New file, based on nogzip.test.
* tests/Makefile.am (TESTS): Add xz.test.
Ralf Wildenhues [Sat, 22 Nov 2008 10:46:39 +0000 (11:46 +0100)]
When installing COPYING, recommend adding the file to VCS.
* automake.in (require_file_internal): If installing `COPYING',
mention that we install the GPLv3 file and recommend adding the
file to version control.
* doc/automake.texi (Invoking Automake): Point to `Gnits' node
for `--add-missing'.
(Gnits): Clarify semantics: that for strictness gnu or higher,
INSTALL is installed, and that COPYING is installed as GPLv3
if no COPYING file exists.
* tests/license2.test: New test.
* tests/Makefile.am: Update.
* NEWS, THANKS: Update.
Report by Brian Cameron.
Ralf Wildenhues [Wed, 12 Nov 2008 06:07:31 +0000 (07:07 +0100)]
Testsuite fixes for ksh.
* tests/check10.test: Add ':' as last command in subshell, for
zero exit status of the subshell.
* tests/parallel-am.test: Do not let failing 'unset' of
nonexistent variable exit the test.
* tests/parallel-am2.test: Likewise.
* tests/parallel-am3.test: Likewise.
Charles Wilson [Tue, 11 Nov 2008 22:34:47 +0000 (23:34 +0100)]
Cleanup config.lt in case LT_OUTPUT is in use.
* lib/am/libtool.am [TOPDIR_P] (distclean-libtool): clean up
config.lt as well as libtool.
* tests/libtoo11.test: New test.
* tests/Makefile.am: Update.
* NEWS: Update.
Ralf Wildenhues [Thu, 6 Nov 2008 20:06:01 +0000 (21:06 +0100)]
Cope with absent Perl modules threads and Thread::Queue.
* automake.in: Instead of `use threads', use `require threads;
import threads' inside a BEGIN section. Likewise for
Thread::Queue.
* lib/Automake/ChannelDefs.pm (Automake::ChannelDefs): Likewise.
* lib/Automake/tests/Condition-t.pl: Likewise.
* lib/Automake/tests/DisjConditions-t.pl: Likewise.
* configure.ac: Likewise, use `require' and `import'.
Report by Eric Blake, fix suggested by Ben Pfaff.
Ralf Wildenhues [Tue, 4 Nov 2008 21:42:23 +0000 (22:42 +0100)]
Multiple 'make uninstall' should not fail even for TEXINFOS.
* lib/am/texinfos.am (uninstall-info-am): Do not fail due to
install-info if the installed file does not exist (any more).
* tests/txinfo26.test: Issue multiple `make uninstall'.
* tests/instmany-mans.test: Likewise.
* tests/instmany-python.test: Likewise.
* tests/instmany.test: Likewise.
* tests/txinfo26.test: Likewise.
* NEWS: Update.
Ralf Wildenhues [Mon, 3 Nov 2008 21:56:22 +0000 (22:56 +0100)]
New public macro AM_SUBST_NOTMAKE.
* m4/substnot.m4 (AM_SUBST_NOTMAKE): New public macro; invoke
_AM_SUBST_NOTMAKE with arguments.
* doc/automake.texi (Optional): Document it.
* NEWS: Update.
* tests/subst4.test: New test.
* tests/Makefile.am: Update.
Suggestion by Bruno Haible.
Ralf Wildenhues [Mon, 3 Nov 2008 21:50:16 +0000 (22:50 +0100)]
Fix regression introduced by AM_DEFAULT_SOURCE_EXT.
* automake.in (handle_source_transform): Use the right variable
when determining whether to apply the old rule for the libtool
library default source name.
Testsuite failure exposed by Bob Proulx' build daemon.
Ralf Wildenhues [Sun, 2 Nov 2008 21:59:38 +0000 (22:59 +0100)]
New maintainer target release-stats.
* Makefile.am (release-stats): New target, to help computing the
entries in the statistics table in automake.texi.
* doc/automake.texi (Releases): Reformat a bit. Add number of
generated files. Add entry for 1.10.1.
* automake.in (handle_source_transform): Accept unconditional
literal extension in AM_DEFAULT_SOURCE_EXT as override for the
default source extension `.c'. If set, ignore the old default
source rule for libtool libraries.
* doc/automake.texi (Default _SOURCES): Document this.
* NEWS: Update.
* tests/specflg10.test: New test.
* tests/Makefile.am: Update.
Suggestion by Akim Demaille.
* automake.in (QUEUE_CONF_FILE, QUEUE_LOCATION, QUEUE_STRING):
New serialization keys.
($required_conf_file_queue): New file global.
(queue_required_conf_file, require_queued_conf_file): New
functions, to queue and dequeue requirements for aux dir files.
(require_conf_file): Enqueue if needed.
(get_number_of_threads): Can do threads with --add-missing now.
(handle_makefiles_threaded): Let worker threads enqueue, let
master attend to queued requirements at the right time.
* tests/parallel-am.test: Explain the purpose of the include
chain used here.
* tests/parallel-am2.test: Also cope with --add-missing.
* tests/parallel-am3.test: New test, test absence of races with
concurrent same-file installs stemming from --add-missing.
* tests/Makefile.am: Adjust.
Ralf Wildenhues [Sun, 26 Oct 2008 19:38:06 +0000 (20:38 +0100)]
Implement serialization for Locations.
* lib/Automake/Location.pm (serialize, deserialize): New
functions. They allows to serialize a Location in an array, and
to restore a Location from a thread queue. The API is
unsymmetric (array vs. queue) because enqueuing data needs to
happen atomically.
Ralf Wildenhues [Sun, 26 Oct 2008 19:11:12 +0000 (20:11 +0100)]
Parallel automake: ordered output messages.
* lib/Automake/Channels.pm (%_default_options): New options
`ordered' default enabled, `queue', default zero (no queue),
`queue_key' default undefined.
(_merge_options): Ensure `ordered' channels cannot have fatal
messages or backtrace output.
(_enqueue, _dequeue): New functions, to push messages onto a
Thread::Queue, and output messages from such a queue, suitably
weeded for duplicates in the same manner as _print_message.
(_print_message): If the channel is ordered and has an
associated queue, then enqueue messages instead of printing
them.
(setup_channel_queue, pop_channel_queue): New functions,
to set a Thread::Queue for channels, and to flush a queue.
* lib/Automake/ChannelDefs.pm: Unset channel option `ordered'
for fatal, automake, and verb channels.
* automake.in (QUEUE_MESSAGE): New global constant, used as
serialization key.
(handle_makefiles_threaded): Create message queues for each
input file; workers queue messages, and the master outputs them
ordered, using the new Channels.pm functions.
* tests/parallel-am.test: Also check for ordered output (in the
absence of --add-missing races).
* tests/parallel-am2.test: New test; check for ordered output of
warning and (regular) error messages.
* tests/Makefile.am: Adjust.
Ralf Wildenhues [Sun, 26 Oct 2008 18:29:25 +0000 (19:29 +0100)]
Parallel automake execution: AUTOMAKE_JOBS.
* lib/Automake/Config.in (perl_threads): New global.
* automake.in: Use it. If the perl supports interpreter-based
threading, then use `threads' and `Thread::Queue'.
(handle_makefile, handle_makefiles_serial): New functions,
factored out from main.
(get_number_of_threads): New function, compute number of threads
to use, based on environment variable `AUTOMAKE_JOBS' and number
of independent makefiles.
(handle_makefiles_threaded): New function. Spawn threads, use
thread queue to distribute handling the different makefiles.
Collect $exit_code values from threads.
(main): Use new functions.
* aclocal.in: No threads here.
* configure.ac: Substitute PERL_THREADS; enabled with perl >=
5.7.2 and when ithreads are available.
* bootstrap (dosubst): Likewise.
* Makefile.am (do_subst): Likewise.
* lib/Automake/Makefile.am (do_subst): Likewise.
* lib/Automake/ChannelDefs.pm: Use `Automake::Config' and
`threads'.
(verb): Prepend thread ID (tid) to verbose messages.
* lib/Automake/Channels.pm (msg): Before exiting, flush stderr,
needed for worker threads.
* lib/Automake/tests/Makefile.am (TESTS_ENVIRONMENT): Also
include the build tree path, so Config.pm is found.
* tests/parallel-am.test: New test.
* tests/Makefile.am: Update.
* doc/automake.texi (Invoking Automake): Document AUTOMAKE_JOBS.
* NEWS, THANKS: Update.
Report about long execution times by Joakim Tjernlund and others.
Ralf Wildenhues [Sun, 26 Oct 2008 17:50:17 +0000 (18:50 +0100)]
Minor file checking optimization: set_dir_cache_file.
* lib/Automake/FileUtils.pm (set_dir_cache_file): New function.
* automake.in (require_file_internal): Instead of resetting the
cache when a file has been installed, simply correct the cache
using set_dir_cache_file.
Ralf Wildenhues [Sun, 26 Oct 2008 15:29:54 +0000 (16:29 +0100)]
No uniquifying for fatal, prog_error, and verbose messages.
There is no point in dropping critical messages, even if they
are duplicates (unlikely to happen unless they have been sent
as non-critical messages before), and verbose messages should
enable to show progress, even using duplicate statements.
* lib/Automake/ChannelDefs.pm (fatal, automake, verb): Set
`uniq_part' to `UP_NONE' when registering these channels.
Ralf Wildenhues [Sun, 26 Oct 2008 14:55:22 +0000 (15:55 +0100)]
Fix 'config.status --file=... depfiles' with new Autoconf.
* m4/depout.m4 (_AM_OUTPUT_DEPENDENCY_COMMANDS): Eval
$CONFIG_STATUS contents if we detect the quoting used by
Autoconf 2.62 and newer for --file=.
* tests/depend5.test: New test.
* tests/Makefile.am: Update.
* NEWS, THANKS: Update.
Report by Sam Steingold against gnulib.
Johan Dahlin [Sun, 26 Oct 2008 09:28:40 +0000 (10:28 +0100)]
Support for Python 3.0, drop support for pre-2.0.
* lib/py-compile: Do not import string; use sys.stdout.write
instead of print, files.split instead of string.split.
* m4/python.m4 (AM_PATH_PYTHON): Also look for python3 and
phython3.0; do not look for python1.5. Use sys.stdout.write.
(AM_PYTHON_CHECK_VERSION): Do not use string; adjust to xrange
removal in Python 3.0, and changed semantics of map.
* doc/automake.texi (Python, Hard-Coded Install Paths): Update
Python versions mentioned in the manual, using 2.5 everywhere.
* NEWS, THANKS: Update.
Ralf Wildenhues [Wed, 22 Oct 2008 19:31:46 +0000 (21:31 +0200)]
Cleanup of per-input global variables in automake.in.
* automake.in ($output_vars, $output_all, $output_header)
($output_rules, $output_trailer): Fix comment, and sort
declarations in the order they will appear in the output.
($all_target): Unused variable, remove.
(Variables not reset by &initialize_per_input.): New section,
clarify that %am_file_cache is not reset.
(initialize_per_input): Reset $am_file_name, $am_relative_dir,
$in_file_name, $relative_dir, and $topsrcdir to `undef' rather
than the empty string; $topsrcdir was not reset at all. Sort
remaining variables in the same order as in the section
`Variables reset by &initialize_per_input'.