From 73834dcb1d93b8d5be2cd0ce62ddcc1d311747b7 Mon Sep 17 00:00:00 2001 From: Dan Bonachea Date: Mon, 30 Mar 2026 14:23:14 -0700 Subject: [PATCH 1/5] install.sh: Factor variables in run-fpm.sh There should be no behavioral differences in this commit, just introducing some variables to explicitly record the install settings. --- install.sh | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/install.sh b/install.sh index fd525f85..31b71ac5 100755 --- a/install.sh +++ b/install.sh @@ -568,13 +568,18 @@ RUN_FPM_SH="run-fpm.sh" cat << EOF > $RUN_FPM_SH #!/bin/sh #-- DO NOT EDIT -- created by caffeine/install.sh -fpm="${FPM}" +FPM="${FPM}" +FC="`$PKG_CONFIG caffeine --variable=CAFFEINE_FPM_FC`" +CC="`$PKG_CONFIG caffeine --variable=CAFFEINE_FPM_CC`" +FFLAGS="$compiler_flag" +CFLAGS="`$PKG_CONFIG caffeine --variable=CAFFEINE_FPM_CFLAGS`" +LDFLAGS="`$PKG_CONFIG caffeine --variable=CAFFEINE_FPM_LDFLAGS`" FPM_DRIVER=\${FPM_DRIVER:-\`realpath \$0\`} export FPM_DRIVER fpm_sub_cmd=\$1; shift if echo "--help -help --version -version --list -list new update list clean publish" | grep -w -q -e "\$fpm_sub_cmd" ; then set -x - exec \$fpm "\$fpm_sub_cmd" "\$@" + exec "\$FPM" "\$fpm_sub_cmd" "\$@" elif echo "build test run install" | grep -w -q -e "\$fpm_sub_cmd" ; then sed -i.bak 's/^link = .*\$/$FPM_TOML_LINK_ENTRY/' $FPM_TOML rm -f $FPM_TOML.bak # issue 282: this is the only portable way to use sed -i @@ -582,17 +587,17 @@ elif echo "build test run install" | grep -w -q -e "\$fpm_sub_cmd" ; then set -- "--runner=$GASNET_RUNNER_ARG" "\$@" fi set -x - exec \$fpm "\$fpm_sub_cmd" \\ + exec "\$FPM" "\$fpm_sub_cmd" \\ --profile debug \\ - --flag "$compiler_flag" \\ - --compiler "`$PKG_CONFIG caffeine --variable=CAFFEINE_FPM_FC`" \\ - --c-compiler "`$PKG_CONFIG caffeine --variable=CAFFEINE_FPM_CC`" \\ - --c-flag "`$PKG_CONFIG caffeine --variable=CAFFEINE_FPM_CFLAGS`" \\ - --link-flag "`$PKG_CONFIG caffeine --variable=CAFFEINE_FPM_LDFLAGS`" \\ + --compiler "\$FC" \\ + --flag "\$FFLAGS" \\ + --c-compiler "\$CC" \\ + --c-flag "\$CFLAGS" \\ + --link-flag "\$LDFLAGS" \\ "\$@" else echo "ERROR: Unrecognized fpm subcommand \$fpm_sub_cmd" - \$fpm list + \$FPM list exit 1 fi EOF From a266aa4c0b3f0f356d7688eaae28fddafc225237 Mon Sep 17 00:00:00 2001 From: Dan Bonachea Date: Mon, 30 Mar 2026 15:00:34 -0700 Subject: [PATCH 2/5] run-fpm.sh: Add new `info` command Dumps all sorts of useful configuration information, to assist in triage. --- install.sh | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/install.sh b/install.sh index 31b71ac5..243c23af 100755 --- a/install.sh +++ b/install.sh @@ -595,6 +595,57 @@ elif echo "build test run install" | grep -w -q -e "\$fpm_sub_cmd" ; then --c-flag "\$CFLAGS" \\ --link-flag "\$LDFLAGS" \\ "\$@" +elif echo "info" | grep -w -q -e "\$fpm_sub_cmd" ; then + LINE=-------------------------------------------------- + SRCDIR=\$(dirname \$FPM_DRIVER) + GASNETDIR="$GASNET_PREFIX" + GASNETCONFIG="\$GASNETDIR/include/gasnet_config.h" + echo \$LINE + echo Version info: + echo Caffeine \$(grep version \$SRCDIR/fpm.toml) + if test -d \$SRCDIR/.git ; then + GITVER=\$( ( cd \$SRCDIR && git describe --long --dirty --always ) 2> /dev/null) + if test -n "\$GITVER"; then + echo " git describe: \$GITVER" + fi + fi + if test -r "\$GASNETCONFIG"; then + echo GASNet version \$(grep GASNETI_RELEASE_VERSION \$GASNETCONFIG | cut -d' ' -f3-) + fi + grep -e assert -e julienne \$SRCDIR/fpm.toml + echo \$LINE + echo Platform info: + uname -a + if test -r /etc/os-release ; then grep -e NAME -e VERSION /etc/os-release ; fi + if test -x /usr/bin/sw_vers ; then /usr/bin/sw_vers ; fi + echo \$LINE + echo Install settings: + echo ID="\$(date) \$(whoami)" + echo PREFIX=$PREFIX + echo FPM=\$FPM + echo FC=\$FC + echo CC=\$CC + echo FFLAGS=\$FFLAGS + echo CFLAGS=\$FFLAGS + echo LDFLAGS=\$LDFLAGS + grep -e link \$SRCDIR/fpm.toml + echo GASNET=\$GASNETDIR + echo GASNET_CONDUIT=$GASNET_CONDUIT + echo GASNET_THREADMODE=$GASNET_THREADMODE + if test -r "\$GASNETCONFIG"; then + grep -e GASNETI_BUILD_ID -e GASNETI_CONFIGURE_ARGS \$GASNETCONFIG | cut -d' ' -f2- + fi + for tool in FPM FC CC ; do + echo \$LINE + eval toolval="\\$\$tool" + echo \$tool : \$toolval + # strip off any arguments that might be embedded: + toolval=\$(echo \$toolval | cut -d' ' -f1) + eval /bin/ls -al \$toolval + eval /bin/ls -alhL \$toolval + \$toolval --version + done + echo \$LINE else echo "ERROR: Unrecognized fpm subcommand \$fpm_sub_cmd" \$FPM list From 2c86951fc069da6e4c195edcb58c3b88fa2b3e85 Mon Sep 17 00:00:00 2001 From: Dan Bonachea Date: Mon, 30 Mar 2026 18:05:55 -0700 Subject: [PATCH 3/5] install.sh: Install a copy of the info output to $PREFIX/share/caffeine --- install.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/install.sh b/install.sh index 243c23af..04532b6f 100755 --- a/install.sh +++ b/install.sh @@ -671,6 +671,9 @@ else ln -sf "$LIBCAFFEINE_DST" "$PREFIX/lib/libcaffeine.a" fi +mkdir -p "$PREFIX/share/caffeine" +./$RUN_FPM_SH info > "$PREFIX/share/caffeine/caffeine-info-$GASNET_CONDUIT-$GASNET_THREADMODE.txt" + cat << EOF ________________ Caffeine has been dispensed! ________________ From cdccb998980039e4226337a3b6b038c8fb6c7a5f Mon Sep 17 00:00:00 2001 From: Dan Bonachea Date: Mon, 30 Mar 2026 18:24:05 -0700 Subject: [PATCH 4/5] install.sh: Output info upon build failure --- install.sh | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 04532b6f..3f4a1c28 100755 --- a/install.sh +++ b/install.sh @@ -656,7 +656,16 @@ chmod u+x $RUN_FPM_SH # for backwards-compatibility of instructions/scripting: ( cd build && ln -f -s ../$RUN_FPM_SH run-fpm.sh ) -./$RUN_FPM_SH build $VERBOSE +./$RUN_FPM_SH build $VERBOSE || \ +( set +x + echo "Defect reporting information:" + ./$RUN_FPM_SH info + echo + echo Oh no, the Caffeine build appears to have failed! + echo Please paste the ENTIRE output above into a new issue here: + echo " https://github.com/berkeleylab/caffeine/issues" + exit 1 +) LIBCAFFEINE_DST=libcaffeine-$GASNET_CONDUIT-$GASNET_THREADMODE.a LIBCAFFEINE_SRC=$(./$RUN_FPM_SH install --list 2>/dev/null | grep libcaffeine | cut -d' ' -f2) From c03656472e68dbdb245e6475c9836d26587aa35b Mon Sep 17 00:00:00 2001 From: Dan Bonachea Date: Mon, 30 Mar 2026 18:29:18 -0700 Subject: [PATCH 5/5] CI: Add a build step to output run-fpm info --- .github/workflows/build.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bac62c3d..86a91c7d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -320,7 +320,7 @@ jobs: ########################################################################## # Caffeine Install - - name: Version info + - name: Version info (pre-build) run: | echo == TOOL VERSIONS == echo Platform version info: @@ -345,6 +345,10 @@ jobs: ########################################################################## # Caffeine Testing + - name: Version info (run-fpm) + run: | + ./run-fpm.sh info + - name: Run examples run: | echo CAF_IMAGES=${CAF_IMAGES}