Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add EasyBuild 4.7.2 + foss/2021a to EESSI pilot 2023.06 #260

Merged
merged 33 commits into from
Jun 22, 2023
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
bbc5d73
first version of bot/check-result.sh for software-layer
truib Apr 18, 2023
fb04876
fix path to helper scripts + define result file name
truib Apr 18, 2023
5ebc5d9
define functions for standardizing result output
truib Apr 18, 2023
b862154
polishing formating of status messages
truib Apr 19, 2023
95e8ff8
more polishing of comment details
truib Apr 19, 2023
6724b49
minor polishing of job result messages
truib Apr 19, 2023
b70c858
only log if run with --verbose
truib Apr 19, 2023
677c362
fix small bug when checking for tarball msg
truib Apr 20, 2023
e4932ee
avoid creating false positives
truib Apr 20, 2023
9a0e220
also filter OpenSSL dependency in EasyBuild configuration
boegel Jun 5, 2023
2759a13
Merge pull request #256 from boegel/2023.04_eb-filter-deps_openssl
bedroge Jun 5, 2023
0a41c20
bump version to 2023.06
boegel Jun 14, 2023
88a758a
configure EasyBuild to allow experimental features (like using easyst…
boegel Jun 14, 2023
8aa1c25
update install script to use EasyBuild 4.7.2 + use easystack file for…
boegel Jun 14, 2023
b7870af
implement pre-configure hook for OpenBLAS to use DYNAMIC_ARCH=1 when …
boegel Jun 14, 2023
a4790b4
consistently use ${eb_version} rather than ${REQ_EB_VERSION}
boegel Jun 14, 2023
9cdc38e
rename easystack file for EESSI 2023.06 to use correct EESSI version
boegel Jun 14, 2023
6413264
update check_missing_installations.sh to take path to easystack file …
boegel Jun 14, 2023
2b6d630
update test workflow to test with version 2023.06 of EESSI pilot repo
boegel Jun 14, 2023
074d7a1
update check-result.sh to state tested in NESSI PR125
truib Jun 18, 2023
3c43a92
check for missing installations requires a few updates for check-resu…
truib Jun 18, 2023
5a0294e
make sure experimental EasyBuild features can be used
truib Jun 18, 2023
009f90c
Merge branch '2023.04' into bot_check_result_script
trz42 Jun 18, 2023
4110548
removed OpenSSL from filter deps
truib Jun 20, 2023
f709a8a
let script's return value reflect SUCCESS (0) or FAILURE (1)
truib Jun 20, 2023
5cfb4e1
use test to check if slurm-*.out exists + fix reporting message
truib Jun 20, 2023
7478e7d
more polishing to address multiple comments/suggestions
truib Jun 20, 2023
827e686
remove tmpfile + clarify/improve exit
truib Jun 20, 2023
9296ed7
polishing examples + comments
truib Jun 20, 2023
78a9dc8
make sure that $job_out is defined in bot/check-result.sh
boegel Jun 20, 2023
6dee89a
Merge branch 'bot_check_result_script' into 2023.06_2021a
boegel Jun 20, 2023
4cc8f41
don't run 'eb --missing' in install script, since it confuses the bot…
boegel Jun 20, 2023
5d7e367
use correct aarch64 CPU targets for tests that rely on EESSI pilot 20…
boegel Jun 22, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 8 additions & 9 deletions .github/workflows/test_eessi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
fail-fast: false
matrix:
EESSI_VERSION:
- 2021.12
- 2023.06
EESSI_SOFTWARE_SUBDIR:
- aarch64/generic
- aarch64/graviton2
Expand All @@ -20,6 +20,8 @@ jobs:
- x86_64/intel/haswell
- x86_64/intel/skylake_avx512
- x86_64/generic
EASYSTACK_FILE:
- eessi-2023.06-eb-4.7.2-2021a.yml
steps:
- name: Check out software-layer repository
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # v3.1.0
Expand All @@ -41,7 +43,7 @@ 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
./check_missing_installations.sh ${{matrix.EASYSTACK_FILE}}

- name: Test check_missing_installations.sh with missing package (GCC/8.3.0)
run: |
Expand All @@ -52,18 +54,15 @@ jobs:
export EESSI_OS_TYPE=linux
export EESSI_SOFTWARE_SUBDIR=${{matrix.EESSI_SOFTWARE_SUBDIR}}
env | grep ^EESSI | sort
echo "modify eessi-${{matrix.EESSI_VERSION}}.yml by adding a missing package (GCC/8.3.0)"
echo " GCC:" >> eessi-${{matrix.EESSI_VERSION}}.yml
echo " toolchains:" >> eessi-${{matrix.EESSI_VERSION}}.yml
echo " SYSTEM:" >> eessi-${{matrix.EESSI_VERSION}}.yml
echo " versions: '8.3.0'" >> eessi-${{matrix.EESSI_VERSION}}.yml
tail -n 4 eessi-${{matrix.EESSI_VERSION}}.yml
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}}
# 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; then
if ./check_missing_installations.sh ${{matrix.EASYSTACK_FILE}}; then
echo "did NOT capture missing package; test FAILED"
exit 1
else
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/tests_scripts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,6 @@ jobs:
# since create_directory_tarballs.sh must be accessible from within build container
cp -a * /tmp/
cd /tmp
./build_container.sh run /tmp/$USER/EESSI /tmp/create_directory_tarballs.sh 2021.12
./build_container.sh run /tmp/$USER/EESSI /tmp/create_directory_tarballs.sh 2023.06
# check if tarballs have been produced
ls -l *.tar.gz
248 changes: 20 additions & 228 deletions EESSI-pilot-install-software.sh
Original file line number Diff line number Diff line change
Expand Up @@ -137,235 +137,29 @@ else
echo_green ">> MODULEPATH set up: ${MODULEPATH}"
fi

