Skip to content

Commit

Permalink
Attempt to fix spack environment issue with new syntax and no copy. (#…
Browse files Browse the repository at this point in the history
…122) [deception-rebuild]
  • Loading branch information
cameronrutherford authored and jaelynlitz committed Mar 19, 2024
1 parent e0d76fd commit c042403
Showing 1 changed file with 39 additions and 48 deletions.
87 changes: 39 additions & 48 deletions buildsystem/spack/load_spack.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,79 +2,70 @@

# Enforce running from ExaGO root dir
if [[ ! -f $PWD/buildsystem/build.sh ]]; then
echo 'Please run this script from the top-level ExaGO source directory.'
exit 1
echo 'Please run this script from the top-level ExaGO source directory.'
exit 1
fi

# Need to know which platform we are configuring for
MY_CLUSTER="${MY_CLUSTER:?MY_CLUSTER is unset. Please set manually.}"
[[ -z $MY_CLUSTER ]] && return 1
[[ -z $MY_CLUSTER ]] && return 1

echo "$MY_CLUSTER" | awk '{print tolower($0)}'
# Use ${var,,} to convert to lower case
# There must be an existing folder for the cluster
if [ ! -d "./buildsystem/spack/${MY_CLUSTER}" ]
then
echo "${MY_CLUSTER} did not match any directories in /buildsystem/spack/"
echo "Try one of the following platforms: "
echo $(ls -d ./buildsystem/spack/*/ | tr '\n' '\0' | xargs -0 -n 1 basename )
return
if [ ! -d "./buildsystem/spack/${MY_CLUSTER}" ]; then
echo "${MY_CLUSTER} did not match any directories in /buildsystem/spack/"
echo "Try one of the following platforms: "
echo $(ls -d ./buildsystem/spack/*/ | tr '\n' '\0' | xargs -0 -n 1 basename)
return
fi

base="./buildsystem/spack/${MY_CLUSTER}"

# There needs to be an existing spack.yaml
if [ ! -f "$base/spack.yaml" ]
then
echo "No spack.yaml in $base/spack.yaml. Add this and try again."
return
if [ ! -f "$base/spack.yaml" ]; then
echo "No spack.yaml in $base/spack.yaml. Add this and try again."
return
fi

# We must configure with platform specific environment before loading spack
if [ ! -f "$base/env.sh" ]
then
echo "No environment (env.sh) script detected in $base."
echo "Please add a script that creates a compatible shell environment."
echo "You must set the following variables that affect your spack configuration."
echo "TODO - add updated description of all spack platform variables" # TODO
return
if [ ! -f "$base/env.sh" ]; then
echo "No environment (env.sh) script detected in $base."
echo "Please add a script that creates a compatible shell environment."
echo "You must set the following variables that affect your spack configuration."
echo "TODO - add updated description of all spack platform variables" # TODO
return
fi


# Source base platform environment
source $base/env.sh && \

# Make sure SPACK_INSTALL is set, so we aren't installing somewhere undesired
SPACK_INSTALL="${SPACK_INSTALL:?SPACK_INSTALL is unset. $base/env.sh should be edited to configure this}" && \
SPACK_MIRROR="${SPACK_MIRROR:?SPACK_MIRROR is unset. $base/env.sh should be edited to configure this}" && \

# Load spack
source ./tpl/spack/share/spack/setup-env.sh && \

# Create directory for environment
SPACKENV=$(pwd)/spack-env-$MY_CLUSTER && \
mkdir -p $SPACKENV && \
# Remove old config
(rm -f $SPACKENV/spack.yaml || true) && \
(rm -f $SPACKENV/spack.lock || true) && \
source $base/env.sh &&

# Use a directory based environment, and decorate command line
spack env create -d $SPACKENV && \
# Make sure SPACK_INSTALL is set, so we aren't installing somewhere undesired
SPACK_INSTALL="${SPACK_INSTALL:?SPACK_INSTALL is unset. $base/env.sh should be edited to configure this}" &&
SPACK_MIRROR="${SPACK_MIRROR:?SPACK_MIRROR is unset. $base/env.sh should be edited to configure this}" &&

# Use git version of config
cp $base/spack.yaml $SPACKENV && \
spack env activate -p $SPACKENV && \
# Load spack
source ./tpl/spack/share/spack/setup-env.sh &&

# Print relevant spack config for sanity check of environment.
echo "spack configuration will be installed into $SPACK_INSTALL" && \
mkdir -p $SPACK_INSTALL && \
mkdir -p $SPACK_CACHE && \
# Create directory for environment
SPACKENV=$(pwd)/spack-env-$MY_CLUSTER &&
mkdir -p $SPACKENV &&
# Remove old config if present
(rm -f $SPACKENV/spack.yaml || true) &&
(rm -f $SPACKENV/spack.lock || true) &&

# Use a directory based environment, and decorate command line
spack env create -d $SPACKENV $base/spack.yaml &&
spack env activate -p $SPACKENV &&

echo "spack mirror will be in $SPACK_MIRROR" && \
mkdir -p $SPACK_MIRROR
# Print relevant spack config for sanity check of environment.
echo "spack configuration will be installed into $SPACK_INSTALL" &&
mkdir -p $SPACK_INSTALL &&
mkdir -p $SPACK_CACHE &&
echo "spack mirror will be in $SPACK_MIRROR" &&
mkdir -p $SPACK_MIRROR

# Print config if configured successfully
if [ $? -eq 0 ] && [ "$1" = "-v" ]; then
spack config get config
spack config get config
fi

0 comments on commit c042403

Please sign in to comment.