function _install_spack() { if [ ! -e ${SPACK_ROOT} ]; then echo "Cloning to ${SPACK_ROOT}" git clone --depth 1 ${SPACK_URL} -b ${SPACK_BRANCH} ${SPACK_ROOT} fi _init_spack ${SPACK_INIT_CMD} ${SPACK_ROOT} if [[ $(spack compiler info ${SPACK_COMPILER}) ]]; then echo "Found Compiler $(spack compiler info ${SPACK_COMPILER})" else echo "could not find compiler, will now try to install it... this may take a while" spack install ${SPACK_COMPILER} spack compiler add $(spack location --install-dir $SPACK_COMPILER) fi } function _init_spack() { SPACK_INIT_CMD=$1 SPACK_ROOT=$2 if [ -z "$SPACK_INIT_CMD" ] && [ ! -z "${SPACK_ROOT}" ]; then echo "Empty SPACK_INIT_CMD -> trying to source config file of spack root: $SPACK_ROOT/share/spack/setup-env.sh" . $SPACK_ROOT/share/spack/setup-env.sh else echo "Executing SPACK_INIT_CMD: $SPACK_INIT_CMD" $SPACK_INIT_CMD fi } function load_spack() { export SPACK_INIT_CMD=$1 export SPACK_ROOT=$2 # i.e.: spack export SPACK_URL=$3 # i.e.: https://github.com/spack/spack.git export SPACK_BRANCH=$4 # i.e.: develop export SPACK_COMPILER=$5 # i.e.: gcc@12.2.0 export SPACK_DISABLE_LOCAL_CONFIG=$6 # i.e.: true export SPACK_USER_CACHE_PATH=$7 # i.e.: ${SPACK_ROOT}/spack_user_cache_path export SPACK_USER_CONFIG_PATH=$8 # i.e.: ${SPACK_ROOT}/spack_user_config_path echo "SPACK_INIT_CMD = $SPACK_INIT_CMD" echo "SPACK_ROOT = $SPACK_ROOT" echo "SPACK_URL = $SPACK_URL" echo "SPACK_BRANCH = $SPACK_BRANCH" echo "SPACK_COMPILER = $SPACK_COMPILER" echo "SPACK_DISABLE_LOCAL_CONFIG = $SPACK_DISABLE_LOCAL_CONFIG" echo "SPACK_USER_CACHE_PATH = $SPACK_USER_CACHE_PATH" echo "SPACK_USER_CONFIG_PATH = $SPACK_USER_CONFIG_PATH" if [ -z "$SPACK_USER_CACHE_PATH" ]; then unset SPACK_USER_CACHE_PATH fi if [ -z "$SPACK_USER_CONFIG_PATH" ]; then unset SPACK_USER_CONFIG_PATH fi if [ ! -e ${SPACK_ROOT} ] && [ ! -z "${SPACK_ROOT}" ]; then _install_spack; fi _init_spack "$SPACK_INIT_CMD" "$SPACK_ROOT" echo "Using spack from $(which spack)" }