Conversation
There was a problem hiding this comment.
Pull Request Overview
This PR introduces a new ci_clang container environment to test compilation with the Clang compiler, which has shown performance benefits in GitHub workflow testing. The changes configure Spack to build a comprehensive stack using Clang instead of GCC.
Key Changes:
- Added new
ci_clangspack environment configured to build with Clang compiler and enable inter-procedural optimization (IPO) - Configured MPI to use mpich without Fortran support to better accommodate Clang compilation
- Enabled mixed-toolchain compiler discovery in Docker builds to support both Clang and GCC compilers
Reviewed Changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| spack-environment/packages.yaml | Adds MPI configuration requiring mpich 4.2.1 without Fortran support to accommodate Clang builds |
| spack-environment/ci_clang/spack.yaml | New spack environment configuration that requires Clang compiler, enables IPO where available, and includes comprehensive package list for CI testing |
| containers/debian/Dockerfile | Adds --mixed-toolchain flag to compiler discovery to support mixed Clang/GCC toolchain usage |
| .gitlab-ci.yml | Adds ci_clang to the nightly build matrix for the eic environment |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| - py-pandas | ||
| - py-particle | ||
| - py-pip | ||
| - py-rucio-clients |
There was a problem hiding this comment.
The py-scipy package is missing from this environment but is present in the comparable ci and ci_without_acts environments (both include py-scipy at similar positions in their specs lists). Consider adding - py-scipy after py-rucio-clients for consistency with other CI environments.
| - py-rucio-clients | |
| - py-rucio-clients | |
| - py-scipy |
Briefly, what does this PR introduce?
Needs:
Tests in GitHub workflows of epic and EICrecon indicate faster and smaller code when compiled with clang instead of gcc. This PR prepares a stack to run some tests with.
What kind of change does this PR introduce?