Skip to content

various fixes for the LLVM easyblock #3706

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 25 commits into from
May 20, 2025

Conversation

Crivella
Copy link
Contributor

@Crivella Crivella commented Apr 29, 2025

Fixes issues:

Other changes:

  • Currently offloading is properly configured only with auto-detection of build targets. This PR allows the offloading to be configured independently of target detection
  • Streamlined GPU and ignore_patterns for tests
  • SPIRV moved to a non-experimental target (this might need to be enabled in a version specific way as this happened for versions >=20.x

@Crivella
Copy link
Contributor Author

@boegelbot please test @ jsc-zen3
EB_ARGS="LLVM-11.1.0-GCCcore-10.3.0.eb LLVM-16.0.6-GCCcore-12.3.0.eb LLVM-18.1.8-GCCcore-13.3.0-minimal.eb --installpath /tmp/$USER/ebpr-3706"

@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=3706 EB_ARGS="LLVM-11.1.0-GCCcore-10.3.0.eb LLVM-16.0.6-GCCcore-12.3.0.eb LLVM-18.1.8-GCCcore-13.3.0-minimal.eb --installpath /tmp/$USER/ebpr-3706" EB_REPO=easybuild-easyblocks EB_BRANCH=develop /opt/software/slurm/bin/sbatch --job-name test_PR_3706 --ntasks=8 ~/boegelbot/eb_from_pr_upload_jsc-zen3.sh' executed!

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

Test results coming soon (I hope)...

- notification for comment with ID 2842451216 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-11.1.0-GCCcore-10.3.0.eb
  • SUCCESS LLVM-16.0.6-GCCcore-12.3.0.eb
  • SUCCESS LLVM-18.1.8-GCCcore-13.3.0-minimal.eb

Build succeeded for 3 out of 3 (3 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/2b6d9fabe43e3c56659cd29ed91b266f for a full test report.

@Crivella
Copy link
Contributor Author

Crivella commented May 1, 2025

Test report by @Crivella

Overview of tested easyconfigs (in order)

  • SUCCESS LLVM-20.1.3.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, Python 3.11.12
See https://gist.github.com/Crivella/b4b01d722263f2c98849ad793508155b for a full test report.

NOTES

@Crivella
Copy link
Contributor Author

Crivella commented May 1, 2025

Did one test locally with 20.1.4 and no bootstrap trying to minimize the build options as much as possible:

build_shared_libs = True

bootstrap = False
full_llvm = False
build_clang_extras = False
build_runtimes = True
build_lld = False
build_lldb = False
build_bolt = False
build_openmp = True
build_openmp_tools = False
build_openmp_offload = True
usepolly = False

python_bindings = True

build_targets = ['X86', 'AMDGPU']

but this lead to a new error in all offload tests:

# .---command stderr------------
# | /home/crivella/.local/easybuild/software/binutils/2.42-GCCcore-13.3.0/bin/ld: /home/crivella/.local/easybuild/build/LLVM/20.1.4/GCCcore-13.3.0-testruntimes/llvm.obj.1/bin/../lib/LLVMgold.so: error loading plugin: /home/crivella/.local/easybuild/build/LLVM/20.1.4/GCCcore-13.3.0-testruntimes/llvm.obj.1/bin/../lib/LLVMgold.so: cannot open shared object file: No such file or directory
# | clang: error: linker command failed with exit code 1 (use -v to see invocation)
# | /home/crivella/.local/easybuild/build/LLVM/20.1.4/GCCcore-13.3.0-testruntimes/llvm.obj.1/bin/clang-linker-wrapper: error: 'clang' failed
# | clang: error: linker command failed with exit code 1 (use -v to see invocation)
# `-----------------------------
# error: command failed with exit status: 1

for some reason linking with offloading and the GNU linker requires LLVMgold.so which is not being created.

I am wondering for this if we should:

  • Open an issue and try to fix this later
  • Just add a check and an error to always have lld on in non-minimal builds
  • Both

The error being related to offload is probably a >=19.x problem but LLVMgold.so is in the cmake files also for previous versions, so this might need a more wide scope fix.

@Thyre
Copy link
Contributor

Thyre commented May 1, 2025

Given that ld.gold is being phased out starting with binutils 2.44, I would go the route of building lld if necessary, and using it instead of the gold linker.

See #3703.


But yeah, I remember having issues with old ROCm versions, which expected to have / find ld.gold to link stuff.

# TODO: Find a better way to either force the test to use the non wrapped compiler or to pass the flags
if build_option('rpath'):
setvar('CFLAGS', "%s %s" % (old_cflags, '-Wno-unused-command-line-argument'))
setvar('CXXFLAGS', "%s %s" % (old_cxxflags, '-Wno-unused-command-line-argument'))
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@Crivella
Copy link
Contributor Author

Crivella commented May 1, 2025

Test report by @Crivella

Overview of tested easyconfigs (in order)

  • SUCCESS LLVM-20.1.4-GCCcore-13.3.0-testruntimes.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, Python 3.11.12
See https://gist.github.com/Crivella/2d74d429acc38410d290e7eaa4b04bfd for a full test report.

NOTES

build_shared_libs = True

bootstrap = False
full_llvm = False
build_clang_extras = False
build_runtimes = True
build_lld = True
build_lldb = False
build_bolt = False
build_openmp = True
build_openmp_tools = False
build_openmp_offload = True
usepolly = False

python_bindings = True

build_targets = ['X86', 'AMDGPU']

DETAILS

crivella@crivella-desktop:~/.local/easybuild/software/LLVM/20.1.4-GCCcore-13.3.0-testruntimes$ grep "^--.*host;" easybuild/easybuild-LLVM-20.1.4-20250501.162415.log
-- Building the offload library with support for the "host;amdgpu" plugins
-- Building the offload library with support for the "host;amdgpu" plugins
-- Building the offload library with support for the "host;amdgpu" plugins
-- Building the offload library with support for the "host;amdgpu" plugins
crivella@crivella-desktop:~/.local/easybuild/software/LLVM/20.1.4-GCCcore-13.3.0-testruntimes$ libtree -p lib/x86_64-unknown-linux-gnu/lib
libc++.a                  libc++abi.so.1            libc++.modules.json       libc++.so.1.0             libompd.so                libomptarget.devicertl.a  libomptarget.so.20.1      libunwind.so.1
libc++abi.a               libc++abi.so.1.0          libc++.so                 libLLVMOffload.so         libomp.so                 libomptarget-nvptx.bc     libunwind.a               libunwind.so.1.0
libc++abi.so              libc++experimental.a      libc++.so.1               libLLVMOffload.so.20.1    libomptarget-amdgpu.bc    libomptarget.so           libunwind.so
crivella@crivella-desktop:~/.local/easybuild/software/LLVM/20.1.4-GCCcore-13.3.0-testruntimes$ libtree -p lib/x86_64-unknown-linux-gnu/libomptarget.so
lib/x86_64-unknown-linux-gnu/libomptarget.so
├── /home/crivella/.local/easybuild/software/LLVM/20.1.4-GCCcore-13.3.0-testruntimes/lib/libLLVM.so.20.1 [rpath]
│   ├── /home/crivella/.local/easybuild/software/Z3/4.13.0-GCCcore-13.3.0/lib64/libz3.so.4.13 [rpath]
│   │   └── /home/crivella/.local/easybuild/software/GMP/6.3.0-GCCcore-13.3.0/lib/../lib64/libgmp.so.10 [rpath of 2]
│   ├── /home/crivella/.local/easybuild/software/zlib/1.3.1-GCCcore-13.3.0/lib64/libz.so.1 [rpath]
│   └── /home/crivella/.local/easybuild/software/libxml2/2.12.7-GCCcore-13.3.0/lib64/libxml2.so.2 [rpath]
│       ├── /home/crivella/.local/easybuild/software/XZ/5.4.5-GCCcore-13.3.0/lib/liblzma.so.5 [rpath]
│       └── /home/crivella/.local/easybuild/software/zlib/1.3.1-GCCcore-13.3.0/lib64/libz.so.1 [rpath of 2]
└── /home/crivella/.local/easybuild/software/LLVM/20.1.4-GCCcore-13.3.0-testruntimes/lib/x86_64-unknown-linux-gnu/libomp.so [rpath]
crivella@crivella-desktop:~/.local/easybuild/software/LLVM/20.1.4-GCCcore-13.3.0-testruntimes$    
crivella@crivella-desktop:~/test/hw/llvm$ clang -fopenmp -fopenmp-targets=nvptx64 -Xopenmp-target -march=sm_70 -nogpulib test.c
error: unable to create target: 'No available targets are compatible with triple "nvptx64-nvidia-cuda"'

TEST results

381344 1 warning(s) in tests
381345 ********************
381346 Failed Tests (2):
381347   Flang :: Driver/gcc-toolchain-install-dir.f90
381348   ompd-test :: api_tests/test_ompd_get_icv_from_scope.c
381349
381350
381351 Testing Time: 1474.84s
381352
381353 Total Discovered Tests: 139378
381354   Skipped          :    374 (0.27%)
381355   Unsupported      :  33268 (23.87%)
381356   Passed           : 105521 (75.71%)
381357   Expectedly Failed:    213 (0.15%)
381358   Failed           :      2 (0.00%)
381359 make[3]: *** [CMakeFiles/check-all.dir/build.make:74: CMakeFiles/check-all] Error 1
381360 make[3]: Leaving directory '/home/crivella/.local/easybuild/build/LLVM/20.1.4/GCCcore-13.3.0-testruntimes/llvm.obj.1'
381361 make[2]: *** [CMakeFiles/Makefile2:25544: CMakeFiles/check-all.dir/all] Error 2
381362 make[2]: Leaving directory '/home/crivella/.local/easybuild/build/LLVM/20.1.4/GCCcore-13.3.0-testruntimes/llvm.obj.1'
381363 make[1]: *** [CMakeFiles/Makefile2:25551: CMakeFiles/check-all.dir/rule] Error 2
381364 make[1]: Leaving directory '/home/crivella/.local/easybuild/build/LLVM/20.1.4/GCCcore-13.3.0-testruntimes/llvm.obj.1'
381365 make: *** [Makefile:218: check-all] Error 2

@Crivella
Copy link
Contributor Author

Crivella commented May 1, 2025

Will try and rerun the previous test with everything but bootstrap and full_llvm as True

@Crivella
Copy link
Contributor Author

Crivella commented May 1, 2025

Test report by @Crivella

Overview of tested easyconfigs (in order)

  • SUCCESS LLVM-20.1.4-GCCcore-13.3.0-nobootstrap.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, Python 3.11.12
See https://gist.github.com/Crivella/12219cf6059c567a824879ad49181a45 for a full test report.

NOTES

  • Non-bootstrap build with all possible flags set to true
build_shared_libs = True

bootstrap = False
full_llvm = False
build_clang_extras = True
build_runtimes = True
build_lld = True
build_lldb = True
build_bolt = True
build_openmp = True
build_openmp_tools = True
build_openmp_offload = True
usepolly = True

python_bindings = True

build_targets = ['all']
# disable_werror = True

DETAILS

TEST reports

2 warning(s) in tests
********************
Timed Out Tests (1):
  libomp :: ompt/tasks/untied_task.c

********************
Failed Tests (6):
  BOLT-Unit :: Core/./CoreTests/failed_to_discover_tests_from_gtest
  Clang Tools :: modularize/ProblemsCoverage.modularize
  Flang :: Driver/gcc-toolchain-install-dir.f90
  lldb-shell :: Breakpoint/jit-loader_jitlink_elf.test
  lldb-shell :: Breakpoint/jit-loader_rtdyld_elf.test
  ompd-test :: api_tests/test_ompd_get_icv_from_scope.c


Testing Time: 1800.67s

Total Discovered Tests: 147187
  Skipped          :     43 (0.03%)
  Unsupported      :   6648 (4.52%)
  Passed           : 140148 (95.22%)
  Expectedly Failed:    341 (0.23%)
  Timed Out        :      1 (0.00%)
  Failed           :      6 (0.00%)
make[3]: *** [CMakeFiles/check-all.dir/build.make:74: CMakeFiles/check-all] Error 1
make[3]: Leaving directory '/home/crivella/.local/easybuild/build/LLVM/20.1.4/GCCcore-13.3.0-nobootstrap/llvm.obj.1'
make[2]: *** [CMakeFiles/Makefile2:35281: CMakeFiles/check-all.dir/all] Error 2
make[2]: Leaving directory '/home/crivella/.local/easybuild/build/LLVM/20.1.4/GCCcore-13.3.0-nobootstrap/llvm.obj.1'
make[1]: *** [CMakeFiles/Makefile2:35288: CMakeFiles/check-all.dir/rule] Error 2
make[1]: Leaving directory '/home/crivella/.local/easybuild/build/LLVM/20.1.4/GCCcore-13.3.0-nobootstrap/llvm.obj.1'
make: *** [Makefile:218: check-all] Error 2

@Thyre
Copy link
Contributor

Thyre commented May 7, 2025

Test report by @Thyre

Overview of tested easyconfigs (in order)

  • **FAIL (unhandled exception: 'EB_LLVM' object has no attribute 'cuda_cc')Traceback (most recent call last):
    File "/home/jreuter/.local/lib/python3.10/site-packages/easybuild/main.py", line 137, in build_and_install_software
    (ec_res['success'], app_log, err_msg, err_code) = build_and_install_one(ec, init_env)
    File "/home/jreuter/.local/lib/python3.10/site-packages/easybuild/framework/easyblock.py", line 4609, in build_and_install_one
    result = app.run_all_steps(run_test_cases=run_test_cases)
    File "/home/jreuter/.local/lib/python3.10/site-packages/easybuild/framework/easyblock.py", line 4429, in run_all_steps
    self.run_step(step_name, step_methods)
    File "/home/jreuter/.local/lib/python3.10/site-packages/easybuild/framework/easyblock.py", line 4271, in run_step
    step_method(self)()
    File "/tmp/eb-ntmz3m7y/included-easyblocks-nt898huu/easybuild/easyblocks/llvm.py", line 677, in configure_step
    gpu_archs += ['sm_%s' % cc for cc in self.cuda_cc]
    AttributeError: 'EB_LLVM' object has no attribute 'cuda_cc'
    ** LLVM-19.1.1-GCCcore-13.3.0.eb

Build succeeded for 0 out of 1 (1 easyconfigs in total)
zam226 - Linux Ubuntu 22.04, x86_64, 12th Gen Intel(R) Core(TM) i7-12700, Python 3.10.12
See https://gist.github.com/Thyre/e08cc64e07211b3715612e565a9f2898 for a full test report.

@Crivella Crivella force-pushed the feature-LLVM_fix branch from b3d2c1b to 64c219a Compare May 7, 2025 08:58
@Crivella
Copy link
Contributor Author

Crivella commented May 7, 2025

@Thyre 64c219a should fix #3706 (comment)

@Crivella
Copy link
Contributor Author

Crivella commented May 7, 2025

Reverted fix for #3711 as the old project structure was still available (somehow i was using the tags instead of releases as the sources)
I've also added a way to use start_dir from the easyconfig to specify the starting directory which should make possible future changes (or usage with a non upstream llvm version using a different naming scheme) easier.

Also reinstated the old way of detecting the host triple in case the configure step was not called to allow runs with --sanity-check-only and --module-only

@Thyre
Copy link
Contributor

Thyre commented May 7, 2025

Test report by @Thyre

Overview of tested easyconfigs (in order)

  • SUCCESS LLVM-19.1.1-GCCcore-13.3.0-amdgpu-nobootstrap.eb

Build succeeded for 1 out of 1 (1 easyconfigs in total)
zam226 - Linux Ubuntu 22.04, x86_64, 12th Gen Intel(R) Core(TM) i7-12700, Python 3.10.12
See https://gist.github.com/Thyre/20c42f8d70de290085753b064ae03c5f for a full test report.


Used commit 64c219a

@boegel boegel modified the milestones: release after 5.0.1, 5.0.1 May 7, 2025
@Thyre
Copy link
Contributor

Thyre commented May 7, 2025

Test report by @Thyre

Overview of tested easyconfigs (in order)

  • SUCCESS LLVM-19.1.1-GCCcore-13.3.0-amdgpu.eb

Build succeeded for 1 out of 1 (1 easyconfigs in total)
zam226 - Linux Ubuntu 22.04, x86_64, 12th Gen Intel(R) Core(TM) i7-12700, Python 3.10.12
See https://gist.github.com/Thyre/92ee0ce0c0fdc30328d9c1ddaa8a5fdc for a full test report.


Used commit 0214115

Copy link
Contributor

@Thyre Thyre left a comment

Choose a reason for hiding this comment

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

Some minor comments. Looks good to me otherwise.

Comment on lines +835 to +843
res = run_shell_cmd(cmd, fail_on_error=False)
# Observed in 20.1.0, the build of the offloading tools can fail due to 'cstdint' file not found
# But will succeed if executed again with -j 1 (possible missing dependency in the CMake logic?)
# See https://github.com/llvm/llvm-project/issues/130783
if res.exit_code != EasyBuildExit.SUCCESS:
self.log.warning("Build failed, attempting again with parallel ON")
res = run_shell_cmd(cmd, fail_on_error=False)
if res.exit_code != EasyBuildExit.SUCCESS:
self.log.warning("Build failed, attempting again with parallel OFF")
cmd = "make -j 1 VERBOSE=1"
res = run_shell_cmd(cmd)
Copy link
Contributor

Choose a reason for hiding this comment

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

Like mentioned in the issue, switching to Ninja might also be an option, though we would need to be careful with the parallelism used by Ninja...

Something to think about for a separate PR I think.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Agree but i think that would definitily be a standalone PRs requiring testing with every configuration of ECs (also would not be easy to check and reproduce the error as it is basically a race condition)

@Thyre
Copy link
Contributor

Thyre commented May 8, 2025

I would recommend that we do a test without any CUDA compute capability or amd_gfx_list to check this as well. jsc-zen3 always checks with CUDA compute capabilities and my test ECs have amd_gfx_list set.
Looking at the code, this shouldn't cause any issues, but I think it's a good idea to be a bit more safe...

@Crivella Crivella force-pushed the feature-LLVM_fix branch from 5dae3f1 to 17a5217 Compare May 14, 2025 11:26
@Crivella
Copy link
Contributor Author

Crivella commented May 14, 2025

Rebased onto develop to fix merge conflict after

Changes to `llvm.py` from the rebase
diff --git a/easybuild/easyblocks/l/llvm.py b/easybuild/easyblocks/l/llvm.py
index e1a5d65ce..2c64df21f 100644
--- a/easybuild/easyblocks/l/llvm.py
+++ b/easybuild/easyblocks/l/llvm.py
@@ -232,7 +232,7 @@ class EB_LLVM(CMakeMake):
 
     def __init__(self, *args, **kwargs):
         """Initialize LLVM-specific variables."""
-        super(EB_LLVM, self).__init__(*args, **kwargs)
+        super().__init__(*args, **kwargs)
 
         self.llvm_src_dir = None
         self.llvm_obj_dir_stage1 = None
@@ -684,7 +684,7 @@ class EB_LLVM(CMakeMake):
         self.add_cmake_opts()
 
         src_dir = os.path.join(self.llvm_src_dir, 'llvm')
-        output = super(EB_LLVM, self).configure_step(builddir=self.llvm_obj_dir_stage1, srcdir=src_dir)
+        output = super().configure_step(builddir=self.llvm_obj_dir_stage1, srcdir=src_dir)
 
         # Get the LLVM HOST TRIPLE (e.g. x86_64-unknown-linux-gnu) from the output
         for line in output.splitlines():
@@ -916,7 +916,7 @@ class EB_LLVM(CMakeMake):
             print_msg("Building stage 1/1")
 
         change_dir(self.llvm_obj_dir_stage1)
-        super(EB_LLVM, self).build_step(*args, **kwargs)
+        super().build_step(*args, **kwargs)
 
         if self.cfg['bootstrap']:
             self.log.info("Building stage 2")
@@ -1052,7 +1052,7 @@ class EB_LLVM(CMakeMake):
 
             self.cfg.update('preinstallopts', f'LD_LIBRARY_PATH={lib_path}')
 
-        super(EB_LLVM, self).install_step()
+        super().install_step()
 
         # copy Python bindings here in post-install step so that it is not done more than once in multi_deps context
         if self.cfg['python_bindings']:
@@ -1329,7 +1329,7 @@ class EB_LLVM(CMakeMake):
         else:
             self._sanity_check_gcc_prefix(gcc_prefix_compilers, self.gcc_prefix, self.installdir)
 
-        return super(EB_LLVM, self).sanity_check_step(custom_paths=custom_paths, custom_commands=custom_commands)
+        return super().sanity_check_step(custom_paths=custom_paths, custom_commands=custom_commands)
 
     def make_module_step(self, *args, **kwargs):
         """
@@ -1353,7 +1353,7 @@ class EB_LLVM(CMakeMake):
 
     def make_module_extra(self):
         """Custom variables for Clang module."""
-        txt = super(EB_LLVM, self).make_module_extra()
+        txt = super().make_module_extra()
         # we set the symbolizer path so that asan/tsan give meanfull output by default
         asan_symbolizer_path = os.path.join(self.installdir, 'bin', 'llvm-symbolizer')
         txt += self.module_generator.set_environment('ASAN_SYMBOLIZER_PATH', asan_symbolizer_path)

@Crivella
Copy link
Contributor Author

@boegel @bedroge

Tested again with one GCC version for every major release of LLVM for 18, 19, 20

The SYSTEM ones have the problem with the CI check, but I would not let it block this PR

I think now bot the ECs and the EBlock are good to go, and would try to merge them so the work on the toolchain can start being implemented

(As mentioned in easybuilders/easybuild-easyconfigs#22887 there is also 20.1.5 released but it still does not have all the release files uploaded, in particular llvm-20.1.5.src.tar.xz is still not there yet)

@ocaisa
Copy link
Member

ocaisa commented May 19, 2025

@Thyre If you have time, can you give a review on this, you are far more capable than me to do that (I'm happy to do a readthrough once you give the ok)

@Thyre
Copy link
Contributor

Thyre commented May 19, 2025

@Thyre If you have time, can you give a review on this, you are far more capable than me to do that (I'm happy to do a readthrough once you give the ok)

Sure! I'll do another pass hopefully by the end of tomorrow. I'll give you a ping once I'm finished.

Copy link
Contributor

@Thyre Thyre left a comment

Choose a reason for hiding this comment

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

Minor comments regarding the comments in the EasyBlock. Otherwise LGTM.

@Thyre
Copy link
Contributor

Thyre commented May 19, 2025

There are two minor things we may want to improve in a separate PR, but are both just minor improvements that should not hold back this PR:

  • With LLVM 19 only, the first step of the bootstrap build contains -DLIBOMPTARGET_DEVICE_ARCHITECTURES even though omp & offload are not built. This should not matter, as the variable is just unused then.
  • We should make sure that we build the dlopen variant of all offload projects, whenever possible. Variables to achieve this change between LLVM versions. This ensures that we do not accidentally pick up system libraries, interfering with EasyBuild when loading modules later on.

Copy link
Contributor

@Thyre Thyre left a comment

Choose a reason for hiding this comment

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

LGTM

Copy link
Member

@ocaisa ocaisa left a comment

Choose a reason for hiding this comment

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

Read through and just a minor comment

Copy link
Member

@ocaisa ocaisa left a comment

Choose a reason for hiding this comment

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

LGTM, thanks for the effort @Crivella and the detailed reviews @Thyre

@ocaisa
Copy link
Member

ocaisa commented May 20, 2025

Builds have been tested in other PRs, and in particular easybuilders/easybuild-easyconfigs#22903

@ocaisa ocaisa merged commit 97203c3 into easybuilders:develop May 20, 2025
17 checks passed
@Crivella Crivella deleted the feature-LLVM_fix branch May 20, 2025 12:39
@boegel boegel changed the title More fixes for the LLVM easyblock various fixes for the LLVM easyblock May 21, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants