Skip to content

enhance custom easyblock for LLVM: ensure sysroot dynamic linker is used + add ignore patterns for failing tests that can be ignored #3741

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 28 commits into from
Jun 7, 2025

Conversation

Crivella
Copy link
Contributor

@Crivella Crivella commented May 28, 2025

This PR changes the following in the LLVM EasyBlock behavior:

  • If the sysroot buildoption is set will now attempt to find a dynamic linker under that path (by globbing for sysroot/**/ld-*.so*') that is a real file and not a link
    • If not found a warning is given that the system dynamic linker is being used (Should we raise an error instead?)
  • When creating compiler configuration files,:
    • If the dynamic linker was identified, add a -Wl,-dynamic-linker option pointing to the found path
    • If not in a full_llvm build and with. If GCCcore is defined but not in the LIBRARY_PATH add a -L/path/to/gcccore/libs option to the config file. This is needed as some tests will fail for not finding GCCcore core libraries like gcc_s during compilation. Is this too aggressive?
  • Configuration files are preemptively created also in the build stage directory to allow runtimes ELFs to also point to the correct dynamic linker. If this is not done the clang produced during the project step, used to compile the runtimes is unaware of the correct dynamic linker and will default to the system one

This is a fix for:

@Crivella Crivella force-pushed the fix-LLVM-dynlink branch from b83dff7 to f6d7df2 Compare May 28, 2025 19:42
Co-authored-by: ocaisa <alan.ocais@cecam.org>
@Crivella
Copy link
Contributor Author

Will probably also need to enforce using the proper dynamic linker also in between the projects->runtimes otherwise the ELF produced are gonna have the incorrect linker

@Crivella Crivella linked an issue Jun 2, 2025 that may be closed by this pull request
@Crivella
Copy link
Contributor Author

Crivella commented Jun 3, 2025

To discuss

Right now to enforce the correct libstdc++ (from GCCcore and not the compat layer) is used, the Easyblock is adding the path to LD_LIBRARY_PATH before running the tests (currently testing)

It might be worth to enforce that clang/flang always enforces RPATHing to the correct libgcc_s.so and libstdc++.so paths by adding

-Wl,-rpath=${EBROOTGCCCORE}/lib64`

to the .cfg files (right now we are already adding -L${EBROOTGCCCORE}/lib64) to go around the fact that the GCCcore module in EESSI is not updating the LIBRARY_PATH

@Thyre
Copy link
Contributor

Thyre commented Jun 3, 2025

To discuss

Right now to enforce the correct libstdc++ (from GCCcore and not the compat layer) is used, the Easyblock is adding the path to LD_LIBRARY_PATH before running the tests (currently testing)

It might be worth to enforce that clang/flang always enforces RPATHing to the correct libgcc_s.so and libstdc++.so paths by adding

-Wl,-rpath=${EBROOTGCCCORE}/lib64`

to the .cfg files (right now we are already adding -L${EBROOTGCCCORE}/lib64) to go around the fact that the GCCcore module in EESSI is not updating the LIBRARY_PATH

Just for further reference, LLVM has a section about building with a "modern" C++ toolchain:
https://llvm.org/docs/GettingStarted.html#getting-a-modern-host-c-toolchain

I think some parts could apply here as well, even though they're specifically talking about the LLVM binaries.

@Crivella
Copy link
Contributor Author

Crivella commented Jun 4, 2025

Further failures in the compiler-rt tests are due to the COMPILER_RT_HAS_NO_DEFAULT_CONFIG_FLAG being recognized as allowed

https://github.com/llvm/llvm-project/blob/ac42923c2defe51fcc9220f68d50b33b5e872933/compiler-rt/CMakeLists.txt#L49-L61

This causes the default configuration files to be ignored SILENTLY (through an environment variable) during tests.
This was causing several (~400) tests to fail due to the incorrect dynamic linker being set, ending up picking the wrong libc (system one instead of the sysroot one)

We can probably either force setting that flag in the CMakeLists.txt or remove the lines

https://github.com/llvm/llvm-project/blob/ac42923c2defe51fcc9220f68d50b33b5e872933/compiler-rt/test/lit.common.cfg.py#L1021-L1030

It should be investigated if the failures in the sanitizers for the build bot could've been related to this same problem (could've ended up not using the correct --gcc-install-dir) by trying to recompile the now merged ECs by re-enabling the sanitizers tests + this EasyBlock PR

