diff --git a/EESSI-pilot-install-software.sh b/EESSI-pilot-install-software.sh index dc50f7fae2..2bc6876965 100755 --- a/EESSI-pilot-install-software.sh +++ b/EESSI-pilot-install-software.sh @@ -362,6 +362,38 @@ fail_msg="Installation of Nextflow failed, that's unexpected..." $EB -r --from-pr 16531 Nextflow-22.10.1.eb check_exit_code $? "${ok_msg}" "${fail_msg}" + +echo ">> Installing EasyBuild 4.5.1..." +ok_msg="EasyBuild v4.5.1 installed" +fail_msg="EasyBuild v4.5.1 failed to install" +$EB --from-pr 14545 --include-easyblocks-from-pr 2805 +check_exit_code $? "${ok_msg}" "${fail_msg}" + +LMOD_IGNORE_CACHE=1 module swap EasyBuild/4.5.1 +check_exit_code $? "Swapped to EasyBuild/4.5.1" "Couldn't swap to EasyBuild/4.5.1" + +echo ">> Installing SciPy-bundle with foss/2021a..." +ok_msg="SciPy-bundle with foss/2021a installed, welcome to the modern age" +fail_msg="Installation of SciPy-bundle with foss/2021a failed, back to the stone age..." +# use GCCcore easyconfig from https://github.com/easybuilders/easybuild-easyconfigs/pull/14454 +# which includes patch to fix installation with recent Linux kernel headers +$EB --from-pr 14454 GCCcore-10.3.0.eb --robot +# use enhanced Perl easyblock from https://github.com/easybuilders/easybuild-easyblocks/pull/2640 +# to avoid trouble when using long installation prefix (for example with EESSI pilot 2021.12 on skylake_avx512...) +$EB Perl-5.32.1-GCCcore-10.3.0.eb --robot --include-easyblocks-from-pr 2640 +# use enhanced CMake easyblock to patch CMake's UnixPaths.cmake script if --sysroot is set +# from https://github.com/easybuilders/easybuild-easyblocks/pull/2248 +$EB CMake-3.20.1-GCCcore-10.3.0.eb --robot --include-easyblocks-from-pr 2248 +# use Rust easyconfig from https://github.com/easybuilders/easybuild-easyconfigs/pull/14584 +# that includes patch to fix bootstrap problem when using alternate sysroot +$EB --from-pr 14584 Rust-1.52.1-GCCcore-10.3.0.eb --robot +# use OpenBLAS easyconfig from https://github.com/easybuilders/easybuild-easyconfigs/pull/15885 +# which includes a patch to fix installation on POWER +$EB --from-pr 15885 OpenBLAS-0.3.15-GCC-10.3.0.eb --robot + +$EB SciPy-bundle-2021.05-foss-2021a.eb -r --buildpath /dev/shm/$USER/easybuild_build +check_exit_code $? "${ok_msg}" "${fail_msg}" + ### add packages here echo ">> Creating/updating Lmod cache..." diff --git a/eb_hooks.py b/eb_hooks.py index 1877e27b44..df7742f999 100644 --- a/eb_hooks.py +++ b/eb_hooks.py @@ -5,7 +5,8 @@ from easybuild.tools.build_log import EasyBuildError, print_msg from easybuild.tools.config import build_option, update_build_option -from easybuild.tools.systemtools import AARCH64, POWER, get_cpu_architecture +from easybuild.tools.systemtools import AARCH64, POWER, X86_64, get_cpu_architecture, get_cpu_features +from easybuild.tools.toolchain.compiler import OPTARCH_GENERIC EESSI_RPATH_OVERRIDE_ATTR = 'orig_rpath_override_dirs' @@ -53,6 +54,13 @@ def parse_hook(ec, *args, **kwargs): PARSE_HOOKS[ec.name](ec, eprefix) +def pre_configure_hook(self, *args, **kwargs): + """Main pre-configure hook: trigger custom functions based on software name.""" + + if self.name in PRE_CONFIGURE_HOOKS: + PRE_CONFIGURE_HOOKS[self.name](self, *args, **kwargs) + + def pre_prepare_hook(self, *args, **kwargs): """Main pre-prepare hook: trigger custom functions.""" @@ -120,7 +128,7 @@ def ucx_eprefix(ec, eprefix): if ec.name == 'UCX': ec.update('configopts', '--with-sysroot=%s' % eprefix) ec.update('configopts', '--with-rdmacm=%s' % os.path.join(eprefix, 'usr')) - print_msg("Using custom configure option for %s: %s", ec.name, ec['configopts']) + print_msg("Using custom configure options for %s: %s", ec.name, ec['configopts']) else: raise EasyBuildError("UCX-specific hook triggered for non-UCX easyconfig?!") @@ -131,6 +139,19 @@ def pre_configure_hook(self, *args, **kwargs): PRE_CONFIGURE_HOOKS[self.name](self, *args, **kwargs) +def libfabric_disable_psm3_x86_64_generic(self, *args, **kwargs): + """Add --disable-psm3 to libfabric configure options when building with --optarch=GENERIC on x86_64.""" + if self.name == 'libfabric': + if get_cpu_architecture() == X86_64: + generic = build_option('optarch') == OPTARCH_GENERIC + no_avx = 'avx' not in get_cpu_features() + if generic or no_avx: + self.cfg.update('configopts', '--disable-psm3') + print_msg("Using custom configure options for %s: %s", self.name, self.cfg['configopts']) + else: + raise EasyBuildError("libfabric-specific hook triggered for non-libfabric easyconfig?!") + + def metabat_preconfigure(self, *args, **kwargs): """ Pre-configure hook for MetaBAT: @@ -167,6 +188,7 @@ def wrf_preconfigure(self, *args, **kwargs): } PRE_CONFIGURE_HOOKS = { + 'libfabric': libfabric_disable_psm3_x86_64_generic, 'MetaBAT': metabat_preconfigure, 'WRF': wrf_preconfigure, } diff --git a/eessi-2021.12.yml b/eessi-2021.12.yml index 58101777ca..977c0f9804 100644 --- a/eessi-2021.12.yml +++ b/eessi-2021.12.yml @@ -1,10 +1,8 @@ software: - R-bundle-Bioconductor: + code-server: toolchains: - foss-2020a: - versions: - '3.11': - versionsuffix: -R-4.0.0 + SYSTEM: + versions: '3.7.3' GROMACS: toolchains: foss-2020a: @@ -19,6 +17,10 @@ software: versions: '0.21.3': versionsuffix: -TensorFlow-2.3.1-Python-3.8.2 + Nextflow: + toolchains: + SYSTEM: + versions: '22.10.1' OpenFOAM: toolchains: foss-2020a: @@ -31,29 +33,31 @@ software: toolchains: foss-2020a: versions: ['6.6'] - TensorFlow: + R-bundle-Bioconductor: toolchains: foss-2020a: versions: - '2.3.1': - versionsuffix: -Python-3.8.2 + '3.11': + versionsuffix: -R-4.0.0 RStudio-Server: toolchains: foss-2020a: versions: '1.3.1093': versionsuffix: -Java-11-R-4.0.0 - code-server: + SciPy-bundle: toolchains: - SYSTEM: - versions: '3.7.3' + foss-2021a: + versions: ['2021.05'] + TensorFlow: + toolchains: + foss-2020a: + versions: + '2.3.1': + versionsuffix: -Python-3.8.2 WRF: toolchains: foss-2020a: versions: '3.9.1.1': versionsuffix: -dmpar - Nextflow: - toolchains: - SYSTEM: - versions: '22.10.1'