FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

only fetch sources for added items · EESSI/software-layer-scripts@44d0b2f · GitHub

Fetch all source files before processing easystack file #1479

Fetch all source files before processing easystack file

Fetch all source files before processing easystack file #1479

This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
# documentation: https://help.github.com/en/articles/workflow-syntax-for-github-actions
name: Tests for EESSI-extend module functionality in software.eessi.io
on:
push:
branches: [ "main" ]
pull_request:
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
basic_checks:
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
include:
- eessi_version: '2023.06'
rebuild_software: "BCFtools-1.18-GCC-12.3.0.eb"
- eessi_version: '2025.06'
rebuild_software: "make-4.4.1-GCCcore-13.3.0.eb"
steps:
- name: Check out software-layer repository
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Mount EESSI CernVM-FS repository
uses: eessi/github-action-eessi@v3
with:
eessi_stack_version: ${{matrix.eessi_version}}
use_eessi_module: true
- name: Set the installation path for EESSI-extend
run: |
# Configuration item used throughout this workflow:
# adjust this to change where EESSI-extend is (re)built and picked up from
echo "MY_INSTALLATION_PATH=/tmp/easybuild" >> "$GITHUB_ENV"
- name: Install the EESSI-extend shipped with the repository
run: |
# Define a function to check the values of environment variables
# and another that checks an environment does not contain environment
# variables matching a certain pattern
source .github/workflows/scripts/test_utils.sh
# Let's start from a clean slate (unload the EESSI module)
module --force purge
check_disallowed_env_prefix EESSI_ EESSI_MODULE_STICKY
check_disallowed_env_prefix EASYBUILD_
# Load the EESSI module
module load EESSI/${{matrix.eessi_version}}
check_disallowed_env_prefix EASYBUILD_
# Load EasyBuild to install EESSI-extend
module load EasyBuild
export EASYBUILD_PREFIX=$MY_INSTALLATION_PATH
eb EESSI-extend-easybuild.eb --rebuild
module unload EasyBuild
- name: Run tests for EESSI-extend in the CVMFS install scenario
run: |
source .github/workflows/scripts/test_utils.sh
init_eessi_environment --eessi-version ${{matrix.eessi_version}} --installation-path "$MY_INSTALLATION_PATH"
# Configure for CVMFS install
export EESSI_CVMFS_INSTALL=1
module load EESSI-extend/${{matrix.eessi_version}}-easybuild
echo $EBROOTEESSIMINEXTEND | grep $MY_INSTALLATION_PATH || { echo "ERROR: Installed version of EESSI-extend not picked up (loaded $EBROOTEESSIMINEXTEND)" >&2; exit 1; }
# check some common EasyBuild settings
check_env_var "EASYBUILD_READ_ONLY_INSTALLDIR" "1"
check_env_var "EASYBUILD_ALLOW_LOADED_MODULES" "EasyBuild,EESSI-extend"
check_env_var "EASYBUILD_SYSROOT" "$EESSI_EPREFIX"
check_env_var "EASYBUILD_HOOKS" "/cvmfs/software.eessi.io/versions/${{matrix.eessi_version}}/init/easybuild/eb_hooks.py"
check_env_var "EASYBUILD_RPATH" "1"
check_env_var "EASYBUILD_FILTER_ENV_VARS" "LD_LIBRARY_PATH"
# check some specific ones
check_env_var "EASYBUILD_INSTALLPATH" "$EESSI_SOFTWARE_PATH"
check_env_var "EASYBUILD_UMASK" "022"
# Check some things that are EasyBuild 5+ (available in all EESSI versions so should exist)
check_env_var "EASYBUILD_STRICT_RPATH_SANITY_CHECK" "1"
check_env_var "EASYBUILD_CUDA_SANITY_CHECK_ERROR_ON_FAILED_CHECKS" "1"
check_env_var "EASYBUILD_FAIL_ON_MOD_FILES_GCCCORE" "1"
check_env_var "EASYBUILD_LOCAL_VAR_NAMING_CHECK" "error"
# Check some EESSI version specific settings
if [[ "${{ matrix.eessi_version }}" != "2023.06" ]]; then
check_env_var "EASYBUILD_PREFER_PYTHON_SEARCH_PATH" "EBPYTHONPREFIXES"
check_env_var "EASYBUILD_MODULE_SEARCH_PATH_HEADERS" "include_paths"
check_env_var "EASYBUILD_SEARCH_PATH_CPP_HEADERS" "flags"
fi
# verify the configuration is actually valid
eb --show-config
# unload and check the environment is clean again
module unload EESSI-extend
check_disallowed_env_prefix EASYBUILD_
unset EESSI_CVMFS_INSTALL
- name: Run tests for EESSI-extend in the site install scenario
run: |
source .github/workflows/scripts/test_utils.sh
init_eessi_environment --eessi-version ${{matrix.eessi_version}} --installation-path "$MY_INSTALLATION_PATH"
# Configure for a site install
export EESSI_SITE_INSTALL=1
module load EESSI-extend/${{matrix.eessi_version}}-easybuild
# check some specific envvars
check_env_var "EASYBUILD_INSTALLPATH" "$EESSI_SITE_SOFTWARE_PATH"
check_env_var "EASYBUILD_UMASK" "022"
# verify the configuration is actually valid
eb --show-config
# unload and check the environment is clean again
module unload EESSI-extend
check_disallowed_env_prefix EASYBUILD_
unset EESSI_SITE_INSTALL
- name: Run tests for EESSI-extend in the project install scenario
run: |
source .github/workflows/scripts/test_utils.sh
init_eessi_environment --eessi-version ${{matrix.eessi_version}} --installation-path "$MY_INSTALLATION_PATH"
# Configure for a project install
export EESSI_PROJECT_INSTALL="$MY_INSTALLATION_PATH"
module load EESSI-extend/${{matrix.eessi_version}}-easybuild
# check some specific envvars
export EXPECTED_INSTALLATION_PATH="$MY_INSTALLATION_PATH/versions/$EESSI_VERSION/software/linux/$EESSI_SOFTWARE_SUBDIR"
check_env_var "EASYBUILD_INSTALLPATH" "$EXPECTED_INSTALLATION_PATH"
check_env_var "EASYBUILD_UMASK" "002"
check_env_var "EASYBUILD_GROUP_WRITABLE_INSTALLDIR" "1"
# verify the configuration is actually valid
eb --show-config
# unload and check the environment is clean again
module unload EESSI-extend
check_disallowed_env_prefix EASYBUILD_
unset EESSI_PROJECT_INSTALL
- name: Run tests for EESSI-extend in the user install scenario
run: |
source .github/workflows/scripts/test_utils.sh
init_eessi_environment --eessi-version ${{matrix.eessi_version}} --installation-path "$MY_INSTALLATION_PATH"
# Configure for a user install
export EESSI_USER_INSTALL="$MY_INSTALLATION_PATH/$USER"
mkdir -p $EESSI_USER_INSTALL # must exist
module load EESSI-extend/${{matrix.eessi_version}}-easybuild
# check some specific envvars
export EXPECTED_INSTALLATION_PATH="$MY_INSTALLATION_PATH/$USER/versions/$EESSI_VERSION/software/linux/$EESSI_SOFTWARE_SUBDIR"
check_env_var "EASYBUILD_INSTALLPATH" "$EXPECTED_INSTALLATION_PATH"
check_env_var "EASYBUILD_UMASK" "077"
# verify the configuration is actually valid
eb --show-config
# unload and check the environment is clean again
module unload EESSI-extend
check_disallowed_env_prefix EASYBUILD_
unset EESSI_USER_INSTALL
- name: Run tests for EESSI-extend in the EasyBuild hooks override scenario
run: |
source .github/workflows/scripts/test_utils.sh
init_eessi_environment --eessi-version ${{matrix.eessi_version}} --installation-path "$MY_INSTALLATION_PATH"
# Test overriding the EasyBuild hooks
export EESSI_EASYBUILD_HOOKS_OVERRIDE="$GITHUB_WORKSPACE/eb_hooks.py"
module load EESSI-extend/${{matrix.eessi_version}}-easybuild
check_env_var "EASYBUILD_HOOKS" "$EESSI_EASYBUILD_HOOKS_OVERRIDE"
module unload EESSI-extend
check_disallowed_env_prefix EASYBUILD_
unset EESSI_EASYBUILD_HOOKS_OVERRIDE
- name: Set accelerator target override environment variables for GPU tests
run: |
echo "STORED_EESSI_ACCELERATOR_TARGET_OVERRIDE=accel/nvidia/cc80" >> "$GITHUB_ENV"
echo "STORED_CUDA_CC=8.0" >> "$GITHUB_ENV"
- name: Run tests for EESSI-extend with accelerators in the CVMFS install scenario
run: |
source .github/workflows/scripts/test_utils.sh
init_eessi_environment --eessi-version ${{matrix.eessi_version}} \
--installation-path "$MY_INSTALLATION_PATH" \
--accelerator-target "$STORED_EESSI_ACCELERATOR_TARGET_OVERRIDE" \
--cuda-cc "$STORED_CUDA_CC"
# Configure for CVMFS install
export EESSI_CVMFS_INSTALL=1
module load EESSI-extend/${{matrix.eessi_version}}-easybuild
check_env_var "EASYBUILD_INSTALLPATH" "$EESSI_SOFTWARE_PATH" # installation path should be the same unless we ask for an explicit GPU installation
check_env_var "EESSI_ACCELERATOR_TARGET" "$STORED_EESSI_ACCELERATOR_TARGET_OVERRIDE"
check_env_var "EASYBUILD_CUDA_COMPUTE_CAPABILITIES" "$STORED_CUDA_CC"
module unload EESSI-extend
export EESSI_ACCELERATOR_INSTALL=1
module load EESSI-extend/${{matrix.eessi_version}}-easybuild # reload for an actual GPU installation
check_env_var "EASYBUILD_INSTALLPATH" "${EESSI_SOFTWARE_PATH}/${EESSI_ACCELERATOR_TARGET_OVERRIDE}"
check_env_var "EESSI_ACCELERATOR_TARGET" "$STORED_EESSI_ACCELERATOR_TARGET_OVERRIDE"
check_env_var "EASYBUILD_CUDA_COMPUTE_CAPABILITIES" "$STORED_CUDA_CC"
# unload and make sure the environment is clean again
module unload EESSI-extend
check_disallowed_env_prefix EASYBUILD_
unset EESSI_ACCELERATOR_INSTALL
unset EESSI_CVMFS_INSTALL
- name: Run tests for EESSI-extend with accelerators in the site install scenario
run: |
source .github/workflows/scripts/test_utils.sh
init_eessi_environment --eessi-version ${{matrix.eessi_version}} \
--installation-path "$MY_INSTALLATION_PATH" \
--accelerator-target "$STORED_EESSI_ACCELERATOR_TARGET_OVERRIDE" \
--cuda-cc "$STORED_CUDA_CC"
# Configure for a site install
export EESSI_SITE_INSTALL=1
module load EESSI-extend/${{matrix.eessi_version}}-easybuild
check_env_var "EASYBUILD_INSTALLPATH" "$EESSI_SITE_SOFTWARE_PATH" # installation path should be the same unless we ask for an explicit GPU installation
check_env_var "EESSI_ACCELERATOR_TARGET" "$STORED_EESSI_ACCELERATOR_TARGET_OVERRIDE"
check_env_var "EASYBUILD_CUDA_COMPUTE_CAPABILITIES" "$STORED_CUDA_CC"
module unload EESSI-extend
export EESSI_ACCELERATOR_INSTALL=1
module load EESSI-extend/${{matrix.eessi_version}}-easybuild # reload for an actual GPU installation
check_env_var "EASYBUILD_INSTALLPATH" "${EESSI_SITE_SOFTWARE_PATH}/${EESSI_ACCELERATOR_TARGET_OVERRIDE}"
check_env_var "EESSI_ACCELERATOR_TARGET" "$STORED_EESSI_ACCELERATOR_TARGET_OVERRIDE"
check_env_var "EASYBUILD_CUDA_COMPUTE_CAPABILITIES" "$STORED_CUDA_CC"
# unload and make sure the environment is clean again
module unload EESSI-extend
check_disallowed_env_prefix EASYBUILD_
unset EESSI_ACCELERATOR_INSTALL
unset EESSI_SITE_INSTALL
- name: Run tests for EESSI-extend with accelerators in the project install scenario
run: |
source .github/workflows/scripts/test_utils.sh
init_eessi_environment --eessi-version ${{matrix.eessi_version}} \
--installation-path "$MY_INSTALLATION_PATH" \
--accelerator-target "$STORED_EESSI_ACCELERATOR_TARGET_OVERRIDE" \
--cuda-cc "$STORED_CUDA_CC"
# Configure for a project install
export EESSI_PROJECT_INSTALL="$MY_INSTALLATION_PATH"
export EXPECTED_INSTALLATION_PATH="$MY_INSTALLATION_PATH/versions/$EESSI_VERSION/software/linux/$EESSI_SOFTWARE_SUBDIR"
module load EESSI-extend/${{matrix.eessi_version}}-easybuild
check_env_var "EASYBUILD_INSTALLPATH" "$EXPECTED_INSTALLATION_PATH" # installation path should be the same unless we ask for an explicit GPU installation
check_env_var "EESSI_ACCELERATOR_TARGET" "$STORED_EESSI_ACCELERATOR_TARGET_OVERRIDE"
check_env_var "EASYBUILD_CUDA_COMPUTE_CAPABILITIES" "$STORED_CUDA_CC"
module unload EESSI-extend
export EESSI_ACCELERATOR_INSTALL=1
module load EESSI-extend/${{matrix.eessi_version}}-easybuild # reload for an actual GPU installation
check_env_var "EASYBUILD_INSTALLPATH" "$EXPECTED_INSTALLATION_PATH" # installation path should be the same for project case
check_env_var "EESSI_ACCELERATOR_TARGET" "$STORED_EESSI_ACCELERATOR_TARGET_OVERRIDE"
check_env_var "EASYBUILD_CUDA_COMPUTE_CAPABILITIES" "$STORED_CUDA_CC"
# unload and make sure the environment is clean again
module unload EESSI-extend
check_disallowed_env_prefix EASYBUILD_
unset EESSI_ACCELERATOR_INSTALL
unset EESSI_PROJECT_INSTALL
- name: Run tests for EESSI-extend with accelerators in the user install scenario
run: |
source .github/workflows/scripts/test_utils.sh
init_eessi_environment --eessi-version ${{matrix.eessi_version}} \
--installation-path "$MY_INSTALLATION_PATH" \
--accelerator-target "$STORED_EESSI_ACCELERATOR_TARGET_OVERRIDE" \
--cuda-cc "$STORED_CUDA_CC"
# Configure for a user install
export EESSI_USER_INSTALL="$MY_INSTALLATION_PATH/$USER"
mkdir -p $EESSI_USER_INSTALL # must exist
module load EESSI-extend/${{matrix.eessi_version}}-easybuild
# check some specific envvars
export EXPECTED_INSTALLATION_PATH="$MY_INSTALLATION_PATH/$USER/versions/$EESSI_VERSION/software/linux/$EESSI_SOFTWARE_SUBDIR"
check_env_var "EASYBUILD_INSTALLPATH" "$EXPECTED_INSTALLATION_PATH" # installation path should be the same unless we ask for an explicit GPU installation
check_env_var "EESSI_ACCELERATOR_TARGET" "$STORED_EESSI_ACCELERATOR_TARGET_OVERRIDE"
check_env_var "EASYBUILD_CUDA_COMPUTE_CAPABILITIES" "$STORED_CUDA_CC"
module unload EESSI-extend
export EESSI_ACCELERATOR_INSTALL=1
module load EESSI-extend/${{matrix.eessi_version}}-easybuild # reload for an actual GPU installation
check_env_var "EASYBUILD_INSTALLPATH" "$EXPECTED_INSTALLATION_PATH" # installation path should be the same for user case
check_env_var "EESSI_ACCELERATOR_TARGET" "$STORED_EESSI_ACCELERATOR_TARGET_OVERRIDE"
check_env_var "EASYBUILD_CUDA_COMPUTE_CAPABILITIES" "$STORED_CUDA_CC"
# unload and make sure the environment is clean again
module unload EESSI-extend
check_disallowed_env_prefix EASYBUILD_
unset EESSI_ACCELERATOR_INSTALL
unset EESSI_USER_INSTALL
- name: Dryrun tests with hooks from github and hooks from the CVMFS repo
run: |
source .github/workflows/scripts/test_utils.sh
init_eessi_environment --eessi-version ${{matrix.eessi_version}} --installation-path "$MY_INSTALLATION_PATH"
module load EESSI-extend/${{matrix.eessi_version}}-easybuild
# Do a test rebuild (with default and local hooks)
echo "Testing a rebuild using the hooks shipped with EESSI"
eb --rebuild ${{matrix.rebuild_software}}
echo "Testing a rebuild using the hooks in the current branch"
eb --rebuild --hooks=./eb_hooks.py ${{matrix.rebuild_software}}
# unload and check the environment is clean again
module unload EESSI-extend
check_disallowed_env_prefix EASYBUILD_
- name: Verify the EESSI-extend module is consistent with the CVMFS repo
run: |
source .github/workflows/scripts/test_utils.sh
init_eessi_environment --eessi-version ${{matrix.eessi_version}} --installation-path "$MY_INSTALLATION_PATH"
# Verify we can run "module show" on the module
module show EESSI-extend/${{matrix.eessi_version}}-easybuild
# Now load it and run additional checks
module load EESSI-extend/${{matrix.eessi_version}}-easybuild
# First, check if it differs against what is currently shipped by CVMFS
diff <(grep -v '^local root = \|^-- Built with EasyBuild version' /cvmfs/software.eessi.io/versions/${{matrix.eessi_version}}/software/linux/$(uname -m)/generic/modules/all/EESSI-extend/${{matrix.eessi_version}}-easybuild.lua) <(grep -v '^local root = \|^-- Built with EasyBuild version' $MY_INSTALLATION_PATH/modules/all/EESSI-extend/${{matrix.eessi_version}}-easybuild.lua)
# Then do a consistency check in CVMFS for all architectures
.github/workflows/scripts/diff_eessi_extend.sh
# Proceed with unload and checking the environment variables
module unload EESSI-extend
# That should have unset all EasyBuild envvars (including EASYBUILD_PREFIX)
check_disallowed_env_prefix EASYBUILD_

Back | FazBrowse Home | New Git URL