update LLVM easyblock to fix build on RISC-V systems and ignore a bunch of tests#3676
update LLVM easyblock to fix build on RISC-V systems and ignore a bunch of tests#3676Crivella merged 28 commits intoeasybuilders:developfrom
Conversation
| # glob_pattern = os.path.join(base_dir, 'lib', f'%s-{arch}') | ||
| glob_pattern = os.path.join(base_dir, 'lib', f'{arch}-*') |
There was a problem hiding this comment.
This doesn't look right, should this be arch-specific?
There was a problem hiding this comment.
It worked for me in RISC-V.
I'm not sure what the original line does, but with the original code, glob_pattern was equal to /tmp/eb/easy build/build/LLVM/20.1.1/GCCcore-13.2.0/llvm.obj.1/lib/%s-riscv64. And with that, matches was null after matches = glob.glob(glob_pattern), so the ERROR "Could not find runtime library directory" was raised.
On the other hand, with my modification, matches[0] is /tmp/eb/easybuild/build/LLVM/20.1.1/GCCcore-13.2.0/llvm.obj.1/lib/riscv64-unknown-linux-gnu and the function finally returns lib/riscv64-unknown-linux-gnu
How does it work in other architectures?
There was a problem hiding this comment.
There was an error introduced in #3674 when replacing the old python2 formatting with f-strings.
This is also currently being fixed in #3675, but it might take a bit before merging as there is also a lot of device testing going on there.
Regarding the location, during compilation LLVM puts the runtimes (specific for the host target) in $ROOT/lib/<target_triple>.
I am not aware of it ever compiling more than one set of runtimes (maybe if you are cross-compiling LLVM itself?), but that was the easiest way i had to find the runtime library directory
There was a problem hiding this comment.
On my side i am ok with the glob pattern being fixed ASAP as it is a breaking change that will cause (probably) all multi-stage builds to fail using the current develop easyblock
There was a problem hiding this comment.
@Crivella I think that could indeed go into systemtools
|
@boegelbot please test @ jsc-zen3 |
|
@Crivella: I noticed your comment, but I only dance when @akesandgren or @bartoldeman or @bedroge or @boegel or @branfosj or @casparvl or @jfgrimm or @lexming or @Micket or @migueldiascosta or @ocaisa or @SebastianAchilles or @smoors or @verdurin or @robert-mijakovic or @deniskristak or @ItIsI-Orient or @PetrKralCZ or @sassy-crick or @laraPPr or @pavelToman or @Louwrensth or @Thyre tells me (for now), I'm sorry... Details- notification for comment with ID 2841677283 processed Message to humans: this is just bookkeeping information for me, |
|
@boegelbot please test @ jsc-zen3 |
|
@ocaisa: Request for testing this PR well received on jsczen3l1.int.jsc-zen3.fz-juelich.de PR test command '
Test results coming soon (I hope)... Details- notification for comment with ID 2841691562 processed Message to humans: this is just bookkeeping information for me, |
|
As a note on the test, i do not think we have a test runner to properly test the arch string, but I do not see any particular exceptions looking at Maybe we can also add the string for 32bit systems, but this might be as discussed better moved to a framework implementation. @julianmorillo Just in case you have the easybuild github integration installed would you mind running a minimal build uploading the report? EG |
|
Test report by @boegelbot Overview of tested easyconfigs (in order)
Build succeeded for 1 out of 1 (1 easyconfigs in total) |
|
We need to test a non-minimal build for this, as the arch prefix is only relevant if runtimes are built (or tests in a multi-stage build) IIRC. The new LLVM-EasyConfig PRs would be ideal. |
|
Agree the test on RISCV should be on a full build uploaded the message and also retyping here: For the RISCV test I tested the minimal as |
|
Now also considering the changes in #3706 I am starting to wonder if it would be better to have |
|
@Crivella perhaps throw it in framework's |
|
This looks really trivial now... @julianmorillo Is there really all that's necessary to fix the installation of LLVM on RISC-V? |
|
@boegel ,
Gives these results: The build process works fine, but since only 10 failing tests are allowed in the easyconfig, it does not get finally installed. This is the complete log: |
|
Many of the failing tests seems to be due to errors of the kind So i would guess just changing that is not enough of a fix. We might have to add a different patch similar to https://github.com/easybuilders/easybuild-easyconfigs/blob/develop/easybuild/easyconfigs/l/LLVM/LLVM-19.1.7_libomptarget_tests.patch or modify it to catch this case |
… it is not supported
…clang: error: -gsplit-dwarf is unsupported with RISC-V linker relaxation (-mrelax)"
…, which is not supported)
…ch: 243" in RISC-V
…uption of mismatch, likely due to incomplete or buggy support in the LLVM runtime for RISC-V under '-std=c++26'
Co-authored-by: Davide Grassano <[email protected]>
|
|
|
@boegelbot please test @ jsc-zen3 |
|
@Crivella: Request for testing this PR well received on jsczen3l1.int.jsc-zen3.fz-juelich.de PR test command '
Test results coming soon (I hope)... Details- notification for comment with ID 3117641641 processed Message to humans: this is just bookkeeping information for me, |
|
Test report by @boegelbot Overview of tested easyconfigs (in order)
Build succeeded for 3 out of 3 (3 easyconfigs in total) |
Crivella
left a comment
There was a problem hiding this comment.
LGTM
in the future we might want some way to also versioncontrol which tests are ignored, but that is a problem for another PR (or even a new feature in framework)
|
Going in, thanks @julianmorillo! |
No description provided.