diff --git a/EESSI-install-software.sh b/EESSI-install-software.sh index 470663e45a..d104c5f700 100755 --- a/EESSI-install-software.sh +++ b/EESSI-install-software.sh @@ -203,12 +203,16 @@ ${EESSI_PREFIX}/scripts/gpu_support/nvidia/install_cuda_host_injections.sh -c 12 # ${EESSI_PREFIX}/scripts/gpu_support/nvidia/link_nvidia_host_libraries.sh # use PR patch file to determine in which easystack files stuff was added -changed_easystacks=$(cat ${pr_diff} | grep '^+++' | cut -f2 -d' ' | sed 's@^[a-z]/@@g' | grep '^easystacks/.*yml$' | egrep -v 'known-issues|missing') -if [ -z ${changed_easystacks} ]; then +# Get rebuild easystacks seperately, so they can be rebuild first. +# This avoids missing dependencies when the regular EasyStacks are built. +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/") +changed_easystacks=$(cat ${pr_diff} | grep '^+++' | cut -f2 -d' ' | sed 's@^[a-z]/@@g' | grep '^easystacks/.*yml$' | egrep -v 'known-issues|missing' | grep -v "/rebuilds/") +all_changed_easystacks="${changed_easystacks_rebuilds} ${changed_easystacks}" +if [ -z "${all_changed_easystacks}" ]; then echo "No missing installations, party time!" # Ensure the bot report success, as there was nothing to be build here else - for easystack_file in ${changed_easystacks}; do + for easystack_file in ${all_changed_easystacks}; do echo -e "Processing easystack file ${easystack_file}...\n\n" diff --git a/EESSI-remove-software.sh b/EESSI-remove-software.sh index 446a156cb8..c9ca19992d 100755 --- a/EESSI-remove-software.sh +++ b/EESSI-remove-software.sh @@ -92,7 +92,7 @@ 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 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 + if [ -z "${changed_easystacks_rebuilds}" ]; then echo "No software needs to be removed." else for easystack_file in ${changed_easystacks_rebuilds}; do diff --git a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml index 9b0de81b35..0c260cea5c 100644 --- a/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml +++ b/easystacks/software.eessi.io/2023.06/eessi-2023.06-eb-4.9.0-2023a.yml @@ -54,3 +54,13 @@ easyconfigs: from-pr: 20126 - OpenJPEG-2.5.0-GCCcore-12.3.0.eb - OpenFOAM-10-foss-2023a.eb + - SuperLU_DIST-8.1.2-foss-2023a.eb: + options: + from-pr: 20162 + - PETSc-3.20.3-foss-2023a.eb: + options: + include-easyblocks-from-pr: 3086 + from-pr: 19686 + - MODFLOW-6.4.4-foss-2023a.eb: + options: + from-pr: 20142 diff --git a/easystacks/software.eessi.io/2023.06/rebuilds/20240326-eb-4.9.0-GCCcore-13.2.0-fix-tree-optimization-arm.yml b/easystacks/software.eessi.io/2023.06/rebuilds/20240326-eb-4.9.0-GCCcore-13.2.0-fix-tree-optimization-arm.yml new file mode 100644 index 0000000000..12a7390c55 --- /dev/null +++ b/easystacks/software.eessi.io/2023.06/rebuilds/20240326-eb-4.9.0-GCCcore-13.2.0-fix-tree-optimization-arm.yml @@ -0,0 +1,19 @@ +# 2024-03-26 +# 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 +easyconfigs: + - GCCcore-12.3.0.eb: + options: + from-pr: 20218 + - GCCcore-13.2.0.eb: + options: + from-pr: 19974 + - casacore-3.5.0-foss-2023b.eb: + options: + from-pr: 19840 + include-easyblocks-from-pr: 3088 diff --git a/eb_hooks.py b/eb_hooks.py index d93ee37067..9c6e2e4e61 100644 --- a/eb_hooks.py +++ b/eb_hooks.py @@ -160,32 +160,6 @@ def post_prepare_hook(self, *args, **kwargs): POST_PREPARE_HOOKS[self.name](self, *args, **kwargs) -def parse_hook_casacore_disable_vectorize(ec, eprefix): - """ - Disable 'vectorize' toolchain option for casacore 3.5.0 on aarch64/neoverse_v1 - Compiling casacore 3.5.0 with GCC 13.2.0 (foss-2023b) gives an error when building for aarch64/neoverse_v1. - See also, https://github.com/EESSI/software-layer/pull/479 - """ - if ec.name == 'casacore': - tcname, tcversion = ec['toolchain']['name'], ec['toolchain']['version'] - if ( - LooseVersion(ec.version) == LooseVersion('3.5.0') and - tcname == 'foss' and tcversion == '2023b' - ): - cpu_target = get_eessi_envvar('EESSI_SOFTWARE_SUBDIR') - if cpu_target == CPU_TARGET_NEOVERSE_V1: - if not hasattr(ec, 'toolchainopts'): - ec['toolchainopts'] = {} - ec['toolchainopts']['vectorize'] = False - print_msg("Changed toochainopts for %s: %s", ec.name, ec['toolchainopts']) - else: - print_msg("Not changing option vectorize for %s on non-neoverse_v1", ec.name) - else: - print_msg("Not changing option vectorize for %s %s %s", ec.name, ec.version, ec.toolchain) - else: - raise EasyBuildError("casacore-specific hook triggered for non-casacore easyconfig?!") - - def parse_hook_cgal_toolchainopts_precise(ec, eprefix): """Enable 'precise' rather than 'strict' toolchain option for CGAL on POWER.""" if ec.name == 'CGAL': @@ -605,7 +579,6 @@ def inject_gpu_property(ec): PARSE_HOOKS = { - 'casacore': parse_hook_casacore_disable_vectorize, 'CGAL': parse_hook_cgal_toolchainopts_precise, 'fontconfig': parse_hook_fontconfig_add_fonts, 'OpenBLAS': parse_hook_openblas_relax_lapack_tests_num_errors,