@@ -105,7 +105,8 @@ jobs:
105105 export EESSI_PROJECT_INSTALL="$MY_INSTALLATION_PATH"
106106 module load EESSI-extend/${{matrix.EESSI_VERSION}}-easybuild
107107 # check some specific envvars
108- check_env_var "EASYBUILD_INSTALLPATH" "$MY_INSTALLATION_PATH/versions/$EESSI_VERSION/software/linux/$EESSI_SOFTWARE_SUBDIR"
108+ export EXPECTED_INSTALLATION_PATH="$MY_INSTALLATION_PATH/versions/$EESSI_VERSION/software/linux/$EESSI_SOFTWARE_SUBDIR"
109+ check_env_var "EASYBUILD_INSTALLPATH" "$EXPECTED_INSTALLATION_PATH"
109110 check_env_var "EASYBUILD_UMASK" "002"
110111 check_env_var "EASYBUILD_GROUP_WRITABLE_INSTALLDIR" "1"
111112 # unload and check the environment is clean again
@@ -118,10 +119,92 @@ jobs:
118119 mkdir -p $EESSI_USER_INSTALL # must exist
119120 module load EESSI-extend/${{matrix.EESSI_VERSION}}-easybuild
120121 # check some specific envvars
121- check_env_var "EASYBUILD_INSTALLPATH" "$MY_INSTALLATION_PATH/$USER/versions/$EESSI_VERSION/software/linux/$EESSI_SOFTWARE_SUBDIR"
122+ export EXPECTED_INSTALLATION_PATH="$MY_INSTALLATION_PATH/$USER/versions/$EESSI_VERSION/software/linux/$EESSI_SOFTWARE_SUBDIR"
123+ check_env_var "EASYBUILD_INSTALLPATH" "$EXPECTED_INSTALLATION_PATH"
122124 check_env_var "EASYBUILD_UMASK" "077"
123125 # unload and check the environment is clean again
124126 module unload EESSI-extend
125127 check_disallowed_env_prefix EASYBUILD_
126128 unset EESSI_USER_INSTALL
127129
130+ - name : Run tests for EESSI-extend in the various GPU scenarios
131+ run : |
132+ export MY_INSTALLATION_PATH=/tmp/easybuild
133+
134+ # Define a function to check the values of environment variables
135+ # and another that checks an environment does not contain environment
136+ # variables matching a certain pattern
137+ source .github/workflows/scripts/test_utils.sh
138+
139+ # Set an environment variable to use when we want to target accelerators
140+ export STORED_EESSI_ACCELERATOR_TARGET_OVERRIDE="accel/nvidia/cc80"
141+ export STORED_CUDA_CC="8.0"
142+
143+ # Let's start from a clean slate
144+ module purge
145+ export EESSI_ACCELERATOR_TARGET_OVERRIDE=$STORED_EESSI_ACCELERATOR_TARGET_OVERRIDE
146+ module load EESSI/${{matrix.EESSI_VERSION}}
147+ # Access the installed EESSI-extend
148+ module use "$MY_INSTALLATION_PATH"/modules/all
149+ check_disallowed_env_prefix EASYBUILD_
150+
151+ # Configure for CVMFS install
152+ export EESSI_CVMFS_INSTALL=1
153+ module load EESSI-extend/${{matrix.EESSI_VERSION}}-easybuild
154+ check_env_var "EASYBUILD_INSTALLPATH" "$EESSI_SOFTWARE_PATH" # installation path should be the same unless we ask for an explicit GPU installation
155+ check_env_var "EASYBUILD_CUDA_COMPUTE_CAPABILITIES" "$STORED_CUDA_CC"
156+ export EESSI_ACCELERATOR_INSTALL=1
157+ module load EESSI-extend/${{matrix.EESSI_VERSION}}-easybuild # reload for an actual GPU installation
158+ check_env_var "EASYBUILD_INSTALLPATH" "${EESSI_SOFTWARE_PATH}/${EESSI_ACCELERATOR_TARGET_OVERRIDE}"
159+ # unload and make sure the environment is clean again
160+ module unload EESSI-extend
161+ check_disallowed_env_prefix EASYBUILD_
162+ unset EESSI_ACCELERATOR_INSTALL
163+ unset EESSI_CVMFS_INSTALL
164+
165+ # Now configure for a site
166+ export EESSI_SITE_INSTALL=1
167+ module load EESSI-extend/${{matrix.EESSI_VERSION}}-easybuild
168+ check_env_var "EASYBUILD_INSTALLPATH" "$EESSI_SITE_SOFTWARE_PATH" # installation path should be the same unless we ask for an explicit GPU installation
169+ check_env_var "EASYBUILD_CUDA_COMPUTE_CAPABILITIES" "$STORED_CUDA_CC"
170+ export EESSI_ACCELERATOR_INSTALL=1
171+ module load EESSI-extend/${{matrix.EESSI_VERSION}}-easybuild # reload for an actual GPU installation
172+ check_env_var "EASYBUILD_INSTALLPATH" "${EESSI_SITE_SOFTWARE_PATH}/${EESSI_ACCELERATOR_TARGET_OVERRIDE}"
173+ # unload and make sure the environment is clean again
174+ module unload EESSI-extend
175+ check_disallowed_env_prefix EASYBUILD_
176+ unset EESSI_ACCELERATOR_INSTALL
177+ unset EESSI_SITE_INSTALL
178+
179+ # Now for a project
180+ export EESSI_PROJECT_INSTALL="$MY_INSTALLATION_PATH"
181+ export EXPECTED_INSTALLATION_PATH="$MY_INSTALLATION_PATH/versions/$EESSI_VERSION/software/linux/$EESSI_SOFTWARE_SUBDIR"
182+ module load EESSI-extend/${{matrix.EESSI_VERSION}}-easybuild
183+ check_env_var "EASYBUILD_INSTALLPATH" "$EXPECTED_INSTALLATION_PATH" # installation path should be the same unless we ask for an explicit GPU installation
184+ check_env_var "EASYBUILD_CUDA_COMPUTE_CAPABILITIES" "$STORED_CUDA_CC"
185+ export EESSI_ACCELERATOR_INSTALL=1
186+ module load EESSI-extend/${{matrix.EESSI_VERSION}}-easybuild # reload for an GPU actual installation
187+ check_env_var "EASYBUILD_INSTALLPATH" "$EXPECTED_INSTALLATION_PATH" # installation path should be the same for project case
188+ # unload and make sure the environment is clean again
189+ module unload EESSI-extend
190+ check_disallowed_env_prefix EASYBUILD_
191+ unset EESSI_ACCELERATOR_INSTALL
192+ unset EESSI_PROJECT_INSTALL
193+
194+ # Now for a user
195+ export EESSI_USER_INSTALL="$MY_INSTALLATION_PATH/$USER"
196+ mkdir -p $EESSI_USER_INSTALL # must exist
197+ module load EESSI-extend/${{matrix.EESSI_VERSION}}-easybuild
198+ # check some specific envvars
199+ export EXPECTED_INSTALLATION_PATH="$MY_INSTALLATION_PATH/$USER/versions/$EESSI_VERSION/software/linux/$EESSI_SOFTWARE_SUBDIR"
200+ module load EESSI-extend/${{matrix.EESSI_VERSION}}-easybuild
201+ check_env_var "EASYBUILD_INSTALLPATH" "$EXPECTED_INSTALLATION_PATH" # installation path should be the same unless we ask for an explicit GPU installation
202+ check_env_var "EASYBUILD_CUDA_COMPUTE_CAPABILITIES" "$STORED_CUDA_CC"
203+ export EESSI_ACCELERATOR_INSTALL=1
204+ module load EESSI-extend/${{matrix.EESSI_VERSION}}-easybuild # reload for an actual GPU installation
205+ check_env_var "EASYBUILD_INSTALLPATH" "$EXPECTED_INSTALLATION_PATH" # installation path should be the same for user case
206+ # unload and make sure the environment is clean again
207+ module unload EESSI-extend
208+ check_disallowed_env_prefix EASYBUILD_
209+ unset EESSI_ACCELERATOR_INSTALL
210+ unset EESSI_USER_INSTALL
0 commit comments