guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Version strings for VCS snapshots


From: Mark H Weaver
Subject: Re: Version strings for VCS snapshots
Date: Wed, 23 Sep 2015 19:35:41 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)

address@hidden (Ludovic Courtès) writes:

> Eric Bavier <address@hidden> skribis:
>
>> I realize we have no guidelines in the manual concerning the version
>> field for git checkouts, but I wonder whether we should, as it comes up
>> a bit.  Several existing packages use (string-append "1.2.3." commit),
>> where "1.2.3" is the version of the corresponding source.  One other
>> package uses the (string-append "1.2.3-c" commit) method, and another
>> uses (string-append "1.2.3-" commit.  I personally prefer the "-"
>> notation, since it distinguishes the commit hash from the version
>> number (does it confuse any internal logic that assumes a package
>> version number is the last component of the store path following a
>> dash?).  In this case, the "-c" seems confusing because the commit hash
>> itself begins with a 'c'.
>>
>> I recall some discussion previously about how it would be nice for
>> git-checkout package versions to still "sort" nicely.
>
> I think the goal should be to ensure lexicographic ordering, such that
> ‘guix package --upgrade’ DTRT.
>
> In practice, that means the (string-append "1.2.3." commit) should be
> avoided.
>
> Instead we should use (string-append "1.2.3." REV "." commit) where REV
> would be an integer we manually increment every time we upgrade to a
> newer snapshot.

I'd like to propose another alternative, which I used for 'grub' on the
'wip-loongson2f' branch.  There, the version string is simply the output
of "git describe".  This gives us lexicographic ordering, and the commit
id can be extracted with (last (string-split version #\g)).

So, it ends up looking like this:

--8<---------------cut here---------------start------------->8---
(define-public grub
  (package
    (name "grub")
    (version "2.02-beta2-502-gc93d3e6")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url "git://git.savannah.gnu.org/grub.git")
                    (commit (last (string-split version #\g)))))
              (file-name (string-append name "-" version "-checkout"))
              (sha256
               (base32
                "14xsqx3b8rqr0i2xn5vrf8mnxlajw8msi1r6h2vgpl2j0zgjc1m0"))))
--8<---------------cut here---------------end--------------->8---

What do you think?

      Mark



reply via email to

[Prev in Thread] Current Thread [Next in Thread]