[Cleanup] Use LLVM 19 from Debian and support cross-compilation for arm64#9
Open
[Cleanup] Use LLVM 19 from Debian and support cross-compilation for arm64#9
Conversation
This eliminates the need for all the '-dev' images. Some tools still need to have their Dockerfile updated from Ubuntu 22.04.
It's all pretty useless now that the -dev images themselves no longer exist
…ned in config This makes it possible to cross-compile for different target architectures, as long as the builder image contains the necessary toolchains.
Nobody (not even LLVM themselves) ships libomp-dev in a way which is compatible with multiarch toolchains, so you normally can't cross-compile with clang using -fopenmp. Debian DOES have cross-compilation libraries for libgomp, and these actually work just fine when cross-compiling with GCC, but clang refuses to build against anything other than libomp, so that isn't an option. To work around this, we can simply download the libomp packages for all architectures and manually extract libomp.so.5 into /usr/<target>/lib/, which seems to be enough to satisfy clang and allow it to link with -fopenmp. None of this matters at runtime, since we can just install libomp normally and it'll link dynamically just fine. Also, changed some code to build using cross-compilation builder image by default. Maybe we'll enable cross-compilation in the default builder image eventually?
mcopik
reviewed
Mar 23, 2026
| FROM spcleth/xaas:llvm-19 | ||
| ARG CUDA_VERSION | ||
|
|
||
| #TODO: disabled: COPY --link --from=mpich /opt/mpich /opt/mpich |
Contributor
There was a problem hiding this comment.
Is the plan that builder image will not have it by default, but we will enable it dynamically when features are known?
Contributor
Author
There was a problem hiding this comment.
Yeah, that was my plan eventually. It seems kinda arbitrary for the base builder image to contain some dependencies by default but not all of them, it just adds bloat and makes things inconsistent.
mcopik
reviewed
Mar 23, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This makes the following changes:
builder-19-crossDocker image which contains necessary headers and libraries to compile code for both x86_64 and aarch64 (including with OpenMP, but currently missing support for cuda and mpich)cpu_architecturefield in the run config YAML actually affect the target architecture for source files compiled with clangKnown regessions: