Skip to content

pybind11-2.13.6-GCC-14.2.0 sanity check command failed #23543

@sassy-crick

Description

@sassy-crick

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions