[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
03/09: import: crate: Memorize crate->guix-package.
From: |
guix-commits |
Subject: |
03/09: import: crate: Memorize crate->guix-package. |
Date: |
Sun, 5 Apr 2020 13:36:21 -0400 (EDT) |
lfam pushed a commit to branch wip-rav1e
in repository guix.
commit efa3440eafd299b1b91fddcebaed007a2d69fd3a
Author: Martin Becze <address@hidden>
AuthorDate: Thu Jan 30 11:17:00 2020 -0500
import: crate: Memorize crate->guix-package.
This adds memorization to procedures that involve network lookups.
'lookup-crate*' is used on every dependency of a package to get its version
list. It is also used to lookup a packages metadata.
'crate-recursive-import'
is also memorized since creating the same package twice will trigger a
lookup
on in its dependencies.
* guix/import/crate.scm (lookup-crate*): New procedure.
(crate->guix-package): Memorize package metadata lookups.
(crate-recursive-import): Memorize package creation.
Signed-off-by: Leo Famulari <address@hidden>
---
guix/import/crate.scm | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/guix/import/crate.scm b/guix/import/crate.scm
index 6338937..96cf8d9 100644
--- a/guix/import/crate.scm
+++ b/guix/import/crate.scm
@@ -28,6 +28,7 @@
#:use-module (guix import json)
#:use-module (guix import utils)
#:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix memoization)
#:use-module (guix monads)
#:use-module (guix packages)
#:use-module (guix upstream)
@@ -111,6 +112,8 @@ record or #f if it was not found."
(json->crate `(,@alist
("actual_versions" . ,versions))))))))
+(define lookup-crate* (memoize lookup-crate))
+
(define (crate-version-dependencies version)
"Return the list of <crate-dependency> records of VERSION, a
<crate-version>."
@@ -216,7 +219,7 @@ latest version of CRATE-NAME."
(eq? (crate-dependency-kind dependency) 'normal)))
(define crate
- (lookup-crate crate-name))
+ (lookup-crate* crate-name))
(define version-number
(or version
@@ -238,7 +241,7 @@ latest version of CRATE-NAME."
(define (sort-map-dependencies deps)
(sort (map (lambda (dep)
(let* ((name (crate-dependency-id dep))
- (crate (lookup-crate name))
+ (crate (lookup-crate* name))
(req (crate-dependency-requirement dep))
(ver (find-version crate req)))
(list name
@@ -267,7 +270,7 @@ latest version of CRATE-NAME."
(define* (crate-recursive-import crate-name #:key version)
(recursive-import crate-name
- #:repo->guix-package crate->guix-package
+ #:repo->guix-package (memoize crate->guix-package)
#:version version
#:guix-name crate-name->package-name))
- branch wip-rav1e created (now 4654f56), guix-commits, 2020/04/05
- 01/09: import: utils: 'recursive-import' accepts an optional version parameter., guix-commits, 2020/04/05
- 05/09: import: crate: Parametrized importing of dev dependencies., guix-commits, 2020/04/05
- 06/09: guix: self: Adds guile-semver as a depenedency., guix-commits, 2020/04/05
- 03/09: import: crate: Memorize crate->guix-package.,
guix-commits <=
- 04/09: import: utils: Trim patch version from names., guix-commits, 2020/04/05
- 02/09: import: crate: Use guile-semver to resolve module versions., guix-commits, 2020/04/05
- 08/09: gnu: Support rav1e in FFmpeg., guix-commits, 2020/04/05
- 07/09: gnu: Add rav1e., guix-commits, 2020/04/05
- 09/09: WIP: Move packages into the correct modules., guix-commits, 2020/04/05