-
Notifications
You must be signed in to change notification settings - Fork 772
Description
When I am installing software on our cluster, we are doing the build in Rocky-8.9 container and then we test using Alma-8.7. These tests are a simply sanity-check command like this:
$ eb --sanity-check-only --rebuild pybind11-2.13.6-GCC-14.2.0.eb
The --rebuild came from as the sanity check failed originally with:
ERROR: Shell command failed!
full command -> python -c 'import sys; print("%s.%s.%s" % sys.version_info[:3])'
exit code -> 127
called from -> 'det_python_version' function in /sw-eb/software/EasyBuild/5.1.1/lib/python3.6/site-packages/easybuild/easyblocks/generic/pythonpackage.py (line 81)
I, wrongly, assumed it tries to use the system-python, which is python3 and the single command python is not resolved. So I updated the container to Alma-8.9 and added a symlink from /usr/bin/python3 to /usr/bin/python`. Now the failure was like this:
== sanity checking...
>> running shell command:
None -c 'import pybind11; print(pybind11.get_include())'
Now that made even less sense, so I was digging a bit more. Outside a container, and that has been confirmed independently by @Thyre , I can reproduce the issue:
$ eb -d --sanity-check-only pybind11-2.13.6-GCC-14.2.0.eb
== Running parse hook for GCC-14.2.0.eb...
== Running parse hook for GCC-14.2.0.eb...
== Running parse hook for GCCcore-14.2.0.eb...
== Running parse hook for binutils-2.42-GCCcore-14.2.0.eb...
== Running parse hook for GCCcore-14.2.0.eb...
== Running parse hook for M4-1.4.19.eb...
== Running parse hook for binutils-2.42.eb...
== resolving dependencies
== processing EasyBuild easyconfig /sw-eb/software/EasyBuild/5.1.1/easybuild/easyconfigs/p/pybind11/pybind11-2.13.6-GCC-14.2.0.eb
== sanity checking...
∙∙∙ Installing pybind11/2.13.6-GCC-14.2.0: sanity checking (12 out of 17 steps done) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━╺━━━━━━━━━━━ 0:00:00
ERROR: Shell command failed!
full command -> python -c 'import sys; print("%s.%s.%s" % sys.version_info[:3])'
exit code -> 127
called from -> 'det_python_version' function in /sw-eb/software/EasyBuild/5.1.1/lib/python3.6/site-packages/easybuild/easyblocks/generic/pythonpackage.py (line 81)
working directory -> /rds/general/user/jsassman/home
output (stdout + stderr) -> /dev/shm/jsassman/eb-8j2bdc6f/run-shell-cmd-output/python-k7v775v5/out.txt
interactive shell script -> /dev/shm/jsassman/eb-8j2bdc6f/run-shell-cmd-output/python-k7v775v5/cmd.sh
with the content of out.txt:
/usr/bin/bash: python: command not found
and the content of cnd.sh
# Run this script to set up a shell environment that EasyBuild used to run the shell command
EB_SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
echo "# Shell for the command: '"'python -c '"'"'import sys; print("%s.%s.%s" % sys.version_info[:3])'"'"''"'"
echo "# Use command history, exit to stop"
bash --rcfile $EB_SCRIPT_DIR/env.sh -i "$@"
I have attached the env.sh file as env.txt
I got the feeling the Python-module is not loaded, as, when I was running the cmd.sh command from the failed build I got:
# Shell for the command: 'None -c 'import pybind11; print(pybind11.get_include())''
# Use command history, exit to stop
Apptainer> ml
Currently Loaded Modules:
1) EasyBuild/5.1.1 2) GCCcore/14.2.0 3) zlib/1.3.1-GCCcore-14.2.0 4) binutils/2.42-GCCcore-14.2.0 5) GCC/14.2.0 6) pybind11/2.13.6-GCC-14.2.0
Again, that was verified independently.
The really odd thing is: during the installation the same command is being used, and here it works.
Anybody got any ideas? That is with EasyBuild-5.1.1, EasyBuild-5.1.0, EasyBuild-5.0.0, and also EasyBuild-4.9.4, which I find surprising.