Eric Blake [Thu, 16 Sep 2010 14:43:27 +0000 (08:43 -0600)]
m4sugar: fix regression in AC_MSG_ERROR expansion
AS_ERROR Regression introduced in commit cffdc3947, but the
underlying problem stems from the introduction of m4_defun_init
in commit d0c5f482.
* lib/m4sugar/m4sugar.m4 (m4_defun_init): Avoid macro
concatenation on subsequent expansions
* tests/m4sh.at (AS_WARN and AS_ERROR): New test.
* tests/m4sugar.at (m4@&t@_require: one-shot initialization):
Enhance test.
* NEWS: Document the fix.
* THANKS: Update.
Reported by Adrian Bunk and and Nishio Futoshi.
* tests/tools.at (autom4te preselections): Remove minor
redundancies in regular expressions used to grep the output
'automake --version' for test skipping.
* tests/torture.at (Configuring subdirectories)
(Unusual Automake input files): Likewise.
Eric Blake [Mon, 13 Sep 2010 17:31:23 +0000 (11:31 -0600)]
autotest: work around zsh bug
* lib/autotest/general.m4 (AT_DATA): Special case an empty data
file, since zsh botches empty here-docs.
* doc/autoconf.texi (Writing Testsuites) <AT_DATA>: Document that
this allows empty contents.
* tests/autotest.at (AT_DATA): New test.
Reported by Ralf Wildenhues.
* doc/autoconf.texi (Generic Compiler Characteristics): Use
second argument of @uref consistently, for nicer OpenMP link.
(Polymorphic Variables): Restore font-lock.
(Debugging): Add item for bashdb.
Document and test AT_CHECK args shell execution environment.
* doc/autoconf.texi (Writing Testsuites): Document that COMMANDS
is run in a subshell, but RUN-IF-FAIL and RUN-IF-PASS are not.
* tests/autotest.at (AT@&t@_CHECK execution environment): New
test.
* NEWS: Update.
doc: index entries for non-environment, non-output variables.
* doc/autoconf.texi: Clarify the meaning of the various variable
indices. Merge variable index `vr' into concept index using
syncodeindex.
(Configuration Actions, Generic Programs, Generic Functions)
(Writing Testsuites): Add index entries for documented shell
variables used during in configure and testsuite scripts.
Eric Blake [Mon, 13 Sep 2010 16:02:50 +0000 (10:02 -0600)]
tests: skip broken automake wrapper on MirBSD
On a fresh default install, MirBSD ships with an automake wrapper
script that has bad behavior:
$ automake --version; echo $?
Provide an AUTOMAKE_VERSION environment variable, please
0
* tests/tools.at (autom4te preselections): Skip, rather than fail,
if 'automake --version' succeeds without printing a version when
an environment variable is not set.
* tests/torture.at (Configuring subdirectories)
(Unusual Automake input files): Likewise.
(Shell Substitutions, Site Defaults): Fix markup for indexed
entried, using @code and @file as appropriate.
(M4 Macro Index): Clarify which of the indexed macros have m4_
and which have AS_ prefix.
Eric Blake [Wed, 8 Sep 2010 16:31:50 +0000 (10:31 -0600)]
m4sh: preserve set -vx over re-exec
See http://lists.gnu.org/archive/html/bug-gnulib/2010-09/msg00035.html
for the motivation for this patch.
* lib/m4sugar/m4sh.m4 (_AS_DETECT_BETTER_SHELL): Trace through
re-exec, to make it easier to debug script startup issues.
Idea from recent bug-gnulib change to init.sh.
Eric Blake [Tue, 7 Sep 2010 21:51:47 +0000 (15:51 -0600)]
docs: mention traditional awk limitation
* doc/autoconf.texi (Limitations of Usual Tools) <awk>: Mention
that traditional awk lacks ENVIRON. Add reference to awk manual.
(Particular Programs) <AC_PROG_AWK>: Add reference to awk section.
Reported by Ralf Wildenhues.
Eric Blake [Mon, 30 Aug 2010 15:51:11 +0000 (09:51 -0600)]
fortran: always avoid AC_LANG_CONFTEST warning
* lib/autoconf/lang.m4 (AC_LANG_CONFTEST()): Make the default
match the fact that the default AC_LANG_SOURCE does not inline
confdefs.h in the first place.
* lib/autoconf/fortran.m4 (AC_FC_FREEFORM, AC_FC_FIXEDFORM)
(AC_FC_LINE_LENGTH, __AC_FC_NAME_MANGLING): Revert previous use of
AC_LANG_DEFINES_PROVIDED.
Suggested by Ralf Wildenhues.
Eric Blake [Fri, 27 Aug 2010 19:15:22 +0000 (13:15 -0600)]
config.status: minimize use of $tmp
* lib/autoconf/status.m4 (_AC_OUTPUT_MAIN_LOOP)
(_AC_OUTPUT_FILES_PREPARE, _AC_OUTPUT_FILE)
(_AC_OUTPUT_HEADERS_PREPARE, _AC_OUTPUT_HEADER): Use $ac_tmp
internally, while preserving $tmp for existing users.
* tests/torture.at (AC_CONFIG_COMMANDS with temporary directory):
New test, that $tmp is available but not essential.
Eric Blake [Fri, 27 Aug 2010 18:55:54 +0000 (12:55 -0600)]
docs: avoid use of $tmp outside of config.status use
* doc/autoconf.texi (Polymorphic Variables, Shell Substitutions):
Use $var or $t instead.
(Limitations of Usual Tools): Use $dir instead.
(Initialization Macros) <AS_TMPDIR>: Make good on the NEWS
regarding AS_TMPDIR being documented as consuming $tmp.
Suggested by Ralf Wildenhues.
Paul Eggert [Mon, 30 Aug 2010 03:21:01 +0000 (20:21 -0700)]
AC_PROG_YACC: fix comment re what "yacc" stands for
* lib/autoconf/programs.m4 (AC_PROG_YACC): YACC stands for
"Yet Another Compiler Compiler", not "Yet Another C Compiler".
Problem reported by Chris Long in
<http://lists.gnu.org/archive/html/bug-autoconf/2010-08/msg00134.html>.
Ralf Wildenhues [Mon, 2 Aug 2010 20:42:55 +0000 (22:42 +0200)]
Avoid long lines in testsuite script.
* lib/autotest/general.m4 (AT_INIT): Remove definition of
AT_groups_all. Initialize at_groups from at_help_all, with
newlines instead of spaces separating test groups numbers.
Adjust all code to newlines.
* NEWS: Update.
* tests/autotest.at (Huge testsuite): New test.
Ralf Wildenhues [Sat, 14 Aug 2010 06:34:01 +0000 (08:34 +0200)]
Try to update config.cache atomically; respect symlinks.
* lib/autoconf/general.m4 (AC_CACHE_SAVE): Use `mv -f' to update
the cache file if it is a regular file and not a symlink. Move
first to temporary name in the target directory if not in the
current directory for atomicity across mount points.
* tests/base.at (AC_CACHE_CHECK): Try symlinked cache file.
* doc/autoconf.texi (Cache Files): Leftover temporary cache
files may be deleted by the user.
* NEWS: Update.
Eric Blake [Fri, 27 Aug 2010 16:59:40 +0000 (10:59 -0600)]
m4sh: protect LINENO against stray macro
* lib/m4sugar/m4sh.m4 (_AS_LINENO_PREPARE): Double quote entire
sed script, to avoid issue uncovered by automake testsuite where
'b' was an m4 macro that broke execution on dash.
Reported by Stefano Lattarini.
Eric Blake [Wed, 25 Aug 2010 22:56:37 +0000 (16:56 -0600)]
m4sh: assume ${a:-b} support
* tests/m4sh.at (Null variable substitution): New test.
* doc/autoconf.texi (Shell Substitutions) <${var:-value}>: Mention
that m4sh guarantees support.
(Limitations of Usual Tools) <mktemp>: Use it.
* lib/m4sugar/m4sh.m4 (AS_LINENO_POP, AS_VAR_IF, AS_TMPDIR):
Exploit use of colon for smaller files.
Eric Blake [Thu, 26 Aug 2010 21:07:38 +0000 (15:07 -0600)]
autoconf: warn if AC_*_IFELSE lacks complete program
* lib/autoconf/lang.m4 (AC_LANG_DEFINES_PROVIDED): New macro.
(AC_LANG_SOURCE): Call it.
(AC_LANG_CONFTEST): Add warning if new macro is not called.
* lib/autoconf/c.m4 (_AC_LANG_OPENMP): Add missing AC_LANG_SOURCE.
* lib/autoconf/fortran.m4 (AC_FC_FREEFORM, AC_FC_FIXEDFORM)
(AC_FC_LINE_LENGTH, __AC_FC_NAME_MANGLING): Intentionally bypass
AC_LANG_SOURCE.
* lib/autoconf/programs.m4 (_AC_PROG_LEX_YYTEXT_DECL): Likewise.
* tests/compile.at (AC_COMPILE_IFELSE): New test.
* doc/autoconf.texi (Generating Sources) <AC_LANG_CONFTEST>:
Document new warning.
<AC_LANG_DEFINES_PROVIDED>: Document new macro.
<AC_LANG_SOURCE>: Document use of new macro.
* NEWS: Document the improvement.
Suggested by Bruno Haible.
Eric Blake [Thu, 26 Aug 2010 04:05:45 +0000 (22:05 -0600)]
docs: mention another issue with variable expansion
In particular, see http://austingroupbugs.net/view.php?id=221
and http://austingroupbugs.net/view.php?id=255.
* doc/autoconf.texi (Shell Substitutions) <${var+value}>: New
subsection.
<${var=literal}>: Tweak wording. Add mention of an ambiguity
allowed by POSIX.
* tests/torture.at (Substitute and define special characters):
Make test more robust; here, the outer "" is in a here-doc, and
does not violate the quoting rules of thumb just documented.
Ralf Wildenhues [Tue, 24 Aug 2010 20:59:13 +0000 (22:59 +0200)]
tests: fix AC_CACHE_CHECK to skip with bad shells.
* tests/base.at (AC_CACHE_CHECK): Skip test with malformed
config.site file if the shell does not report syntax errors
from a sourced file. Fixes test failure on AIX and FreeBSD.
Report from Rainer Tammer.
Paul Eggert [Tue, 24 Aug 2010 21:03:32 +0000 (14:03 -0700)]
AC_HEADER_STDBOOL: avoid spurious failure with modern xlc
* lib/autoconf/headers.m4 (AC_HEADER_STDBOOL): Move the "bool e =
&s;" test into the main program, as C99 might plausibly be
interpreted as not requiring support for this construction in
static initializers. Remove the "#if defined __xlc__" stuff, as
the bug is not present in recent xlc implementations, and they
reject the test for other (valid) reasons. People using ancient
xlc versions, if any, are suggested to update to fixed versions.
Reported by Ralf Wildenhues in the thread starting at:
http://lists.gnu.org/archive/html/bug-autoconf/2010-08/msg00103.html
Eric Blake [Mon, 23 Aug 2010 20:35:48 +0000 (14:35 -0600)]
AC_HEADER_STDBOOL: avoid spurious clang failure
* lib/autoconf/headers.m4 (AC_HEADER_STDBOOL): Drop gcc (and by
extension clang) check in favor of a gnulib test. Force failure,
rather than merely testing for a compiler extension.
* THANKS: Update.
Reported by Anders Kaseorg.
autoreconf: mention the AUTOM4TE environment variable
* doc/autoconf.texi (Using autoreconf to Update configure
Scripts): List `AUTOM4TE' among the environment variables
honored by autoreconf.
* bin/autoreconf.in ($help): Likewise.
Eric Blake [Tue, 17 Aug 2010 14:17:36 +0000 (08:17 -0600)]
doc: improve AS_VAR_IF details
* doc/autoconf.texi (Polymorphic Variables) <AS_VAR_IF>: Make it
clear that user must supply quotes as needed.
* THANKS: Update.
Suggested by Randall Cotton.
Ralf Wildenhues [Mon, 16 Aug 2010 19:14:20 +0000 (21:14 +0200)]
Fix Autotest --errexit to exit after XPASSing tests.
* lib/autotest/general.m4 (AT_INIT) <at_fn_group_postprocess>:
Exit after an unexpected passing test if $at_errexit.
* tests/autotest.at (errexit): Also try tests that xpass, skip,
xfail, or fail hard.
Peter Rosin [Tue, 10 Aug 2010 21:08:03 +0000 (23:08 +0200)]
autotest: keep testsuite files on unexpected pass
* lib/autotest/general.m4 (AT_INIT) <at_fn_group_postprocess>:
Don't cleanup the group directory when a test unexpectedly passes.
* tests/autotest.at (Cleanup): Check that an unexpected pass leaves
the test group directory intact.
Ralf Wildenhues [Tue, 10 Aug 2010 20:45:49 +0000 (22:45 +0200)]
Skip AC_FC_SRCEXT([f90]) tests with a Fortran 77 compiler in $FC.
* tests/fortran.at (AC_FC_FREEFORM with AC_FC_SRCEXT)
(AC_FC_FIXEDFORM with AC_FC_SRCEXT): Skip if the compiler cannot
handle files with .f90 extension.
Report by Luke Dalessandro.
Bruno Haible [Thu, 5 Aug 2010 11:26:40 +0000 (13:26 +0200)]
AC_FUNC_ALLOCA: modernize
* lib/autoconf/functions.m4 (AC_FUNC_ALLOCA): Assume that alloca's
return type is 'void *', not 'char *'. Supply C89 prototype.
Reported by Thomas Klausner.
Ralf Wildenhues [Wed, 4 Aug 2010 19:04:05 +0000 (21:04 +0200)]
Fix testsuite failure due to bugs in third-party aclocal macros.
* tests/torture.at (Non-literal AC_CONFIG_SUBDIRS): Create a
hand-written aclocal.m4 file, so the -Werror test doesn't fail
over aclocal warnings about errors in third-party macro files.
Simplify test accordingly, calling autoreconf throughout.
Report by Bob Friesenhahn.
Ralf Wildenhues [Wed, 4 Aug 2010 18:31:06 +0000 (20:31 +0200)]
Fix AC_LANG_SOURCE and AC_LANG_PROGRAM tests.
* tests/compile.at (AC_LANG_SOURCE example)
(AC_LANG_PROGRAM example): Fix broken sed script for
extracting the interesting part of the conftest.c file.
Fixes test failure on Haiku.
* THANKS: Update.
Report by Scott McCreary.
Ralf Wildenhues [Mon, 2 Aug 2010 19:10:00 +0000 (21:10 +0200)]
Ensure unnamed test group categories are separated from previous.
* doc/autoconf.texi (Writing Testsuites) <AT_BANNER>: Update
description.
* lib/autotest/general.m4 (AT_INIT) <at_fn_banner>: Set banner
to single space, not empty line, once printed. For empty
banners, print a single empty line to separate them from a
previous test group category.
* tests/autotest.at (Banners): Insert another test group; adjust
tests accordingly. Extend test to cover semantic change.
* NEWS: Update.
Eric Blake [Wed, 21 Jul 2010 16:31:52 +0000 (10:31 -0600)]
Prepare for release.
* maint.mk (PREV_VERSION_REGEXP): New macro, missed when
backporting update-NEWS_hash from gnulib.
* cfg.mk (old_NEWS_hash): Correctly generate.
* build-aux/gendocs.sh: Temporarily break sync from upstream, to
avoid including spurious directories in info source tarball.
Eric Blake [Wed, 21 Jul 2010 21:57:42 +0000 (15:57 -0600)]
Avoid spurious testsuite failures.
* doc/autoconf.texi (Generating Sources): Don't mix gcc '-E' and
'-o -', since the former already implies stdout, while the latter
creates -.exe on cygwin.
* tests/compile.at (AC_LANG_SOURCE example)
(AC_LANG_PROGRAM example): Likewise. Also prevent any config.site
interference.
Eric Blake [Wed, 21 Jul 2010 19:51:14 +0000 (13:51 -0600)]
Partially revert previous patch.
* lib/autotest/general.m4 (AT_INIT) <serial testing>: Changing
at_jobs here breaks output if -j2 was requested but shell is
insufficient to support parallel testing.
Reported by Ralf Wildenhues.
Eric Blake [Wed, 21 Jul 2010 13:51:24 +0000 (07:51 -0600)]
Minor testsuite size reduction.
* lib/autotest/general.m4 (AT_INIT) <serial testing>: Ensure
at_jobs is 1.
(AT_SETUP, AT_CLEANUP): Factor initialization code...
(AT_INIT) <at_fn_group_banner>: ...into new function.
Based in part on suggestion by Ralf Wildenhues.
Eric Blake [Wed, 21 Jul 2010 04:11:14 +0000 (22:11 -0600)]
Close job control fd before running tests.
* doc/autoconf.texi (File Descriptors): Clarify limitations.
* lib/autotest/general.m4 (AT_CLEANUP): Avoid leaking job control
fifo fd to user tests.
(AT_INIT): Delete comment, now that close is done elsewhere.
Suggested by Ralf Wildenhues.
Eric Blake [Wed, 21 Jul 2010 03:14:14 +0000 (21:14 -0600)]
Plug race in parallel autotest.
* lib/autotest/general.m4 (AT_INIT) <Fifo job dispatcher>: Track
two fds to fifo in parent, to avoid race where parent can see EOF
before child opens fifo. Avoid any atomicity problems with tokens
larger than one byte.
* NEWS: Document the bug fix.
Eric Blake [Tue, 20 Jul 2010 13:43:56 +0000 (07:43 -0600)]
Also reject ' and newline from AC_INIT strings.
* lib/autoconf/general.m4 (_AC_INIT_LITERAL): Reject a couple more
problematic characters.
* tests/base.at (AC_INIT with unusual version strings): Enhance
test.
* doc/autoconf.texi (Initializing configure) <AC_INIT>: Further
clarifications, and clean up wording about use of m4_esyscmd.
* NEWS: Update previous news entry.
Suggested by Paolo Bonzini.
Let autoreconf pass warning flags to new-enough aclocal.
* bin/autoreconf.in ($aclocal_supports_warnings)
($automake_supports_warnings): New globals.
(parse_args): Set and use them. Be sure to invoke `aclocal
--help' and `automake --help' just once each.
* NEWS: Update.
Prompted by report from Bruno Haible.
Signed-off-by: Ralf Wildenhues <Ralf.Wildenhues@gmx.de> Signed-off-by: Eric Blake <eblake@redhat.com>
Fix parsing of empty variable settings on the command line.
* lib/autoconf/general.m4 (_AC_INIT_PARSE_ARGS): Work around
expr bug returning 0 instead of the empty string.
* lib/autotest/general.m4 (AT_INIT): Likewise.
Eric Blake [Mon, 19 Jul 2010 22:39:45 +0000 (16:39 -0600)]
Fix up AC_INIT vs. " issues, and document it.
* doc/autoconf.texi (Initializing configure): Improve
documentation on argument restrictions.
* NEWS: Tweak information.
* lib/autoconf/general.m4 (_AC_INIT_GENERAL): New macro, that also
rejects literal ".
(_AC_INIT_PACKAGE): Use it to plug hole in last patch.
* tests/base.at (AC_INIT with unusual version strings): Enhance
test.
Relax AC_INIT requirements for PACKAGE and VERSION strings again.
* lib/m4sugar/m4sh.m4 (AS_LITERAL_HEREDOC_IF): New macro.
(_AS_LITERAL_HEREDOC_IF, _AS_LITERAL_HEREDOC_IF_YES)
(_AS_LITERAL_HEREDOC_IF_NO): New helper macros.
* lib/autoconf/general.m4 (_AC_INIT_PACKAGE): Use
AS_LITERAL_HEREDOC_IF for PACKAGE and VERSION strings.
* tests/base.at (AC_INIT with unusual version strings): New test.
* tests/m4sh.at (AS@&t@_LITERAL_IF): Extend test.
* NEWS: Update.
Allow inspecting AC_PREPROC_IFELSE output in true branch.
* lib/autoconf/general.m4 (_AC_PREPROC_IFELSE_BODY): Redirect
preprocessor output to conftest.i rather than /dev/null.
(_AC_PREPROC_IFELSE): Remove conftest.i in the postprocessing.
* tests/compile.at (Order of user actions and cleanup): Extend
test in the ACTION-IF-TRUE branch.
* doc/autoconf.texi (Running the Preprocessor): Document new
feature.
* NEWS: Update.
manual: compiler flags -D and -L should not be followed by space
* doc/autoconf.texi (Preset Output Variables): Remove space
between -D and -L flags and their arguments, traditional cpp
implementations like Solaris 10, IRIX 6.5, OSF Tru64 5.1D,
AIX 5.3 do not accept it.
Eric Blake [Tue, 6 Jul 2010 20:00:44 +0000 (22:00 +0200)]
Fix regression of AC_CHECK_SIZEOF on pointer types.
* lib/autoconf/types.m4 (AC_CHECK_SIZEOF): Translate `*' to `p'
when checking literal-ness of the type, for pointer types.
* lib/m4sugar/m4sh.m4 (_AS_TR_SH): Also consider `*' as literal.
(_AS_TR_CPP): Likewise.
* tests/semantics.at (AC_CHECK_ALIGNOF struct): When checking
for numeric answer, be sure to not allow variable references.
(AC_CHECK_SIZEOF struct): Likewise. Also, test the
`AC_CHECK_SIZEOF([int *])' example from the manual.
* doc/autoconf.texi (Generic Compiler Characteristics): Add
example marker.
* NEWS: Update.
Reports by Nishio Futoshi and Roberto Bagnara.
Fix regression of AC_CONFIG_SUBDIRS with multiple arguments.
* lib/autoconf/status.m4 (AC_CONFIG_SUBDIRS): Do not assume the
argument is a single word.
* tests/torture.at (Deep Package): Extend test to cover this.
(Non-literal AC_CONFIG_SUBDIRS): New test.
* doc/autoconf.texi (Subdirectories): Add example marker.
* NEWS: Update.
Report by Bruno Haible.
* tests/torture.at (Torturing config.status)
(Substitute a 2000-byte string)
(Substitute and define special characters)
(Substitute a newline): Quote first argument in for list so
that it does not look like an assignment.
Eric Blake [Fri, 2 Jul 2010 21:35:45 +0000 (15:35 -0600)]
Make AS_TR_SH and AS_TR_CPP similar.
* lib/m4sugar/m4sh.m4 (_AS_TR_CPP_LITERAL): Avoid underquoting.
(_AS_TR_CPP_INDIR): Handle all polymorphic variables.
* tests/m4sh.at (AS@&t@_TR_SH and AS@&t@_TR_CPP): New test.
* NEWS: Document the fix.
Reported by Bruno Haible.
Eric Blake [Fri, 2 Jul 2010 20:03:50 +0000 (14:03 -0600)]
Reduce startup cost of autotest.
* lib/autotest/general.m4 (_AT_FINISH) <banners>: Rather than
doing a recursive find, limit ourselves to top ChangeLog only.
Reported by Ralf Wildenhues.