# software-stack-plumbing Collection of scripts, etc, to make HLRS software stack work. ## Notes on software stack at HLRS Environment variables: - `HLRS_OPT_PREFIX`: start of hpcoft managed subdirectory - Set by HPCN - Non-public - Example: `HLRS_OPT_PREFIX=/opt/hlrs` - `HLRS_SOFTWARE_STACK_PREFIX`: start of software stack as described in this document - Set by this hpcoft - Non-public - Example: `HLRS_SOFTWARE_STACK_PREFIX=$HLRS_OPT_PREFIX/release` - `HLRS_SOFTWARE_STACK_RELEASE_VERSION`: label of a currently active release - Set by hpcoft - Public - Example: `HLRS_SOFTWARE_STACK_RELEASE_VERSION=24.1` - `HLRS_SOFTWARE_STACK_RELEASE_ROOT` : start of subdirectory of currently active release - Set by hpcoft - Public - Should contain all software, modules, data, etc., to use a release - Defined by: `HLRS_SOFTWARE_STACK_RELEASE_ROOT=${HLRS_SOFTWARE_STACK_PREFIX}/${HLRS_SOFTWARE_STACK_RELEASE_VERSION}` - `HLRS_SOFTWARE_STACK_HLRS_SPACK_ROOT` : start of subdirectory for all-things-spack of currently active release - Set by hpcoft - Non-public - Install spack in `SPACK_ROOT=${HLRS_SOFTWARE_STACK_HLRS_SPACK_ROOT}/spack` - Example: `HLRS_SOFTWARE_STACK_HLRS_SPACK_ROOT=${HLRS_SOFTWARE_STACK_RELEASE_ROOT}/hlrs-spack` - `HLRS_SOFTWARE_STACK_SPACK_INSTALL_TREE` : spack install tree of of currently active release. - Set by hpcoft - Public - This can be used for hpcoft/users to chain/upstream to HLRS Spack installation. - Defined by: `HLRS_SOFTWARE_STACK_SPACK_INSTALL_TREE=${HLRS_SOFTWARE_STACK_RELEASE_ROOT}/opt-spack` Directory layout: ```text ${HLRS_SOFTWARE_STACK_RELEASE_ROOT}/ ├── opt-non-spack/ │ ├── modulefiles │ └── ... ├── opt-spack (${HLRS_SOFTWARE_STACK_SPACK_INSTALL_TREE})/ │ ├── modulefiles │ └── ... ├── hlrs-spack (${HLRS_SOFTWARE_STACK_HLRS_SPACK_ROOT})/ │ ├── spack (${SPACK_ROOT}) │ ├── config-hlrs │ ├── config-user │ ├── repos │ ├── environments │ └── ... └── hlrs-plumbing ├── scripts ├── envs ├── ci-cd └── ... ```