Skip to content

Conversation

@Crivella
Copy link
Contributor

@Crivella Crivella commented Oct 7, 2025

The EB attempts to run the clang sanity check on sysroot builds even if clang is not being build (form -minimal builds).
Thanks @bedroge for reporting this.

Fixes

  • Compilation test for the dynamic-linker is ran only in case clang is being built
  • Minor fix to allow properly working with --sanity-check-only and --module-only

@Crivella
Copy link
Contributor Author

Crivella commented Oct 7, 2025

@boegelbot please test @ jsc-zen3
EB_ARGS="LVM-18.1.8-GCCcore-13.3.0-minimal.eb LVM-18.1.8-GCCcore-13.3.0.eb --installpath /tmp/$USER/ebpr-3952"
CORE_CNT=16

@Crivella Crivella requested a review from bedroge October 7, 2025 14:33
@bedroge
Copy link
Contributor

bedroge commented Oct 7, 2025

EB_ARGS="LVM-18.1.8-GCCcore-13.3.0-minimal.eb LVM-18.1.8-GCCcore-13.3.0.eb --installpath /tmp/$USER/ebpr-3952" CORE_CNT=16

@Crivella there's a typo in the easyconfig names here (LVM).

I'll give this a try in EESSI/software-layer-scripts#103.

@Crivella
Copy link
Contributor Author

Crivella commented Oct 7, 2025

@boegelbot please test @ jsc-zen3
EB_ARGS="LLVM-18.1.8-GCCcore-13.3.0-minimal.eb LVM-18.1.8-GCCcore-13.3.0.eb --installpath /tmp/$USER/ebpr-3952"
CORE_CNT=16

@Crivella
Copy link
Contributor Author

Crivella commented Oct 7, 2025

Thanks hope the bot gets only the last one, also running a rebuild of minimal on my machine

@boegelbot
Copy link

@Crivella: Request for testing this PR well received on jsczen3l1.int.jsc-zen3.fz-juelich.de

PR test command 'if [[ develop != 'develop' ]]; then EB_BRANCH=develop ./easybuild_develop.sh 2> /dev/null 1>&2; EB_PREFIX=/home/boegelbot/easybuild/develop source init_env_easybuild_develop.sh; fi; EB_PR=3952 EB_ARGS="LLVM-18.1.8-GCCcore-13.3.0-minimal.eb LVM-18.1.8-GCCcore-13.3.0.eb --installpath /tmp/$USER/ebpr-3952" EB_CONTAINER= EB_REPO=easybuild-easyblocks EB_BRANCH=develop /opt/software/slurm/bin/sbatch --job-name test_PR_3952 --ntasks="16" ~/boegelbot/eb_from_pr_upload_jsc-zen3.sh' executed!

  • exit code: 0
  • output:
Submitted batch job 8192

Test results coming soon (I hope)...

Details

- notification for comment with ID 3377230098 processed

