* 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 ]])