On 31/01/2024 20:45, Brian Inglis via Cygwin-apps wrote:
On 2024-01-31 10:36, ASSI via Cygwin wrote:
Jon Turney via Cygwin writes:
If upstream really is making multiple releases called '6.4', which
we're supposed to distinguish by some other means, then there aren't
really any good answers...
There's only one official 6.4 release, but just about everyone packages
one of the roughly weekly snapshots inbetween releases (depending on
where you are looking they are also called beta versions), which are
named 6.4-yyyymmdd upstream. We can't have a "-" in the version number,
hence the suggestion to replace it with a "+".
[moving discussion to -apps]
Upstream developer is Thomas Dickey at invisible-island.net so no git.
My only concern is if 6.4+20240203-1 !> 6.4-20240120 as strvercmp test
beds disagree, presumably about the effect of the delimiter, possibly
because the + may be treated similarly to a prefix for an RC preceding
the 6.4 release?
For guidance I have looked at:
https://docs.fedoraproject.org/en-US/packaging-guidelines/Versioning/
which states that ~ prefixes pre-stable "snapshot" releases and ^
prefixes post-stable "snapshot" releases where . or nothing prefixes
upstream bugfix or patch level releases, so perhaps we should just use
version suffix .yyyymmdd?
So, this is notionally defined here [1].
The important point there "Non-alphanumeric separators for these
contiguous chunks are ignored" (after identifying chunks)
So '1.2.3' '1+2+3' and '1_2_3' are all equal.
[1] https://cygwin.com/packaging-package-files.html#naming
Practically, this is controlled by the version comparison which libsolv
does, which I am expecting to also work like that.
(Perhaps naively. All the details are paged-out at the moment. I think I
remember there's a flag which you have to give it to turn on the special
behaviour of tilde and caret, which in any case aren't currently in the
character set permitted for a cygwin package name)
I have downloaded and locally installed Fedora rpmdevtools package but
Cygwin python rpm module seems to lack labelCompare():
$ rpmdev-vercmp 6.4+20240203-1 6.4-20240120
/usr/local/lib/python3.9/site-packages/rpm.py:15: UserWarning: The RPM
Python bindings are not currently available via PyPI.
This can't be cygwin's python rpm module if it's in /usr/local/, I think?
If you have calm installed, you can use:
$ calm-tool sort-versions 1.2.1 1.2.3 1+2+3 1_2_3 1.2.4
1.2.1
1.2.3 1+2+3 1_2_3
1.2.4
At this point it should be clear that 6.4+2024012 is greater than 6.4.
How are Cygwin pre-stable RC releases defined differently from
post-stable snapshot releases and upstream patch releases?
Generally, I think that following [2], as linked from that, is a good
idea. i.e.
for pre-release versions use R="0." followed by something that's going
to increase as prereleases do e.g. date or an incrementing ordinal and
then a githash.
for post-releases you can increment R and add a similar identifier.
You can instead add things to V to indicate post-label snapshots, but
there's there's a risk of coming unstuck unless the upstream versioning
scheme is totally predicable (i.e. if you create 1.2+3 for a
post-release fix to 1.2, and then upstream releases a 1.2a which you
weren't expecting because they've never done it before, you're boned)
[2] https://fedoraproject.org/wiki/Package_Versioning_Examples