Skip to content
Merged
79 changes: 56 additions & 23 deletions .github/workflows/tests_eessi_extend_module.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,20 @@ jobs:
strategy:
fail-fast: false
matrix:
EESSI_VERSION:
- '2023.06'
- '2025.06'
include:
- eessi_version: '2023.06'
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I modified this as I think someone may confuse that setting this sets the environment variable EESSI_VERSION (which it does not)

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}}
eessi_stack_version: ${{matrix.eessi_version}}
use_eessi_module: true

- name: Install the EESSI-extend shipped with the repository
Expand All @@ -38,7 +41,7 @@ jobs:
check_disallowed_env_prefix EASYBUILD_

# Load the EESSI module
module load EESSI/${{matrix.EESSI_VERSION}}
module load EESSI/${{matrix.eessi_version}}
check_disallowed_env_prefix EASYBUILD_

# Load EasyBuild to install EESSI-extend
Expand All @@ -50,8 +53,14 @@ jobs:

# Verify that we can pick the installed version up
module use $MY_INSTALLATION_PATH/modules/all
module load EESSI-extend/${{matrix.EESSI_VERSION}}-easybuild
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; }
# 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}}
# 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_
Expand All @@ -68,19 +77,20 @@ jobs:

# Let's start from a clean slate
module --force purge
module load EESSI/${{matrix.EESSI_VERSION}}
module load EESSI/${{matrix.eessi_version}}
# Access the installed EESSI-extend
module use "$MY_INSTALLATION_PATH"/modules/all
check_disallowed_env_prefix EASYBUILD_

# Configure for CVMFS install
echo "Checking EESSI-extend CVMFS install"
export EESSI_CVMFS_INSTALL=1
module load EESSI-extend/${{matrix.EESSI_VERSION}}-easybuild
module load EESSI-extend/${{matrix.eessi_version}}-easybuild
# 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_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
Expand All @@ -92,7 +102,7 @@ jobs:
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
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"
Expand All @@ -105,8 +115,9 @@ jobs:
unset EESSI_CVMFS_INSTALL

# Now configure for a site
echo "Checking EESSI-extend site install"
export EESSI_SITE_INSTALL=1
module load EESSI-extend/${{matrix.EESSI_VERSION}}-easybuild
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"
Expand All @@ -118,8 +129,9 @@ jobs:
unset EESSI_SITE_INSTALL

# Now for a project
echo "Checking EESSI-extend project install"
export EESSI_PROJECT_INSTALL="$MY_INSTALLATION_PATH"
module load EESSI-extend/${{matrix.EESSI_VERSION}}-easybuild
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"
Expand All @@ -133,9 +145,10 @@ jobs:
unset EESSI_PROJECT_INSTALL

# Now for a user
echo "Checking EESSI-extend 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
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"
Expand Down Expand Up @@ -163,66 +176,86 @@ jobs:
# Let's start from a clean slate
module --force purge
export EESSI_ACCELERATOR_TARGET_OVERRIDE=$STORED_EESSI_ACCELERATOR_TARGET_OVERRIDE
module load EESSI/${{matrix.EESSI_VERSION}}
module load EESSI/${{matrix.eessi_version}}
# Access the installed EESSI-extend
module use "$MY_INSTALLATION_PATH"/modules/all
check_disallowed_env_prefix EASYBUILD_

# Configure for CVMFS install
echo "Checking EESSI-extend CVMFS install"
export EESSI_CVMFS_INSTALL=1
module load EESSI-extend/${{matrix.EESSI_VERSION}}-easybuild
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
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

# Now configure for a site
echo "Checking EESSI-extend site install"
export EESSI_SITE_INSTALL=1
module load EESSI-extend/${{matrix.EESSI_VERSION}}-easybuild
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
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

# Now for a project
echo "Checking EESSI-extend 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
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 GPU actual installation
module load EESSI-extend/${{matrix.eessi_version}}-easybuild # reload for an GPU actual 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

# Now for a user
echo "Checking EESSI-extend 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
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"
module load EESSI-extend/${{matrix.EESSI_VERSION}}-easybuild
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
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_
Expand Down
Loading