Skip to content

Simplify CPP CI with generated files - #645

Merged
nikobockerman merged 1 commit into
mainfrom
simplify-cpp-ci-with-generated-files
Jul 31, 2026
Merged

Simplify CPP CI with generated files#645
nikobockerman merged 1 commit into
mainfrom
simplify-cpp-ci-with-generated-files

Conversation

@nikobockerman

Copy link
Copy Markdown
Owner

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.

Copilot AI review requested due to automatic review settings July 30, 2026 20:29

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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, and solvers/cpp/ci.env for the active matrix entry.
  • Update the C++ CI workflow to call the generator and run cmake/ctest directly (removing the lukka/run-cmake workflow-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.

Comment thread .github/workflows/cpp-build-test-run.yaml
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.
Copilot AI review requested due to automatic review settings July 30, 2026 21:07
@nikobockerman
nikobockerman force-pushed the simplify-cpp-ci-with-generated-files branch from 55df3a9 to b8b5827 Compare July 30, 2026 21:07

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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/bin to GITHUB_PATH, but the Homebrew setup action installs llvm@${LLVM_MAJOR_VERSION} (versioned formula). On runners without the unversioned llvm formula, this path won’t exist and tools like llvm-symbolizer won’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}"

@nikobockerman
nikobockerman merged commit 3d42f35 into main Jul 31, 2026
53 checks passed
@nikobockerman
nikobockerman deleted the simplify-cpp-ci-with-generated-files branch July 31, 2026 05:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants