diff options
author | Zack Weinberg <zackw@panix.com> | 2020-10-14 20:22:41 -0400 |
---|---|---|
committer | Zack Weinberg <zackw@panix.com> | 2020-10-14 20:22:41 -0400 |
commit | b0d20c049bda80a9d323326ae5ea3fd5e4857712 (patch) | |
tree | 4142dcf305cf038f5419184914b23df3a549cbd4 | |
parent | 3cdc910d229d33e5a98e66b64ee1506a0c2e262c (diff) | |
download | autoconf-b0d20c049bda80a9d323326ae5ea3fd5e4857712.tar.gz |
autoreconf: cope with empty AC_CONFIG_SUBDIRS (bug 110331)
Commit 41edf99f9515f3f83398428c39d79e11266a5a0d made all Perl warnings
fatal. This caused autoreconf to crash on packages that call
AC_CONFIG_SUBDIRS with no arguments. They probably shouldn’t do that,
but we shouldn’t crash if they do.
Problem reported by Ross Burton.
* bin/autoreconf.in (autoreconf_current_directory):
Convert undef to '' before attempting to split it.
* tests/torture.at (Empty AC_CONFIG_SUBDIRS): New test.
-rw-r--r-- | bin/autoreconf.in | 5 | ||||
-rw-r--r-- | tests/torture.at | 22 |
2 files changed, 25 insertions, 2 deletions
diff --git a/bin/autoreconf.in b/bin/autoreconf.in index 2ea917b5..54b9b675 100644 --- a/bin/autoreconf.in +++ b/bin/autoreconf.in @@ -438,8 +438,9 @@ sub autoreconf_current_directory ($) $uses_automake = 1 if $macro eq "AM_INIT_AUTOMAKE"; $uses_intltool = 1 if $macro eq "IT_PROG_INTLTOOL"; $uses_gtkdoc = 1 if $macro eq "GTK_DOC_CHECK"; - push @subdir, split (' ', $args[0]) - if $macro eq "AC_CONFIG_SUBDIRS" && $recursive; + push @subdir, split (' ', $args[0] || '') + if $macro eq "AC_CONFIG_SUBDIRS" + && $recursive; } $traces->close; diff --git a/tests/torture.at b/tests/torture.at index ff0f53f3..631f34f4 100644 --- a/tests/torture.at +++ b/tests/torture.at @@ -1807,6 +1807,28 @@ AT_CHECK([test -f foo/innerfile]) AT_CLEANUP +## ------------------------- ## +## Empty AC_CONFIG_SUBDIRS. ## +## ------------------------- ## + +AT_SETUP([Empty AC_CONFIG_SUBDIRS]) +AT_KEYWORDS([autoreconf]) + +AT_DATA([install-sh], []) +AT_DATA([configure.ac], +[[AC_INIT(GNU Outer, 1.0) + +AC_CONFIG_SUBDIRS() +AC_OUTPUT +]]) + +# autoreconf should have no complaints, and the generated configure +# script should run fine with or without --no-recursion. +AT_CHECK([autoreconf -Werror], [0], [ignore]) +AT_CHECK_CONFIGURE() +AT_CHECK_CONFIGURE([--no-recursion]) + +AT_CLEANUP ## ----------------- ## ## Empty directory. ## |