diff --git a/.github/workflows/test_eessi.yml b/.github/workflows/test_eessi.yml
index abade73d27..6dfd78e428 100644
--- a/.github/workflows/test_eessi.yml
+++ b/.github/workflows/test_eessi.yml
@@ -20,18 +20,6 @@ jobs:
- x86_64/intel/haswell
- x86_64/intel/skylake_avx512
- x86_64/generic
- EASYSTACK_FILE:
- - eessi-2023.06-eb-4.7.2-2021a.yml
- - eessi-2023.06-eb-4.7.2-2021b.yml
- - eessi-2023.06-eb-4.7.2-2022a.yml
- - eessi-2023.06-eb-4.7.2-2022b.yml
- - eessi-2023.06-eb-4.7.2-system.yml
- - eessi-2023.06-eb-4.8.0-2021a.yml
- - eessi-2023.06-eb-4.8.0-system.yml
- - eessi-2023.06-eb-4.8.0-2021b.yml
- - eessi-2023.06-eb-4.8.1-system.yml
- - eessi-2023.06-eb-4.8.1-2021b.yml
- - eessi-2023.06-eb-4.8.1-2022a.yml
steps:
- name: Check out software-layer repository
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # v3.1.0
@@ -53,7 +41,12 @@ jobs:
export EESSI_SOFTWARE_SUBDIR=${{matrix.EESSI_SOFTWARE_SUBDIR}}
env | grep ^EESSI | sort
echo "just run check_missing_installations.sh (should use eessi-${{matrix.EESSI_VERSION}}.yml)"
- ./check_missing_installations.sh ${{matrix.EASYSTACK_FILE}}
+ for easystack_file in $(ls eessi-${{matrix.EESSI_VERSION}}-eb-*.yml); do
+ echo "check missing installations for ${easystack_file}..."
+ ./check_missing_installations.sh ${easystack_file}
+ ec=$?
+ if [[ ${ec} -ne 0 ]]; then echo "missing installations found for ${easystack_file}!" >&2; exit ${ec}; fi
+ done
- name: Test check_missing_installations.sh with missing package (GCC/8.3.0)
run: |
@@ -64,15 +57,18 @@ jobs:
export EESSI_OS_TYPE=linux
export EESSI_SOFTWARE_SUBDIR=${{matrix.EESSI_SOFTWARE_SUBDIR}}
env | grep ^EESSI | sort
- echo "modify easystack file by adding a missing package (GCC/8.3.0)"
- echo " - GCC-8.3.0:" >> ${{matrix.EASYSTACK_FILE}}
- tail -n 5 ${{matrix.EASYSTACK_FILE}}
+ # create dummy easystack file with a single entry (something that is not installed in EESSI)
+ easystack_file="test.yml"
+ echo "easyconfigs:" > ${easystack_file}
+ echo " - GCC-8.3.0:" >> ${easystack_file}
+ echo "created easystack file '${easystack_file}' with a missing installation (GCC/8.3.0):"
+ cat ${easystack_file}
# note, check_missing_installations.sh exits 1 if a package was
# missing, which is intepreted as false (exit code based, not
# boolean logic), hence when the script exits 0 if no package was
# missing it is interpreted as true, thus the test did not capture
# the missing package
- if ./check_missing_installations.sh ${{matrix.EASYSTACK_FILE}}; then
+ if ./check_missing_installations.sh ${easystack_file}; then
echo "did NOT capture missing package; test FAILED"
exit 1
else
diff --git a/EESSI-pilot-install-software.sh b/EESSI-pilot-install-software.sh
index ed5319a6db..c6c51e7abc 100755
--- a/EESSI-pilot-install-software.sh
+++ b/EESSI-pilot-install-software.sh
@@ -41,7 +41,7 @@ function copy_build_log() {
echo "- working directory: ${PWD}" >> ${build_log_path}
echo "- Slurm job ID: ${SLURM_OUT}" >> ${build_log_path}
echo "- EasyBuild version: ${eb_version}" >> ${build_log_path}
- echo "- easystack file: ${es}" >> ${build_log_path}
+ echo "- easystack file: ${easystack_file}" >> ${build_log_path}
echo "EasyBuild log file ${build_log} copied to ${build_log_path} (with context appended)"
fi
@@ -186,36 +186,42 @@ else
echo_green ">> MODULEPATH set up: ${MODULEPATH}"
fi
-for eb_version in '4.7.2' '4.8.0' '4.8.1'; do
+# assume there's only one diff file that corresponds to the PR patch file
+pr_diff=$(ls [0-9]*.diff | head -1)
+
+# use PR patch file to determine in which easystack files stuff was added
+for easystack_file in $(cat ${pr_diff} | grep '^+++' | cut -f2 -d' ' | sed 's@^[a-z]/@@g' | grep '^eessi.*yml$'); do
+
+ echo -e "Processing easystack file ${easystack_file}...\n\n"
+
+ # determine version of EasyBuild module to load based on EasyBuild version included in name of easystack file
+ eb_version=$(echo ${easystack_file} | sed 's/.*eb-\([0-9.]*\).*/\1/g')
# load EasyBuild module (will be installed if it's not available yet)
source ${TOPDIR}/load_easybuild_module.sh ${eb_version}
echo_green "All set, let's start installing some software with EasyBuild v${eb_version} in ${EASYBUILD_INSTALLPATH}..."
- for es in $(ls eessi-${EESSI_PILOT_VERSION}-eb-${eb_version}-*.yml); do
-
- if [ -f ${es} ]; then
- echo_green "Feeding easystack file ${es} to EasyBuild..."
+ if [ -f ${easystack_file} ]; then
+ echo_green "Feeding easystack file ${easystack_file} to EasyBuild..."
- ${EB} --easystack ${TOPDIR}/${es} --robot
- ec=$?
+ ${EB} --easystack ${TOPDIR}/${easystack_file} --robot
+ ec=$?
- # copy EasyBuild log file if EasyBuild exited with an error
- if [ ${ec} -ne 0 ]; then
- eb_last_log=$(unset EB_VERBOSE; eb --last-log)
- # copy to current working directory
- cp -a ${eb_last_log} .
- echo "Last EasyBuild log file copied from ${eb_last_log} to ${PWD}"
- # copy to build logs dir (with context added)
- copy_build_log "${eb_last_log}" "${build_logs_dir}"
- fi
-
- $TOPDIR/check_missing_installations.sh ${TOPDIR}/${es}
- else
- fatal_error "Easystack file ${es} not found!"
+ # copy EasyBuild log file if EasyBuild exited with an error
+ if [ ${ec} -ne 0 ]; then
+ eb_last_log=$(unset EB_VERBOSE; eb --last-log)
+ # copy to current working directory
+ cp -a ${eb_last_log} .
+ echo "Last EasyBuild log file copied from ${eb_last_log} to ${PWD}"
+ # copy to build logs dir (with context added)
+ copy_build_log "${eb_last_log}" "${build_logs_dir}"
fi
- done
+
+ $TOPDIR/check_missing_installations.sh ${TOPDIR}/${easystack_file}
+ else
+ fatal_error "Easystack file ${easystack_file} not found!"
+ fi
done
diff --git a/bot/bot-eessi-aws-citc.cfg b/bot/bot-eessi-aws-citc.cfg
deleted file mode 100644
index a5e53d82c1..0000000000
--- a/bot/bot-eessi-aws-citc.cfg
+++ /dev/null
@@ -1,238 +0,0 @@
-# Also see documentation at https://github.com/EESSI/eessi-bot-software-layer/blob/main/README.md#step5.5
-
-[github]
-# replace '123456' with the ID of your GitHub App
-app_id = 281041
-
-# a short (!) name for your app instance that can be used for example
-# when adding/updating a comment to a PR
-# (!) a short yet descriptive name is preferred because it appears in
-# comments to the PR
-# for example, the name could include the name of the cluster the bot
-# runs on and the username which runs the bot
-# NOTE avoid putting an actual username here as it will be visible on
-# potentially publicly accessible GitHub pages.
-app_name = eessi-bot-citc-aws
-
-# replace '12345678' with the ID of the installation of your GitHub App
-# (can be derived by creating an event and then checking for the list
-# of sent events and its payload either via the Smee channel's web page
-# or via the Advanced section of your GitHub App on github.com)
-installation_id = 33078935
-
-# path to the private key that was generated when the GitHub App was registered
-private_key = /mnt/shared/home/bot/eessi-bot-software-layer/eessi-bot-citc-aws.2023-01-12.private-key.pem
-
-
-[bot_control]
-# which GH accounts have the permission to send commands to the bot
-# if value is left/empty everyone can send commands
-# value can be a space delimited list of GH accounts
-command_permission = boegel trz42 bedroge laraPPr ocaisa casparvl satishskamath maxim-masterov TopRichard xinan1911
-
-# format of the response when processing bot commands
-command_response_fmt =
- Updates by the bot instance {app_name}
- (click for details)
-
- {comment_response}
- {comment_result}
-
-
-
-[buildenv]
-# name of the job script used for building an EESSI stack
-build_job_script = /mnt/shared/home/bot/eessi-bot-software-layer/scripts/bot-build.slurm
-
-# path to directory on shared filesystem that can be used for sharing data across build jobs
-# (for example source tarballs used by EasyBuild)
-shared_fs_path = /mnt/shared/home/bot/shared
-
-# Path (directory) to which build logs for (only) failing builds should be copied by bot/build.sh script
-build_logs_dir = /mnt/shared/bot-build-logs
-
-# The container_cachedir may be used to reuse downloaded container image files
-# across jobs. Thus, jobs can more quickly launch containers.
-container_cachedir = /mnt/shared/home/bot/eessi-bot-software-layer/containers-cache-dir
-
-# it may happen that we need to customize some CVMFS configuration
-# the value of cvmfs_customizations is a dictionary which maps a file
-# name to an entry that needs to be added to that file
-# cvmfs_customizations = {}
-
-# if compute nodes have no internet connection, we need to set http(s)_proxy
-# or commands such as pip3 cannot download software from package repositories
-# for example, the temporary EasyBuild is installed via pip3 first
-# http_proxy = http://PROXY_DNS:3128/
-# https_proxy = http://PROXY_DNS:3128/
-
-# directory under which the bot prepares directories per job
-# structure created is as follows: YYYY.MM/pr_PR_NUMBER/event_EVENT_ID/run_RUN_NUMBER/OS+SUBDIR
-jobs_base_dir = /mnt/shared/home/bot/eessi-bot-software-layer/jobs
-
-# configure environment
-# list of comma-separated modules to be loaded by build_job_script
-# useful/needed if some tool is not provided as system-wide package
-# (read by bot and handed over to build_job_script via parameter
-# --load-modules)
-# load_modules =
-
-# PATH to temporary directory on build node ... ends up being used for
-# for example, EESSI_TMPDIR --> /tmp/$USER/EESSI
-# escaping variables with '\' delays expansion to the start of the
-# build_job_script; this can be used for referencing environment
-# variables that are only set inside a Slurm job
-local_tmp = /tmp/$USER/EESSI
-
-# parameters to be added to all job submissions
-# NOTE do not quote parameter string. Quotes are retained when reading in config and
-# then the whole 'string' is recognised as a single parameter.
-# NOTE 2 '--get-user-env' may be needed on systems where the job's environment needs
-# to be initialised as if it is for a login shell.
-# note: hardcoded 24h time limit until https://github.com/EESSI/eessi-bot-software-layer/issues/146 is fixed
-# note: 16 cores which corresponds to *.4xlarge node types, see also arch_target_map
-slurm_params = --hold --time=24:0:0 --nodes=1 --ntasks-per-node=16
-
-# full path to the job submission command
-submit_command = /usr/bin/sbatch
-
-# which GH account has the permission to trigger the build (by setting
-# the label 'bot:build' (apparently this cannot be restricted on GitHub)
-# if value is left/empty everyone can trigger the build
-# value can be a space delimited list of GH accounts
-build_permission = boegel trz42 bedroge laraPPr ocaisa casparvl satishskamath maxim-masterov TopRichard xinan1911
-
-# template for comment when user who set a label has no permission to trigger build jobs
-no_build_permission_comment = Label `bot:build` has been set by user `{build_labeler}`, but only users `{build_permission_users}` have permission to trigger the action
-
-
-[deploycfg]
-# script for uploading built software packages
-tarball_upload_script = /mnt/shared/home/bot/eessi-bot-software-layer/scripts/eessi-upload-to-staging
-
-# URL to S3/minio bucket
-# if attribute is set, bucket_base will be constructed as follows
-# bucket_base=${endpoint_url}/${bucket_name}
-# otherwise, bucket_base will be constructed as follows
-# bucket_base=https://${bucket_name}.s3.amazonaws.com
-# - The former variant is used for non AWS S3 services, eg, minio, or when
-# the bucket name is not provided in the hostname (see latter case).
-# - The latter variant is used for AWS S3 services.
-# endpoint_url = URL_TO_S3_SERVER
-
-# bucket name
-bucket_name = eessi-staging-2023.06
-
-# upload policy: defines what policy is used for uploading built artefacts
-# to an S3 bucket
-# 'all' ..: upload all artefacts (mulitple uploads of the same artefact possible)
-# 'latest': for each build target (eessi-VERSION-{software,init,compat}-OS-ARCH)
-# only upload the latest built artefact
-# 'once' : only once upload any built artefact for the build target
-# 'none' : do not upload any built artefacts
-upload_policy = latest
-
-# which GH account has the permission to trigger the deployment (by setting
-# the label 'bot:deploy' (apparently this cannot be restricted on GitHub)
-# if value is left/empty everyone can trigger the deployment
-# value can be a space delimited list of GH accounts
-deploy_permission = boegel trz42 bedroge ocaisa casparvl
-
-# template for comment when user who set a label has no permission to trigger deploying tarballs
-no_deploy_permission_comment = Label `bot:deploy` has been set by user `{deploy_labeler}`, but only users `{deploy_permission_users}` have permission to trigger the action
-
-
-[architecturetargets]
-# defines both for which architectures the bot will build
-# and what submission parameters shall be used
-# 5 c4.2xlarge haswell 8 vCPU, 15 GiB RAM (1 + generic)
-# 2 c4.4xlarge haswell 16 vCPU, 30 GiB RAM
-# 5 c5.2xlarge skylake_avx512 8 vCPU, 16 GiB RAM (1)
-# 1 c5.4xlarge skylake_avx512 16 vCPU, 32 GiB RAM
-# 5 c5a.2xlarge zen2 8 vCPU, 16 GiB RAM (1)
-# 1 c5a.4xlarge zen2 16 vCPU, 32 GiB RAM
-# 5 c5d.2xlarge skylake_avx512 8 vCPU, 16 GiB RAM + 200 GB NVMe
-# 5 c6a.2xlarge zen3 8 vCPU, 16 GiB RAM (1)
-# 1 c6a.4xlarge zen3 16 vCPU, 32 GiB RAM
-# 5 c6g.2xlarge neoverse_n1 8 vCPU, 16 GiB RAM (1 + generic)
-# 2 c6g.4xlarge neoverse_n1 16 vCPU, 32 GiB RAM
-# 1 c6g.8xlarge neoverse_n1 32 vCPU, 64 GiB RAM
-# 1 c6i.2xlarge cascadelake 8 vCPU, 16 GiB RAM (1)
-# 5 c7g.2xlarge neoverse_v1 8 vCPU, 16 GiB RAM (1)
-# 1 c7g.4xlarge neoverse_v1 16 vCPU, 32 GiB RAM
-# larger instances (*.4xlarge => 16 cores, 32GB RAM)
-arch_target_map = {
- "linux/x86_64/generic" : "--constraint shape=c4.4xlarge",
- "linux/x86_64/intel/haswell" : "--constraint shape=c4.4xlarge",
- "linux/x86_64/intel/skylake_avx512" : "--constraint shape=c5.4xlarge",
- "linux/x86_64/amd/zen2": "--constraint shape=c5a.4xlarge",
- "linux/x86_64/amd/zen3" : "--constraint shape=c6a.4xlarge",
- "linux/aarch64/generic" : "--constraint shape=c6g.4xlarge",
- "linux/aarch64/neoverse_n1" : "--constraint shape=c6g.4xlarge",
- "linux/aarch64/neoverse_v1" : "--constraint shape=c7g.4xlarge" }
-
-[repo_targets]
-# defines for which repository a arch_target should be build for
-#
-# only building for repository EESSI-pilot
-repo_target_map = {
- "linux/x86_64/generic" : ["eessi-2021.12","eessi-2023.06-compat","eessi-2023.06-software"],
- "linux/x86_64/intel/haswell" : ["eessi-2021.12","eessi-2023.06-compat","eessi-2023.06-software"],
- "linux/x86_64/intel/skylake_avx512" : ["eessi-2021.12","eessi-2023.06-compat","eessi-2023.06-software"],
- "linux/x86_64/amd/zen2" : ["eessi-2021.12","eessi-2023.06-compat","eessi-2023.06-software"],
- "linux/x86_64/amd/zen3" : ["eessi-2021.12","eessi-2023.06-compat","eessi-2023.06-software"],
- "linux/aarch64/generic" : ["eessi-2021.12","eessi-2023.06-compat","eessi-2023.06-software"],
- "linux/aarch64/neoverse_n1" : ["eessi-2021.12","eessi-2023.06-compat","eessi-2023.06-software"],
- "linux/aarch64/neoverse_v1" : ["eessi-2021.12","eessi-2023.06-compat","eessi-2023.06-software"] }
-
-# points to definition of repositories (default EESSI-pilot defined by build container)
-repos_cfg_dir = /mnt/shared/home/bot/eessi-bot-software-layer/repos
-
-# configuration for event handler which receives events from a GitHub repository.
-[event_handler]
-# path to the log file to log messages for event handler
-log_path = /mnt/shared/home/bot/eessi-bot-software-layer/eessi_bot_event_handler.log
-
-
-[job_manager]
-# path to the log file to log messages for job manager
-log_path = /mnt/shared/home/bot/eessi-bot-software-layer/eessi_bot_job_manager.log
-
-# directory where job manager stores information about jobs to be tracked
-# e.g. as symbolic link JOBID -> directory to job
-job_ids_dir = /mnt/shared/home/bot/eessi-bot-software-layer/jobs
-
-# full path to the job status checking command
-poll_command = /usr/bin/squeue
-
-# polling interval in seconds
-poll_interval = 60
-
-# full path to the command for manipulating existing jobs
-scontrol_command = /usr/bin/scontrol
-
-
-# variable 'comment' under 'submitted_job_comments' should not be changed as there are regular expression patterns matching it
-[submitted_job_comments]
-initial_comment = New job on instance `{app_name}` for architecture `{arch_name}` for repository `{repo_id}` in job dir `{symlink}`
-awaits_release = job id `{job_id}` awaits release by job manager
-
-
-[new_job_comments]
-awaits_launch = job awaits launch by Slurm scheduler
-
-
-[running_job_comments]
-running_job = job `{job_id}` is running
-
-
-[finished_job_comments]
-success = :grin: SUCCESS tarball `{tarball_name}` ({tarball_size} GiB) in job dir
-failure = :cry: FAILURE
-no_slurm_out = No slurm output `{slurm_out}` in job dir
-slurm_out = Found slurm output `{slurm_out}` in job dir
-missing_modules = Slurm output lacks message "No missing modules!".
-no_tarball_message = Slurm output lacks message about created tarball.
-no_matching_tarball = No tarball matching `{tarball_pattern}` found in job dir.
-multiple_tarballs = Found {num_tarballs} tarballs in job dir - only 1 matching `{tarball_pattern}` expected.
-job_result_unknown_fmt = :shrug: UNKNOWN _(click triangle for detailed information)_
- Job results file `{filename}` does not exist in job directory or reading it failed.
- No artefacts were found/reported.
diff --git a/check_missing_installations.sh b/check_missing_installations.sh
index 3627d1d0b5..e927f14701 100755
--- a/check_missing_installations.sh
+++ b/check_missing_installations.sh
@@ -22,6 +22,9 @@ source $TOPDIR/scripts/utils.sh
source $TOPDIR/configure_easybuild
+echo ">> Active EasyBuild configuration when checking for missing installations:"
+${EB:-eb} --show-config
+
echo ">> Checking for missing installations in ${EASYBUILD_INSTALLPATH}..."
eb_missing_out=$LOCAL_TMPDIR/eb_missing.out
${EB:-eb} --easystack ${easystack} --missing 2>&1 | tee ${eb_missing_out}
diff --git a/eb_hooks.py b/eb_hooks.py
index 83bdca4cb5..dbb8415541 100644
--- a/eb_hooks.py
+++ b/eb_hooks.py
@@ -18,6 +18,8 @@
from distutils.version import LooseVersion
+CPU_TARGET_NEOVERSE_V1 = 'aarch64/neoverse_v1'
+
EESSI_RPATH_OVERRIDE_ATTR = 'orig_rpath_override_dirs'
@@ -160,13 +162,14 @@ def parse_hook_fontconfig_add_fonts(ec, eprefix):
def parse_hook_openblas_relax_lapack_tests_num_errors(ec, eprefix):
- """Relax number of failing numerical LAPACK tests on Arm 64-bit systems."""
+ """Relax number of failing numerical LAPACK tests for aarch64/neoverse_v1 CPU target."""
+ cpu_target = get_eessi_envvar('EESSI_SOFTWARE_SUBDIR')
if ec.name == 'OpenBLAS':
- # relax maximum number of failed numerical LAPACK tests on Arm 64-bit systems,
- # since the default setting of 150 that works well on x86_64 is a bit too strict
+ # relax maximum number of failed numerical LAPACK tests for aarch64/neoverse_v1 CPU target
+ # since the default setting of 150 that works well on other aarch64 targets and x86_64 is a bit too strict
# See https://github.com/EESSI/software-layer/issues/314
cfg_option = 'max_failing_lapack_tests_num_errors'
- if get_cpu_architecture() == AARCH64:
+ if cpu_target == CPU_TARGET_NEOVERSE_V1:
orig_value = ec[cfg_option]
ec[cfg_option] = 400
print_msg("Maximum number of failing LAPACK tests with numerical errors for %s relaxed to %s (was %s)",
@@ -244,7 +247,6 @@ def pre_configure_hook_metabat_filtered_zlib_dep(self, *args, **kwargs):
else:
raise EasyBuildError("MetaBAT-specific hook triggered for non-MetaBAT easyconfig?!")
-
def pre_configure_hook_wrf_aarch64(self, *args, **kwargs):
"""
Pre-configure hook for WRF:
@@ -254,8 +256,13 @@ def pre_configure_hook_wrf_aarch64(self, *args, **kwargs):
if get_cpu_architecture() == AARCH64:
pattern = "Linux x86_64 ppc64le, gfortran"
repl = "Linux x86_64 aarch64 ppc64le, gfortran"
- self.cfg.update('preconfigopts', "sed -i 's/%s/%s/g' arch/configure_new.defaults && " % (pattern, repl))
- print_msg("Using custom preconfigopts for %s: %s", self.name, self.cfg['preconfigopts'])
+ if LooseVersion(self.version) <= LooseVersion('3.9.0'):
+ self.cfg.update('preconfigopts', "sed -i 's/%s/%s/g' arch/configure_new.defaults && " % (pattern, repl))
+ print_msg("Using custom preconfigopts for %s: %s", self.name, self.cfg['preconfigopts'])
+
+ if LooseVersion('4.0.0') <= LooseVersion(self.version) <= LooseVersion('4.2.1'):
+ self.cfg.update('preconfigopts', "sed -i 's/%s/%s/g' arch/configure.defaults && " % (pattern, repl))
+ print_msg("Using custom preconfigopts for %s: %s", self.name, self.cfg['preconfigopts'])
else:
raise EasyBuildError("WRF-specific hook triggered for non-WRF easyconfig?!")
@@ -270,19 +277,46 @@ def pre_test_hook_ignore_failing_tests_SciPybundle(self, *args, **kwargs):
In previous versions we were not as strict yet on the numpy/SciPy tests
"""
cpu_target = get_eessi_envvar('EESSI_SOFTWARE_SUBDIR')
- if self.name == 'SciPy-bundle' and self.version == '2021.10' and cpu_target == 'aarch64/neoverse_v1':
+ if self.name == 'SciPy-bundle' and self.version == '2021.10' and cpu_target == CPU_TARGET_NEOVERSE_V1:
self.cfg['testopts'] = "|| echo ignoring failing tests"
+def pre_single_extension_hook(ext, *args, **kwargs):
+ """Main pre-configure hook: trigger custom functions based on software name."""
+ if ext.name in PRE_SINGLE_EXTENSION_HOOKS:
+ PRE_SINGLE_EXTENSION_HOOKS[ext.name](ext, *args, **kwargs)
+
+
+def pre_single_extension_testthat(ext, *args, **kwargs):
+ """
+ Pre-extension hook for testthat R package, to fix build on top of recent glibc.
+ """
+ if ext.name == 'testthat' and LooseVersion(ext.version) < LooseVersion('3.1.0'):
+ # use constant value instead of SIGSTKSZ for stack size,
+ # cfr. https://github.com/r-lib/testthat/issues/1373 + https://github.com/r-lib/testthat/pull/1403
+ ext.cfg['preinstallopts'] = "sed -i 's/SIGSTKSZ/32768/g' inst/include/testthat/vendor/catch.h && "
+
+
+def pre_single_extension_isoband(ext, *args, **kwargs):
+ """
+ Pre-extension hook for isoband R package, to fix build on top of recent glibc.
+ """
+ if ext.name == 'isoband' and LooseVersion(ext.version) < LooseVersion('0.2.5'):
+ # use constant value instead of SIGSTKSZ for stack size in vendored testthat included in isoband sources,
+ # cfr. https://github.com/r-lib/isoband/commit/6984e6ce8d977f06e0b5ff73f5d88e5c9a44c027
+ ext.cfg['preinstallopts'] = "sed -i 's/SIGSTKSZ/32768/g' src/testthat/vendor/catch.h && "
+
+
def pre_test_hook_ignore_failing_tests_FFTWMPI(self, *args, **kwargs):
"""
Pre-test hook for FFTW.MPI: skip failing tests for FFTW.MPI 3.3.10 on neoverse_v1
cfr. https://github.com/EESSI/software-layer/issues/325
"""
cpu_target = get_eessi_envvar('EESSI_SOFTWARE_SUBDIR')
- if self.name == 'FFTW.MPI' and self.version == '3.3.10' and cpu_target == 'aarch64/neoverse_v1':
+ if self.name == 'FFTW.MPI' and self.version == '3.3.10' and cpu_target == CPU_TARGET_NEOVERSE_V1:
self.cfg['testopts'] = "|| echo ignoring failing tests"
+
PARSE_HOOKS = {
'CGAL': parse_hook_cgal_toolchainopts_precise,
'fontconfig': parse_hook_fontconfig_add_fonts,
@@ -306,3 +340,8 @@ def pre_test_hook_ignore_failing_tests_FFTWMPI(self, *args, **kwargs):
'SciPy-bundle': pre_test_hook_ignore_failing_tests_SciPybundle,
'FFTW.MPI': pre_test_hook_ignore_failing_tests_FFTWMPI,
}
+
+PRE_SINGLE_EXTENSION_HOOKS = {
+ 'isoband': pre_single_extension_isoband,
+ 'testthat': pre_single_extension_testthat,
+}
diff --git a/eessi-2023.06-eb-4.7.2-2022b.yml b/eessi-2023.06-eb-4.7.2-2022b.yml
index 6d15ee2b90..b97be34dcf 100644
--- a/eessi-2023.06-eb-4.7.2-2022b.yml
+++ b/eessi-2023.06-eb-4.7.2-2022b.yml
@@ -5,3 +5,9 @@ easyconfigs:
options:
include-easyblocks-from-pr: 2248
- foss-2022b
+ - netCDF-4.9.0-gompi-2022b.eb:
+ # use updated CMakeMake easyblock to avoid that -DCMAKE_SKIP_RPATH=ON is used, which breaks the netCDF test step
+ # see https://github.com/easybuilders/easybuild-easyblocks/pull/3012
+ options:
+ include-easyblocks-from-pr: 3012
+ - WRF-4.4.1-foss-2022b-dmpar.eb
diff --git a/eessi-2023.06-eb-4.8.1-2021a.yml b/eessi-2023.06-eb-4.8.1-2021a.yml
new file mode 100644
index 0000000000..999eb09925
--- /dev/null
+++ b/eessi-2023.06-eb-4.8.1-2021a.yml
@@ -0,0 +1,7 @@
+easyconfigs:
+ - Xvfb-1.20.11-GCCcore-10.3.0.eb:
+ # fix permission issues for xvfb-run script,
+ # see https://github.com/easybuilders/easybuild-easyconfigs/pull/18834
+ options:
+ from-pr: 18834
+ - R-4.1.0-foss-2021a.eb
diff --git a/eessi-2023.06-eb-4.8.1-2022a.yml b/eessi-2023.06-eb-4.8.1-2022a.yml
index 646f28533d..3c27495cd1 100644
--- a/eessi-2023.06-eb-4.8.1-2022a.yml
+++ b/eessi-2023.06-eb-4.8.1-2022a.yml
@@ -8,3 +8,5 @@ easyconfigs:
- ESPResSo-4.2.1-foss-2022a
options:
from-pr: 18963
+ - SciPy-bundle-2022.05-foss-2022a
+ - BAMM-2.5.0-foss-2022a.eb
diff --git a/eessi-2023.06-eb-4.8.1-2023a.yml b/eessi-2023.06-eb-4.8.1-2023a.yml
new file mode 100644
index 0000000000..b015676757
--- /dev/null
+++ b/eessi-2023.06-eb-4.8.1-2023a.yml
@@ -0,0 +1,10 @@
+easyconfigs:
+ - GCC-12.3.0
+ - OpenBLAS-0.3.23-GCC-12.3.0:
+ # add patch to disable flaky DDRGES3 LAPACK test,
+ # see https://github.com/easybuilders/easybuild-easyconfigs/pull/18887;
+ # also pulls in patch to avoid hang when running OpenBLAS test suite,
+ # see https://github.com/easybuilders/easybuild-easyconfigs/pull/18790
+ options:
+ from-pr: 18887
+ - foss-2023a
diff --git a/eessi-2023.06-known-issues.yml b/eessi-2023.06-known-issues.yml
new file mode 100644
index 0000000000..f2f96aee34
--- /dev/null
+++ b/eessi-2023.06-known-issues.yml
@@ -0,0 +1,22 @@
+- aarch64/neoverse_v1:
+ - FFTW/3.3.10-GCC-11.3.0:
+ - issue: https://github.com/EESSI/software-layer/issues/325
+ - info: "Flaky FFTW tests, random failures"
+ - FFTW/3.3.10-gompi-2021b:
+ - issue: https://github.com/EESSI/software-layer/issues/325
+ - info: "Flaky FFTW tests, random failures"
+ - OpenBLAS/0.3.18-GCC-11.2.0:
+ - issue: https://github.com/EESSI/software-layer/issues/314
+ - info: "Increased number of non-numerical failures in OpenBLAS test suite (238 vs max. 150 on x86_64/*)"
+ - OpenBLAS/0.3.20-GCC-11.3.0:
+ - issue: https://github.com/EESSI/software-layer/issues/314
+ - info: "Increased number of non-numerical failures in OpenBLAS test suite (238 vs max. 150 on x86_64/*)"
+ - OpenBLAS/0.3.21-GCC-12.2.0:
+ - issue: https://github.com/EESSI/software-layer/issues/314
+ - info: "Increased number of non-numerical failures in OpenBLAS test suite (344 vs max. 150 on x86_64/*)"
+ - SciPy-bundle/2021.05-foss-2021a:
+ - issue: https://github.com/EESSI/software-layer/issues/318
+ - info: "2 failing tests (vs 30554 passed) in scipy test suite"
+ - SciPy-bundle/2021.10-foss-2021b:
+ - issue: https://github.com/EESSI/software-layer/issues/318
+ - info: "20 failing tests (vs 14429 passed) in numpy test suite + 55 failing tests (vs 32438 passed) in scipy test suite"