From mboxrd@z Thu Jan 1 00:00:00 1970 From: ludo@gnu.org (Ludovic =?utf-8?Q?Court=C3=A8s?=) Subject: Re: Version strings for VCS snapshots Date: Thu, 24 Sep 2015 13:12:28 +0200 Message-ID: <87y4fwhy03.fsf@gnu.org> References: <8761377ct3.fsf@elephly.net> <20150919121718.1eeccc11@openmailbox.org> <87twqpkq8r.fsf_-_@gnu.org> <87si64u2sy.fsf@netris.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]:51100) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zf4S3-0000JR-Bo for guix-devel@gnu.org; Thu, 24 Sep 2015 07:12:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Zf4S0-00030P-5g for guix-devel@gnu.org; Thu, 24 Sep 2015 07:12:35 -0400 In-Reply-To: <87si64u2sy.fsf@netris.org> (Mark H. Weaver's message of "Wed, 23 Sep 2015 19:35:41 -0400") 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: Mark H Weaver Cc: guix-devel Mark H Weaver skribis: > 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: > > (define-public grub > (package > (name "grub") > (version "2.02-beta2-502-gc93d3e6") Sure, that=E2=80=99s even better, and it works with =E2=80=98version>?=E2= =80=99. (I would remove =E2=80=98beta2=E2=80=99 in this example, though.) The solution I suggested can still be used for repos that have zero tags, where =E2=80=98git describe=E2=80=99 doesn=E2=80=99t work (yes, it ex= ists!). Ludo=E2=80=99.