autoconf-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] general: support CONFIG_SITE being a list of entries


From: Ross Burton
Subject: [PATCH] general: support CONFIG_SITE being a list of entries
Date: Fri, 27 Mar 2020 15:19:40 +0000

From: Ross Burton <address@hidden>

Instead of treating CONFIG_SITE as a single path, treat it as a
space-separated list of paths and load them in order.

Also remove the special-casing of entries starting with a dash, this is
redundant as they'll be caught by the wildcard case.

Finally add a test case to verify that multiple files are loaded
correctly.
---
 lib/autoconf/general.m4 | 23 +++++++++--------------
 tests/base.at           | 11 +++++++++++
 2 files changed, 20 insertions(+), 14 deletions(-)

diff --git a/lib/autoconf/general.m4 b/lib/autoconf/general.m4
index e80f7eb0..4125a413 100644
--- a/lib/autoconf/general.m4
+++ b/lib/autoconf/general.m4
@@ -1946,25 +1946,20 @@ AU_DEFUN([AC_VALIDATE_CACHED_SYSTEM_TUPLE], [])
 # Look for site- or system-specific initialization scripts.
 m4_define([AC_SITE_LOAD],
 [# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
 if test -n "$CONFIG_SITE"; then
-  # We do not want a PATH search for config.site.
-  case $CONFIG_SITE in @%:@((
-    -*)  ac_site_file1=./$CONFIG_SITE;;
-    */*) ac_site_file1=$CONFIG_SITE;;
-    *)   ac_site_file1=./$CONFIG_SITE;;
-  esac
+  ac_site_files="$CONFIG_SITE"
 elif test "x$prefix" != xNONE; then
-  ac_site_file1=$prefix/share/config.site
-  ac_site_file2=$prefix/etc/config.site
+  ac_site_files="$prefix/share/config.site $prefix/etc/config.site"
 else
-  ac_site_file1=$ac_default_prefix/share/config.site
-  ac_site_file2=$ac_default_prefix/etc/config.site
+  ac_site_files="$ac_default_prefix/share/config.site 
$ac_default_prefix/etc/config.site"
 fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+
+for ac_site_file in $ac_site_files
 do
-  test "x$ac_site_file" = xNONE && continue
+  case $ac_site_file in
+  */*) ;;
+  *) ac_site_file=./$ac_site_file;;
+  esac
   if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
     AC_MSG_NOTICE([loading site script $ac_site_file])
     sed 's/^/| /' "$ac_site_file" >&AS_MESSAGE_LOG_FD
diff --git a/tests/base.at b/tests/base.at
index ff753f1a..ab013633 100644
--- a/tests/base.at
+++ b/tests/base.at
@@ -501,6 +501,17 @@ AT_CHECK([grep 'failed to load site script' stderr], [], 
[ignore], [ignore],
 CONFIG_SITE=./no-such-file
 AT_CHECK_CONFIGURE
 
+# Check that multiple files are loaded
+AT_DATA([first.site],
+[[my_cv_shell_true_works=no
+]])
+AT_DATA([second.site],
+[[my_cv_shell_true_works=maybe
+]])
+CONFIG_SITE="$PWD/first.site $PWD/second.site"
+AT_CHECK_CONFIGURE([], [], [stdout])
+AT_CHECK([grep 'whether true.*works.*cached.*maybe' stdout], [], [ignore])
+
 AT_CLEANUP
 
 
-- 
2.25.1




reply via email to

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