Message to humans: this is just bookkeeping information for me,
it is of no use to you (unless you think I have a bug, which I don't).

@Crivella
Copy link
Contributor Author

Crivella commented Oct 7, 2025

Test report by @Crivella

Overview of tested easyconfigs (in order)

Build succeeded for 0 out of 1 (1 easyconfigs in total)
crivella-desktop - Linux Ubuntu 22.04.5 LTS (Jammy Jellyfish), x86_64, 13th Gen Intel(R) Core(TM) i9-13900K (skylake), Python 3.11.13
See https://gist.github.com/Crivella/97fdadf5c004eadb71549fc8312b99db for a full test report.

Notes

All tests failed in failed_to_discover_tests_from_gtest
I will redo an upload with a --sysroot=/ --module-only once i finish rebuilding without sysroot (not sure it is worth fixing those failing tests in this PR)

@bedroge
Copy link
Contributor

bedroge commented Oct 7, 2025

The LLVM build in EESSI/software-layer-scripts#103 succeeded:

== sanity checking...
  >> loading modules: LLVM/18.1.8-GCCcore-13.3.0-minimal...
  >> file 'lib/libLLVM.so' found: OK
  >> (non-empty) directory 'include/llvm' found: OK
  >> (non-empty) directory 'include/llvm-c' found: OK
  >> (non-empty) directory 'lib/cmake/llvm' found: OK
  >> running command 'llvm-ar --help' ...
  >> result for command 'llvm-ar --help': OK
  >> running command 'llvm-ranlib --help' ...
  >> result for command 'llvm-ranlib --help': OK
  >> running command 'llvm-nm --help' ...
  >> result for command 'llvm-nm --help': OK
  >> running command 'llvm-objdump --help' ...
  >> result for command 'llvm-objdump --help': OK
  >> running command 'cd /tmp/eb-osnj5_j9/eb-wwdb7ib6/tmp0_mhbff5 && g++ minimal.cpp -o minimal_cpp $(llvm-config --link-static --system-libs all)' ...
  >> result for command 'cd /tmp/eb-osnj5_j9/eb-wwdb7ib6/tmp0_mhbff5 && g++ minimal.cpp -o minimal_cpp $(llvm-config --link-static --system-libs all)': OK
== ... (took 16 secs)
== cleaning up...
== ... (took 3 secs)
== creating module...
== Running pre-module hook...
  >> generating module file @ /cvmfs/software.eessi.io/versions/2025.06/software/linux/aarch64/nvidia/grace/modules/all/LLVM/18.1.8-GCCcore-13.3.0-minimal.lua
== Running post-module hook...
== ... (took < 1 sec)
== permissions...
== ... (took < 1 sec)
== packaging...
== ... (took < 1 sec)
  >> running shell command:
        bzip2 /cvmfs/software.eessi.io/versions/2025.06/software/linux/aarch64/nvidia/grace/software/LLVM/18.1.8-GCCcore-13.3.0-minimal/easybuild/easybuild-LLVM-18.1.8-20251007.165821.log
        [started at: 2025-10-07 16:58:21]
        [working dir: /eessi_bot_job]
        [output and state saved to /tmp/eb-osnj5_j9/eb-wwdb7ib6/run-shell-cmd-output/bzip2-4gh0i78v]
  >> command completed: exit 0, ran in 00h00m01s
== COMPLETED: Installation ended successfully (took 14 mins 8 secs)

@Crivella
Copy link
Contributor Author

Crivella commented Oct 7, 2025

--module-only without sysroot

Test report by @Crivella

Overview of tested easyconfigs (in order)

  • SUCCESS LLVM-18.1.8-GCCcore-13.3.0-minimal.eb

Build succeeded for 1 out of 1 (1 easyconfigs in total)
crivella-desktop - Linux Ubuntu 22.04.5 LTS (Jammy Jellyfish), x86_64, 13th Gen Intel(R) Core(TM) i9-13900K (skylake), Python 3.11.13
See https://gist.github.com/Crivella/36e1525e8153b15a339e6a9001ec0c4e for a full test report.

@Crivella
Copy link
Contributor Author

Crivella commented Oct 7, 2025

--module-only with sysroot

Test report by @Crivella

Overview of tested easyconfigs (in order)

  • SUCCESS LLVM-18.1.8-GCCcore-13.3.0-minimal.eb

Build succeeded for 1 out of 1 (1 easyconfigs in total)
crivella-desktop - Linux Ubuntu 22.04.5 LTS (Jammy Jellyfish), x86_64, 13th Gen Intel(R) Core(TM) i9-13900K (skylake), Python 3.11.13
See https://gist.github.com/Crivella/08acf18e624dec1a3dec748d7d48a074 for a full test report.

--sanity-check-only without this PR

*but with the changes to allow --sanity-check-only to work from c1c31c5

Without sysroot

(easybuild-dev) crivella@crivella-desktop:~$ eb LLVM-18.1.8-GCCcore-13.3.0-minimal.eb  --sanity-check-only
== Temporary log file in case of crash /home/crivella/.local/easybuild/logs/easybuild-jj68xzq3.log

WARNING: Index for /home/crivella/Documents/GIT/easybuild-easyconfigs/easybuild/easyconfigs is no longer valid (too old), so ignoring it...


WARNING: Index for /home/crivella/Documents/GIT/easybuild-easyconfigs/easybuild/easyconfigs is no longer valid (too old), so ignoring it...

== processing EasyBuild easyconfig /home/crivella/Documents/GIT/easybuild-easyconfigs/easybuild/easyconfigs/l/LLVM/LLVM-18.1.8-GCCcore-13.3.0-minimal.eb
== building and installing LLVM/18.1.8-GCCcore-13.3.0-minimal...
  >> installation prefix: /home/crivella/.local/easybuild/software/LLVM/18.1.8-GCCcore-13.3.0-minimal
== fetching files and verifying checksums [skipped]
== creating build dir, resetting environment [skipped]
== unpacking [skipped]
== patching [skipped]
== preparing [skipped]
== configuring [skipped]
== building [skipped]
== testing [skipped]
== installing [skipped]
== taking care of extensions [skipped]
== restore after iterating [skipped]
== postprocessing [skipped]
== sanity checking...
  >> file 'lib/libLLVM.so' found: OK
  >> (non-empty) directory 'include/llvm' found: OK
  >> (non-empty) directory 'include/llvm-c' found: OK
  >> (non-empty) directory 'lib/cmake/llvm' found: OK
  >> loading modules: binutils/2.42-GCCcore-13.3.0, LLVM/18.1.8-GCCcore-13.3.0-minimal...
  >> running command 'llvm-ar --help' ...
  >> result for command 'llvm-ar --help': OK
  >> running command 'llvm-ranlib --help' ...
  >> result for command 'llvm-ranlib --help': OK
  >> running command 'llvm-nm --help' ...
  >> result for command 'llvm-nm --help': OK
  >> running command 'llvm-objdump --help' ...
  >> result for command 'llvm-objdump --help': OK
  >> running command 'cd /tmp/eb-7ch9xst3/tmpn0sbc_lq && g++ minimal.cpp -o minimal_cpp $(llvm-config --link-static --system-libs all)' ...
  >> result for command 'cd /tmp/eb-7ch9xst3/tmpn0sbc_lq && g++ minimal.cpp -o minimal_cpp $(llvm-config --link-static --system-libs all)': OK
== ... (took < 1 sec)
== cleaning up [skipped]
== creating module [skipped]
== permissions [skipped]
== packaging [skipped]
== COMPLETED: Installation ended successfully (took 0 secs)
== Results of the build can be found in the log file(s) /home/crivella/.local/easybuild/logs/easybuild-LLVM-18.1.8-20251007.172537.OAjzy.log
== Build succeeded for 1 out of 1
== Summary:
   * [SUCCESS] LLVM/18.1.8-GCCcore-13.3.0-minimal
== Temporary log file(s) /home/crivella/.local/easybuild/logs/easybuild-jj68xzq3.log* have been removed.

With sysroot

(easybuild-dev) crivella@crivella-desktop:~$ eb LLVM-18.1.8-GCCcore-13.3.0-minimal.eb  --sanity-check-only --sysroot=/
== Temporary log file in case of crash /home/crivella/.local/easybuild/logs/easybuild-22c0n61a.log

WARNING: Index for /home/crivella/Documents/GIT/easybuild-easyconfigs/easybuild/easyconfigs is no longer valid (too old), so ignoring it...


WARNING: Index for /home/crivella/Documents/GIT/easybuild-easyconfigs/easybuild/easyconfigs is no longer valid (too old), so ignoring it...

== processing EasyBuild easyconfig /home/crivella/Documents/GIT/easybuild-easyconfigs/easybuild/easyconfigs/l/LLVM/LLVM-18.1.8-GCCcore-13.3.0-minimal.eb
== building and installing LLVM/18.1.8-GCCcore-13.3.0-minimal...
  >> installation prefix: /home/crivella/.local/easybuild/software/LLVM/18.1.8-GCCcore-13.3.0-minimal
== fetching files and verifying checksums [skipped]
== creating build dir, resetting environment [skipped]
== unpacking [skipped]
== patching [skipped]
== preparing [skipped]
== configuring [skipped]
== building [skipped]
== testing [skipped]
== installing [skipped]
== taking care of extensions [skipped]
== restore after iterating [skipped]
== postprocessing [skipped]
== sanity checking...
  >> running shell command:
	/home/crivella/.local/easybuild/software/LLVM/18.1.8-GCCcore-13.3.0-minimal/bin/clang -o test123.o -c test123.c
	[started at: 2025-10-07 17:23:49]
	[working dir: /home/crivella]
	[output and state saved to /tmp/eb-m4cwfvdq/run-shell-cmd-output/clang-och8gzn5]

ERROR: Shell command failed!
    full command              ->  /home/crivella/.local/easybuild/software/LLVM/18.1.8-GCCcore-13.3.0-minimal/bin/clang -o test123.o -c test123.c
    exit code                 ->  127
    called from               ->  '_sanity_check_dynamic_linker' function in /home/crivella/Documents/GIT/easybuild-easyblocks/easybuild/easyblocks/l/llvm.py (line 1500)
    working directory         ->  /home/crivella
    output (stdout + stderr)  ->  /tmp/eb-m4cwfvdq/run-shell-cmd-output/clang-och8gzn5/out.txt
    interactive shell script  ->  /tmp/eb-m4cwfvdq/run-shell-cmd-output/clang-och8gzn5/cmd.sh

== ... (took < 1 sec)
== FAILED: Installation ended unsuccessfully: shell command 'clang ...' failed with exit code 127 in sanitycheck step for LLVM-18.1.8-GCCcore-13.3.0-minimal.eb (took 0 secs)

@Crivella Crivella added this to the next release (5.2.0?) milestone Oct 7, 2025
Copy link
Contributor

@bedroge bedroge left a comment

Choose a reason for hiding this comment

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

Lgtm

@bedroge bedroge merged commit 2e5a227 into easybuilders:develop Oct 7, 2025
17 checks passed
@boegel boegel changed the title LLVM: Run dynamic linker check only if clang is being built tweak LLVM easyblock to only run dynamic linker check if clang is being built Oct 8, 2025
@Crivella Crivella deleted the fix-LLVM_sysroot_sanity branch October 8, 2025 08:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants