Subject: bug#60725: guix lint thinks 2019111-0.7e76d75 is older than 20191111

From: Jelle Licht <[email-masked]>
Date: Wed, 11 Jan 2023 15:34:39 +0100

Maxim Cournoyer <[email-masked]> writes:

> retitle 60725 support the special '~' character in our version parser
> thanks
>
> Jelle Licht <[email-masked]> writes:
>
>> Maxim Cournoyer <[email-masked]> writes:
>>
>>> Hi Guix,
>>>
>>> If you run 'guix lint emacs-enh-ruby-mode', it'll print this:
>>>
>>> --8<---------------cut here---------------start------------->8---
>>> [email-masked]: can be upgraded to 20191111
>>> --8<---------------cut here---------------end--------------->8---
>> In this particular case, 2019111 seems to have been a typo in the first
>> place.  (It misses out on a '1' in our package record).
>
> Thanks!  With this typo fixed, 'guix lint' doesn't suggest a downgrade
> anymore.
>
>> AFAIK, any sane versioning scheme would assert that 20191111 > 2019111-anything.
>
> That's not currently the case with Guix.  Guix package version strings
> are documented has having the requirement to be 'monotonically
> increasing', so '43.rc3' as used by GNOME is seen by Guix as newer than
> '43', the final release.

I agree with your assesment, but note that my example (again) had one
"1" less, in which case Guix does the right thing :-).

>
> I'll keep this bug open (and retitle it), because implementing ~ would
> be useful (GNOME makes use of that scheme, and it's understood by rpm,
> dpkg, pkg-config, etc.).

Fixing our versioning code so  "123" > "123-alpha2" will also bring us
(more) in line with Semantic Versioning.

- Jelle