REQ_EB_VERSION='4.5.0'

# load EasyBuild module (will be installed if it's not available yet)
source ${TOPDIR}/load_easybuild_module.sh ${REQ_EB_VERSION}

echo_green "All set, let's start installing some software in ${EASYBUILD_INSTALLPATH}..."

# install Java with fixed custom easyblock that uses patchelf to ensure right glibc is picked up,
# see https://github.com/EESSI/software-layer/issues/123
# and https://github.com/easybuilders/easybuild-easyblocks/pull/2557
ok_msg="Java installed, off to a good (?) start!"
fail_msg="Failed to install Java, woopsie..."
$EB Java-11.eb --robot --include-easyblocks-from-pr 2557
check_exit_code $? "${ok_msg}" "${fail_msg}"

# install GCC for foss/2020a
export GCC_EC="GCC-9.3.0.eb"
echo ">> Starting slow with ${GCC_EC}..."
ok_msg="${GCC_EC} installed, yippy! Off to a good start..."
fail_msg="Installation of ${GCC_EC} failed!"
# pull in easyconfig from https://github.com/easybuilders/easybuild-easyconfigs/pull/14453,
# which includes patch to fix build of GCC 9.3 when recent kernel headers are in place
$EB ${GCC_EC} --robot --from-pr 14453 GCCcore-9.3.0.eb
check_exit_code $? "${ok_msg}" "${fail_msg}"

# install CMake with custom easyblock that patches CMake when --sysroot is used
echo ">> Install CMake with fixed easyblock to take into account --sysroot"
ok_msg="CMake installed!"
fail_msg="Installation of CMake failed, what the ..."
$EB CMake-3.16.4-GCCcore-9.3.0.eb --robot --include-easyblocks-from-pr 2248
check_exit_code $? "${ok_msg}" "${fail_msg}"

# If we're building OpenBLAS for GENERIC, we need https://github.com/easybuilders/easybuild-easyblocks/pull/1946
echo ">> Installing OpenBLAS..."
ok_msg="Done with OpenBLAS!"
fail_msg="Installation of OpenBLAS failed!"
if [[ $GENERIC -eq 1 ]]; then
echo_yellow ">> Using https://github.com/easybuilders/easybuild-easyblocks/pull/1946 to build generic OpenBLAS."
openblas_include_easyblocks_from_pr="--include-easyblocks-from-pr 1946"
else
openblas_include_easyblocks_from_pr=''
fi
$EB $openblas_include_easyblocks_from_pr OpenBLAS-0.3.9-GCC-9.3.0.eb --robot
check_exit_code $? "${ok_msg}" "${fail_msg}"

