From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark H Weaver Subject: Re: Version strings for VCS snapshots Date: Wed, 23 Sep 2015 19:35:41 -0400 Message-ID: <87si64u2sy.fsf@netris.org> References: <8761377ct3.fsf@elephly.net> <20150919121718.1eeccc11@openmailbox.org> <87twqpkq8r.fsf_-_@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:39998) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zetb5-0006Ts-EZ for guix-devel@gnu.org; Wed, 23 Sep 2015 19:37:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Zetb1-0002x3-Bf for guix-devel@gnu.org; Wed, 23 Sep 2015 19:37:11 -0400 In-Reply-To: <87twqpkq8r.fsf_-_@gnu.org> ("Ludovic \=\?utf-8\?Q\?Court\=C3\=A8s\?\= \=\?utf-8\?Q\?\=22's\?\= message of "Sun, 20 Sep 2015 18:30:28 +0200") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: Ludovic =?utf-8?Q?Court=C3=A8s?= Cc: guix-devel ludo@gnu.org (Ludovic Court=C3=A8s) writes: > Eric Bavier 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 > =E2=80=98guix package --upgrade=E2=80=99 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