@@ -1242,6 +1242,13 @@ get_CI_CACHE_NUT_HASHDIR_CFG_OPT() {
12421242 fi
12431243}
12441244
1245+ get_CI_CACHE_NUT_HASHDIR_CFG_OPT_WITH_ENV() {
1246+ # Hash environment variables which we commonly use and that can impact
1247+ # the decisions of configure script as something that requires separate
1248+ # cache files, just in case.
1249+ get_CI_CACHE_NUT_HASHDIR_CFG_OPT " $* CC=' $CC' CXX=' $CXX' CPP=' $CPP' MAKE=' $MAKE' SHELL=' $SHELL' CONFIG_SHELL=' $CONFIG_SHELL' PATH=' $PATH' LD_LIBRARY_PATH=' $LD_LIBRARY_PATH' PKG_CONFIG_PATH=' $PKG_CONFIG_PATH' ARCH=' $ARCH' BITS=' $BITS' CFLAGS=' $CFLAGS' CXXFLAGS=' $CXXFLAGS' CPPFLAGS=' $CPPFLAGS' LDFLAGS=' $LDFLAGS' "
1250+ }
1251+
12451252configure_CI_BUILDDIR() {
12461253 autogen_get_CONFIGURE_SCRIPT
12471254
@@ -1269,7 +1276,7 @@ configure_nut() {
12691276 # Help copy-pasting build setups from CI logs to terminal:
12701277 local CONFIG_OPTS_STR=" ` END=' \' ; NUM=0; for F in \" ${CONFIG_OPTS[@]} \" ; do NUM=$(( $NUM + 1 )) ; [ x\" $NUM \" = x\" ${# CONFIG_OPTS[@]} \" ] && END=' ' ; printf \" ' %s' %s\n\" \" $F \" \" $END \" ; done` "
12711278
1272- get_CI_CACHE_NUT_HASHDIR_CFG_OPT " ${CONFIG_OPTS_STR} CC= ' $CC ' CXX= ' $CXX ' CPP= ' $CPP ' "
1279+ get_CI_CACHE_NUT_HASHDIR_CFG_OPT_WITH_ENV " ${CONFIG_OPTS_STR} "
12731280
12741281 CI_CACHE_NUT_RETRIED=false
12751282 while : ; do # Note the CI_SHELL_IS_FLAKY=true support below
@@ -1292,14 +1299,39 @@ configure_nut() {
12921299 " ${CONFIG_OPTS[@]} " \
12931300 && echo " $0 : configure phase complete (0)" >&2 \
12941301 && {
1295- if [ x" ${DO_USE_AUTOCONF_CACHE} " = xyes ] && [ x" ${DO_USE_AUTOCONF_CACHE_DEBUG} " = xyes ] && [ -n " ${CI_CACHE_NUT_HASHDIR_CFG_OPT} " ] && [ -s " ${CI_CACHE_NUT_HASHDIR_CFG} /config.cache" ] ; then
1296- if [ x = x" ` cat \" ${CI_CACHE_NUT_HASHDIR_CFG} /config.log\" \" ${CI_CACHE_NUT_HASHDIR_CFG} /config.h\" ` " ] ; then
1297- # Stash a copy to track evolution:
1298- cp -pf " ${CI_CACHE_NUT_HASHDIR_CFG} /config.cache" " ${CI_CACHE_NUT_HASHDIR_CFG} /config.cache.orig"
1299- # Populate on first run (may cost 1-2Mb):
1300- cp -pf config.log " ${CI_CACHE_NUT_HASHDIR_CFG} /"
1301- cp -pf include/config.h " ${CI_CACHE_NUT_HASHDIR_CFG} /"
1302- fi
1302+ if [ x" ${DO_USE_AUTOCONF_CACHE} " = xyes ] \
1303+ && [ -n " ${CI_CACHE_NUT_HASHDIR_CFG_OPT} " ] \
1304+ && [ -s " ${CI_CACHE_NUT_HASHDIR_CFG} /config.cache" ] \
1305+ ; then
1306+ case x" ${DO_USE_AUTOCONF_CACHE_DEBUG} " in
1307+ xyes|xfirst)
1308+ if [ x = x" ` cat \" ${CI_CACHE_NUT_HASHDIR_CFG} /config.log\" \" ${CI_CACHE_NUT_HASHDIR_CFG} /config.h\" ` " ] ; then
1309+ # Stash a copy to track evolution:
1310+ cp -pf " ${CI_CACHE_NUT_HASHDIR_CFG} /config.cache" " ${CI_CACHE_NUT_HASHDIR_CFG} /config.cache.orig"
1311+ # Populate on first run (may cost 1-2Mb):
1312+ cp -pf config.log " ${CI_CACHE_NUT_HASHDIR_CFG} /"
1313+ cp -pf include/config.h " ${CI_CACHE_NUT_HASHDIR_CFG} /"
1314+ fi
1315+
1316+ # Make sure all args are declared outside cached logic:
1317+ $CONFIGURE_SCRIPT --help > " ${CI_CACHE_NUT_HASHDIR_CFG} /config.help" 2>&1
1318+ ;;
1319+ xeach)
1320+ TS=" ` date ' +%s' ` " && [ -n " $TS " ] && [ " $TS " -gt 0 ] \
1321+ || { TS=" ` date | tr -d ' :' | tr -d ' ' ` " && [ -n " $TS " ] ; } \
1322+ || TS=$$
1323+
1324+ for F in \
1325+ " ${CI_CACHE_NUT_HASHDIR_CFG} /config.cache" \
1326+ config.log include/config.h \
1327+ ; do
1328+ cp -pf " $F " " ${CI_CACHE_NUT_HASHDIR_CFG} /` basename \" $F \" ` .$TS "
1329+ done
1330+
1331+ # Make sure all args are declared outside cached logic:
1332+ $CONFIGURE_SCRIPT --help > " ${CI_CACHE_NUT_HASHDIR_CFG} /config.help.$TS " 2>&1
1333+ ;;
1334+ esac
13031335 fi
13041336 } && return 0 \
13051337 || { RES_CFG=$?
@@ -1573,7 +1605,7 @@ optional_maintainer_clean_check() {
15731605
15741606 # If this exports CI_CACHE_NUT_HASHDIR_CFG_OPT, the `make distcheck`
15751607 # handlers in the stack of calls via Makefile.am should hear it
1576- get_CI_CACHE_NUT_HASHDIR_CFG_OPT " ${DISTCHECK_FLAGS} CC=' $CC ' CXX=' $CXX ' CPP=' $CPP ' DISTCHECK_TGT='maintainer-clean'"
1608+ get_CI_CACHE_NUT_HASHDIR_CFG_OPT_WITH_ENV " ${DISTCHECK_FLAGS} DISTCHECK_TGT='maintainer-clean'"
15771609
15781610 # Note: currently Makefile.am has just a dummy "distcleancheck" rule
15791611 MAKE_RES=0
@@ -1617,7 +1649,7 @@ optional_dist_clean_check() {
16171649
16181650 # If this exports CI_CACHE_NUT_HASHDIR_CFG_OPT, the `make distcheck`
16191651 # handlers in the stack of calls via Makefile.am should hear it
1620- get_CI_CACHE_NUT_HASHDIR_CFG_OPT " ${DISTCHECK_FLAGS} CC=' $CC ' CXX=' $CXX ' CPP=' $CPP ' DISTCHECK_TGT='distclean'"
1652+ get_CI_CACHE_NUT_HASHDIR_CFG_OPT_WITH_ENV " ${DISTCHECK_FLAGS} DISTCHECK_TGT='distclean'"
16211653
16221654 # Note: currently Makefile.am has just a dummy "distcleancheck" rule
16231655 MAKE_RES=0
@@ -2087,6 +2119,22 @@ default|default-alldrv|default-alldrv:no-distcheck|default-all-errors|default-al
20872119 CONFIG_OPTS+=(" CC=${CC} " )
20882120 CONFIG_OPTS+=(" CXX=${CXX} " )
20892121 CONFIG_OPTS+=(" CPP=${CPP} " )
2122+
2123+ # Do not let autoconf-cached re-runs (re-running the configure script
2124+ # due to a `make` with changed *.m4, *.am or configure.ac sources)
2125+ # complain that CCACHE_* vars were not previously set. This hassle
2126+ # comes with use of AC_ARG_VAR to mark "precious" arguments:
2127+ CONFIG_OPTS+=(" CCACHE_NAMESPACE=${CCACHE_NAMESPACE} " )
2128+ CONFIG_OPTS+=(" CCACHE_BASEDIR=${CCACHE_BASEDIR} " )
2129+ CONFIG_OPTS+=(" CCACHE_DIR=${CCACHE_DIR} " )
2130+ CONFIG_OPTS+=(" CCACHE_PATH=${CCACHE_PATH} " )
2131+ else
2132+ # Still have them declared; the configure script will probably parse
2133+ # them as empty/undefined and re-evaluate if situation warrants that:
2134+ CONFIG_OPTS+=(" CCACHE_NAMESPACE=" )
2135+ CONFIG_OPTS+=(" CCACHE_BASEDIR=" )
2136+ CONFIG_OPTS+=(" CCACHE_DIR=" )
2137+ CONFIG_OPTS+=(" CCACHE_PATH=" )
20902138 fi
20912139
20922140 # Build and check this project; note that zprojects always have an autogen.sh
@@ -2198,7 +2246,7 @@ default|default-alldrv|default-alldrv:no-distcheck|default-all-errors|default-al
21982246
21992247 # If this exports CI_CACHE_NUT_HASHDIR_CFG_OPT, the `make distcheck`
22002248 # handlers in the stack of calls via Makefile.am should hear it
2201- get_CI_CACHE_NUT_HASHDIR_CFG_OPT " ${DISTCHECK_FLAGS} CC=' $CC ' CXX=' $CXX ' CPP=' $CPP ' DISTCHECK_TGT='$BUILD_TGT '"
2249+ get_CI_CACHE_NUT_HASHDIR_CFG_OPT_WITH_ENV " ${DISTCHECK_FLAGS} DISTCHECK_TGT='$BUILD_TGT '"
22022250
22032251 # Tell the sub-makes (likely distcheck*) to hush down
22042252 # NOTE: Parameter pass-through was tested with:
@@ -2940,7 +2988,7 @@ default|default-alldrv|default-alldrv:no-distcheck|default-all-errors|default-al
29402988
29412989 # If this exports CI_CACHE_NUT_HASHDIR_CFG_OPT, the `make distcheck`
29422990 # handlers in the stack of calls via Makefile.am should hear it
2943- get_CI_CACHE_NUT_HASHDIR_CFG_OPT " ${DISTCHECK_FLAGS} CC=' $CC ' CXX=' $CXX ' CPP=' $CPP ' DISTCHECK_TGT='$DISTCHECK_TGT '"
2991+ get_CI_CACHE_NUT_HASHDIR_CFG_OPT_WITH_ENV " ${DISTCHECK_FLAGS} DISTCHECK_TGT='$DISTCHECK_TGT '"
29442992
29452993 # Tell the sub-makes (distcheck) to hush down
29462994 MAKEFLAGS=" ${MAKEFLAGS-} $MAKE_FLAGS_QUIET " \
@@ -3111,6 +3159,22 @@ bindings)
31113159 CONFIG_OPTS+=(" CC=${CC} " )
31123160 CONFIG_OPTS+=(" CXX=${CXX} " )
31133161 CONFIG_OPTS+=(" CPP=${CPP} " )
3162+
3163+ # Do not let autoconf-cached re-runs (re-running the configure script
3164+ # due to a `make` with changed *.m4, *.am or configure.ac sources)
3165+ # complain that CCACHE_* vars were not previously set. This hassle
3166+ # comes with use of AC_ARG_VAR to mark "precious" arguments:
3167+ CONFIG_OPTS+=(" CCACHE_NAMESPACE=${CCACHE_NAMESPACE} " )
3168+ CONFIG_OPTS+=(" CCACHE_BASEDIR=${CCACHE_BASEDIR} " )
3169+ CONFIG_OPTS+=(" CCACHE_DIR=${CCACHE_DIR} " )
3170+ CONFIG_OPTS+=(" CCACHE_PATH=${CCACHE_PATH} " )
3171+ else
3172+ # Still have them declared; the configure script will probably parse
3173+ # them as empty/undefined and re-evaluate if situation warrants that:
3174+ CONFIG_OPTS+=(" CCACHE_NAMESPACE=" )
3175+ CONFIG_OPTS+=(" CCACHE_BASEDIR=" )
3176+ CONFIG_OPTS+=(" CCACHE_DIR=" )
3177+ CONFIG_OPTS+=(" CCACHE_PATH=" )
31143178 fi
31153179
31163180 # If detect_platform_PKG_CONFIG_PATH_and_FLAGS() customized anything here,
0 commit comments