forked from EESSI/software-layer
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add a script that can install EESSI-extend if it doesn't exist
- Loading branch information
Showing
2 changed files
with
92 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
# Script to load the environment module for a specific version of EasyBuild. | ||
# If that module is not available yet, the current latest EasyBuild version of EasyBuild will be installed, | ||
# and used to install the specific EasyBuild version being specified. | ||
# | ||
# This script must be sourced, since it makes changes in the current environment, like loading an EasyBuild module. | ||
# | ||
# This script is part of the EESSI software layer, see | ||
# https://github.com/EESSI/software-layer.git | ||
# | ||
# author: Kenneth Hoste (@boegel, HPC-UGent) | ||
# author: Alan O'Cais (@ocaisa, CECAM) | ||
# | ||
# license: GPLv2 | ||
# | ||
# | ||
set -o pipefail | ||
|
||
if [ $# -ne 1 ]; then | ||
echo "Usage: $0 <EESSI-extend version>" >&2 | ||
exit 1 | ||
fi | ||
|
||
EESSI_EXTEND_VERSION="${1}-easybuild" | ||
|
||
# make sure that environment variables that we expect to be set are indeed set | ||
if [ -z "${TMPDIR}" ]; then | ||
echo "\$TMPDIR is not set" >&2 | ||
exit 2 | ||
fi | ||
|
||
# ${EB} is used to specify which 'eb' command should be used; | ||
# can potentially be more than just 'eb', for example when using 'eb --optarch=GENERIC' | ||
if [ -z "${EB}" ]; then | ||
echo "\$EB is not set" >&2 | ||
exit 2 | ||
fi | ||
|
||
# make sure that utility functions are defined (cfr. scripts/utils.sh script in EESSI/software-layer repo) | ||
type check_exit_code | ||
if [ $? -ne 0 ]; then | ||
echo "check_exit_code function is not defined" >&2 | ||
exit 3 | ||
fi | ||
|
||
echo ">> Checking for EESSI-extend module..." | ||
|
||
ml_av_eessi_extend_out=${TMPDIR}/ml_av_eessi_extend.out | ||
module avail 2>&1 | grep -i EESSI-extend/${EESSI_EXTEND_VERSION} &> ${ml_av_eessi_extend_out} | ||
|
||
if [[ $? -eq 0 ]]; then | ||
echo_green ">> Module for EESSI-extend/${EESSI_EXTEND_VERSION} found!" | ||
else | ||
echo_yellow ">> No module yet for EESSI-extend/${EESSI_EXTEND_VERSION}, installing it..." | ||
|
||
EB_TMPDIR=${TMPDIR}/ebtmp | ||
echo ">> Using temporary installation of EasyBuild (in ${EB_TMPDIR})..." | ||
pip_install_out=${TMPDIR}/pip_install.out | ||
pip3 install --prefix ${EB_TMPDIR} easybuild &> ${pip_install_out} | ||
|
||
# keep track of original $PATH and $PYTHONPATH values, so we can restore them | ||
ORIG_PATH=${PATH} | ||
ORIG_PYTHONPATH=${PYTHONPATH} | ||
|
||
echo ">> Final installation in ${EASYBUILD_INSTALLPATH}..." | ||
export PATH=${EB_TMPDIR}/bin:${PATH} | ||
export PYTHONPATH=$(ls -d ${EB_TMPDIR}/lib/python*/site-packages):${PYTHONPATH} | ||
eb_install_out=${TMPDIR}/eb_install.out | ||
ok_msg="EESSI-extend/${EESSI_EXTEND_VERSION} installed, let's go!" | ||
fail_msg="Installing EESSI-extend/${EESSI_EXTEND_VERSION} failed, that's not good... (output: ${eb_install_out})" | ||
${EB} "EESSI-extend-${EESSI_EXTEND_VERSION}.eb" 2>&1 | tee ${eb_install_out} | ||
check_exit_code $? "${ok_msg}" "${fail_msg}" | ||
|
||
# restore origin $PATH and $PYTHONPATH values, and clean up environment variables that are no longer needed | ||
export PATH=${ORIG_PATH} | ||
export PYTHONPATH=${ORIG_PYTHONPATH} | ||
unset EB_TMPDIR ORIG_PATH ORIG_PYTHONPATH | ||
|
||
module --ignore-cache avail EESSI-extend/${EESSI_EXTEND_VERSION} &> ${ml_av_eessi_extend_out} | ||
if [[ $? -eq 0 ]]; then | ||
echo_green ">> EESSI-extend/${EESSI_EXTEND_VERSION} module installed!" | ||
else | ||
fatal_error "EESSI-extend/${EESSI_EXTEND_VERSION} module failed to install?! (output of 'pip install' in ${pip_install_out}, output of 'eb' in ${eb_install_out}, output of 'module avail EESSI-extend' in ${ml_av_eessi_extend_out})" | ||
fi | ||
fi | ||
|
||
echo ">> Loading EESSI-extend/${EESSI_EXTEND_VERSION} module..." | ||
module --ignore-cache load EESSI-extend/${EESSI_EXTEND_VERSION} | ||
|
||
unset EESSI_EXTEND_VERSION |