-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improve VERSION.TXT contents #18145
Comments
It's OK if, as part of this work, we end up changing the format of what's inside VERSION.TXT. |
Does the file need to look different (i.e. have actually different structure) for source/nightly builds vs. releases? Right now I'm thinking to have some magic string instead of the version number for non-releases. What should that string be, however? It might also be nice to have e.g. "nightly" for those builds, however that might need a new environment variable similar to |
Let's work the big picture here, taking it from the top down (starting from https://drake.mit.edu/installation.html). I think the first step is to assemble an inventory / summary / table of:
That will help facilitate choosing a uniform numbering policy across the whole matrix, at which point is will hopefully be obvious what VERSION.TXT should look like and what extra CI machinery we might need in support of that. |
Relevant locations: The idea would be to use drake/tools/release_engineering/repack_deb.py Lines 54 to 64 in f54895e
The deb repackaging will also need to behave differently. Possibly relevant: Those are the only locations I'm familiar with this being an issue. |
I believe we don't upload from experimental, only from nightly. In any case, I wouldn't worry too much about distinguishing between an experimental CI build and a user's local build. My point, however, was that it might be nice if official nightly builds were somehow tagged different from users' builds. All releases use the same |
Yes we do (example), and we absolutely need to add the status quo of those version numbers into this table.
That's not helpful. I want the actual version number patterns for all current CI output. I want everyone in this discussion thread to know exactly which tracks use which formats, at the moment. We need to know the contents of VERSION.TXT, not just whether or not there is one. For example, the release wheel 1.25 has this content in VERSION.TXT: As you say, we should unify the new policy but we can't do that until we actually understand the current policy. I don't think anyone on this thread actually understands it. That's why I asked for a detailed summary. Please work to make a comprehensive inventory of all tracks, without any ambiguity. We should have build logs & artifacts available for all of them, which you can inspect. Feel free to launch experimental jobs if we're missing logs & artifacts for any of those. I want to know both the contents (pattern) of VERSION.TXT for each row, as well as the extrinsic version number (i.e., what the filename looks like). |
All of them are of the form AFAIK, the file is always |
In the table I'd also like to see the artifact filename patterns we're using, e.g., for the releases we have files like this:
(That's what I meant by "extrinsic" version number.) For the tagged releases these filename are obvious, but for Nightly and Experimental my recollection is that they were somewhat less obvious.
I see now. The only caveat is that sometimes GIT_REVISION is a 40-character sha, and sometimes it's just "HEAD". |
Hmm... then that's a bug; |
Table updated. |
Claimed Debian rules on version numbers: https://www.debian.org/doc/manuals/debmake-doc/ch05.en.html#name-version |
We seem to all agree that we want the extrinsic package versions (what we name the files / wheels / debs / etc) to have a uniform numbering scheme. (Modulo the trailing @jwnimmer-tri's action is to decide the contents of the VERSION.TXT file. |
AFAICT, Debian versioning is compatible with PEP440 versioning (at least as we're using the latter). I'm confident the experimental Therefore, I'd like to suggest that all official packages use either One caveat, however, is that experimental versions will be "newer" than nightlies. (OTOH, this is arguably correct, since in most cases they will actually be newer, and presumably these are not "visible" via normal package providers.) (To be clear, Debian versions all have a |
SGTM
To make sure I understand -- experimental builds would sort newer than the nightly that preceded them, but older than nightlies built afterwards, right? That sounds like what we want. For example this ordering (from oldest to newest):
|
Typically, yes. However, if the nightly is built at, say, 0300, and someone builds an experimental at 0100, the experimental will be "newer" (in terms of sort order). Generally, though, if we're okay with experimentals being newer than some nightlies (and I take your comment to imply that we are), I think this is fine. Under the previous system, Nightly 0.0.19990101 would be newer than Experimental 0.0.2199.12.32.05.42.11, i.e. all nightlies are newer than all experimentals. So long as we aren't trying to preserve that behavior (and there's certainly an argument that that's just plain wrong, anyway)... |
Ah yes, there is a kind of a race condition after midnight but before the nightly build kicks off. Yes, I think it's fine to have that bit of a gap / race. SGTM. |
FYI, it turns out CI overwrites |
From f2f: we all seem okay with keeping the git sha in the VERISON.TXT file. Given that, we might as well just not change the formatting at all -- we just put the version number into the file, followed by the git sha. |
I just realized... only updating |
One more TODO: update the release_playbook. |
Relates: #14509, #17736 (comment)
With the availability of staging-packaging jobs for releases we can populate
VERSION.TXT
with$ENV{DRAKE_VERSION}
(rather than / in addition to) the date / sha.Additional considerations:
VERSION.JSON
that contains any metadata we want now (or in the future) such as the commit sha etc.VERSION.TXT
have justX.Y.Z
to make it easier to extract it from command line based tools?.deb
should be used from the staging, not the.tar.gz
.The text was updated successfully, but these errors were encountered: