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.
Ralf Wildenhues [Fri, 9 Nov 2007 06:49:29 +0000 (07:49 +0100)]
Avoid expr for arithmetic evaluation if the shell accepts $((...)).
* lib/autotest/general.m4 (AT_INIT) <at_func_arith>: New
function, to parametrize arithmetic with expr vs. the shell.
Use it where possible.
Suggestion by Benoit Sigoure.
Benoit Sigoure [Sat, 3 Nov 2007 18:33:38 +0000 (19:33 +0100)]
Adjust the documentation of autotest WRT atlocal.
* doc/autoconf.texi (Making testsuite Scripts): It is not necessary,
when using Automake, to write a rule to produce atlocal, since it's
an AC_CONFIG_FILES. Mention that atlocal.in needs to be
distributed, not atconfig.in.
Eric Blake [Sat, 3 Nov 2007 13:20:47 +0000 (07:20 -0600)]
Adjust version comparison to account for git snapshot numbers.
* lib/m4sugar/m4sugar.m4 (_m4_version_unletter): Also treat - as a
component separator.
* doc/autoconf.texi (Number processing Macros)
<m4_version_compare>: Document this change.
* tests/m4sugar.at (m4@&t@_version_compare): Test it.
Bruno Haible [Wed, 31 Oct 2007 02:09:54 +0000 (19:09 -0700)]
* lib/autoconf/types.m4 (_AC_TYPE_LONG_LONG_SNIPPET): New macro,
extracted from AC_TYPE_LONG_LONG_INT and AC_TYPE_UNSIGNED_LONG_LONG_INT.
(AC_TYPE_LONG_LONG_INT, AC_TYPE_UNSIGNED_LONG_LONG_INT): Use it.
Fixes problem with Sun C 5.[0-8] in 32-bit mode, reported in
<http://lists.gnu.org/archive/html/autoconf-patches/2007-10/msg00210.html>
Suggested by Paul Eggert.
Jim Meyering [Sat, 27 Oct 2007 19:57:32 +0000 (21:57 +0200)]
README-hacking: Recommend running autoreconf -vi.
* GNUmakefile (dummy): Use autoreconf -i, with appropriate PATH,
so that we use just-built tools when they're available.
Suggestions from Ralf Wildenhues.
Jim Meyering [Mon, 22 Oct 2007 17:54:52 +0000 (19:54 +0200)]
Make inter-release --version output more useful.
Now, each unofficial build has a version "number" like 2.61a-19-58dd,
which indicates that it is built using the 19th change set
(in _some_ repository) following the "v2.61a" tag, and that 58dd
is a prefix of the commit SHA1.
* build-aux/git-version-gen: New file.
* configure.ac: Run it to set the version.
(AM_INIT_AUTOMAKE): Don't check NEWS here.
* Makefile.am (dist-hook): Arrange so that .version appears only
in distribution tarballs, never in a checked-out repository.
* .gitignore: Add .version here, too. Just in case.
* tests/Makefile.am ($(srcdir)/package.m4): Depend on Makefile,
not configure.ac, now that the version number changes automatically.
Ensure that $(VERSION) is up to date for dist-related targets.
* GNUmakefile: Arrange to rerun autoconf, if the version reported by
git-version-gen doesn't match $(VERSION), but only for dist targets.
Jim Meyering [Sat, 27 Oct 2007 10:14:35 +0000 (12:14 +0200)]
Remove all generated files from version control.
* aclocal.m4: Remove.
* configure: Remove.
* Makefile.in: Remove, along with all other Makefile.in in subdirs.
* .gitignore: Add aclocal.m4, configure and Makefile.in. Sort.
* README-hacking: New file: how to build from just-checked-out sources.
Paul Eggert [Mon, 22 Oct 2007 16:55:30 +0000 (09:55 -0700)]
Don't check for bug in HP-UX 11.00 cpp.
* lib/autoconf/types.m4 (AC_TYPE_UNSIGNED_LONG_LONG_INT):
Use -1ull rather than -1u, since that causes problems with gnulib; see
<http://lists.gnu.org/archive/html/bug-gnulib/2007-10/msg00329.html>.
Ralf Wildenhues [Sun, 21 Oct 2007 18:15:38 +0000 (20:15 +0200)]
Fix `Deep Package' test failure on FreeBSD.
* tests/torture.at (Deep Package): Do not add `.' to $PATH
unnecessarily. Do not try running `/bin/sh configure' with a
configure script to be found in $PATH, if the shell does not do
this resolution. Fixes test failure on FreeBSD.
Ralf Wildenhues [Sun, 21 Oct 2007 10:42:09 +0000 (12:42 +0200)]
Validate testsuite range arguments.
* lib/autotest/general.m4 (Defaults): Validate input ranges ...
<at_func_validate_ranges>: ... using this new function.
* tests/autotest.at (Keywords and ranges): Test invalid ranges.
Test --list with ranges and keywords.
(Banners): Remove one now-failing test.
Eric Blake [Fri, 19 Oct 2007 12:27:46 +0000 (06:27 -0600)]
Improve AT_BANNER handling.
* lib/autotest/general.m4 (BANNERS): New named diversion.
(TESTS_END): Diversion no longer used.
(AT_INIT) <at_func_banner, BANNERS>: Factor all banners into a
shell function, which prints only as needed, using an associative
array of banner text from a special diversion.
<PARSE_ARGS_END>: No longer need awk to find banners.
<TESTS>: Banners are no longer processed by main driver loop, so
we no longer need case statement.
(AT_BANNER): Rewrite to populate new diversion.
(AT_SETUP): Each test invokes its own banner. No output is needed
to the TESTS diversion.
* doc/autoconf.texi (Writing Testsuites): Document slight
semantics change.
* tests/autotest.at (AT_BANNERS): Enhance test.
* NEWS: Document AT_BANNER.
Eric Blake [Thu, 18 Oct 2007 15:05:09 +0000 (09:05 -0600)]
Fix AT_TESTED, AT_KEYWORDS.
* lib/m4sugar/m4sugar.m4 (m4_append_uniq): Warn if separator
occurs in string, as duplicates may be added.
(_m4_append_uniq): New helper macro.
(m4_append_uniq_w): New macro.
* lib/autotest/general.m4 (AT_TESTED, AT_KEYWORDS): Fix
duplication bug by using new macro.
(AT_INIT) <at_tested>: Restore newline separators. Invoke tested
programs with stdin redirected, so programs that don't
understand --version won't try to behave interactively.
* tests/autotest.at (Tested programs): Catch this bug.
* tests/m4sugar.at (m4@&t@_append): Test new macro.
* tests/local.at (AT_TESTED): Add m4, perl.
* doc/autoconf.texi (Text processing Macros): Document
m4_append_uniq_w, and update text on m4_append.
* NEWS: Document the addition.
Eric Blake [Thu, 18 Oct 2007 02:59:01 +0000 (20:59 -0600)]
Function cleanup.
* lib/autotest/general.m4 (_AT_CREATE_DEBUGGING_SCRIPT): Convert
from m4 macro...
(AT_INIT) <at_func_create_debugging_script>: ...to shell
function.
(AT_INIT): Defer function declarations until after --help,
--version. Format functions consistently, trying to fit in 80
columns.
(TEST_FUNCTIONS): Based on recent changes, rename...
(TEST_GROUPS): ...to this.
Ralf Wildenhues [Wed, 17 Oct 2007 19:12:36 +0000 (21:12 +0200)]
Autotest: do not use shell functions for individual tests.
* lib/autotest/general.m4 (AT_INIT) <at_func_test>: Merely
extract the source test source, do not invoke it.
(AT_SETUP, AT_CLEANUP): Source test code outside shell function.
* tests/autotest.at (Fallacy): Actually let the inner suite fail,
expect exit status of 1.
* tests/autotest.at (Skip): New test, for bogus zsh exit status.