Whamcloud - gitweb
LU-14937 build: re-use config cache in 'make rpms/debs' 59/44659/7
authorSebastien Buisson <sbuisson@ddn.com>
Fri, 13 Aug 2021 15:16:08 +0000 (17:16 +0200)
committerOleg Drokin <green@whamcloud.com>
Wed, 27 Oct 2021 00:37:11 +0000 (00:37 +0000)
Idea is to pass along the value of the -C or --cache-file options from
the initial ./configure to the one launched as part of the rpm or deb
build.
But all the environment variables related cache info must be removed
otherwise the config cache file cannot be reused.

Test-Parameters: trivial
Signed-off-by: Sebastien Buisson <sbuisson@ddn.com>
Change-Id: Iab4ae2815961ba10132d9cb44f82ca58d313e908
Reviewed-on: https://review.whamcloud.com/44659
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Reviewed-by: Patrick Farrell <pfarrell@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
autoMakefile.am
config/lustre-build.m4
debian/rules
lustre.spec.in

index c133f3b..367e957 100644 (file)
@@ -208,6 +208,9 @@ dkms-rpms: dkms-rpm
 
 rpms: srpm
        rpmbuilddir=`mktemp -t -d rpmbuild-@PACKAGE@-$$USER-XXXXXXXX`; \
+       if test "x@CONFIG_CACHE_FILE@" != "x"; then \
+               export CONFIG_CACHE_FILE="@CONFIG_CACHE_FILE@"; \
+       fi; \
        $(MAKE) $(AM_MAKEFLAGS) \
                rpmbuilddir="$$rpmbuilddir" rpm-local || exit 1; \
        $(RPMBUILD) \
@@ -261,6 +264,9 @@ debs: undef.h
                export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} o2ib"; \
                export O2IB_SRC="@O2IBPATH@"; \
        fi; \
+       if test "x@CONFIG_CACHE_FILE@" != "x"; then \
+               export CONFIG_CACHE_FILE="@CONFIG_CACHE_FILE@"; \
+       fi; \
        if test "x@ENABLE_GSS@" = "xyes"; then \
                export DEB_BUILD_PROFILES="$${DEB_BUILD_PROFILES} gss"; \
                debiantmp=$$(mktemp -t -d debbuild-$$USER-XXXXXXXX) ; \
index 01fba20..a643fc0 100644 (file)
@@ -628,6 +628,19 @@ AC_SUBST(RPMBUILD_BINARY_ARGS)
 ]) # LB_CONFIG_RPMBUILD_OPTIONS
 
 #
+# LB_CONFIG_CACHE_OPTIONS
+#
+# Propagate config cache option
+#
+AC_DEFUN([LB_CONFIG_CACHE_OPTIONS], [
+CONFIG_CACHE_FILE=
+if test -f "$cache_file"; then
+       CONFIG_CACHE_FILE=$(readlink --canonicalize "$cache_file")
+fi
+AC_SUBST(CONFIG_CACHE_FILE)
+]) # LB_CONFIG_CACHE_OPTIONS
+
+#
 # LB_CONFIGURE
 #
 # main configure steps
@@ -706,6 +719,7 @@ MOSTLYCLEANFILES='.*.cmd .*.flags *.o *.ko *.mod.c .depend .*.1.* Modules.symver
 AC_SUBST(MOSTLYCLEANFILES)
 
 LB_CONFIG_RPMBUILD_OPTIONS
+LB_CONFIG_CACHE_OPTIONS
 
 AC_OUTPUT
 
index 262ea47..447ff78 100755 (executable)
@@ -199,6 +199,13 @@ configure-stamp: autogen-stamp debian/control.main debian/control.modules.in
        elif echo "$${DEB_BUILD_PROFILES}" | grep -qw "nocrypto"; then \
                export EXTRAFLAGS="$${EXTRAFLAGS} --disable-crypto"; \
        fi; \
+       # remove env variables from config cache built by initial configure,
+       # and create dedicated cache in temporary build directory
+       if [ -f "$${CONFIG_CACHE_FILE}" ]; then \
+               export TMP_CACHE_FILE=$$(mktemp); \
+               sed "/ac_cv_env/d" "$${CONFIG_CACHE_FILE}" > $${TMP_CACHE_FILE}; \
+               export EXTRAFLAGS="$${EXTRAFLAGS} --cache-file=$${TMP_CACHE_FILE}"; \
+       fi; \
        echo "Final value of EXTRAFLAGS: $${EXTRAFLAGS}"; \
        ( cd $(BUILDDIR) && \
                $(SRCDIR)/configure --disable-dependency-tracking \
@@ -486,6 +493,13 @@ kdist_config: prep-deb-files patch-stamp
        elif echo "$${DEB_BUILD_PROFILES}" | grep -qw "nocrypto"; then \
                export EXTRAFLAGS="$${EXTRAFLAGS} --disable-crypto"; \
        fi; \
+       # remove env variables from config cache built by initial configure,
+       # and create dedicated cache in temporary build directory
+       if [ -f "$${CONFIG_CACHE_FILE}" ]; then \
+               export TMP_CACHE_FILE=$$(mktemp --tmpdir newconfig-XXXXXXXX.cache); \
+               sed "/ac_cv_env/d" "$${CONFIG_CACHE_FILE}" > $${TMP_CACHE_FILE}; \
+               export EXTRAFLAGS="$${EXTRAFLAGS} --cache-file=$${TMP_CACHE_FILE}"; \
+       fi; \
        echo "Final value of EXTRAFLAGS: $${EXTRAFLAGS}"; \
        ./configure --with-linux=$(KSRC_TREE) \
                --with-linux-obj=$(KSRC) \
index 6a8ceb7..cced3d5 100644 (file)
@@ -453,6 +453,13 @@ if [ -n "$CONFIGURE_ARGS" ]; then
        # remove --with-kmp-moddir from configure arguments,
        # it will be set --with-kmp-moddir=%%kmoddir
        CONFIGURE_ARGS=$(echo $CONFIGURE_ARGS | sed -e 's/"\?--with-kmp-moddir=[^ ][^ ]* \?//')
+       # remove env variables from config cache built by initial configure,
+       # and create dedicated cache in temporary build directory
+       if [ -f "$CONFIG_CACHE_FILE" ]; then
+               TMP_CONFIG_CACHE="$(mktemp --tmpdir newconfig-XXXXXXXX.cache)"
+               sed "/ac_cv_env/d" "$CONFIG_CACHE_FILE" > $TMP_CONFIG_CACHE
+               CONFIGURE_ARGS="$CONFIGURE_ARGS --cache-file=$TMP_CONFIG_CACHE"
+       fi
 fi
 
 # we need to eval "configure" because $CONFIGURE_ARGS could have a quoted