Simplify CPP CI with generated files - #645
Merged
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR simplifies the C++ CI pipeline by replacing the previously committed, templated Conan profiles and CMakeUserPresets.json with a single Python generator that emits concrete, per-matrix CI configuration files at workflow runtime.
Changes:
- Add a Python generator to produce
solvers/cpp/CMakeUserPresets.json,solvers/cpp/conan-profile-ci, andsolvers/cpp/ci.envfor the active matrix entry. - Update the C++ CI workflow to call the generator and run
cmake/ctestdirectly (removing thelukka/run-cmakeworkflow-preset usage). - Remove the old
.github/files/*preset/profile templates and stop copying them in the setup action.
Reviewed changes
Copilot reviewed 8 out of 9 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| .gitignore | Ignore newly generated CI-only files under solvers/cpp/. |
| .github/workflows/cpp-build-test-run.yaml | Generate and consume per-matrix C++ CI config; switch to direct cmake build/test invocation. |
| .github/scripts/generate-cpp-ci-config.py | New generator for CMake user presets, Conan host profile, and sanitizer runtime env exports. |
| .github/files/conan-profile-gcc-libstd++-for-clang | Remove old templated Conan profile (replaced by generator). |
| .github/files/conan-profile-clang-with-libc++-sanitizers | Remove old templated Conan profile (replaced by generator). |
| .github/files/conan-profile-clang-with-libc++ | Remove old templated Conan profile (replaced by generator). |
| .github/files/conan-profile-clang-with-hardened-libc++ | Remove old templated Conan profile (replaced by generator). |
| .github/files/CMakeUserPresets.json | Remove old committed CI preset bundle (replaced by generator). |
| .github/actions/cmake-project-setup/action.yaml | Stop copying preset/profile templates; action now focuses on CMake/Conan/sccache setup. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Replace the complex conan profiles and CMakeUserPresets.json with one python script that generates those with contents specific for the one matrix variant. This removes the need for complex and error-prone inherited presets with environment variables, Jinja code in conan presets, environment variable logic between CMake preset and conan profile.
nikobockerman
force-pushed
the
simplify-cpp-ci-with-generated-files
branch
from
July 30, 2026 21:07
55df3a9 to
b8b5827
Compare
Contributor
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 8 out of 9 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (1)
.github/workflows/cpp-build-test-run.yaml:133
- The sanitizers job prepends
${HOMEBREW_PREFIX}/opt/llvm/bintoGITHUB_PATH, but the Homebrew setup action installsllvm@${LLVM_MAJOR_VERSION}(versioned formula). On runners without the unversionedllvmformula, this path won’t exist and tools likellvm-symbolizerwon’t be found.
Use the versioned prefix (or brew --prefix) so the path matches the installed LLVM version.
run: echo "${HOMEBREW_PREFIX}/opt/llvm/bin" | tee -a "${GITHUB_PATH}"
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.
Replace the complex conan profiles and CMakeUserPresets.json with one python script that generates those with contents specific for the one matrix variant. This removes the need for complex and error-prone inherited presets with environment variables, Jinja code in conan presets, environment variable logic between CMake preset and conan profile.