Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR modernizes the base image support by removing legacy Linux distributions (Debian bookworm, Ubuntu focal/jammy) and standardizing on GCC 14 and Clang 20 across all remaining supported distributions (Debian trixie and Ubuntu noble). The upgrade to Clang 20 supports the introduction of new flang and prevents toolchain mixing issues.
Key Changes:
- Removed support for legacy distributions: Debian bookworm, Ubuntu focal, and Ubuntu jammy
- Standardized GCC version to 14 and Clang version to 20 across remaining distributions
- Retained only Debian trixie and Ubuntu noble as supported base images
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
wdconinc
commented
Dec 14, 2025
Add support for unsupported compilers in CUDA.
Clang 20 is not in CUDA's list of supported compilers, which triggers:
conflicts("%clang@20:", when="+cuda ^cuda@:12.9")
The +allow-unsupported-compilers variant on the cuda package disables
this check. However, cuda is always registered as an external (not-buildable)
via spack external find, and external specs carry no variants by default.
A packages.yaml require: cannot be satisfied by the external because it
doesn't match the required variant, causing concretization to fail with:
Cannot build cuda, since it is configured buildable:false and no
externals satisfy the request.
Fix: use yq to amend the detected external spec to append the variant
immediately after spack external find, mirroring the pattern already used
for gcc (extra_attributes.environment.set.GCC_AR).
Remove the now-redundant cuda: require: entry from packages.yaml.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
When building non-CUDA images, spack external find finds no cuda externals, so .packages.cuda.externals is null. Iterating over null with [].spec fails with: jq: error (at <stdin>:1): Cannot iterate over null (null) Use a conditional yq expression to only amend the spec when externals exist. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…lers to CUDAFLAGS Added note about appending --allow-unsupported-compilers to CUDAFLAGS for CudaPackage.
…CUDAFLAGS for dependent_spec
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.
Briefly, what does this PR introduce?
This PR removes some legacy base image distributions which are now unsupported, and upgraded gcc and clang to consistent versions. Clang is upgraded to 20 for new flang and to avoid tool chain mixing which has been leading to confusing behavior.
Needs:
What kind of change does this PR introduce?
Please check if this PR fulfills the following:
Does this PR introduce breaking changes? What changes might users need to make to their code?
No.
Does this PR change default behavior?
Yes, newer clang on default images.