From a5084c2f2ec851fe888838fb1e90aff8b5ed6fd2 Mon Sep 17 00:00:00 2001 From: Sebastien Buisson Date: Fri, 13 Aug 2021 17:16:08 +0200 Subject: [PATCH] LU-14937 build: re-use config cache in 'make rpms/debs' 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 Change-Id: Iab4ae2815961ba10132d9cb44f82ca58d313e908 Reviewed-on: https://review.whamcloud.com/44659 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Shaun Tancheff Reviewed-by: Patrick Farrell Reviewed-by: Oleg Drokin --- autoMakefile.am | 6 ++++++ config/lustre-build.m4 | 14 ++++++++++++++ debian/rules | 14 ++++++++++++++ lustre.spec.in | 7 +++++++ 4 files changed, 41 insertions(+) diff --git a/autoMakefile.am b/autoMakefile.am index c133f3b..367e957 100644 --- a/autoMakefile.am +++ b/autoMakefile.am @@ -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) ; \ diff --git a/config/lustre-build.m4 b/config/lustre-build.m4 index 01fba20..a643fc0 100644 --- a/config/lustre-build.m4 +++ b/config/lustre-build.m4 @@ -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 diff --git a/debian/rules b/debian/rules index 262ea47..447ff78 100755 --- a/debian/rules +++ b/debian/rules @@ -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) \ diff --git a/lustre.spec.in b/lustre.spec.in index 6a8ceb7..cced3d5 100644 --- a/lustre.spec.in +++ b/lustre.spec.in @@ -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 -- 1.8.3.1