echo ">> Installing OpenMPI..."
ok_msg="OpenMPI installed, w00!"
fail_msg="Installation of OpenMPI failed, that's not good..."
$EB OpenMPI-4.0.3-GCC-9.3.0.eb --robot
check_exit_code $? "${ok_msg}" "${fail_msg}"

# install Python
echo ">> Install Python 2.7.18 and Python 3.8.2..."
ok_msg="Python 2.7.18 and 3.8.2 installed, yaay!"
fail_msg="Installation of Python failed, oh no..."
$EB Python-2.7.18-GCCcore-9.3.0.eb Python-3.8.2-GCCcore-9.3.0.eb --robot
check_exit_code $? "${ok_msg}" "${fail_msg}"

echo ">> Installing Perl..."
ok_msg="Perl installed, making progress..."
fail_msg="Installation of Perl failed, this never happens..."
# 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.30.2-GCCcore-9.3.0.eb --robot --include-easyblocks-from-pr 2640
check_exit_code $? "${ok_msg}" "${fail_msg}"

echo ">> Installing Qt5..."
ok_msg="Qt5 installed, phieuw, that was a big one!"
fail_msg="Installation of Qt5 failed, that's frustrating..."
$EB Qt5-5.14.1-GCCcore-9.3.0.eb --robot
check_exit_code $? "${ok_msg}" "${fail_msg}"

# skip test step when installing SciPy-bundle on aarch64,
# to dance around problem with broken numpy tests;
# cfr. https://github.com/easybuilders/easybuild-easyconfigs/issues/11959
echo ">> Installing SciPy-bundle"
ok_msg="SciPy-bundle installed, yihaa!"
fail_msg="SciPy-bundle installation failed, bummer..."
SCIPY_EC=SciPy-bundle-2020.03-foss-2020a-Python-3.8.2.eb
if [[ "$(uname -m)" == "aarch64" ]]; then
$EB $SCIPY_EC --robot --skip-test-step
else
$EB $SCIPY_EC --robot
fi
check_exit_code $? "${ok_msg}" "${fail_msg}"

echo ">> Installing GROMACS..."
ok_msg="GROMACS installed, wow!"
fail_msg="Installation of GROMACS failed, damned..."
$EB GROMACS-2020.1-foss-2020a-Python-3.8.2.eb GROMACS-2020.4-foss-2020a-Python-3.8.2.eb --robot
check_exit_code $? "${ok_msg}" "${fail_msg}"

# note: compiling OpenFOAM is memory hungry (16GB is not enough with 8 cores)!
# 32GB is sufficient to build with 16 cores
echo ">> Installing OpenFOAM (twice!)..."
ok_msg="OpenFOAM installed, now we're talking!"
fail_msg="Installation of OpenFOAM failed, we were so close..."
$EB OpenFOAM-8-foss-2020a.eb OpenFOAM-v2006-foss-2020a.eb --robot
check_exit_code $? "${ok_msg}" "${fail_msg}"

if [ ! "${EESSI_CPU_FAMILY}" = "ppc64le" ]; then
echo ">> Installing QuantumESPRESSO..."
ok_msg="QuantumESPRESSO installed, let's go quantum!"
fail_msg="Installation of QuantumESPRESSO failed, did somebody observe it?!"
$EB QuantumESPRESSO-6.6-foss-2020a.eb --robot
check_exit_code $? "${ok_msg}" "${fail_msg}"
fi
for eb_version in '4.7.2'; do

echo ">> Installing R 4.0.0 (better be patient)..."
ok_msg="R installed, wow!"
fail_msg="Installation of R failed, so sad..."
$EB R-4.0.0-foss-2020a.eb --robot --parallel-extensions-install --experimental
check_exit_code $? "${ok_msg}" "${fail_msg}"

