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.
Ralf Wildenhues [Tue, 16 Oct 2007 21:50:03 +0000 (23:50 +0200)]
Fix `configure --help=recursive' in unconfigured/read-only trees.
* lib/m4sugar/m4sh.m4 (_AS_LN_S_PREPARE): Avoid errors when `.'
is not writable, use 'cp -p' in this case, in the hope that it
will not actually be needed. Still try removing files, in case
of other write errors.
* lib/autoconf/general.m4 (_AC_INIT_SRCDIR): For ac_confdir,
use $as_myself, not $0.
(_AC_INIT_HELP): For --help=recursive, if the subdir does not
exist, try again in the the source tree. This change assumes
that the subpackage configure script is capable of running
--help=recursive in the source tree.
* tests/torture.at (Configuring subdirectories, Deep Package):
Adjust tests to expose both issues, also try invocation as
`sh configure ...' and plain `configure ...' with PATH adjusted.
* NEWS, THANKS: Update.
Report by Hans Ulrich Niedermann.
Paul Eggert [Tue, 16 Oct 2007 20:25:57 +0000 (13:25 -0700)]
Check for 64-bit int errors in HP-UX 10.20 preprocessor.
Problem reported by H.Merijn Brand in
<http://lists.gnu.org/archive/html/bug-tar/2007-10/msg00018.html>.
* lib/autoconf/types.m4 (AC_TYPE_LONG_LONG_INT):
(AC_TYPE_UNSIGNED_LONG_LONG_INT):
Check that preprocessor handles 64-bit ints, too.
Eric Blake [Tue, 16 Oct 2007 18:00:00 +0000 (12:00 -0600)]
Fix m4_map, and add some more utility macros.
* lib/m4sugar/m4sugar.m4 (m4_apply, m4_count, m4_dquote_elt)
(m4_echo, m4_make_list): New documented macros.
(_m4_quote, _m4_shift2): New helper macros.
(m4_map): Change semantics to allow calling macro without
arguments.
(m4_map_sep): Likewise. Also change semantics to quote separator,
to match m4_join and m4_append.
(m4_version_unletter): Fix use of m4_map.
* doc/autoconf.texi (Evaluation Macros): Document m4_apply,
m4_count, m4_dquote_elt, m4_echo, m4_make_list.
(Text processing Macros): Mention m4_dquote as a faster
alternative to joining with commas.
(Looping constructs): Document m4_map, m4_map_sep.
* NEWS: Mention new macros.
Eric Blake [Tue, 16 Oct 2007 12:22:56 +0000 (06:22 -0600)]
A few more m4sugar improvements, to benefit libtool.
* lib/m4sugar/m4sugar.m4 (m4_bpatsubsts, _m4_shiftn): Reduce size
of expansion by avoiding extra uses of $@.
(m4_shiftn): Avoid extra dnl, and forbid shifting by 0.
(_m4_cdr): New helper macro.
(_m4_map, m4_map_sep): Use it to reduce size of expansion.
(_m4_shift3): New helper macro.
(_m4_foreach): Swap argument order, and use new macro to reduce
size of expansion.
* doc/autoconf.texi (Looping constructs) <m4_shiftn>: Mention that
count must be positive.
Eric Blake [Mon, 15 Oct 2007 18:18:24 +0000 (12:18 -0600)]
Enhance AS_HELP_STRING.
* lib/m4sugar/m4sugar.m4 (m4_text_wrap): Don't expand arguments,
and reduce number of expansions.
* lib/m4sugar/m4sh.m4 (AS_HELP_STRING): Rework to use m4_expand,
and to take indent and wrap column numbers.
* tests/m4sh.at (AS@&t@_HELP_STRING): Update the test.
* doc/autoconf.texi (Pretty Help Strings): Document details about
arguments.
(Text processing Macros): Minor tweaks.
* NEWS: Document this change.
Eric Blake [Mon, 8 Oct 2007 17:53:00 +0000 (11:53 -0600)]
Fix 2007-10-03 regression with AT_SETUP([a, b]).
* lib/m4sugar/m4sugar.m4 (m4_expand): New macro.
* lib/autotest/general.m4 (AT_SETUP): Use it to preserve
whitespace after single-quoted comma.
* tests/autotest.at (AT_CHECK_AT_TITLE_CHAR): Test this.
* NEWS: Revert caveat about semantics change on comma.
* doc/autoconf.texi (Programming in M4): Lighten the warning on
using m4sugar; it is stabilizing.
(Redefined M4 Macros): Touch up wording on M4 builtins.
(Evaluation Macros): Document m4_expand.
Eric Blake [Sat, 13 Oct 2007 13:47:46 +0000 (07:47 -0600)]
Make AC_PREREQ faster and more robust.
* lib/m4sugar/m4sugar.m4 (m4_ignore, m4_unquote): New macros.
(m4_version_prereq): Inline constant expansions.
(m4_list_cmp): Reduce number of expansions, by avoiding m4_case.
Rewrite in terms of [] list, not () list.
(_m4_list_cmp, _m4_version_unletter): New helper macros.
(m4_version_unletter): Write wrapper around new implementation to
preserve old semantics.
(m4_version_compare): Pass correct type of list, and avoid
overhead of flattening expressions too early.
(m4_do): Move to be near other quoting macros.
(m4_max, m4_min): Always result in decimal output.
* doc/autoconf.texi (Looping constructs): Add m4_car, m4_cdr.
Move m4_do...
(Evaluation Macros): ...here. Add m4_ignore, m4_unquote.
(Text processing Macros): Move m4_version_compare...
(Number processing Macros): ...to this new node; document m4_cmp,
m4_list_cmp, m4_sign, m4_max, m4_min.
* tests/m4sugar.at (m4@&t@_version_compare): Enhance test, to pick
up on bugs fixed by this patch.
* NEWS: Document new macros.