#!/usr/bin/env sh SPACK_VERSION=$(jq -r .spack.version config.json) STACK_LOCATION=$(jq -r .stack.mount_point 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 #cat > spack/etc/spack/config.yaml << EOF #config: # install_tree: # root: ${STACK_LOCATION}/spack/opt/spack #EOF 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_LOCATION}/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 if [ ! -d /buildcache/build_cache ]; then spack/bin/spack gpg publish \ -d /buildcache fi spack/bin/spack mirror add \ --type binary \ --scope system \ buildcache file:///buildcache spack/bin/spack buildcache keys \ --install \ --trust #spack/bin/spack buildcache update-index /buildcache