From 6f9d7ad478e6d3fde49911012fac65869538cfc2 Mon Sep 17 00:00:00 2001 From: Thomas Roeblitz Date: Fri, 12 Apr 2024 11:56:39 +0200 Subject: [PATCH 1/2] ignore fakeroot and do not remove packages --- EESSI-remove-software.sh | 21 +++++++++++++++------ bot/build.sh | 4 +++- eessi_container.sh | 5 ++++- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/EESSI-remove-software.sh b/EESSI-remove-software.sh index 446a156cb8..4465c3546b 100755 --- a/EESSI-remove-software.sh +++ b/EESSI-remove-software.sh @@ -90,7 +90,10 @@ fi pr_diff=$(ls [0-9]*.diff | head -1) # if this script is run as root, use PR patch file to determine if software needs to be removed first -if [ $EUID -eq 0 ]; then +# if [ $EUID -eq 0 ]; then +# working around lacking support for `--fakeroot` and/or user namespaces +# we only run as non-root +if [ $EUID -ne 0 ]; then changed_easystacks_rebuilds=$(cat ${pr_diff} | grep '^+++' | cut -f2 -d' ' | sed 's@^[a-z]/@@g' | grep '^easystacks/.*yml$' | egrep -v 'known-issues|missing' | grep "/rebuilds/") if [ -z ${changed_easystacks_rebuilds} ]; then echo "No software needs to be removed." @@ -107,13 +110,16 @@ if [ $EUID -eq 0 ]; then # we need to remove existing installation directories first, # so let's figure out which modules have to be rebuilt by doing a dry-run and grepping "someapp/someversion" for the relevant lines (with [R]) # * [R] $CFGS/s/someapp/someapp-someversion.eb (module: someapp/someversion) - rebuild_apps=$(eb --allow-use-as-root-and-accept-consequences --dry-run-short --rebuild --easystack ${easystack_file} | grep "^ \* \[R\]" | grep -o "module: .*[^)]" | awk '{print $2}') + # rebuild_apps=$(eb --allow-use-as-root-and-accept-consequences --dry-run-short --rebuild --easystack ${easystack_file} | grep "^ \* \[R\]" | grep -o "module: .*[^)]" | awk '{print $2}') + # we cannot run as root so we removed `--allow-use-as-root...` + rebuild_apps=$(eb --dry-run-short --rebuild --easystack ${easystack_file} | grep "^ \* \[R\]" | grep -o "module: .*[^)]" | awk '{print $2}') for app in ${rebuild_apps}; do app_dir=${EASYBUILD_INSTALLPATH}/software/${app} app_module=${EASYBUILD_INSTALLPATH}/modules/all/${app}.lua - echo_yellow "Removing ${app_dir} and ${app_module}..." - rm -rf ${app_dir} - rm -rf ${app_module} + echo_yellow "Removing ${app_dir} and ${app_module}... (just reporting what would have been done)" + # echo_yellow "Removing ${app_dir} and ${app_module}..." + # rm -rf ${app_dir} + # rm -rf ${app_module} done else fatal_error "Easystack file ${easystack_file} not found!" @@ -121,5 +127,8 @@ if [ $EUID -eq 0 ]; then done fi else - fatal_error "This script can only be run by root!" + fatal_error "This script can NOT be run by root! (lacking support for `--fakeroot` and/or user namespaces)" fi +# else +# fatal_error "This script can only be run by root!" +# fi diff --git a/bot/build.sh b/bot/build.sh index 12c849205d..10befe50bd 100755 --- a/bot/build.sh +++ b/bot/build.sh @@ -198,7 +198,9 @@ else REMOVAL_STEP_ARGS+=("--storage" "${STORAGE}") # add fakeroot option in order to be able to remove software, see: # https://github.com/EESSI/software-layer/issues/312 - REMOVAL_STEP_ARGS+=("--fakeroot") + # CURRENTLY NOT SUPPORTED; software packages need to be removed from + # CernVM-FS repository first + # REMOVAL_STEP_ARGS+=("--fakeroot") # create tmp file for output of removal step removal_outerr=$(mktemp remove.outerr.XXXX) diff --git a/eessi_container.sh b/eessi_container.sh index 5b41f4832a..f98c4d46d8 100755 --- a/eessi_container.sh +++ b/eessi_container.sh @@ -74,6 +74,7 @@ display_help() { echo " -c | --container IMG - image file or URL defining the container to use" echo " [default: docker://ghcr.io/eessi/build-node:debian11]" echo " -f | --fakeroot - run the container with --fakeroot [default: false]" + echo " Note, currently this option is ignored." echo " -g | --storage DIR - directory space on host machine (used for" echo " temporary data) [default: 1. TMPDIR, 2. /tmp]" echo " -h | --help - display this usage information [default: false]" @@ -143,7 +144,9 @@ while [[ $# -gt 0 ]]; do # shift 1 # ;; -f|--fakeroot) - FAKEROOT=1 + # Currently this argument is being ignored + echo "NOTE, '-f' and '--fakeroot' are currently being ignored." + # FAKEROOT=1 shift 1 ;; -g|--storage) From 9dd7a4ec0398794fe3dc93544a5d6f409d47a7ce Mon Sep 17 00:00:00 2001 From: Thomas Roeblitz Date: Fri, 12 Apr 2024 12:37:44 +0200 Subject: [PATCH 2/2] add easystack file for rebuilding GCCcore 12.3.0/13.2.0 --- ...12-eb-4.9.1-GCCcore-fix-aarch64-vectorization.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 easystacks/pilot.nessi.no/2023.06/rebuilds/20240412-eb-4.9.1-GCCcore-fix-aarch64-vectorization.yml diff --git a/easystacks/pilot.nessi.no/2023.06/rebuilds/20240412-eb-4.9.1-GCCcore-fix-aarch64-vectorization.yml b/easystacks/pilot.nessi.no/2023.06/rebuilds/20240412-eb-4.9.1-GCCcore-fix-aarch64-vectorization.yml new file mode 100644 index 0000000000..c70aedf75a --- /dev/null +++ b/easystacks/pilot.nessi.no/2023.06/rebuilds/20240412-eb-4.9.1-GCCcore-fix-aarch64-vectorization.yml @@ -0,0 +1,12 @@ +# 2024-04-12 +# Rebuild GCCcore to fix a compiler bug in the tree-vectorizer +# We encountered it in https://github.com/EESSI/software-layer/pull/479#issuecomment-1957091774 +# and https://github.com/EESSI/software-layer/pull/507#issuecomment-2011724613 +# Upstream issue: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111478 +# Upstream fix: https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=e5f1956498251a4973d52c8aad3faf34d0443169 +# Fix in EasyBuild https://github.com/easybuilders/easybuild-easyconfigs/pull/19974 +# https://github.com/easybuilders/easybuild-easyconfigs/pull/20218 +# Both should be included with EB 4.9.1 +easyconfigs: + - GCCcore-12.3.0.eb: + - GCCcore-13.2.0.eb: