Newer
Older
#!/usr/bin/env sh
SPACK_VERSION=$(jq -r .spack.version config.json)
echo "Setting up spack"
if [ ! -d spack/.git ]; then
git clone https://github.com/spack/spack.git -b $SPACK_VERSION spack
else
git -C spack fetch
git -C spack checkout $SPACK_VERSION
git -C spack pull
fi
echo "Adding spack system config file"
mkdir -p ${SPACK_SYSTEM_CONFIG_PATH}
EXTERNAL_REPOS=$(jq -r '.spack.repos | keys[]' config.json)
for file in mirrors.yaml repos.yaml packages.yaml concretizer.yaml config.yaml
do
if [ -e ${file} ]; then
cp ${file} ${SPACK_SYSTEM_CONFIG_PATH}
fi
done
echo "Setting up extra repos"
spack_external_repos=/stack/external_repos
mkdir -p ${spack_external_repos}
if [ ! -e ${SPACK_SYSTEM_CONFIG_PATH}/repos.yaml ]; then
echo "repos:" >> {SPACK_SYSTEM_CONFIG_PATH}/repos.yaml
fi
for repo in ${EXTERNAL_REPOS}
do
repo_branch=$(jq -r ".spack.repos.\"${repo}\".branch" config.json)
echo " - ${spack_external_repos}/${repo}"
if [ ! -d ${spack_external_repos}/${repo} ]; then
echo "Cloning repo: ${repo}"
url_branch=$(jq -r ".spack.repos.\"${repo}\".url" config.json)
git clone -b ${repo_branch} ${url_branch} ${spack_external_repos}/${repo}
else
echo "Update repo: ${repo}"
git -C ${spack_external_repos}/$repo fetch
git -C ${spack_external_repos}/$repo checkout ${repo_branch}
git -C ${spack_external_repos}/$repo pull
fi
done
echo "Setting up buildcache"
spack/bin/spack gpg trust \
$GPG_PRIVATE_KEY
spack/bin/spack mirror add \
--type binary \
--scope system \
buildcache file:///buildcache