|
| 1 | +#!/usr/bin/env bash |
| 2 | +# |
| 3 | +# Configure a shared Spack instance in your local ~/.spack directory. |
| 4 | + |
| 5 | +declare -xr SHARED_SPACK_VERSION='0.17.3' |
| 6 | +declare -xr SHARED_SPACK_INSTANCE_NAME='gpu' |
| 7 | +declare -xr SHARED_SPACK_INSTANCE_VERSION='b' |
| 8 | +declare -xr SHARED_SPACK_ROOT="/cm/shared/apps/spack/${SHARED_SPACK_VERSION}/${SHARED_SPACK_INSTANCE_NAME}/${SHARED_SPACK_INSTANCE_VERSION}" |
| 9 | + |
| 10 | +declare -xr LOCAL_SPACK_NAMESPACE="${USER}" |
| 11 | +declare -xr LOCAL_SPACK_TMPDIR='/tmp' |
| 12 | +declare -xr LOCAL_SPACK_ROOT="${HOME}/.spack/${SHARED_SPACK_VERSION}/${SHARED_SPACK_INSTANCE_NAME}/${SHARED_SPACK_INSTANCE_VERSION}/${SHARED_SPACK_USER}" |
| 13 | + |
| 14 | +module reset |
| 15 | +module list |
| 16 | +. "${SHARED_SPACK_ROOT}/share/spack/setup-env.sh" |
| 17 | +printenv |
| 18 | + |
| 19 | +mkdir -p "${LOCAL_SPACK_ROOT}" |
| 20 | + |
| 21 | +mkdir -p "${LOCAL_SPACK_ROOT}/var/spack/repos/${LOCAL_SPACK_NAMESPACE}/packages" |
| 22 | +tee -a "${LOCAL_SPACK_ROOT}/var/spack/repos/${LOCAL_SPACK_NAMESPACE}/repo.yaml" << EOF |
| 23 | +repo: |
| 24 | + namespace: ${LOCAL_SPACK_NAMESPACE} |
| 25 | +EOF |
| 26 | + |
| 27 | +mkdir -p "${LOCAL_SPACK_ROOT}/var/spack/stage" |
| 28 | +mkdir -p "${LOCAL_SPACK_ROOT}/var/spack/cache" |
| 29 | +mkdir -p "${LOCAL_SPACK_ROOT}/share/spack/modules" |
| 30 | +mkdir -p "${LOCAL_SPACK_ROOT}/share/spack/lmod" |
| 31 | +mkdir -p "${LOCAL_SPACK_ROOT}/opt/spack" |
| 32 | + |
| 33 | +architecture='${ARCHITECTURE}' |
| 34 | +compilername='${COMPILERNAME}' |
| 35 | +compilerver='${COMPILERVER}' |
| 36 | +package='${PACKAGE}' |
| 37 | +version='${VERSION}' |
| 38 | +hash='${HASH}' |
| 39 | + |
| 40 | +mkdir -p "${LOCAL_SPACK_ROOT}/etc/spack" |
| 41 | +tee -a "${LOCAL_SPACK_ROOT}/config.yaml" << EOF |
| 42 | +config: |
| 43 | + install_tree: |
| 44 | + root: ${LOCAL_SPACK_ROOT}opt/spack |
| 45 | + projections: |
| 46 | + all: ${architecture}/${compilername}-${compilerver}/${package}-${version}-${hash} |
| 47 | + template_dirs: |
| 48 | + - ${SHARED_SPACK_ROOT}/share/spack/templates |
| 49 | + module_roots: |
| 50 | + tcl: ${LOCAL_SPACK_ROOT}share/spack/modules |
| 51 | + lmod: ${LOCAL_SPACK_ROOT}share/spack/lmod |
| 52 | + build_stage: |
| 53 | + - ${LOCAL_SPACK_ROOT}var/spack/stage |
| 54 | + - ${LOCAL_SPACK_TMPDIR}/${USER}/spack-stage |
| 55 | + source_cache: ${LOCAL_SPACK_ROOT}var/spack/cache |
| 56 | + misc_cache: ~/.spack/cache |
| 57 | + connect_timeout: 10 |
| 58 | + verify_ssl: true |
| 59 | + suppress_gpg_warnings: false |
| 60 | + install_missing_compilers: false |
| 61 | + checksum: true |
| 62 | + dirty: false |
| 63 | + build_language: C |
| 64 | + locks: true |
| 65 | + build_jobs: 1 |
| 66 | + ccache: false |
| 67 | + db_lock_timeout: 3 |
| 68 | + package_lock_timeout: null |
| 69 | + shared_linking: 'rpath' |
| 70 | + allow_sgid: true |
| 71 | +EOF |
| 72 | + |
| 73 | +tee -a "${LOCAL_SPACK_ROOT}/repos.yaml" << EOF |
| 74 | +repos: |
| 75 | + - ${LOCAL_SPACK_ROOT}var/spack/repos/${LOCAL_SPACK_NAMESPACE} |
| 76 | +EOF |
| 77 | + |
| 78 | +tee -a "${LOCAL_SPACK_ROOT}/upstreams.yaml" << EOF |
| 79 | +upstreams: |
| 80 | + spack-instance-1: |
| 81 | + install_tree: ${SHARED_SPACK_ROOT}/opt/spack |
| 82 | +EOF |
0 commit comments