Possible downsides

  • User/System configuration files could be picked up before the clang.cfg and clang++.cfg next to the compiler in canse present on the system
    • Possibly mitigated by enforcing CLANG_CONFIG_FILE_USER_DIR and CLANG_CONFIG_FILE_SYSTEM_DIR

https://clang.llvm.org/docs/UsersManual.html#configuration-files

PS:

This behavior is also used for other tests on clang and clang-tools-extras but no failures was encountered there

@Crivella
Copy link
Contributor Author

Crivella commented Jun 4, 2025

Manual test report 20.1.5 (SUCCESS)

https://gist.github.com/Crivella/70f58a5d496e2aa79fa0ecafc49676f0

The hooks in the command are from

**Test results**
Testing Time: 1525.60s

Total Discovered Tests: 140047
  Skipped          :     25 (0.02%)
  Unsupported      :   5505 (3.93%)
  Passed           : 134217 (95.84%)
  Expectedly Failed:    277 (0.20%)
  Failed           :     23 (0.02%)
make[3]: *** [CMakeFiles/check-all.dir/build.make:74: CMakeFiles/check-all] Error 1
make[3]: Leaving directory '/tmp/crivella/easybuild/build/LLVM/20.1.5/GCCcore-13.2.0/llvm.obj.3'
make[2]: *** [CMakeFiles/Makefile2:35240: CMakeFiles/check-all.dir/all] Error 2
make[2]: Leaving directory '/tmp/crivella/easybuild/build/LLVM/20.1.5/GCCcore-13.2.0/llvm.obj.3'
make[1]: *** [CMakeFiles/Makefile2:35247: CMakeFiles/check-all.dir/rule] Error 2
make[1]: Leaving directory '/tmp/crivella/easybuild/build/LLVM/20.1.5/GCCcore-13.2.0/llvm.obj.3'
make: *** [Makefile:218: check-all] Error 2

== 2025-06-04 19:17:42,034 environment.py:93 INFO Environment variable PATH set to /tmp/eb-pigr0ryd/tmp948sh4t3/rpath_wrappers/ld.bfd_wrapper:/tmp/eb-pigr0ryd/tmp948sh4t3/rpath_wrappers/ld.gold_wrapper:/tmp/eb-pigr0ryd/tmp948sh4t3/rpath_wrappers/ld_wrapper:/tmp/eb-pigr0ryd/tmp948sh4t3/rpath_wrappers/gfortran_wrapper:/tmp/eb-pigr0ryd/tmp948sh4t3/rpath_wrappers/gxx_wrapper:/tmp/eb-pigr0ryd/tmp948sh4t3/rpath_wrappers/gcc_wrapper:/home/crivella/eessi/versions/2023.06/software/linux/x86_64/intel/haswell/software/Z3/4.13.0-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/intel/haswell/software/libxml2/2.11.5-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/intel/haswell/software/git/2.42.0-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/intel/haswell/software/Perl/5.38.0-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/intel/haswell/software/expat/2.5.0-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/intel/haswell/software/lit/18.1.7-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/intel/haswell/software/CMake/3.27.6-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/intel/haswell/software/libarchive/3.7.2-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/intel/haswell/software/cURL/8.3.0-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/intel/haswell/software/Python/3.11.5-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/intel/haswell/software/OpenSSL/1.1/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/intel/haswell/software/SQLite/3.43.1-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/intel/haswell/software/Tcl/8.6.13-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/intel/haswell/software/GCCcore/13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/intel/haswell/software/EasyBuild/5.1.0/bin:/cvmfs/software.eessi.io/versions/2023.06/compat/linux/x86_64/usr/bin:/cvmfs/software.eessi.io/versions/2023.06/compat/linux/x86_64/bin:/home/crivella/.local/bin:/home/crivella/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin (previous value: '/tmp/crivella/easybuild/build/LLVM/20.1.5/GCCcore-13.2.0/llvm.obj.3/bin:/tmp/eb-pigr0ryd/tmp948sh4t3/rpath_wrappers/ld.bfd_wrapper:/tmp/eb-pigr0ryd/tmp948sh4t3/rpath_wrappers/ld.gold_wrapper:/tmp/eb-pigr0ryd/tmp948sh4t3/rpath_wrappers/ld_wrapper:/tmp/eb-pigr0ryd/tmp948sh4t3/rpath_wrappers/gfortran_wrapper:/tmp/eb-pigr0ryd/tmp948sh4t3/rpath_wrappers/gxx_wrapper:/tmp/eb-pigr0ryd/tmp948sh4t3/rpath_wrappers/gcc_wrapper:/home/crivella/eessi/versions/2023.06/software/linux/x86_64/intel/haswell/software/Z3/4.13.0-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/intel/haswell/software/libxml2/2.11.5-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/intel/haswell/software/git/2.42.0-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/intel/haswell/software/Perl/5.38.0-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/intel/haswell/software/expat/2.5.0-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/intel/haswell/software/lit/18.1.7-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/intel/haswell/software/CMake/3.27.6-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/intel/haswell/software/libarchive/3.7.2-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/intel/haswell/software/cURL/8.3.0-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/intel/haswell/software/Python/3.11.5-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/intel/haswell/software/OpenSSL/1.1/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/intel/haswell/software/SQLite/3.43.1-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/intel/haswell/software/Tcl/8.6.13-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/intel/haswell/software/GCCcore/13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/intel/haswell/software/EasyBuild/5.1.0/bin:/cvmfs/software.eessi.io/versions/2023.06/compat/linux/x86_64/usr/bin:/cvmfs/software.eessi.io/versions/2023.06/compat/linux/x86_64/bin:/home/crivella/.local/bin:/home/crivella/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin')
== 2025-06-04 19:17:42,034 environment.py:93 INFO Environment variable LD_LIBRARY_PATH set to  (previous value: '/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/intel/haswell/software/GCCcore/13.2.0/lib64:/tmp/crivella/easybuild/build/LLVM/20.1.5/GCCcore-13.2.0/llvm.obj.3/lib/x86_64-unknown-linux-gnu')
== 2025-06-04 19:17:42,067 llvm.py:1075 INFO Ignoring test failure: FAIL: Clang :: Driver/baremetal.cpp (11251 of 105617)
== 2025-06-04 19:17:42,068 llvm.py:1075 INFO Ignoring test failure: FAIL: Clang :: Driver/csky-toolchain.c (11330 of 105617)
== 2025-06-04 19:17:42,068 llvm.py:1075 INFO Ignoring test failure: FAIL: Clang :: Driver/freebsd-include-paths.c (11552 of 105617)
== 2025-06-04 19:17:42,068 llvm.py:1075 INFO Ignoring test failure: FAIL: Clang :: Driver/haiku.c (11605 of 105617)
== 2025-06-04 19:17:42,068 llvm.py:1075 INFO Ignoring test failure: FAIL: Clang :: Driver/hexagon-toolchain-elf.c (11622 of 105617)
== 2025-06-04 19:17:42,068 llvm.py:1075 INFO Ignoring test failure: FAIL: Clang :: Driver/hexagon-toolchain-linux.c (11624 of 105617)
== 2025-06-04 19:17:42,068 llvm.py:1075 INFO Ignoring test failure: FAIL: Clang :: Driver/mips-cs.cpp (11796 of 105617)
== 2025-06-04 19:17:42,068 llvm.py:1075 INFO Ignoring test failure: FAIL: Clang :: Driver/mips-fsf.cpp (11801 of 105617)
== 2025-06-04 19:17:42,068 llvm.py:1075 INFO Ignoring test failure: FAIL: Clang :: Driver/mips-img-v2.cpp (11803 of 105617)
== 2025-06-04 19:17:42,068 llvm.py:1075 INFO Ignoring test failure: FAIL: Clang :: Driver/mips-img.cpp (11804 of 105617)
== 2025-06-04 19:17:42,068 llvm.py:1075 INFO Ignoring test failure: FAIL: Clang :: Driver/riscv32-toolchain-extra.c (12091 of 105617)
== 2025-06-04 19:17:42,068 llvm.py:1075 INFO Ignoring test failure: FAIL: Clang :: Driver/riscv64-toolchain-extra.c (12094 of 105617)
== 2025-06-04 19:17:42,068 llvm.py:1075 INFO Ignoring test failure: FAIL: Clang :: Driver/rocm-detect.hip (12101 of 105617)
== 2025-06-04 19:17:42,069 llvm.py:1075 INFO Ignoring test failure: FAIL: Clang :: Frontend/warning-poison-system-directories.c (12651 of 105617)
== 2025-06-04 19:17:42,073 llvm.py:1075 INFO Ignoring test failure: FAIL: Flang :: Driver/gcc-toolchain-install-dir.f90 (23270 of 105617)
== 2025-06-04 19:17:42,210 llvm.py:1107 INFO Ignored 15 failed tests due to ignore patterns
== 2025-06-04 19:17:42,210 llvm.py:1142 INFO Test suite completed with 8 failed tests (10 allowed)
== 2025-06-04 19:17:42,211 build_log.py:322 INFO ... (took 29 mins 4 secs)

The 14 Clang :: Driver/XXX and 1 Clang :: Frontend/XXX tests are being properly ignored because of sysroot

== 2025-06-04 16:25:34,935 llvm.py:712 INFO Ignore patterns for tests updated from ['X86/register-fragments-bolt-symbols.s', 'modularize/ProblemsCoverage.modularize', 'Driver/atomic.f90', 'Driver/gcc-toolchain-install-dir.f90', 'api_tests/test_ompd_get_icv_from_scope.c'] to ['X86/register-fragments-bolt-symbols.s', 'modularize/ProblemsCoverage.modularize', 'Driver/atomic.f90', 'Driver/gcc-toolchain-install-dir.f90', 'api_tests/test_ompd_get_icv_from_scope.c', 'Clang :: Driver/baremetal.cpp', 'Clang :: Driver/csky-toolchain.c', 'Clang :: Driver/freebsd-include-paths.c', 'Clang :: Driver/haiku.c', 'Clang :: Driver/hexagon-toolchain-elf.c', 'Clang :: Driver/hexagon-toolchain-linux.c', 'Clang :: Driver/mips-cs.cpp', 'Clang :: Driver/mips-fsf.cpp', 'Clang :: Driver/mips-img-v2.cpp', 'Clang :: Driver/mips-img.cpp', 'Clang :: Driver/riscv32-toolchain-extra.c', 'Clang :: Driver/riscv64-toolchain-extra.c', 'Clang :: Driver/rocm-detect.hip', 'Clang :: Frontend/warning-poison-system-directories.c'] to avoid known ignorable failures with sysroot builds.

@Crivella Crivella marked this pull request as ready for review June 4, 2025 18:09
@Crivella
Copy link
Contributor Author

Crivella commented Jun 4, 2025

@boegelbot please test @ jsc-zen3
EB_ARGS="--installpath /tmp/$USER/eb-pr3741 LLVM-18.1.8-GCCcore-13.3.0.eb LLVM-19.1.7-GCCcore-13.3.0.eb LLVM-20.1.5-GCCcore-13.3.0.eb"

@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=3741 EB_ARGS="--installpath /tmp/$USER/eb-pr3741 LLVM-18.1.8-GCCcore-13.3.0.eb LLVM-19.1.7-GCCcore-13.3.0.eb LLVM-20.1.5-GCCcore-13.3.0.eb" EB_REPO=easybuild-easyblocks EB_BRANCH=develop /opt/software/slurm/bin/sbatch --job-name test_PR_3741 --ntasks=8 ~/boegelbot/eb_from_pr_upload_jsc-zen3.sh' executed!

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

Test results coming soon (I hope)...

- notification for comment with ID 2940957477 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 Jun 6, 2025

Manual test report 20.1.5 (SUCCESS)

On a RHEL9 VM with only lmod + EESSI + EESSI-extend

https://gist.github.com/Crivella/edbdf1c8c7d6914088fa9dd50bba6863

The hooks in the command are from

**Test results**
********************
Failed Tests (23):
  BOLT :: AArch64/check-init-not-moved.s
  BOLT :: X86/dwarf5-dwarf4-types-backward-forward-cross-reference.test
  BOLT :: X86/dwarf5-locexpr-referrence.test
  BOLT-Unit :: Core/./CoreTests/failed_to_discover_tests_from_gtest
  Clang :: Driver/baremetal.cpp
  Clang :: Driver/csky-toolchain.c
  Clang :: Driver/freebsd-include-paths.c
  Clang :: Driver/haiku.c
  Clang :: Driver/hexagon-toolchain-elf.c
  Clang :: Driver/hexagon-toolchain-linux.c
  Clang :: Driver/mips-cs.cpp
  Clang :: Driver/mips-fsf.cpp
  Clang :: Driver/mips-img-v2.cpp
  Clang :: Driver/mips-img.cpp
  Clang :: Driver/riscv32-toolchain-extra.c
  Clang :: Driver/riscv64-toolchain-extra.c
  Clang :: Driver/rocm-detect.hip
  Clang :: Frontend/warning-poison-system-directories.c
  Flang :: Driver/config-file.f90
  Flang :: Driver/gcc-toolchain-install-dir.f90
  Flang :: Driver/missing-input.f90
  LLVM :: CodeGen/Hexagon/isel/pfalse-v4i1.ll
  llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.timezone/time.zone.members/sys_info.zdump.pass.cpp


Testing Time: 1912.20s

Total Discovered Tests: 140047
  Skipped          :     25 (0.02%)
  Unsupported      :   5503 (3.93%)
  Passed           : 134215 (95.84%)
  Expectedly Failed:    281 (0.20%)
  Failed           :     23 (0.02%)
make[3]: *** [CMakeFiles/check-all.dir/build.make:74: CMakeFiles/check-all] Error 1
make[3]: Leaving directory '/tmp/crivella/easybuild/build/LLVM/20.1.5/GCCcore-13.2.0/llvm.obj.3'
make[2]: *** [CMakeFiles/Makefile2:35240: CMakeFiles/check-all.dir/all] Error 2
make[2]: Leaving directory '/tmp/crivella/easybuild/build/LLVM/20.1.5/GCCcore-13.2.0/llvm.obj.3'
make[1]: *** [CMakeFiles/Makefile2:35247: CMakeFiles/check-all.dir/rule] Error 2
make[1]: Leaving directory '/tmp/crivella/easybuild/build/LLVM/20.1.5/GCCcore-13.2.0/llvm.obj.3'
make: *** [Makefile:218: check-all] Error 2

