diff --git a/EESSI-install-software.sh b/EESSI-install-software.sh index 2f05953158..3a9ba175c9 100755 --- a/EESSI-install-software.sh +++ b/EESSI-install-software.sh @@ -336,7 +336,15 @@ else if [ -f ${easystack_file} ]; then echo_green "Feeding easystack file ${easystack_file} to EasyBuild..." - ${EB} --easystack ${easystack_file} --robot + if [[ ${easystack_file} == *"/rebuilds/"* ]]; then + # the removal script should have removed the original directory and created a new and empty one + # to work around permission issues: + # https://github.com/EESSI/software-layer/issues/556 + echo_yellow "This is a rebuild, so using --try-amend=keeppreviousinstall=True to reuse the already created directory" + ${EB} --easystack ${easystack_file} --robot --try-amend=keeppreviousinstall=True + else + ${EB} --easystack ${easystack_file} --robot + fi ec=$? # copy EasyBuild log file if EasyBuild exited with an error diff --git a/EESSI-remove-software.sh b/EESSI-remove-software.sh index 1a03a7af98..e4b377fd16 100755 --- a/EESSI-remove-software.sh +++ b/EESSI-remove-software.sh @@ -125,13 +125,18 @@ if [ $EUID -eq 0 ]; then # Two dirname invocations, so returns e.g. /cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen2 app_installprefix=$(dirname $(dirname ${app_modulepath})) app_dir=${app_installprefix}/software/${app} + app_subdirs=$(find ${app_dir} -mindepth 1 -maxdepth 1 -type d) app_module=${app_installprefix}/modules/all/${app}.lua echo_yellow "Removing ${app_dir} and ${app_module}..." rm -rf ${app_dir} rm -rf ${app_module} - # recreate some directory to work around permission denied - # issues when rebuilding the package - mkdir -p ${app_dir}/easybuild + # recreate the installation directories and first-level subdirectories to work around permission denied + # issues when rebuilding the package (see https://github.com/EESSI/software-layer/issues/556) + echo_yellow "Recreating an empty ${app_dir}..." + mkdir -p ${app_dir} + for app_subdir in ${app_subdirs}; do + mkdir -p ${app_subdir} + done done else fatal_error "Easystack file ${easystack_file} not found!" diff --git a/easystacks/software.eessi.io/2023.06/rebuilds/20250121-eb-4.9.4-SciPy-bundle-2023.07-bug-fixes.yml b/easystacks/software.eessi.io/2023.06/rebuilds/20250121-eb-4.9.4-SciPy-bundle-2023.07-bug-fixes.yml new file mode 100644 index 0000000000..f7db7a994c --- /dev/null +++ b/easystacks/software.eessi.io/2023.06/rebuilds/20250121-eb-4.9.4-SciPy-bundle-2023.07-bug-fixes.yml @@ -0,0 +1,14 @@ +# 2025.01.21 +# While adding support for Intel Sapphire Rapids, additional patches applied to the +# original easyconfig were required to successfully build SciPy-bundle 2023.07. +# In order to keep the stack consistent across the different CPUs, +# a rebuild is done for all CPU targets with this updated easyconfig. +# See: +# - https://github.com/easybuilders/easybuild-easyconfigs/pull/19419 +# - https://github.com/easybuilders/easybuild-easyconfigs/pull/20817 +# - https://github.com/easybuilders/easybuild-easyconfigs/pull/21693 +easyconfigs: + - SciPy-bundle-2023.07-gfbf-2023a.eb: + options: + # see https://github.com/easybuilders/easybuild-easyconfigs/pull/21693 + from-commit: 7c5144d2c1a061cd9f08b5901970b7f6ec5eb5c0