Skip to content

Commit d7c62c3

Browse files
committed
Fix issues for locale, lesspipe and LD_LIBRARY_PATH in EESSI module
1 parent 0c6bf77 commit d7c62c3

File tree

2 files changed

+65
-1
lines changed

2 files changed

+65
-1
lines changed

.github/workflows/tests_eessi_module.yml

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ jobs:
115115
# EESSI_DEBUG_INIT/EESSI_ARCHDETECT_OPTIONS only relevant for Lmod init
116116
unset EESSI_DEBUG_INIT
117117
# Store all relevant environment variables
118-
env | grep -E '(^EESSI_|^LMOD_RC|^LMOD_PACKAGE_PATH|^MODULEPATH)' | grep -v EESSI_ARCHDETECT_OPTIONS | sort > "${moduleoutfile}"
118+
env | grep -E '(^EESSI_|^LMOD_RC|^LMOD_PACKAGE_PATH|^MODULEPATH)' | grep -v EESSI_ARCHDETECT_OPTIONS | grep -v EESSI_DEFAULT_HOST_LD_LIBRARY_PATH | sort > "${moduleoutfile}"
119119
module unload EESSI/${{matrix.EESSI_VERSION}}
120120
121121
# We should only have two EESSI_* variables defined (which set the overrides)
@@ -315,3 +315,42 @@ jobs:
315315
module load "EESSI/${{matrix.EESSI_VERSION}}"
316316
GREP_PATTERN="Lmod is automatically replacing \"EESSI/${{matrix.EESSI_VERSION}}\" with \"${LOCAL_STACK_NAME}/${LOCAL_STACK_VERSION}\"."
317317
module load "${LOCAL_STACK_NAME}/${LOCAL_STACK_VERSION}" |& grep "${GREP_PATTERN}"
318+
319+
check_ld_library_path_eessi_module:
320+
runs-on: ubuntu-24.04
321+
strategy:
322+
fail-fast: false
323+
matrix:
324+
EESSI_VERSION:
325+
- '2023.06'
326+
- '2025.06'
327+
328+
steps:
329+
- name: Check out software-layer repository
330+
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
331+
332+
- name: Mount EESSI CernVM-FS repository
333+
uses: cvmfs-contrib/github-action-cvmfs@55899ca74cf78ab874bdf47f5a804e47c198743c # v4.0
334+
with:
335+
cvmfs_config_package: https://github.com/EESSI/filesystem-layer/releases/download/latest/cvmfs-config-eessi_latest_all.deb
336+
cvmfs_http_proxy: DIRECT
337+
cvmfs_repositories: software.eessi.io
338+
339+
- name: Make sure we are filtering LD_LIBRARY_PATH if necessary
340+
run: |
341+
# Initialise Lmod
342+
. /cvmfs/software.eessi.io/versions/${{matrix.EESSI_VERSION}}/compat/linux/$(uname -m)/usr/share/Lmod/init/bash
343+
344+
# Make sure we are using the EESSI module file from the repository
345+
export MODULEPATH=init/modules
346+
347+
# Create LD_LIBRARY_PATH to test with
348+
export FAKE_PATH=/path/does/not/exist
349+
export INITIAL_LD_LIBRARY_PATH="/usr/lib:$FAKE_PATH"
350+
export LD_LIBRARY_PATH="$INITIAL_LD_LIBRARY_PATH"
351+
module load "EESSI/${{matrix.EESSI_VERSION}}"
352+
# Check we have a sanitised LD_LIBRARY_PATH
353+
[ "$LD_LIBRARY_PATH" = "$FAKE_PATH" ] || (echo "LD_LIBRARY_PATH is not $FAKE_PATH but $LD_LIBRARY_PATH" && exit 1)
354+
# Make sure things are back as we expect afterwards
355+
module purge
356+
[ "$LD_LIBRARY_PATH" = "$INITIAL_LD_LIBRARY__PATH" ] || (echo "LD_LIBRARY_PATH is not $INITIAL_LD_LIBRARY_PATH but $LD_LIBRARY_PATH" && exit 1)

init/modules/EESSI/2023.06.lua

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,31 @@ if os.getenv("EESSI_MODULE_STICKY") then
210210
load_message = load_message .. " (requires '--force' option to unload or purge)"
211211
end
212212

213+
-- make sure we are using a known locale
214+
pushenv ("LANG", "C.utf8")
215+
pushenv ("LC_ALL", "C.utf8")
216+
pushenv ("LC_CTYPE", "C.utf8")
217+
pushenv ("LC_MESSAGES", "C.utf8")
218+
219+
-- avoid lesspipe problems on Debian system
220+
pushenv ("LESSOPEN", "")
221+
222+
-- Filter system paths from LD_LIBRARY_PATH
223+
-- Needs to be reversible so first make a copy
224+
append_path ("EESSI_DEFAULT_HOST_LD_LIBRARY_PATH", os.getenv("LD_LIBRARY_PATH") or "")
225+
-- on unload the variable will no longer exist
226+
if mode() == "load" then
227+
-- remove any standard paths
228+
remove_path ("EESSI_DEFAULT_HOST_LD_LIBRARY_PATH", "/lib")
229+
remove_path ("EESSI_DEFAULT_HOST_LD_LIBRARY_PATH", "/lib64")
230+
remove_path ("EESSI_DEFAULT_HOST_LD_LIBRARY_PATH", "/usr/lib")
231+
remove_path ("EESSI_DEFAULT_HOST_LD_LIBRARY_PATH", "/usr/lib64")
232+
remove_path ("EESSI_DEFAULT_HOST_LD_LIBRARY_PATH", "/usr/local/lib")
233+
remove_path ("EESSI_DEFAULT_HOST_LD_LIBRARY_PATH", "/usr/local/lib64")
234+
end
235+
-- now we can use pushenv to retain/restore the original value
236+
pushenv ("LD_LIBRARY_PATH", os.getenv("EESSI_DEFAULT_HOST_LD_LIBRARY_PATH") or "")
237+
213238
if mode() == "load" then
214239
LmodMessage(load_message)
215240
end

0 commit comments

Comments
 (0)