== 2025-06-05 19:24:07,621 environment.py:93 INFO Environment variable PATH set to /tmp/eb-2abt6xvt/tmpbe6_9o0q/rpath_wrappers/ld.bfd_wrapper:/tmp/eb-2abt6xvt/tmpbe6_9o0q/rpath_wrappers/ld.gold_wrapper:/tmp/eb-2abt6xvt/tmpbe6_9o0q/rpath_wrappers/ld_wrapper:/tmp/eb-2abt6xvt/tmpbe6_9o0q/rpath_wrappers/gfortran_wrapper:/tmp/eb-2abt6xvt/tmpbe6_9o0q/rpath_wrappers/gxx_wrapper:/tmp/eb-2abt6xvt/tmpbe6_9o0q/rpath_wrappers/gcc_wrapper:/home/crivella/eessi/versions/2023.06/software/linux/x86_64/amd/zen4/software/Z3/4.13.0-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen4/software/libxml2/2.11.5-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen4/software/git/2.42.0-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen4/software/Perl/5.38.0-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen4/software/expat/2.5.0-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen4/software/lit/18.1.7-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen4/software/CMake/3.27.6-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen4/software/libarchive/3.7.2-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen4/software/cURL/8.3.0-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen4/software/Python/3.11.5-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen4/software/OpenSSL/1.1/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen4/software/SQLite/3.43.1-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen4/software/Tcl/8.6.13-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen4/software/GCCcore/13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen4/software/EasyBuild/5.1.0/bin:/cvmfs/software.eessi.io/versions/2023.06/compat/linux/x86_64/usr/bin:/cvmfs/software.eessi.io/versions/2023.06/compat/linux/x86_64/bin:/home/crivella/.local/bin:/home/crivella/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin (previous value: '/tmp/crivella/easybuild/build/LLVM/20.1.5/GCCcore-13.2.0/llvm.obj.3/bin:/tmp/eb-2abt6xvt/tmpbe6_9o0q/rpath_wrappers/ld.bfd_wrapper:/tmp/eb-2abt6xvt/tmpbe6_9o0q/rpath_wrappers/ld.gold_wrapper:/tmp/eb-2abt6xvt/tmpbe6_9o0q/rpath_wrappers/ld_wrapper:/tmp/eb-2abt6xvt/tmpbe6_9o0q/rpath_wrappers/gfortran_wrapper:/tmp/eb-2abt6xvt/tmpbe6_9o0q/rpath_wrappers/gxx_wrapper:/tmp/eb-2abt6xvt/tmpbe6_9o0q/rpath_wrappers/gcc_wrapper:/home/crivella/eessi/versions/2023.06/software/linux/x86_64/amd/zen4/software/Z3/4.13.0-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen4/software/libxml2/2.11.5-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen4/software/git/2.42.0-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen4/software/Perl/5.38.0-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen4/software/expat/2.5.0-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen4/software/lit/18.1.7-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen4/software/CMake/3.27.6-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen4/software/libarchive/3.7.2-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen4/software/cURL/8.3.0-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen4/software/Python/3.11.5-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen4/software/OpenSSL/1.1/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen4/software/SQLite/3.43.1-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen4/software/Tcl/8.6.13-GCCcore-13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen4/software/GCCcore/13.2.0/bin:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen4/software/EasyBuild/5.1.0/bin:/cvmfs/software.eessi.io/versions/2023.06/compat/linux/x86_64/usr/bin:/cvmfs/software.eessi.io/versions/2023.06/compat/linux/x86_64/bin:/home/crivella/.local/bin:/home/crivella/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin')
== 2025-06-05 19:24:07,622 environment.py:93 INFO Environment variable LD_LIBRARY_PATH set to  (previous value: '/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/amd/zen4/software/GCCcore/13.2.0/lib64:/tmp/crivella/easybuild/build/LLVM/20.1.5/GCCcore-13.2.0/llvm.obj.3/lib/x86_64-unknown-linux-gnu')
== 2025-06-05 19:24:07,658 llvm.py:1096 INFO Ignoring test failure: FAIL: Clang :: Driver/baremetal.cpp (11251 of 105617)
== 2025-06-05 19:24:07,659 llvm.py:1096 INFO Ignoring test failure: FAIL: Clang :: Driver/csky-toolchain.c (11329 of 105617)
== 2025-06-05 19:24:07,659 llvm.py:1096 INFO Ignoring test failure: FAIL: Clang :: Driver/freebsd-include-paths.c (11552 of 105617)
== 2025-06-05 19:24:07,659 llvm.py:1096 INFO Ignoring test failure: FAIL: Clang :: Driver/haiku.c (11604 of 105617)
== 2025-06-05 19:24:07,659 llvm.py:1096 INFO Ignoring test failure: FAIL: Clang :: Driver/hexagon-toolchain-elf.c (11620 of 105617)
== 2025-06-05 19:24:07,659 llvm.py:1096 INFO Ignoring test failure: FAIL: Clang :: Driver/hexagon-toolchain-linux.c (11624 of 105617)
== 2025-06-05 19:24:07,659 llvm.py:1096 INFO Ignoring test failure: FAIL: Clang :: Driver/mips-cs.cpp (11796 of 105617)
== 2025-06-05 19:24:07,659 llvm.py:1096 INFO Ignoring test failure: FAIL: Clang :: Driver/mips-fsf.cpp (11801 of 105617)
== 2025-06-05 19:24:07,659 llvm.py:1096 INFO Ignoring test failure: FAIL: Clang :: Driver/mips-img-v2.cpp (11803 of 105617)
== 2025-06-05 19:24:07,659 llvm.py:1096 INFO Ignoring test failure: FAIL: Clang :: Driver/mips-img.cpp (11804 of 105617)
== 2025-06-05 19:24:07,659 llvm.py:1096 INFO Ignoring test failure: FAIL: Clang :: Driver/riscv32-toolchain-extra.c (12091 of 105617)
== 2025-06-05 19:24:07,659 llvm.py:1096 INFO Ignoring test failure: FAIL: Clang :: Driver/riscv64-toolchain-extra.c (12093 of 105617)
== 2025-06-05 19:24:07,660 llvm.py:1096 INFO Ignoring test failure: FAIL: Clang :: Driver/rocm-detect.hip (12099 of 105617)
== 2025-06-05 19:24:07,660 llvm.py:1096 INFO Ignoring test failure: FAIL: Clang :: Frontend/warning-poison-system-directories.c (12649 of 105617)
== 2025-06-05 19:24:07,664 llvm.py:1096 INFO Ignoring test failure: FAIL: Flang :: Driver/config-file.f90 (23207 of 105617)
== 2025-06-05 19:24:07,664 llvm.py:1096 INFO Ignoring test failure: FAIL: Flang :: Driver/gcc-toolchain-install-dir.f90 (23269 of 105617)
== 2025-06-05 19:24:07,665 llvm.py:1096 INFO Ignoring test failure: FAIL: Flang :: Driver/missing-input.f90 (23296 of 105617)
== 2025-06-05 19:24:07,671 llvm.py:1096 INFO Ignoring test failure: FAIL: LLVM :: CodeGen/Hexagon/isel/pfalse-v4i1.ll (39221 of 105617)
== 2025-06-05 19:24:07,699 llvm.py:1096 INFO Ignoring test failure: FAIL: llvm-libc++-shared.cfg.in :: std/time/time.zone/time.zone.timezone/time.zone.members/sys_info.zdump.pass.cpp (104097 of 105617)
== 2025-06-05 19:24:07,841 llvm.py:1128 INFO Ignored 19 failed tests due to ignore patterns
== 2025-06-05 19:24:07,841 llvm.py:1163 INFO Test suite completed with 4 failed tests (10 allowed)
== 2025-06-05 19:24:07,841 build_log.py:322 INFO ... (took 35 mins 53 secs)

