fix: pin host root_base to a C++23 ROOT build#18
Conversation
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.
|
Warning Review limit reached
Next review available in: 43 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the 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. ✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
Problem
When
shipdatamodelis built as a source dependency (e.g. in aegir'sdevenvironment viashipdatamodel = { path = "../data-model" }), a fresh resolve fails:pixi-build-cmakeexact-pins theroot_basebuild it resolves in the host environment intoshipdatamodel's run-export, and its host solve does not honour theroot_cxx_standard == "==23"host dependency. Soroot_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 withroot_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'srun_exportsand theroot_cxx_standardvariant — machinery the pixi-build path lacks.Fix
Constrain the host
root_baseto acxx23_*build so the emitted run-export stays cxx23-compatible.Verified locally (pixi 0.68.1): with this change the fresh
dev-environment resolve gets past theroot_baseconflict and proceeds to buildshipdatamodel.Can be dropped once pixi-build honours
root_cxx_standardin the host solve, or usesroot_base'srun_exportsrange 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
shipgeometryandshipgeometryserviceis tracked independently.