[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 5/7] import cran: Add recursive importer.
From: |
Ricardo Wurmus |
Subject: |
[PATCH 5/7] import cran: Add recursive importer. |
Date: |
Mon, 23 May 2016 17:40:06 +0200 |
* guix/import/cran.scm (recursive-import): New variable.
---
guix/import/cran.scm | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/guix/import/cran.scm b/guix/import/cran.scm
index 522df3e..907441e 100644
--- a/guix/import/cran.scm
+++ b/guix/import/cran.scm
@@ -33,8 +33,10 @@
#:use-module ((guix build-system r) #:select (cran-uri bioconductor-uri))
#:use-module (guix upstream)
#:use-module (guix packages)
+ #:use-module (gnu packages)
#:export (cran->guix-package
bioconductor->guix-package
+ recursive-import
%cran-updater
%bioconductor-updater))
@@ -236,6 +238,25 @@ s-expression corresponding to that package, or #f on
failure."
;; * Then follow
;; https://r-forge.r-project.org/R/?group_id=929 with the given group_id.
+(define* (recursive-import package-name #:optional (repo 'cran))
+ (define (iter name imported)
+ ;; FIXME: this might fail, so catch errors
+ (receive (package dependencies)
+ (cran->guix-package name repo)
+ (if package
+ (let* ((new-entry (cons name (list package)))
+ (imported (cons new-entry imported))
+ (dependencies (filter (lambda (dependency)
+ (and (not (assoc dependency imported))
+ (null? (find-packages-by-name
(guix-name dependency)))))
+ dependencies)))
+ (fold iter imported dependencies))
+ (begin
+ (format #t "error: failed to import package ~a from archive ~a.\n"
name repo)
+ imported))))
+ (iter package-name '()))
+
+
;;;
;;; Updater.
--
2.7.3
- [PATCH] Add recursive CRAN importer, Ricardo Wurmus, 2016/05/23
- [PATCH 1/7] import cran: Remove more invalid characters from package names., Ricardo Wurmus, 2016/05/23
- [PATCH 2/7] import cran: Move guix-name to top-level., Ricardo Wurmus, 2016/05/23
- [PATCH 3/7] import cran: description->package: Also return package dependencies., Ricardo Wurmus, 2016/05/23
- [PATCH 4/7] import cran: Ignore default R packages., Ricardo Wurmus, 2016/05/23
- [PATCH 5/7] import cran: Add recursive importer.,
Ricardo Wurmus <=
- [PATCH 6/7] import cran: Add "recursive" option., Ricardo Wurmus, 2016/05/23
- [PATCH 7/7] guix import: Print list of expressions., Ricardo Wurmus, 2016/05/23
- Re: [PATCH] Add recursive CRAN importer, Ricardo Wurmus, 2016/05/24