@Crivella
Copy link
Contributor Author

Crivella commented Jun 6, 2025

Other test report in

easybuilders/easybuild-easyconfigs#22924 (comment)

@Crivella
Copy link
Contributor Author

Crivella commented Jun 6, 2025

I think the only thing left before we start thinking of merging this is the point in #3741 (comment) about whether we want to also enforce RPATH-linking to the GCCcore/lib64 folder for every clang/flang call or if we should think about doing this at a toolchain level rather than all the times

@boegel boegel added bug fix EESSI Related to EESSI project labels Jun 6, 2025
@boegel boegel added this to the next release (5.1.1?) milestone Jun 6, 2025
Copy link
Member

@boegel boegel left a comment

Choose a reason for hiding this comment

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

@Crivella I went through this in detail, and found a couple of minor (code style) things I would like to fix, see Crivella#1

With those changes included, this should be good to go, I'll put it through another extensive testing round...

Crivella and others added 3 commits June 6, 2025 18:54
@boegel
Copy link
Member

boegel commented Jun 6, 2025

@boegelbot please test @ jsc-zen3
EB_ARGS="--installpath /tmp/$USER/eb-pr3741 LLVM-19.1.7-GCCcore-13.3.0.eb"
CORE_CNT=16

@boegelbot
Copy link

@boegel: 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=3741 EB_ARGS="--installpath /tmp/$USER/eb-pr3741 LLVM-19.1.7-GCCcore-13.3.0.eb" EB_REPO=easybuild-easyblocks EB_BRANCH=develop /opt/software/slurm/bin/sbatch --job-name test_PR_3741 --ntasks="16" ~/boegelbot/eb_from_pr_upload_jsc-zen3.sh' executed!

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

Test results coming soon (I hope)...

- notification for comment with ID 2949916545 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).

@boegelbot
Copy link

Test report by @boegelbot

Overview of tested easyconfigs (in order)

  • SUCCESS LLVM-19.1.7-GCCcore-13.3.0.eb

Build succeeded for 1 out of 1 (1 easyconfigs in total)
jsczen3c1.int.jsc-zen3.fz-juelich.de - Linux Rocky Linux 9.5, x86_64, AMD EPYC-Milan Processor (zen3), Python 3.9.21
See https://gist.github.com/boegelbot/4f75b687c4a9e44bfa047c3a9fbd9697 for a full test report.

@boegel boegel changed the title LLVM: Ensure sysroot dynamic linker is used enhance custom easyblock for LLVM: ensure sysroot dynamic linker is used + add ignore patterns for failing tests that can be ignored Jun 6, 2025
@boegel
Copy link
Member

boegel commented Jun 6, 2025

Test report by @boegel

Overview of tested easyconfigs (in order)

  • SUCCESS LLVM-20.1.5-GCCcore-13.2.0.eb

Build succeeded for 1 out of 1 (1 easyconfigs in total)
ip-172-31-21-7.eu-west-1.compute.internal - Linux RHEL 9.5 (Plow), x86_64, AMD EPYC 9R14 (x86_64_v4), Python 3.11.4
See https://gist.github.com/boegel/1761b6f3ce450d1f627c0c93abbd35ad for a full test report.

edit: this was on top of EESSI-extend in EESSI version 2023.06

@boegel
Copy link
Member

boegel commented Jun 6, 2025

Test report by @boegel

Overview of tested easyconfigs (in order)

  • SUCCESS LLVM-19.1.7-GCCcore-13.3.0.eb

Build succeeded for 1 out of 1 (1 easyconfigs in total)
node3603.doduo.os - Linux RHEL 9.4, x86_64, AMD EPYC 7552 48-Core Processor (zen2), Python 3.9.18
See https://gist.github.com/boegel/70cf3ac839fd0aa774ef056f25487ad3 for a full test report.

@boegel
Copy link
Member

boegel commented Jun 6, 2025

Test report by @boegel

Overview of tested easyconfigs (in order)

  • SUCCESS LLVM-16.0.6-GCCcore-13.2.0.eb

Build succeeded for 1 out of 1 (1 easyconfigs in total)
node3603.doduo.os - Linux RHEL 9.4, x86_64, AMD EPYC 7552 48-Core Processor (zen2), Python 3.9.18
See https://gist.github.com/boegel/f235ce7ddead41fd87072d942e6c2d86 for a full test report.

@boegel
Copy link
Member

boegel commented Jun 7, 2025

Test report by @boegel

Overview of tested easyconfigs (in order)

  • SUCCESS LLVM-18.1.8-GCCcore-13.3.0.eb

Build succeeded for 1 out of 1 (1 easyconfigs in total)
node4115.gallade.os - Linux RHEL 9.4, x86_64, AMD EPYC 7773X 64-Core Processor (zen3), Python 3.9.18
See https://gist.github.com/boegel/19142d89ef8badf9c9258ffc5df1f21e for a full test report.

@boegel boegel merged commit 30c6dbd into easybuilders:develop Jun 7, 2025
17 checks passed
@Crivella Crivella deleted the fix-LLVM-dynlink branch June 7, 2025 12:44
@Flamefire
Copy link
Contributor

Test report by @Flamefire

Overview of tested easyconfigs (in order)

Build succeeded for 0 out of 1 (1 easyconfigs in total)
n1071 - Linux RHEL 8.9 (Ootpa), x86_64, Intel(R) Xeon(R) Platinum 8470 (sapphirerapids), Python 3.9.18
See https://gist.github.com/Flamefire/441314e5f643091bb91690ee298f395a for a full test report.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug fix EESSI Related to EESSI project
Projects
None yet
Development

Successfully merging this pull request may close these issues.

LLVM does not take the dynamic linker from --sysroot if specified
6 participants