From aaafd19bd1e37265de07e246286a6819792c25b4 Mon Sep 17 00:00:00 2001 From: Xinglu Chen Date: Sat, 5 Jun 2021 21:18:26 +0200 Subject: hg-download: Add helpers for defining packages. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hg followup to commit ee17a9e06e636400e3354796a42ac445dbcc8f96. * guix/hg-download.scm (hg-version, hg-file-name): New procedures. Co-authored-by: Ludovic Courtès --- guix/hg-download.scm | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'guix/hg-download.scm') diff --git a/guix/hg-download.scm b/guix/hg-download.scm index c6cee2dbb8..eb7c345489 100644 --- a/guix/hg-download.scm +++ b/guix/hg-download.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014, 2015, 2016, 2017, 2019 Ludovic Courtès ;;; Copyright © 2016 Ricardo Wurmus +;;; Copyright © 2021 Xinglu Chen ;;; ;;; This file is part of GNU Guix. ;;; @@ -25,6 +26,8 @@ #:use-module (guix modules) #:use-module (guix packages) #:autoload (guix build-system gnu) (standard-packages) + #:use-module (srfi srfi-34) + #:use-module (srfi srfi-35) #:use-module (ice-9 match) #:use-module (ice-9 popen) #:use-module (ice-9 rdelim) @@ -34,7 +37,9 @@ hg-reference-changeset hg-reference-recursive? hg-predicate - hg-fetch)) + hg-fetch + hg-version + hg-file-name)) ;;; Commentary: ;;; @@ -102,6 +107,23 @@ HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f." #:recursive? #t #:guile-for-build guile))) +(define (hg-version version revision changeset) + "Return the version string for packages using hg-download." + ;; hg-version is almost exclusively executed while modules are being loaded. + ;; This makes any errors hide their backtrace. Avoid the mysterious error + ;; "Value out of range 0 to N: 7" when the commit ID is too short, which + ;; can happen, for example, when the user swapped the revision and commit + ;; arguments by mistake. + (when (< (string-length changeset) 7) + (raise + (condition + (&message (message "hg-version: changeset ID unexpectedly short"))))) + (string-append version "-" revision "." (string-take changeset 7))) + +(define (hg-file-name name version) + "Return the file-name for packages using hg-download." + (string-append name "-" version "-checkout")) + (define (hg-file-list directory) "Evaluates to a list of files contained in the repository at path @var{directory}" -- cgit v1.2.3