Benoit Sigoure [Tue, 18 Dec 2007 12:54:06 +0000 (13:54 +0100)]
Properly expand @configure_input@ in config.status.
* lib/autoconf/status.m4 (_AC_OUTPUT_FILE, _AC_OUTPUT_MAIN_LOOP):
Escape the backslashes and ampersands in $configure_input before
using it in the sed replacement string to expand @configure_input@.
Report by Eric Blake and Patrick Welche.
Ralf Wildenhues [Fri, 1 Feb 2008 23:10:25 +0000 (00:10 +0100)]
Fix autotest --clean, and make it work with `-C dir'.
* lib/autotest/general.m4 (AT_INIT): Fix --clean to work
again, broken since introduction of `-C dir'.
* tests/autotest.at (Choosing where testsuite is run): Test it.
Eric Blake [Tue, 29 Jan 2008 23:56:36 +0000 (16:56 -0700)]
Fix more autotest regressions.
* lib/autotest/general.m4 (AT_LINE): Fix regression from
2007-10-04 when file name is `dnl'.
(AT_INIT) <PREPARE_TESTS>: Move command-line assignments...
<TESTS_BEGIN>: ...to this new diversion, to fix regression from
yesterday in libtool's testsuite.
(_AT_ARG_OPTION): Detect write failure.
* doc/autoconf.texi (Diversion support): Document PREPARE_TESTS to
make libtool's use kosher. Document m4_init.
(Programming in M4sh): Document AS_INIT.
(Writing Testsuites): Document limitation of AT_DATA file name.
* tests/autotest.at (unusual file names): New test.
(Banners, Keywords and ranges): Use correct shell.
Eric Blake [Tue, 29 Jan 2008 17:24:12 +0000 (10:24 -0700)]
More corner cases in testsuite VAR=VALUE handling.
* lib/autotest/general.m4 (AT_INIT) <PREPARE_TESTS): Fix quoting
bug.
<PARSE_ARGS_END>: Also detect leading digits in assignments.
* tests/autotest.at (Using atlocal): Enhance test to catch last
bug.
Eric Blake [Tue, 29 Jan 2008 05:42:17 +0000 (22:42 -0700)]
Fix regression in handling VAR=VALUE arguments to testsuite.
* lib/autotest/general.m4 (AT_INIT) <PARSE_ARGS_END>: Detect
leading = as invalid. Defer use of command-line variable
assignments...
<PREPARE_TESTS>: ...here, after atconfig has been sourced. Fix
regression in sourcing files.
* tests/autotest.at (Using atlocal): New test to catch this.
(Debugging a successful test, Choosing where testsuite is run):
Use correct shell.
Reported by Ralf Wildenhues.
Eric Blake [Mon, 28 Jan 2008 14:02:43 +0000 (07:02 -0700)]
Minor testsuite improvements.
* lib/autotest/general.m4 (AT_INIT) <PREPARE_TESTS>: Use fewer
forks when sanitizing PATH. Always output machine information,
not just when atconfig was located.
Eric Blake [Mon, 28 Jan 2008 13:57:46 +0000 (06:57 -0700)]
Add 'testsuite -C dir'.
* lib/autotest/general.m4 (_AT_ARG_OPTION): Move missing argument
detection...
(AT_INIT) <PARSE_ARGS_END>: ...here, since -k always takes
argument.
<DEFAULTS>: Delay computation of variables based on $at_dir...
<PREPARE_TESTS>: ...to here, since -C can change $at_dir.
<TESTS>: Re-invoke via absolute name, since -C may be in effect.
<PARSE_ARGS>: Parse new option.
<HELP_TUNING>: Document it.
* tests/autotest.at (Choosing where testsuite is run): New test
for this feature.
(Keywords and ranges): Add test for missing -k argument.
* NEWS: Document this.
* doc/autoconf.texi (testsuite Invocation): Likewise.
Ralf Wildenhues [Tue, 22 Jan 2008 20:48:51 +0000 (21:48 +0100)]
Fix --help=recursive with multiple AC_CONFIG_SUBDIRS.
* lib/autoconf/general.m4 (_AC_INIT_HELP): If, for recursive help
mode, we change to the source directory, also set $ac_pwd so we
do not go back to the build tree for the next config subdir.
* tests/torture.at (Deep Package): Extend test to contain two
config subdirs on the top level.
Ralf Wildenhues [Tue, 8 Jan 2008 20:57:36 +0000 (21:57 +0100)]
Fix creation of manpages from test wrapper scripts.
* tests/Makefile.am (noinst_SCRIPTS): Renamed from
check_SCRIPTS. Building the wrappers for `all' allows help2man
to use them for the manpages.
Report by Benoit Sigoure.
Ralf Wildenhues [Sun, 16 Dec 2007 21:24:14 +0000 (22:24 +0100)]
Fix some write failure cases in Autotest.
* lib/autotest/general.m4 (AT_INIT): Do not exit successfully
upon write failures for --help, --version, --list.
Guard against write failures for intermediate created scripts.
<at_func_create_debugging_script>: Do not make the debugging
script executable if it is not complete.
Ralf Wildenhues [Tue, 4 Dec 2007 21:49:36 +0000 (22:49 +0100)]
Do not pass top_srcdir to configure scripts in testsuite.
* tests/autotest.at (srcdir propagation): Copy install-sh to
source tree.
(my only test): Drop setting of `top_srcdir'.
* tests/base.at (Input/Output): Likewise.
* tests/local.at (AT_CONFIGURE_AC): Copy install-sh,
config.guess, and config.sub to test source tree.
Drop AC_CONFIG_AUX_DIR setting.
(AT_CHECK_CONFIGURE): Drop setting of `top_srcdir'.
* tests/torture.at (Substitute a 2000-byte string): Drop
AC_CONFIG_AUX_DIR setting, copy install-sh to test source tree.
(Substitute a newline, datarootdir workaround): Likewise.
(Define a newline): Adjust for linenumber changes in configure.ac.
* tests/foreign.at (Libtool): Adjust comment to reflect changes.
Ralf Wildenhues [Tue, 4 Dec 2007 21:47:42 +0000 (22:47 +0100)]
Fix testsuite program wrapper for whitespace in `pwd`.
The problem here is that the usual mantra is that command
variables can contain arguments, thus we cannot just escape
$AUTOCONF, $AUTOM4TE etc. The compromise is to put the
$top_builddir/tests directory early in $PATH, so that the
wrappers are found by their plain name.
* tests/wrapper.as: Put $testdir early in $PATH.
(AUTOCONF, AUTOHEADER, AUTOM4TE): Set to plain command names.
Ralf Wildenhues [Sat, 8 Dec 2007 10:46:43 +0000 (11:46 +0100)]
Proper file name escaping in Autoconf programs and Perl modules.
This includes escaping of characters special to the shell
as well as special to Perl, e.g., leading `<' or `>'.
For example, when $file starts with `>', `open ">$file"'
wrongly tries to append to a different file.
* bin/autoconf.as: Fix quoting for autom4te options.
* lib/Autom4te/General.pm (shell_quote): New function, taken
from coreutils, written by Jim Meyering.
(mktmpdir): Use it.
* bin/autom4te.in (files_to_options, handle_m4): Use shell_quote
and open_quote.
* bin/autoreconf.in (parse_args): Likewise.
* bin/autoscan.in (main): Likewise.
* bin/autoupdate.in (main): Likewise.
* bin/autoheader.in: Likewise, fixing old insufficient escaping.
* bin/ifnames.in: Likewise, XFile usage fixes.
* tests/tools.at (autom4te and whitespace in file names): Extend
test. Test twice, with special characters allowed on w32, and the
rest. Test leading and trailing whitespace, for `open_quote'.
(autotools and whitespace in file names): New, analogous test.
Reported by Paul Eggert and Benoit Sigoure, additional suggestions
by Russ Allbery and Eric Blake.
Ralf Wildenhues [Sat, 8 Dec 2007 10:39:34 +0000 (11:39 +0100)]
Sync from Automake.
* lib/Autom4te/Channels.pm, lib/Autom4te/Configure_ac.pm,
lib/Autom4te/Struct.pm, lib/Autom4te/XFile.pm: Likewise.
* lib/Autom4te/FileUtils.pm (open_quote): New function.
(update_file, contents): Use it.
Paul Eggert [Tue, 27 Nov 2007 17:06:40 +0000 (09:06 -0800)]
Fix AC_C_BIGENDIAN bug caused by new awk method of substitution.
* lib/autoconf/c.m4 (AC_C_BIGENDIAN): Don't comment out the
#undef as this runs afoul of our new way of creating config.h.
Problem reported by Jim Meyering in
<http://lists.gnu.org/archive/html/autoconf-patches/2007-11/msg00164.html>.
Ralf Wildenhues [Fri, 23 Nov 2007 18:42:00 +0000 (19:42 +0100)]
Fix awk script optimization.
* lib/autotest/general.m4 (AT_INIT): For awk line number
extraction script, ensure `$at_group' has a defined value
even for the empty set, and properly quote its usage inside
the awk script.
Ralf Wildenhues [Thu, 22 Nov 2007 07:11:00 +0000 (08:11 +0100)]
* doc/autoconf.texi (Shell Functions): New chapter. Document
IRIX sh $0 issue in functions, move content from ...
(Portable Shell): ... here.
(Shell Script Compiler): Note that shell functions are not
totally unportable any more.
Ralf Wildenhues [Mon, 19 Nov 2007 20:24:54 +0000 (21:24 +0100)]
Fix IRIX testsuite debugging failures: $0 in functions.
* lib/autotest/general.m4 (AT_INIT) <at_func_create_debugging_script>:
Do not use $0 inside a function, as IRIX sh will set that to the
function name rather than the script invocation name.
Ralf Wildenhues [Sun, 18 Nov 2007 16:35:02 +0000 (17:35 +0100)]
* lib/autotest/general.m4: Revert 2007-11-15 patch and
subsequent fixups; the awk -> here-document conversion trashes
performance too much with AIX sh.
Ralf Wildenhues [Sun, 18 Nov 2007 13:03:06 +0000 (14:03 +0100)]
Diagnose and guard against write errors dealing with config.status.
The general idea is this: all write failures from `configure'
writing `config.status' are indicated by $ac_write_error, which
is only checked at the end. This is safe because config.status
code is not executed before the file is complete. Other write
failures, be they inside config.status, or in sub shell/awk
scripts spawned from configure or config.status, typically need
earlier checking, as their results are used right afterwards.
* lib/autoconf/status.m4 (AC_OUTPUT): Initialize `ac_write_fail'
before writing config.status, check afterwards.
(_AC_OUTPUT_FILES_PREPARE, _AC_OUTPUT_FILE)
(_AC_OUTPUT_HEADERS_PREPARE,_AC_OUTPUT_CONFIG_STATUS):
Set `ac_write_error' for write failures to config.status. Barf
upon write failures to temporary files.
Adjust note about closing and reopening the here-document.
(_AC_OUTPUT_HEADER, _AC_OUTPUT_LINK, _AC_OUTPUT_COMMAND)
(_AC_OUTPUT_MAIN_LOOP): Likewise, adjust note about closing and
reopening the here-document.
* tests/torture.at (AC_CONFIG_FILES, HEADERS, LINKS and COMMANDS):
Ensure `ac_write_error' does not escape into config.status.
Also, add a couple of code paths not yet exercised in the test
suite: a config file with input from stdin, and a config header
output to stdout.
Suggestion for catching write errors by Bruno Haible.
Ralf Wildenhues [Sat, 17 Nov 2007 08:36:17 +0000 (09:36 +0100)]
Avoid error with Tru64 awk and testsuite lines with many words.
* lib/autotest/general.m4 (AT_INIT): In the awk script that
reads the testsuite, set the field separator to an unusual value,
in order to not run over the limit of 199 fields. Tru64 4.0D awk
even splits the input if $i, i>0, was never accessed in the script.
Ralf Wildenhues [Sat, 17 Nov 2007 08:31:11 +0000 (09:31 +0100)]
Revert 2007-10-17 change.
* TODO: Multiline args in config files and headers mean something
different and are not fixed, see
<http://lists.gnu.org/archive/html/autoconf-patches/2007-05/msg00017.html>
Report by Stepan Kasal.
Ralf Wildenhues [Fri, 16 Nov 2007 06:51:10 +0000 (07:51 +0100)]
Diagnose write errors in config.status instantiations.
* lib/autoconf/status.m4 (_AC_OUTPUT_FILE)
(_AC_OUTPUT_HEADER, _AC_OUTPUT_MAIN_LOOP): Bail out
on write errors.
* tests/torture.at (AC_CONFIG_FILES, HEADERS, LINKS and COMMANDS):
Extend test to also check for some write error failures, using...
<AT_CHECK_CONFIG_CREATION_NOWRITE>: ...this new macro.
Report by Bruno Haible.
Ralf Wildenhues [Thu, 15 Nov 2007 21:23:59 +0000 (22:23 +0100)]
* lib/autotest/general.m4 (at_func_test): Remove.
(AT_INIT): Pre-extract test groups into separate files.
(AT_CLEANUP): Source pre-extracted file instead of calling at_func_test.
Remove at-test-source files together with the $at_group_dir.
* tests/autotest.at (Long test source lines): New test.
Paul Eggert [Tue, 13 Nov 2007 08:16:19 +0000 (00:16 -0800)]
Don't worry about preprocessor when testing long long.
See: http://lists.gnu.org/archive/html/bug-gnulib/2007-11/msg00075.html
* doc/autoconf.texi (Preprocessor Arithmetic): New section.
(AC_TYPE_LONG_LONG_INT, AC_TYPE_UNSIGNED_LONG_LONG_INT):
These no longer check for preprocessor flaws.
* lib/autoconf/types.m4 (_AC_TYPE_LONG_LONG_SNIPPET):
Do not check for preprocessor flows.
Jim Meyering [Tue, 13 Nov 2007 07:56:32 +0000 (08:56 +0100)]
Adapt dependencies, now that a version change doesn't modify configure.ac
* GNUmakefile: Remove "make clean" kludge.
* lib/m4sugar/Makefile.am (version.m4): Depend on Makefile, not
configure.ac.
Don't redirect directly to target.
Use $@, not literal "version.m4".
* doc/autoconf.texi (Limitations of Builtins): Document problem
with { ... } a bit more clearly. Suggest ":;{" as a shorthand
for the workaround.
* lib/m4sugar/Makefile.am (version.m4): Detect 'echo' failure.
Use ":;{" shorthand.
* tests/Makefile.am ($(srcdir)/package.m4): Likewise.
Jim Meyering [Sun, 11 Nov 2007 19:08:52 +0000 (20:08 +0100)]
Remove racy commands to build scripts in bin/ and tests/.
* man/Makefile.am (.x.1): Now that scripts in bin/ and tests/
are guaranteed to be built, remove the rules that tried to build
them. Before, with a parallel build, these rules could lead to
two processes writing tests/wrapper.in concurrently.
Ralf Wildenhues [Sun, 11 Nov 2007 17:55:24 +0000 (18:55 +0100)]
Ignore configure --help* errors due to LINENO-impaired shells.
* tests/torture.at (Configuring subdirectories, Deep Package):
In the --help* tests in read-only trees, make `.' temporarily
writable again for the `stderr' file, and ignore errors due to
the attempt to write configure.lineno.
Report by Patrick Welche.
Jim Meyering [Sat, 10 Nov 2007 21:26:01 +0000 (22:26 +0100)]
Generate package.m4 in build-dir, not srcdir.
* tests/Makefile.am (package.m4): Adjust target.
Don't redirect directly to $@.
(CLEANFILES): Add package.m4.
($(TESTSUITE)): Depend on just-built package.m4, not the one
in $(srcdir).
When running $(AUTOTEST), search "." before searching $(srcdir).
Jim Meyering [Sat, 10 Nov 2007 21:22:44 +0000 (22:22 +0100)]
Avoid a race condition that would make parallel "distclean" fail.
* tests/Makefile.am (distclean-generic): Replace the default,
automake-provided rule with an identical one, but with an additional
dependency on distclean-local. Simply adding the dependency would
cause automake not to emit the rule at all.
* BUGS: Building with -jN works, now.