diff options
author | Jakub Kądziołka <kuba@kadziolka.net> | 2020-04-15 17:12:29 +0200 |
---|---|---|
committer | Jakub Kądziołka <kuba@kadziolka.net> | 2020-04-23 10:16:49 +0200 |
commit | bbf6bc1acc9bbdebf7ee7b68c0fa091733a5f6e1 (patch) | |
tree | 310f99291ec83a87365bf4d17cf3fe9e4d2ad672 | |
parent | c47f48d972cd13ee2cdf86d075f34fa0e944a764 (diff) | |
download | guix-bbf6bc1acc9bbdebf7ee7b68c0fa091733a5f6e1.tar.gz guix-bbf6bc1acc9bbdebf7ee7b68c0fa091733a5f6e1.zip |
git-version: Handle invalid arguments gracefully
* guix/git-download.scm (git-version): Add a check for commit ID length.
-rw-r--r-- | guix/git-download.scm | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/guix/git-download.scm b/guix/git-download.scm index 1eae035fc4..ef0bb2e281 100644 --- a/guix/git-download.scm +++ b/guix/git-download.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2017 Mathieu Lirzin <mthl@gnu.org> ;;; Copyright © 2017 Christopher Baines <mail@cbaines.net> +;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -30,6 +31,8 @@ #:use-module (ice-9 match) #:use-module (ice-9 vlist) #:use-module (srfi srfi-1) + #:use-module (srfi srfi-34) + #:use-module (srfi srfi-35) #:export (git-reference git-reference? git-reference-url @@ -170,6 +173,13 @@ HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f." (define (git-version version revision commit) "Return the version string for packages using git-download." + ;; git-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 commit) 7) + (error "git-version: commit ID unexpectedly short")) (string-append version "-" revision "." (string-take commit 7))) (define (git-file-name name version) |