echo ">> Installing Bioconductor 3.11 bundle..."
ok_msg="Bioconductor installed, enjoy!"
fail_msg="Installation of Bioconductor failed, that's annoying..."
$EB R-bundle-Bioconductor-3.11-foss-2020a-R-4.0.0.eb --robot
check_exit_code $? "${ok_msg}" "${fail_msg}"

echo ">> Installing TensorFlow 2.3.1..."
ok_msg="TensorFlow 2.3.1 installed, w00!"
fail_msg="Installation of TensorFlow failed, why am I not surprised..."
$EB TensorFlow-2.3.1-foss-2020a-Python-3.8.2.eb --robot --include-easyblocks-from-pr 2218
check_exit_code $? "${ok_msg}" "${fail_msg}"

echo ">> Installing Horovod 0.21.3..."
ok_msg="Horovod installed! Go do some parallel training!"
fail_msg="Horovod installation failed. There comes the headache..."
$EB Horovod-0.21.3-foss-2020a-TensorFlow-2.3.1-Python-3.8.2.eb --robot
check_exit_code $? "${ok_msg}" "${fail_msg}"

if [ ! "${EESSI_CPU_FAMILY}" = "ppc64le" ]; then

echo ">> Installing code-server 3.7.3..."
ok_msg="code-server 3.7.3 installed, now you can use VS Code!"
fail_msg="Installation of code-server failed, that's going to be hard to fix..."
$EB code-server-3.7.3.eb --robot
check_exit_code $? "${ok_msg}" "${fail_msg}"
fi
# load EasyBuild module (will be installed if it's not available yet)
source ${TOPDIR}/load_easybuild_module.sh ${eb_version}

echo ">> Installing RStudio-Server 1.3.1093..."
ok_msg="RStudio-Server installed, enjoy!"
fail_msg="Installation of RStudio-Server failed, might be OS deps..."
$EB RStudio-Server-1.3.1093-foss-2020a-Java-11-R-4.0.0.eb --robot
check_exit_code $? "${ok_msg}" "${fail_msg}"

echo ">> Installing OSU-Micro-Benchmarks 5.6.3..."
ok_msg="OSU-Micro-Benchmarks installed, yihaa!"
fail_msg="Installation of OSU-Micro-Benchmarks failed, that's unexpected..."
$EB OSU-Micro-Benchmarks-5.6.3-gompi-2020a.eb -r
check_exit_code $? "${ok_msg}" "${fail_msg}"

echo ">> Installing Spark 3.1.1..."
ok_msg="Spark installed, set off the fireworks!"
fail_msg="Installation of Spark failed, no fireworks this time..."
$EB Spark-3.1.1-foss-2020a-Python-3.8.2.eb -r
check_exit_code $? "${ok_msg}" "${fail_msg}"

echo ">> Installing IPython 7.15.0..."
ok_msg="IPython installed, launch your Jupyter Notebooks!"
fail_msg="Installation of IPython failed, that's unexpected..."
$EB IPython-7.15.0-foss-2020a-Python-3.8.2.eb -r
check_exit_code $? "${ok_msg}" "${fail_msg}"

echo ">> Installing WRF 3.9.1.1..."
ok_msg="WRF installed, it's getting hot in here!"
fail_msg="Installation of WRF failed, that's unexpected..."
OMPI_MCA_pml=ucx UCX_TLS=tcp $EB WRF-3.9.1.1-foss-2020a-dmpar.eb -r --include-easyblocks-from-pr 2648
check_exit_code $? "${ok_msg}" "${fail_msg}"

echo ">> Installing R 4.1.0 (better be patient)..."
ok_msg="R installed, wow!"
fail_msg="Installation of R failed, so sad..."
$EB --from-pr 14821 X11-20210518-GCCcore-10.3.0.eb -r && $EB --from-pr 16011 R-4.1.0-foss-2021a.eb --robot --parallel-extensions-install --experimental
check_exit_code $? "${ok_msg}" "${fail_msg}"

