summaryrefslogtreecommitdiff
path: root/guix/import/cran.scm
diff options
context:
space:
mode:
authorMathieu Othacehe <m.othacehe@gmail.com>2017-05-04 11:52:33 +0200
committerMathieu Othacehe <m.othacehe@gmail.com>2017-05-13 12:40:20 +0200
commitdb427602d8f993ee0025fa68d1af274aa8d69ab9 (patch)
tree1404610f9662a09f5e81a6ff638ab16013b26b95 /guix/import/cran.scm
parenta5e8f5972cb0d69684bb3f81220a6408815f7fe0 (diff)
downloadgnu-guix-db427602d8f993ee0025fa68d1af274aa8d69ab9.tar
gnu-guix-db427602d8f993ee0025fa68d1af274aa8d69ab9.tar.gz
import: cran: Robustify cran-package?.
* guix/import/cran.scm (package->upstream-name): Return #f if url start and end index could not be determined. (cran-package?): Check if the upstream-name can be extracted from given package. * tests/cran.scm: Add "r-minimal is not a cran package" to make sure that r-minimal is not detected as a cran package. This fixes a failure of guix refresh on r-minimal because no upsteam-name can be determined from ".../R-version.tar.gz" uri.
Diffstat (limited to 'guix/import/cran.scm')
-rw-r--r--guix/import/cran.scm6
1 files changed, 5 insertions, 1 deletions
diff --git a/guix/import/cran.scm b/guix/import/cran.scm
index be34a75c8d..a94051655c 100644
--- a/guix/import/cran.scm
+++ b/guix/import/cran.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -374,7 +375,7 @@ dependencies."
(start (string-rindex url #\/)))
;; The URL ends on
;; (string-append "/" name "_" version ".tar.gz")
- (substring url (+ start 1) end)))
+ (and start end (substring url (+ start 1) end))))
(_ #f)))
(_ #f)))))
@@ -415,6 +416,9 @@ dependencies."
(define (cran-package? package)
"Return true if PACKAGE is an R package from CRAN."
(and (string-prefix? "r-" (package-name package))
+ ;; Check if the upstream name can be extracted from package uri.
+ (package->upstream-name package)
+ ;; Check if package uri(s) are prefixed by "mirror://cran".
(match (and=> (package-source package) origin-uri)
((? string? uri)
(string-prefix? "mirror://cran" uri))