On Fri, Jun 22, 2007 at 08:40:14PM +0200, Ralf Wildenhues wrote: > # Test that AC_SUBST($1) does something sensible. From Ulrich > # Drepper. > > It is broken by this recent (and very sensible) patch against Autoconf: > > | 2007-06-12 Noah Misch <[EMAIL PROTECTED]> > | > | * lib/autoconf/general.m4 (AC_SUBST): Raise a fatal error if > VARIABLE is > | not a valid shell variable name. > | * tests/mktests.sh (ac_exclude_list): Add AC_ARG_VAR. > | * tests/torture.at (AC_SUBST: variable name validation): New test. > | Reported by Andreas Schwab.
> Suggestions? Some speculation: macros like AC_CHECK_PROG use `AC_SUBST([$1])'. `aclocal' used to have a home-grown parser for the input files; upon parsing such code, it would take the $1 literally, rather than having a macro argument to substitute. This test ensured that such constructs did not invalidate the makefile. In modern times, `aclocal' uses `autoconf' to trace the input files. Presuming this speculation is accurate, we can change the test to use that sort of substitution from a macro definition, which is hopefully how it was always used (untested): * tests/subst.test: Move the AC_SUBST into a macro definition. Avoids an error from CVS Autoconf. diff -urp -X ../dontdiff am-clean/tests/subst.test am-subst/tests/subst.test --- am-clean/tests/subst.test 2005-05-14 16:28:56.000000000 -0400 +++ am-subst/tests/subst.test 2007-06-24 15:19:40.000000000 -0400 @@ -24,8 +24,9 @@ . ./defs || exit 1 cat >> configure.in << 'END' -AC_SUBST($1) -AC_SUBST([$]$1) dnl this is the actual invocation that was used +AC_DEFUN([FOO], +[AC_SUBST([$1])]) +FOO([BAR]) END : > Makefile.am I am skeptical about the second deleted line, because it looks like a different usage entirely. Perhaps this sort of thing worked at one point: for $1 in a b c; do AC_SUBST([$]$1) done