echo ">> Installing Nextflow 22.10.1..."
ok_msg="Nextflow installed, the work must flow..."
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 OSU-Micro-Benchmarks/5.7.1-gompi-2021a..."
ok_msg="OSU-Micro-Benchmarks installed, yihaa!"
fail_msg="Installation of OSU-Micro-Benchmarks failed, that's unexpected..."
$EB OSU-Micro-Benchmarks-5.7.1-gompi-2021a.eb -r
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 $openblas_include_easyblocks_from_pr --from-pr 15885 OpenBLAS-0.3.15-GCC-10.3.0.eb --robot
# ignore failing FlexiBLAS tests when building on POWER;
# some tests are failing due to a segmentation fault due to "invalid memory reference",
# see also https://github.com/easybuilders/easybuild-easyconfigs/pull/12476;
# using -fstack-protector-strong -fstack-clash-protection should fix that,
# but it doesn't for some reason when building for ppc64le/generic...
if [ "${EESSI_SOFTWARE_SUBDIR}" = "ppc64le/generic" ]; then
$EB FlexiBLAS-3.0.4-GCC-10.3.0.eb --ignore-test-failure
else
$EB FlexiBLAS-3.0.4-GCC-10.3.0.eb
fi
echo_green "All set, let's start installing some software with EasyBuild v${eb_version} in ${EASYBUILD_INSTALLPATH}..."

$EB SciPy-bundle-2021.05-foss-2021a.eb --robot
check_exit_code $? "${ok_msg}" "${fail_msg}"
for gen in '2021a'; do

es="eessi-${EESSI_PILOT_VERSION}-eb-${eb_version}-${gen}.yml"

if [ -f ${es} ]; then
echo_green "Feeding easystack file ${es} to EasyBuild..."

${EB} --easystack ${TOPDIR}/${es} --missing && ${EB} --easystack ${TOPDIR}/${es} --robot
boegel marked this conversation as resolved.
Show resolved Hide resolved

$TOPDIR/check_missing_installations.sh ${TOPDIR}/${es}
else
fatal_error "Easystack file ${es} not found!"
fi
done

done

### add packages here

Expand All @@ -378,7 +172,5 @@ fi

$TOPDIR/update_lmod_cache.sh ${EPREFIX} ${EASYBUILD_INSTALLPATH}

$TOPDIR/check_missing_installations.sh

echo ">> Cleaning up ${TMPDIR}..."
rm -r ${TMPDIR}
11 changes: 5 additions & 6 deletions check_missing_installations.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/bin/bash
#
# Script to check for missing installations in EESSI pilot software stack (version 2021.12)
# Script to check for missing installations in EESSI pilot software stack (version 2023.06)
#
# author: Kenneth Hoste (@boegel)
# author: Thomas Roeblitz (@trz42)
Expand All @@ -10,10 +10,11 @@

TOPDIR=$(dirname $(realpath $0))

if [ -z ${EESSI_PILOT_VERSION} ]; then
echo "ERROR: \${EESSI_PILOT_VERSION} must be set to run $0!" >&2
if [ $# -ne 1 ]; then
echo "ERROR: Usage: $0 <path to easystack file>" >&2
exit 1
fi
easystack=$1

LOCAL_TMPDIR=$(mktemp -d)

Expand All @@ -23,9 +24,7 @@ source $TOPDIR/configure_easybuild

echo ">> Checking for missing installations in ${EASYBUILD_INSTALLPATH}..."
eb_missing_out=$LOCAL_TMPDIR/eb_missing.out
# we need to use --from-pr to pull in some easyconfigs that are not available in EasyBuild version being used
# PR #16531: Nextflow-22.10.1.eb
${EB:-eb} --from-pr 16531 --easystack eessi-${EESSI_PILOT_VERSION}.yml --experimental --missing 2>&1 | tee ${eb_missing_out}
${EB:-eb} --easystack ${easystack} --missing 2>&1 | tee ${eb_missing_out}
exit_code=${PIPESTATUS[0]}

ok_msg="Command 'eb --missing ...' succeeded, analysing output..."
Expand Down
3 changes: 3 additions & 0 deletions configure_easybuild
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,6 @@ fi
export EASYBUILD_FILTER_DEPS=$DEPS_TO_FILTER

export EASYBUILD_MODULE_EXTENSIONS=1

# need to enable use of experimental features, since we're using easystack files
export EASYBUILD_EXPERIMENTAL=1
Loading