Skip to content

[ci] Update ROOT workflow to standard upgrade process with cached incremental builds.#955

Open
aaronj0 wants to merge 4 commits into
compiler-research:mainfrom
aaronj0:ci-root-classic-build
Open

[ci] Update ROOT workflow to standard upgrade process with cached incremental builds.#955
aaronj0 wants to merge 4 commits into
compiler-research:mainfrom
aaronj0:ci-root-classic-build

Conversation

@aaronj0

@aaronj0 aaronj0 commented May 1, 2026

Copy link
Copy Markdown
Collaborator

Updates root.yml to mirror manual upgrade process we follow when bumping
the CppInterOp version in ROOT

  1. Clone ROOT master (cached, git fetch'd incrementally on cache hit).
  2. Replace interpreter/CppInterOp with the current PR's CppInterOp HEAD
  3. Strip the few files that don't belong in the embedded copy
  4. Run a classic ROOT build with LLVM/Cling compiled from source (cached).
  5. Run ROOT's ctest suite against that build.

Most platform independant breaking changes in the API or build system CppInterOp
introduces in ROOT will show up as a configure, compile, or test failure.

subset of these changes are from #954 which this workflow currently uses to avoid temporary patches.

…lone builds

When CppInterOp is consumed via add_subdirectory() in an external project like ROOT, we previously had to carry two
small CMake patches on top of upstream:

  1. clangCppInterOp must be BUILDTREE_ONLY so AddLLVM does
     not register/export it, ROOT folds the symbols into
     libCling rather than shipping a separate library.
  2. The standalone install() rules for the cmake config, headers,
     tools and build-tree include/ should not be default behaviour, ROOT installs
     through libCling's own layout
@aaronj0 aaronj0 requested a review from vgvassilev May 1, 2026 12:23
@codecov

codecov Bot commented May 1, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 81.73%. Comparing base (21bbc3d) to head (a3e21ba).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files

Impacted file tree graph

@@           Coverage Diff           @@
##             main     #955   +/-   ##
=======================================
  Coverage   81.73%   81.73%           
=======================================
  Files          15       15           
  Lines        4759     4759           
=======================================
  Hits         3890     3890           
  Misses        869      869           
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

…remental builds.

Updates `root.yml` to mirror manual upgrade process we follow when bumping
the CppInterOp version in ROOT

1. Clone ROOT master (cached, `git fetch`'d incrementally on cache hit).
2. Replace `interpreter/CppInterOp` with the current PR's CppInterOp HEAD
3. Strip the few files that don't belong in the embedded copy
4. Run a classic ROOT build with LLVM/Cling compiled from source (cached).
5. Run ROOT's `ctest` suite against that build.

Most platform independant breaking changes in the API or build system CppInterOp
introduces in ROOT will show up as a configure, compile, or test failure.
@aaronj0 aaronj0 force-pushed the ci-root-classic-build branch from f5e93a2 to c2852b6 Compare May 1, 2026 12:32
Comment thread .github/workflows/root.yml
Comment thread .github/workflows/root.yml Outdated
@vgvassilev

Copy link
Copy Markdown
Contributor

@aaronj0, perhaps we should explore this approach on the root side:

  set(CMAKE_SKIP_INSTALL_RULES TRUE)   
  add_subdirectory(CppInterOp)                                                                                                                                
  set(CMAKE_SKIP_INSTALL_RULES FALSE)   # restore for ROOT's own installs that follow

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants