diff options
author | Ricardo Wurmus <rekado@elephly.net> | 2019-01-03 08:31:15 +0100 |
---|---|---|
committer | Ricardo Wurmus <rekado@elephly.net> | 2019-01-03 08:34:41 +0100 |
commit | b3d0617a55c62fe75af44707a3cd4138fa97e62d (patch) | |
tree | a36b4787f9177b1009b4fa442b84326501e609d8 | |
parent | 707efe171a4e0e542a7d969c130195fa94b5d615 (diff) | |
download | guix-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.scm | 10 |
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")))) |