summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRicardo Wurmus <rekado@elephly.net>2019-01-03 08:31:15 +0100
committerRicardo Wurmus <rekado@elephly.net>2019-01-03 08:34:41 +0100
commitb3d0617a55c62fe75af44707a3cd4138fa97e62d (patch)
treea36b4787f9177b1009b4fa442b84326501e609d8
parent707efe171a4e0e542a7d969c130195fa94b5d615 (diff)
downloadpatches-b3d0617a55c62fe75af44707a3cd4138fa97e62d.tar
patches-b3d0617a55c62fe75af44707a3cd4138fa97e62d.tar.gz
import: cran: Download tarballs only once.
* guix/import/cran.scm (download): New procedure. (fetch-description, description->package): Use it.
-rw-r--r--guix/import/cran.scm10
1 files changed, 8 insertions, 2 deletions
diff --git a/guix/import/cran.scm b/guix/import/cran.scm
index aaa1caf035..507e77ed79 100644
--- a/guix/import/cran.scm
+++ b/guix/import/cran.scm
@@ -161,6 +161,12 @@ bioconductor package NAME, or #F if the package is unknown."
(bioconductor-packages-list))
(cut assoc-ref <> "Version")))
+;; Little helper to download URLs only once.
+(define download
+ (memoize
+ (lambda (url)
+ (with-store store (download-to-store store url)))))
+
(define (fetch-description repository name)
"Return an alist of the contents of the DESCRIPTION file for the R package
NAME in the given REPOSITORY, or #f in case of failure. NAME is
@@ -183,7 +189,7 @@ from ~s: ~a (~s)~%"
;; download the source tarball, and then extract the DESCRIPTION file.
(and-let* ((version (latest-bioconductor-package-version name))
(url (car (bioconductor-uri name version)))
- (tarball (with-store store (download-to-store store url))))
+ (tarball (download url)))
(call-with-temporary-directory
(lambda (dir)
(parameterize ((current-error-port (%make-void-port "rw+"))
@@ -299,7 +305,7 @@ from the alist META, which was derived from the R package's DESCRIPTION file."
((url rest ...) url)
((? string? url) url)
(_ #f)))
- (tarball (with-store store (download-to-store store source-url)))
+ (tarball (download source-url))
(sysdepends (append
(if (needs-zlib? tarball) '("zlib") '())
(map string-downcase (listify meta "SystemRequirements"))))