bug-autoconf
[Top][All Lists]
Advanced

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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]