[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Mingw-users] autoreconf does not recurse
From: |
Ralf Wildenhues |
Subject: |
Re: [Mingw-users] autoreconf does not recurse |
Date: |
Sat, 14 Nov 2009 13:08:16 +0100 |
User-agent: |
Mutt/1.5.20 (2009-08-09) |
* Ralf Wildenhues wrote on Thu, Nov 12, 2009 at 09:02:14PM CET:
> Bug in autoreconf. Workaround: replace
>
> > AC_CONFIG_SUBDIRS([
> > subpackage
> > ])
>
> with
> AC_CONFIG_SUBDIRS([subpackage])
Testsuite is still running. OK to apply and add Nathan to THANKS if it
passes?
Note that this patch does not fix AC_CONFIG_AUX_DIR with leading or
trailing white space. AFAICS that would need fixing in several places,
including Automake.
Thanks,
Ralf
Fix AC_CONFIG_SUBDIRS tracing in autoreconf.
* bin/autoreconf.in (autoreconf_current_directory): Collapse
newlines in the autoconf trace output, similar to how automake
invokes autoconf, so that newlines do not matter in the argument
to AC_CONFIG_SUBDIRS.
* tests/torture.at (Deep Package): Expose this issue in the
test.
* THANKS: Update.
Report by Nathan Schulte.
diff --git a/bin/autoreconf.in b/bin/autoreconf.in
index 9f6d706..4aeca01 100644
--- a/bin/autoreconf.in
+++ b/bin/autoreconf.in
@@ -454,12 +454,13 @@ sub autoreconf_current_directory ()
verb "$configure_ac: tracing";
my $traces = new Autom4te::XFile
("$autoconf"
- . join (' --trace=', '',
+ . join (' ',
+ map { ' --trace=' . $_ . ':\$n::\${::}%' }
# If you change this list, update the
# `Autoreconf-preselections' section of autom4te.in.
- 'AC_CONFIG_AUX_DIR:AC_CONFIG_AUX_DIR:\$1',
+ 'AC_CONFIG_AUX_DIR',
'AC_CONFIG_HEADERS',
- 'AC_CONFIG_SUBDIRS:AC_CONFIG_SUBDIRS:\$1',
+ 'AC_CONFIG_SUBDIRS',
'AC_INIT',
'AC_PROG_LIBTOOL',
'LT_INIT',
@@ -470,14 +471,17 @@ sub autoreconf_current_directory ()
. ' |');
while ($_ = $traces->getline)
{
- $aux_dir = $1 if /AC_CONFIG_AUX_DIR:(.*)/;
- $uses_autoconf = 1 if /AC_INIT/;
- $uses_gettext_via_traces = 1 if /AM_GNU_GETTEXT/;
- $uses_libtool = 1 if /(AC_PROG_LIBTOOL|LT_INIT)/;
- $uses_libltdl = 1 if /LT_CONFIG_LTDL_DIR/;
- $uses_autoheader = 1 if /AC_CONFIG_HEADERS/;
- $uses_automake = 1 if /AM_INIT_AUTOMAKE/;
- push @subdir, split (' ', $1) if /AC_CONFIG_SUBDIRS:(.*)/ && $recursive;
+ my ($macro, @args) = split (/::/);
+ $aux_dir = $args[0] if $macro eq "AC_CONFIG_AUX_DIR";
+ $uses_autoconf = 1 if $macro eq "AC_INIT";
+ $uses_gettext_via_traces = 1 if $macro eq "AM_GNU_GETTEXT";
+ $uses_libtool = 1 if $macro eq "AC_PROG_LIBTOOL"
+ || $macro eq "LT_INIT";
+ $uses_libltdl = 1 if $macro eq "LT_CONFIG_LTDL_DIR";
+ $uses_autoheader = 1 if $macro eq "AC_CONFIG_HEADERS";
+ $uses_automake = 1 if $macro eq "AM_INIT_AUTOMAKE";
+ push @subdir, split (' ', $args[0])
+ if $macro eq "AC_CONFIG_SUBDIRS" &&
$recursive;
}
# The subdirs are *optional*, they may not exist.
diff --git a/tests/torture.at b/tests/torture.at
index ea3acd4..6fdf7e7 100644
--- a/tests/torture.at
+++ b/tests/torture.at
@@ -1359,7 +1359,10 @@ AT_DATA([install-sh], [])
AT_DATA([configure.in],
[[AC_INIT(GNU Outer, 1.0)
AC_ARG_VAR([OUTER], [an outer variable])
-AC_CONFIG_SUBDIRS([inner inner2])
+AC_CONFIG_SUBDIRS([
+ inner
+ inner2
+])
AC_OUTPUT
]])