Closed jameslamb closed 3 months ago
build-system.requires
table. We previously decided against that, in large part because this more precise version selection constraint was missing.In addition to updating RAPIDS projects that use SKBC to build, we should also make sure to update the samples in dfg (see https://github.com/rapidsai/dependency-file-generator/issues/98).
This has new urgency because scikit-build-core
just release a v0.10.0 which changed the handling of cmake.minimum-version
in a way that will breaks RAPIDS repos.
notes: https://github.com/scikit-build/scikit-build-core/releases/tag/v0.10.0
Details on what broke? cmake.minimum-version
shouldn't change at all if you don't change minimum-version
(and minimum-version
has to be set below some value like .8 in order to use the old cmake.minimum-version
instead of cmake.version
in the first place (minus a warning about using it appearing if it's not set at all)).
Sorry @henryiii , I'll have more details for you in a few minutes. We haven't actually observed the new release breaking anything, so it was careless of me to say "will breaks RAPIDS repos." I think "might" would have been more appropriate.
In short... we don't set minimum-version
and so always are on the latest scikit-build-core
's behavior (something I hoped to change with this issue we're talking on, but which we just haven't gotten to across RAPIDS yet). We saw the release notes for the new scikit-build-core==0.10.0
and drew some conclusions about how the automatic CMake version detection would interact with our repos.
Those conclusions might not have been right. I've put up https://github.com/rapidsai/rmm/pull/1638 to test our assumptions and try to get more information about the actual impact.
Conversation moved to here (we do see CI failures, and are discussing the root causes here): https://github.com/rapidsai/rmm/pull/1637#issuecomment-2272248793
Thanks James! 🙏
Appreciate you getting these PRs started
Have moved this issue to in progress to reflect that
FYI, you can set:
[tool.scikit-build]
minimum-version = "build-system.requires"
To single-source the minimum version from the scikit-build-core>=0.10
.
Thanks Henry! 🙏
That's a nice addition. Noticing this got added in 0.10.0 😄
Linking the docs for reference
It's also at https://iscinumpy.dev/post/scikit-build-core-0-10/.
Thanks @henryiii , really nice feature! I've just made that change on all the PRs linked in the task list at the top of this issue. If those are merged, then RAPIDS will be on scikit-build-core >= 0.10
and using minimum-version = "build-system.requires"
.
Reviewed and merged a good chunk of these
There are a handful that are still running CI or have unrelated CI errors that need investigation
Thanks for helping to move this forward @jakirkham !
I've checked the statuses this morning and all the remaining one haves unrelated CI failures. Will keep checking and updating them.
@jameslamb is https://github.com/rapidsai/cuspatial/pull/1430 all that's left before we can close this?
is https://github.com/rapidsai/cuspatial/pull/1430 all that's left before we can close this?
yes
That cuspatial
PR is now merged, so this is complete.
Thanks all! 🙏
Description
The PRs for #2 switched most RAPIDS projects' build backends to
scikit-build-core
.Across RAPIDS repos, we have the following mix of conditions in
pyproject.toml
today:scikit-build-core[pyproject]>=0.7.0
(raft pyproject.toml example)minimum-version
set in the[tool.scikit-build-core]
table inpyproject.toml
Taken together, that means "use the latest
scikit-build-core
newer than0.7.0
at build time, and opt in to all of its newest non-experimental behaviors".As a result of that mix, these warnings that have started showing up in build logs could eventually become errors:
(example build link)
To prevent that happening unexpectedly and to provide a bit more stability, I think we should pursue the following across all RAPIDS repos:
cmake.minimum-version
tocmake.version
in[tool.scikit-build-core]
table inpyproject.toml
scikit-build-core
floor to the latest release ofscikit-build-core
minimum-version
(minimumscikit-build-core
version) in the[tool.scikit-build-core]
table inpyproject.toml
Benefits of this work
Reduces the risk of a
scikit-build-core
release causing an all-RAPIDS-wheels-builds-are-broken-at-the-same-time type of event.Removes a source of deprecation warnings from logs, reducing a bit of noise and improving the usefulness of build logs for debugging purposes.
Approach
If we agree to do this, it'd be a good candidate for
rapids-reviser
. Modify thescikit-build-core
floor independencies.yaml
and re-runrapids-dependency-file-generator
, and the make the other edits inpyproject.toml
files diretly.Notes
Why do we need a floor on the dependency AND to set
minimum-version
?See https://scikit-build-core.readthedocs.io/en/latest/configuration.html#minimum-version-defaults.
Like CMake,
scikit-build-core
'sminimum-version
configuration isn't just a constraint that's there for package managers or to raise an exception if you have a too-old version.When
scikit-build-core
introduces new behaviors, it will sometimes gate them behind an "only do this ifminimum-version>={something}
" type of condition.For example: https://github.com/scikit-build/scikit-build-core/blob/f6ed5a28fc85e621b03d984011d17def888ee0db/src/scikit_build_core/build/metadata.py#L41-L45