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

{2023.06} comment *-from-pr & sync with EESSI/2023.06 #174

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
85 changes: 74 additions & 11 deletions EESSI-pilot-install-software.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,43 @@

display_help() {
echo "usage: $0 [OPTIONS]"
echo " --build-logs-dir - location to copy EasyBuild logs to for failed builds"
echo " -g | --generic - instructs script to build for generic architecture target"
echo " -h | --help - display this usage information"
echo " -x | --http-proxy URL - provides URL for the environment variable http_proxy"
echo " -y | --https-proxy URL - provides URL for the environment variable https_proxy"
echo " --shared-fs-path - path to directory on shared filesystem that can be used"
}

function copy_build_log() {
# copy specified build log to specified directory, with some context added
build_log=${1}
build_logs_dir=${2}

# also copy to build logs directory, if specified
if [ ! -z "${build_logs_dir}" ]; then
log_filename="$(basename ${build_log})"
if [ ! -z "${SLURM_JOB_ID}" ]; then
# use subdirectory for build log in context of a Slurm job
build_log_path="${build_logs_dir}/jobs/${SLURM_JOB_ID}/${log_filename}"
else
build_log_path="${build_logs_dir}/non-jobs/${log_filename}"
fi
mkdir -p $(dirname ${build_log_path})
cp -a ${build_log} ${build_log_path}
chmod 0644 ${build_log_path}

# add context to end of copied log file
echo >> ${build_log_path}
echo "Context from which build log was copied:" >> ${build_log_path}
echo "- original path of build log: ${build_log}" >> ${build_log_path}
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: ${easystack_file}" >> ${build_log_path}

echo "EasyBuild log file ${build_log} copied to ${build_log_path} (with context appended)"
fi
}

POSITIONAL_ARGS=()
Expand All @@ -35,6 +68,14 @@ while [[ $# -gt 0 ]]; do
export https_proxy="$2"
shift 2
;;
--build-logs-dir)
export build_logs_dir="${2}"
shift 2
;;
--shared-fs-path)
export shared_fs_path="${2}"
shift 2
;;
-*|--*)
echo "Error: Unknown option: $1" >&2
exit 1
Expand Down Expand Up @@ -99,7 +140,7 @@ else
echo ">> Picking up pre-defined \$EESSI_SOFTWARE_SUBDIR_OVERRIDE: ${EESSI_SOFTWARE_SUBDIR_OVERRIDE}"
fi

# Set all the EESSI environment variables (respecting ${EESSI_SOFTWARE_SUBDIR_OVERRIDE})
# Set all the EESSI environment variables (respecting $EESSI_SOFTWARE_SUBDIR_OVERRIDE)
# $EESSI_SILENT - don't print any messages
# $EESSI_BASIC_ENV - give a basic set of environment variables
EESSI_SILENT=1 EESSI_BASIC_ENV=1 source $TOPDIR/init/eessi_environment_variables
Expand All @@ -125,6 +166,14 @@ fi
echo ">> Configuring EasyBuild..."
source $TOPDIR/configure_easybuild

if [ ! -z "${shared_fs_path}" ]; then
shared_eb_sourcepath=${shared_fs_path}/easybuild/sources
echo ">> Using ${shared_eb_sourcepath} as shared EasyBuild source path"
export EASYBUILD_SOURCEPATH=${shared_eb_sourcepath}:${EASYBUILD_SOURCEPATH}
fi

${EB} --show-config

echo ">> Setting up \$MODULEPATH..."
# make sure no modules are loaded
module --force purge
Expand All @@ -137,25 +186,39 @@ else
echo_green ">> MODULEPATH set up: ${MODULEPATH}"
fi

for eb_version in '4.7.2'; do
# use 'git diff' to determine which easystack files were changed
for easystack_file in $(git diff --name-only | 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
${EB} --easystack ${TOPDIR}/${easystack_file} --robot
ec=$?

$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

Expand Down
15 changes: 8 additions & 7 deletions eessi-2023.06-eb-4.7.2-2021a.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,18 @@ easyconfigs:
# include-easyblocks-from-pr: 2922
- git-2.32.0-GCCcore-10.3.0-nodocs.eb
- GCC-10.3.0
# - CMake-3.20.1-GCCcore-10.3.0.eb
- CMake-3.20.1-GCCcore-10.3.0.eb:
options:
include-easyblocks-from-pr: 2248
- CMake-3.20.1-GCCcore-10.3.0.eb
# - CMake-3.20.1-GCCcore-10.3.0.eb:
# options:
# include-easyblocks-from-pr: 2248
- Rust-1.52.1-GCCcore-10.3.0.eb
- foss-2021a.eb
- QuantumESPRESSO-6.7-foss-2021a.eb
- GROMACS-2021.3-foss-2021a.eb:
options:
download-timeout: 1000
- GROMACS-2021.3-foss-2021a.eb:
options:
download-timeout: 1000
- libGLU-9.0.1-GCCcore-10.3.0.eb
# since the BAGEL ec file is new we have to keep the from-pr or eb fails
- BAGEL-1.2.2-foss-2021a.eb:
options:
from-pr: 18446
Expand Down
10 changes: 6 additions & 4 deletions eessi-2023.06-eb-4.7.2-2021b.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
easyconfigs:
- GCC-11.2.0
- git-2.33.1-GCCcore-11.2.0-nodocs.eb
# - CMake-3.21.1-GCCcore-11.2.0.eb
- CMake-3.21.1-GCCcore-11.2.0.eb:
options:
include-easyblocks-from-pr: 2248
- CMake-3.21.1-GCCcore-11.2.0.eb
# - CMake-3.21.1-GCCcore-11.2.0.eb:
# options:
# include-easyblocks-from-pr: 2248
- OpenMPI-4.1.1-GCC-11.2.0.eb
- FFTW-3.3.10-gompi-2021b.eb
- BLIS-0.8.1-GCC-11.2.0.eb
- foss-2021b.eb
# note, the below CMake has never been installed, just put here to use the
# same version as easy does
# - CMake-3.22.1-GCCcore-11.2.0.eb:
# options:
# include-easyblocks-from-pr: 2248
Expand Down
8 changes: 4 additions & 4 deletions eessi-2023.06-eb-4.7.2-2022a.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
easyconfigs:
- GCC-11.3.0
- git-2.36.0-GCCcore-11.3.0-nodocs.eb
# - CMake-3.23.1-GCCcore-11.3.0.eb
- CMake-3.23.1-GCCcore-11.3.0.eb:
options:
include-easyblocks-from-pr: 2248
- CMake-3.23.1-GCCcore-11.3.0.eb
# - CMake-3.23.1-GCCcore-11.3.0.eb:
# options:
# include-easyblocks-from-pr: 2248
- BLIS-0.9.0-GCC-11.3.0.eb
- OpenMPI-4.1.4-GCC-11.3.0.eb
- FFTW.MPI-3.3.10-gompi-2022a.eb
Expand Down
8 changes: 4 additions & 4 deletions eessi-2023.06-eb-4.7.2-2022b.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
easyconfigs:
- GCC-12.2.0
- git-2.38.1-GCCcore-12.2.0-nodocs.eb
# - CMake-3.24.3-GCCcore-12.2.0.eb
- CMake-3.24.3-GCCcore-12.2.0.eb:
options:
include-easyblocks-from-pr: 2248
- CMake-3.24.3-GCCcore-12.2.0.eb
# - CMake-3.24.3-GCCcore-12.2.0.eb:
# options:
# include-easyblocks-from-pr: 2248
- BLIS-0.9.0-GCC-12.2.0.eb
- OpenMPI-4.1.4-GCC-12.2.0.eb
- FFTW.MPI-3.3.10-gompi-2022b.eb
Expand Down
Loading