Implement calendar versioning#162
Conversation
seberg
left a comment
There was a problem hiding this comment.
Some comments/question, but likely not relevant, looks good to me either way.
| git push upstream v24.09.01 | ||
| ``` | ||
|
|
||
| With that hotfix release complete, merge the fixes into `main`. |
There was a problem hiding this comment.
What is the work-flow in RAPIDS? In NumPy we merge fixes to main first (unless they don't apply). Which is fine, but could add, something like "if the hotfix was not backported from main".
There was a problem hiding this comment.
In RAPIDS, no developer ever targets a main branch directly. RAPIDS projects one long-lived branch per release (e.g. branch-24.10, branch-24.12).
Changes on those release branches are not merged to main until the entire branch is released.
A hotfix to the 24.10 release after work on the 24.12 release has already begun means new pull requests targeting branch-24.10. Those are then merged to main, a new v24.10.01 tag is cut (pointing at a commit on main), and hotfix packages are released.
It's rare (I think) that we apply hotfixes more than 1 major release back (e.g., releasing a cudf==24.10.02 when there is already a stable cudf==24.12.00). But if we did, then those tags could point to commit IDs that exist on branch-24.10 but not on main.
Here, I'm proposing using a different, every-PR-targets-main approach for the following reasons:
- to avoid the pain of having long-lived release branches (until we find we need one, for hotfixes)
- to test out workflows to serve as an example for maybe changing the RAPIDS flow in the future: Simplify RAPIDS branching model build-planning#63
- for consistency with how
cunumericandlegateoperate
There was a problem hiding this comment.
Great. I half thought I heard rumblings for rapids to switch to this branching model, but maybe I am hallucinating :).
| 1. Create a pull request updating the `VERSION` file on the `main` branch to the desired version, with no leading `v` | ||
|
|
||
| ```shell | ||
| echo "24.09.00" > ./VERSION |
There was a problem hiding this comment.
So this does not include the .dev, but the .dev part is found via the tag/branch?
There was a problem hiding this comment.
Right, it's expected to be found via the tag.
This is what RAPIDS does, see https://github.com/rapidsai/cudf/tags
And it's how legate is doing it too: https://github.com/nv-legate/legate.core.internal/tags
Sorry, I'm struggling today to remember exactly why that's preferable to including the dev part in the file or in the code that calculates "number of commits since the last tag" to generate a version like 24.12.00dev5.
|
|
||
| rapids-print-env | ||
|
|
||
| rapids-generate-version > ./VERSION |
There was a problem hiding this comment.
I suppose this sets the rapids-version above? (I think it's all good. I was just pausing now because for projects that also depend on RAPIDS, we may have to align the RAPIDS versions we use with the rapids-cmake version in legate.)
There was a problem hiding this comment.
This is actually not related to the version of RAPIDS (e.g. the version used to pull in rapids-cmake), though I understand how the command names make it seem that way 😅
rapids-generate-version comes from here: https://github.com/rapidsai/gha-tools/blob/8bd8fca71b5fae38b1493c547d15e73da40b32e1/tools/rapids-generate-version
It's just a small shell script that computes a version string from git tags, like this:
dunamai_format="{base}"
if ! rapids-is-release-build; then
# Nightlies include the distance from the last tag as the alpha version.
dunamai_format="{base}{stage}{distance}"
fi
# Now change the version.
dunamai_version=$(python -m dunamai from git --format ${dunamai_format})
echo -n "${dunamai_version}"I'm proposing using that tool to avoid duplicating that logic here in legate-boost.
The rapids-* prefix on all the tools from that repo is primarily intended to avoid conflicts with other tools (generate-version is a pretty generic name, for example)... it doesn't by itself mean that a particular tool does something RAPIDS-specific.
|
Thanks James! |
Contributes to #101 and #115
Establishes calendar versioning for packages. The versions here match the outcome of the discussion at https://github.com/nv-legate/legate.core.internal/issues/1197
legate/cunumericdepended onlegate-boost=24.06.01depends onlegate=24.06.01andcunumeric=24.06.01{YY}.{MM}.{patch}dev{N}, where{N}is the number of commits since the beginning of development on that versionmainin development towards the24.09.00version, the corresponding pre-release would belegate-boost=24.09.00dev5Notes for Reviewers
This is still a work in progress, just pushing what I have so far so you can see I'm working on it.
References
I borrowed some ideas from the discussion on rapidsai/build-planning#63 here, combined with trying to re-use as much of the RAPIDS tooling as possible. Especially this: https://github.com/rapidsai/gha-tools/blob/8bd8fca71b5fae38b1493c547d15e73da40b32e1/tools/rapids-generate-version
How I tested this
I tagged the latest commit on
mainprior to this branch asv24.06.01dev, as we might do (under my proposal in this PR) at the beginning of development that builds towards a24.06.01release.git tag -a v24.06.01dev -m "start v24.06.01 development" git push upstream v24.06.01devref: https://github.com/rapidsai/legate-boost/releases/tag/v24.06.01dev
After I did that, saw builds produce packages with versions like
24.06.01dev{n}, where{n}is "number of commits since the one tagged24.06.01dev".(build link)