summary refs log tree commit diff
diff options
context:
space:
mode:
authorRicardo Wurmus <rekado@elephly.net>2020-12-12 00:06:18 +0100
committerRicardo Wurmus <rekado@elephly.net>2020-12-12 00:08:27 +0100
commit482b8ae2cd3f126a1300178e317df8993bf75b16 (patch)
treef21e58812ed70ea1126a40d8548f59f19be9702d
parent7eb920351abc7757ee9711ac147e63d6936e5ee8 (diff)
downloadguix-482b8ae2cd3f126a1300178e317df8993bf75b16.tar.gz
import/cran: Abort with error message when recursive import fails.
Previously, after a failed recursive import "guix import" would signal
success.

* guix/import/cran.scm (cran->guix-package): Raise a condition when all
repositories have been exhausted.
* guix/scripts/import/cran.scm (guix-import-cran): Handle errors.
-rw-r--r--guix/import/cran.scm6
-rw-r--r--guix/scripts/import/cran.scm9
2 files changed, 10 insertions, 5 deletions
diff --git a/guix/import/cran.scm b/guix/import/cran.scm
index 6c1fbd7ba3..1d25a5125e 100644
--- a/guix/import/cran.scm
+++ b/guix/import/cran.scm
@@ -29,6 +29,7 @@
   #:use-module (srfi srfi-11)
   #:use-module (srfi srfi-26)
   #:use-module (srfi srfi-34)
+  #:use-module (srfi srfi-35)
   #:use-module (ice-9 receive)
   #:use-module (web uri)
   #:use-module (guix memoization)
@@ -585,7 +586,10 @@ s-expression corresponding to that package, or #f on failure."
              ((bioconductor)
               ;; Retry import from CRAN
               (cran->guix-package package-name #:repo 'cran))
-             (else (values #f '()))))))))
+             (else
+              (raise (condition
+                      (&message
+                       (message "couldn't find meta-data for R package")))))))))))
 
 (define* (cran-recursive-import package-name #:key (repo 'cran))
   (recursive-import package-name
diff --git a/guix/scripts/import/cran.scm b/guix/scripts/import/cran.scm
index 33944c4a3f..20e82ae2ca 100644
--- a/guix/scripts/import/cran.scm
+++ b/guix/scripts/import/cran.scm
@@ -97,10 +97,11 @@ Import and convert the CRAN package for PACKAGE-NAME.\n"))
       ((package-name)
        (if (assoc-ref opts 'recursive)
            ;; Recursive import
-           (map package->definition
-                (filter identity
-                        (cran-recursive-import package-name
-                                               #:repo (or (assoc-ref opts 'repo) 'cran))))
+           (with-error-handling
+             (map package->definition
+                  (filter identity
+                          (cran-recursive-import package-name
+                                                 #:repo (or (assoc-ref opts 'repo) 'cran)))))
            ;; Single import
            (let ((sexp (cran->guix-package package-name
                                            #:repo (or (assoc-ref opts 'repo) 'cran))))