Skip to content

fix: pin host root_base to a C++23 ROOT build#18

Merged
olantwin merged 1 commit into
mainfrom
fix/host-root-base-cxx23
Jul 22, 2026
Merged

fix: pin host root_base to a C++23 ROOT build#18
olantwin merged 1 commit into
mainfrom
fix/host-root-base-cxx23

Conversation

@olantwin

Copy link
Copy Markdown
Contributor

Problem

When shipdatamodel is built as a source dependency (e.g. in aegir's dev environment via shipdatamodel = { path = "../data-model" }), a fresh resolve fails:

root >=6.40 cannot be installed because there are no viable options:
  root 6.40.0 | ... | 6.40.2 would require
    └─ root_base ==6.40.0 cxx20_h3697410_0, for which no candidates were found.

pixi-build-cmake exact-pins the root_base build it resolves in the host environment into shipdatamodel's run-export, and its host solve does not honour the root_cxx_standard == "==23" host dependency. So root_base = "*" can resolve to a cxx20 build, and the resulting cxx20 run-export conflicts with the C++23 stack (root_cxx_standard == "==23") in the consuming environment. (The build string is present in conda-forge's repodata — the "no candidates" is really "no cxx20 candidate compatible with root_cxx_standard==23".)

The released shipdatamodel (conda-forge-style recipe) does not hit this because it gets a range run-export (root_base >=6.40.2,<6.40.3) via root_base's run_exports and the root_cxx_standard variant — machinery the pixi-build path lacks.

Fix

Constrain the host root_base to a cxx23_* build so the emitted run-export stays cxx23-compatible.

root_base = { version = "*", build = "cxx23_*" }

Verified locally (pixi 0.68.1): with this change the fresh dev-environment resolve gets past the root_base conflict and proceeds to build shipdatamodel.

Can be dropped once pixi-build honours root_cxx_standard in the host solve, or uses root_base's run_exports range instead of an exact-build pin (upstream issue to be filed).

Notes

This is the first of a chain of latent, lock-masked conflicts exposed by aegir's fresh dev-source resolve; a separate geomodel-core skew between shipgeometry and shipgeometryservice is tracked independently.

pixi-build-cmake exact-pins the root_base build it resolves in the host
environment into shipdatamodel's run-export, and its host solve does not
honour the root_cxx_standard == "==23" host dependency. An unconstrained
root_base can therefore resolve to a cxx20 build and leak a cxx20
run-export, which conflicts with the C++23 stack (root_cxx_standard ==
"==23") when shipdatamodel is built as a source dependency in downstream
dev environments such as aegir's:

    root >=6.40 ... would require root_base ==6.40.0 cxx20_h3697410_0,
    for which no candidates were found

Constrain the host root_base to a cxx23 build so the emitted run-export
stays cxx23-compatible. This can be dropped once pixi-build honours
root_cxx_standard in the host solve, or uses root_base's run_exports
range instead of an exact-build pin.
@coderabbitai

coderabbitai Bot commented Jul 22, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@olantwin, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 43 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 59174d09-c356-4350-82c6-5af156c755a1

📥 Commits

Reviewing files that changed from the base of the PR and between 4eb1498 and 714e638.

📒 Files selected for processing (1)
  • pixi.toml
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/host-root-base-cxx23

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@olantwin
olantwin merged commit 1e85443 into main Jul 22, 2026
4 checks passed
@olantwin
olantwin deleted the fix/host-root-base-cxx23 branch July 22, 2026 15:09
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.

1 participant