Skip to content

Commit c9e38e8

Browse files
authored
Merge pull request #885 from Neves-P/feature/dev.eessi.io-merge
Add dev.eessi.io support including project subdirectories
2 parents 50a79dc + 7d02c15 commit c9e38e8

6 files changed

Lines changed: 50 additions & 18 deletions

File tree

EESSI-install-software.sh

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -242,8 +242,8 @@ fi
242242
# order is important: these are needed to install a full CUDA SDK in host_injections
243243
# for now, this just reinstalls all scripts. Note the most elegant, but works
244244

245-
# Only run install_scripts.sh if not dev.eessi.io for security
246-
if [[ "${EESSI_CVMFS_REPO}" != /cvmfs/dev.eessi.io ]]; then
245+
# Only run install_scripts.sh if not in dev.eessi.io for security
246+
if [[ -z ${EESSI_DEV_PROJECT} ]]; then
247247
${TOPDIR}/install_scripts.sh --prefix ${EESSI_PREFIX}
248248
fi
249249

@@ -268,8 +268,19 @@ export EESSI_CVMFS_INSTALL=1
268268
# NOTE 3, we have to set a default for EASYBUILD_INSTALLPATH here in cases the
269269
# EESSI-extend module itself needs to be installed.
270270
export EASYBUILD_INSTALLPATH=${EESSI_PREFIX}/software/${EESSI_OS_TYPE}/${EESSI_SOFTWARE_SUBDIR_OVERRIDE}
271+
272+
# If in dev.eessi.io, allow building on top of software.eessi.io via EESSI-extend
273+
if [[ ! -z ${EESSI_DEV_PROJECT} ]]; then
274+
# We keep track of the old install path for settings paths to SitePackage.lua and .lmodrc later
275+
EASYBUILD_INSTALLPATH_STANDARD=${EASYBUILD_INSTALLPATH}
276+
# Need to unset $EESSI_CVMFS_INSTALL to use $EESSI_PROJECT_INSTALL
277+
unset EESSI_CVMFS_INSTALL
278+
export EESSI_PROJECT_INSTALL=${EESSI_CVMFS_REPO_OVERRIDE}
279+
echo ">> \$EESSI_PROJECT_INSTALL set to ${EESSI_PROJECT_INSTALL}"
280+
fi
281+
271282
echo "DEBUG: before loading EESSI-extend // EASYBUILD_INSTALLPATH='${EASYBUILD_INSTALLPATH}'"
272-
source load_eessi_extend_module.sh ${EESSI_VERSION}
283+
source $TOPDIR/load_eessi_extend_module.sh ${EESSI_VERSION}
273284
echo "DEBUG: after loading EESSI-extend // EASYBUILD_INSTALLPATH='${EASYBUILD_INSTALLPATH}'"
274285

275286
# Install full CUDA SDK and cu* libraries in host_injections
@@ -319,11 +330,6 @@ if [ ! -z ${EESSI_ACCELERATOR_TARGET} ]; then
319330
fi
320331
fi
321332

322-
# If in dev.eessi.io, allow building on top of software.eessi.io
323-
if [[ "${EESSI_CVMFS_REPO}" == /cvmfs/dev.eessi.io ]]; then
324-
module use /cvmfs/software.eessi.io/versions/$EESSI_VERSION/software/${EESSI_OS_TYPE}/${EESSI_SOFTWARE_SUBDIR_OVERRIDE}/modules/all
325-
fi
326-
327333
echo "DEBUG: adding path '$EASYBUILD_INSTALLPATH/modules/all' to MODULEPATH='${MODULEPATH}'"
328334
#module use $EASYBUILD_INSTALLPATH/modules/all
329335
safe_module_use $EASYBUILD_INSTALLPATH/modules/all
@@ -396,7 +402,15 @@ else
396402
fi
397403

398404
echo "DEBUG: before creating/updating lmod config files // EASYBUILD_INSTALLPATH='${EASYBUILD_INSTALLPATH}'"
399-
export LMOD_CONFIG_DIR="${EASYBUILD_INSTALLPATH}/.lmod"
405+
if [[ ! -z ${EESSI_DEV_PROJECT} ]]; then
406+
# Make sure .lmod files are not checked for dev.eeessi.io
407+
export LMOD_CONFIG_DIR="${EASYBUILD_INSTALLPATH_STANDARD}/.lmod"
408+
export LMOD_PACKAGE_PATH="${EASYBUILD_INSTALLPATH_STANDARD}/.lmod"
409+
else
410+
export LMOD_CONFIG_DIR="${EASYBUILD_INSTALLPATH}/.lmod"
411+
export LMOD_PACKAGE_PATH="${EASYBUILD_INSTALLPATH}/.lmod"
412+
fi
413+
400414
lmod_rc_file="$LMOD_CONFIG_DIR/lmodrc.lua"
401415
echo "DEBUG: lmod_rc_file='${lmod_rc_file}'"
402416
if [[ ! -z ${EESSI_ACCELERATOR_TARGET} ]]; then
@@ -411,7 +425,6 @@ if [ ! -f $lmod_rc_file ] || [ ${lmodrc_changed} == '0' ]; then
411425
check_exit_code $? "$lmod_rc_file created" "Failed to create $lmod_rc_file"
412426
fi
413427

414-
export LMOD_PACKAGE_PATH="${EASYBUILD_INSTALLPATH}/.lmod"
415428
lmod_sitepackage_file="$LMOD_PACKAGE_PATH/SitePackage.lua"
416429
if [[ ! -z ${EESSI_ACCELERATOR_TARGET} ]]; then
417430
# EESSI_ACCELERATOR_TARGET is set, so let's remove the accelerator path from $lmod_sitepackage_file

bot/build.sh

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,9 @@ echo "bot/build.sh: EESSI_VERSION_OVERRIDE='${EESSI_VERSION_OVERRIDE}'"
147147
# determine CVMFS repo to be used from .repository.repo_name in ${JOB_CFG_FILE}
148148
# here, just set EESSI_CVMFS_REPO_OVERRIDE, a bit further down
149149
# "source init/eessi_defaults" via sourcing init/minimal_eessi_env
150-
export EESSI_CVMFS_REPO_OVERRIDE=/cvmfs/${REPOSITORY_NAME}
150+
# Note: iff ${EESSI_DEV_PROJECT} is defined (building for dev.eessi.io), then we
151+
# append the project subdirectory to ${EESSI_CVMFS_REPO_OVERRIDE}
152+
export EESSI_CVMFS_REPO_OVERRIDE=/cvmfs/${REPOSITORY_NAME}${EESSI_DEV_PROJECT:+/$EESSI_DEV_PROJECT}
151153
echo "bot/build.sh: EESSI_CVMFS_REPO_OVERRIDE='${EESSI_CVMFS_REPO_OVERRIDE}'"
152154

153155
# determine CPU architecture to be used from entry .architecture in ${JOB_CFG_FILE}
@@ -318,7 +320,15 @@ fi
318320
timestamp=$(date +%s)
319321
# to set EESSI_VERSION we need to source init/eessi_defaults now
320322
source $software_layer_dir/init/eessi_defaults
321-
export TGZ=$(printf "eessi-%s-software-%s-%s-%d.tar.gz" ${EESSI_VERSION} ${EESSI_OS_TYPE} ${EESSI_SOFTWARE_SUBDIR_OVERRIDE//\//-} ${timestamp})
323+
# Note: iff ${EESSI_DEV_PROJECT} is defined (building for dev.eessi.io), then we
324+
# append the project (subdirectory) name to the end tarball name. This is information
325+
# then used at the ingestion stage. If ${EESSI_DEV_PROJECT} is not defined, nothing is
326+
# appended
327+
export TGZ=$(printf "eessi-%s-software-%s-%s-%b%d.tar.gz" ${EESSI_VERSION} ${EESSI_OS_TYPE} ${EESSI_SOFTWARE_SUBDIR_OVERRIDE//\//-} ${EESSI_DEV_PROJECT:+$EESSI_DEV_PROJECT-} ${timestamp})
328+
329+
# Export EESSI_DEV_PROJECT to use it (if needed) when making tarball
330+
echo "bot/build.sh: EESSI_DEV_PROJECT='${EESSI_DEV_PROJECT}'"
331+
export EESSI_DEV_PROJECT=${EESSI_DEV_PROJECT}
322332

323333
# value of first parameter to create_tarball.sh - TMP_IN_CONTAINER - needs to be
324334
# synchronised with setting of TMP_IN_CONTAINER in eessi_container.sh

bot/inspect.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ echo "bot/inspect.sh: EESSI_VERSION_OVERRIDE='${EESSI_VERSION_OVERRIDE}'"
209209
# determine CVMFS repo to be used from .repository.repo_name in ${JOB_CFG_FILE}
210210
# here, just set EESSI_CVMFS_REPO_OVERRIDE, a bit further down
211211
# "source init/eessi_defaults" via sourcing init/minimal_eessi_env
212-
export EESSI_CVMFS_REPO_OVERRIDE="/cvmfs/$(cfg_get_value 'repository' 'repo_name')"
212+
export EESSI_CVMFS_REPO_OVERRIDE="/cvmfs/$(cfg_get_value 'repository' 'repo_name')${EESSI_DEV_PROJECT:+/$EESSI_DEV_PROJECT}"
213213
echo "bot/inspect.sh: EESSI_CVMFS_REPO_OVERRIDE='${EESSI_CVMFS_REPO_OVERRIDE}'"
214214

215215
# determine architecture to be used from entry .architecture in ${JOB_CFG_FILE}

create_tarball.sh

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,18 @@ echo ">> tmpdir: $tmpdir"
2020
os="linux"
2121
source ${base_dir}/init/eessi_defaults
2222
cvmfs_repo=${EESSI_CVMFS_REPO}
23-
2423
software_dir="${cvmfs_repo}/versions/${eessi_version}/software/${os}/${cpu_arch_subdir}"
2524
if [ ! -d ${software_dir} ]; then
2625
echo "Software directory ${software_dir} does not exist?!" >&2
2726
exit 2
2827
fi
2928

30-
cvmfs_repo_name=${cvmfs_repo#/cvmfs/}
31-
overlay_upper_dir="${eessi_tmpdir}/${cvmfs_repo_name}/overlay-upper"
29+
# Need to extract the cvmfs_repo_name from the cvmfs_repo variable
30+
# - remove /${EESSI_DEV_PROJECT} from the end (if it exists)
31+
# - remove /cvmfs/ from the beginning
32+
cvmfs_repo_name=${cvmfs_repo%"/${EESSI_DEV_PROJECT}"}
33+
cvmfs_repo_name=${cvmfs_repo_name#/cvmfs/}
34+
overlay_upper_dir="${eessi_tmpdir}/${cvmfs_repo_name}/overlay-upper${EESSI_DEV_PROJECT:+/$EESSI_DEV_PROJECT}"
3235

3336
software_dir_overlay="${overlay_upper_dir}/versions/${eessi_version}"
3437
if [ ! -d ${software_dir_overlay} ]; then

eessi_container.sh

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -763,6 +763,8 @@ do
763763
cfg_repo_id=${cvmfs_repo_name}
764764
cvmfs_repo_name=$(cfg_get_value ${cfg_repo_id} "repo_name")
765765
fi
766+
# remove project subdir in container
767+
cvmfs_repo_name=${cvmfs_repo_name%"/${EESSI_DEV_PROJECT}"}
766768

767769
# always create a directory for the repository (e.g., to store settings, ...)
768770
mkdir -p ${EESSI_TMPDIR}/${cvmfs_repo_name}
@@ -812,8 +814,9 @@ do
812814
fi
813815
elif [[ ${cvmfs_repo_access} == "rw" ]] ; then
814816
# use repo-specific overlay directories
815-
mkdir -p ${EESSI_TMPDIR}/${cvmfs_repo_name}/overlay-upper
816-
mkdir -p ${EESSI_TMPDIR}/${cvmfs_repo_name}/overlay-work
817+
mkdir -p ${EESSI_TMPDIR}/${cvmfs_repo_name}/overlay-upper${EESSI_DEV_PROJECT:+/$EESSI_DEV_PROJECT}
818+
mkdir -p ${EESSI_TMPDIR}/${cvmfs_repo_name}/overlay-work${EESSI_DEV_PROJECT:+/$EESSI_DEV_PROJECT}
819+
817820
[[ ${VERBOSE} -eq 1 ]] && echo -e "TMP directory contents:\n$(ls -l ${EESSI_TMPDIR})"
818821

819822
# set environment variables for fuse mounts in Singularity container

run_in_compat_layer_env.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ fi
3535
if [ ! -z ${EESSI_CVMFS_REPO_OVERRIDE} ]; then
3636
INPUT="export EESSI_CVMFS_REPO_OVERRIDE=${EESSI_CVMFS_REPO_OVERRIDE}; ${INPUT}"
3737
fi
38+
if [ ! -z ${EESSI_DEV_PROJECT} ]; then
39+
INPUT="export EESSI_DEV_PROJECT=${EESSI_DEV_PROJECT}; ${INPUT}"
40+
fi
3841
if [ ! -z ${EESSI_VERSION_OVERRIDE} ]; then
3942
INPUT="export EESSI_VERSION_OVERRIDE=${EESSI_VERSION_OVERRIDE}; ${INPUT}"
4043
fi

0 commit comments

Comments
 (0)