[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#38408] [PATCH v9 6/8] guix: import: crate: memorize crate->guix-pac
From: |
Martin Becze |
Subject: |
[bug#38408] [PATCH v9 6/8] guix: import: crate: memorize crate->guix-package |
Date: |
Tue, 4 Feb 2020 07:18:23 -0500 |
This adds memorization to procedures that involve network lookups.
(mem-lookup-crate) is used on every dependency of a package to find
it's versions. (mem-crate->guix-package) is needed becuase
(topological-sort) depduplicates after dependencies have been turned
into dependencies.
* guix/import/crate.scm (mem-crate->guix-package, mem-lookup-crate)
---
guix/import/crate.scm | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/guix/import/crate.scm b/guix/import/crate.scm
index a82e5e877a..630f4d3749 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)
@@ -108,6 +109,8 @@ record or #f if it was not found."
(json->crate `(,@alist
("actual_versions" . ,versions))))))))
+(define mem-lookup-crate (memoize lookup-crate))
+
(define (crate-version-dependencies version)
"Return the list of <crate-dependency> records of VERSION, a
<crate-version>."
@@ -213,7 +216,7 @@ latest version of CRATE-NAME."
(eq? (crate-dependency-kind dependency) 'normal)))
(define crate
- (lookup-crate crate-name))
+ (mem-lookup-crate crate-name))
(define version-number
(or version
@@ -235,7 +238,7 @@ latest version of CRATE-NAME."
containing pairs of (name version)"
(sort (map (lambda (dep)
(let* ((name (crate-dependency-id dep))
- (crate (lookup-crate name))
+ (crate (mem-lookup-crate name))
(req (crate-dependency-requirement dep))
(ver (find-version crate req)))
(list name
@@ -262,9 +265,11 @@ latest version of CRATE-NAME."
string->license))
cargo-inputs))))
+(define mem-crate->guix-package (memoize crate->guix-package))
+
(define* (crate-recursive-import crate-name #:key version)
(recursive-import crate-name
- #:repo->guix-package crate->guix-package
+ #:repo->guix-package mem-crate->guix-package
#:version version
#:guix-name crate-name->package-name))
--
2.25.0
- [bug#38408] [PATCH v9 3/8] Added Guile-Semver as a dependency to guix, (continued)
- [bug#38408] [PATCH v9 3/8] Added Guile-Semver as a dependency to guix, Efraim Flashner, 2020/02/17
- [bug#38408] [PATCH v9 3/8] Added Guile-Semver as a dependency to guix, Ludovic Courtès, 2020/02/17
- [bug#38408] [PATCH v9 3/8] Added Guile-Semver as a dependency to guix, Martin Becze, 2020/02/18
- [bug#38408] [PATCH v9 3/8] Added Guile-Semver as a dependency to guix, Ludovic Courtès, 2020/02/20
- [bug#38408] [PATCH v9 3/8] Added Guile-Semver as a dependency to guix, Martin Becze, 2020/02/20
- [bug#38408] [PATCH v9 3/8] Added Guile-Semver as a dependency to guix, Ludovic Courtès, 2020/02/21
- [bug#38408] [PATCH v9 3/8] Added Guile-Semver as a dependency to guix, Martin Becze, 2020/02/21
- [bug#38408] [PATCH v9 3/8] Added Guile-Semver as a dependency to guix, Leo Famulari, 2020/02/21
- [bug#38408] [PATCH v9 3/8] Added Guile-Semver as a dependency to guix, Martin Becze, 2020/02/23
- [bug#38408] [PATCH v9 3/8] Added Guile-Semver as a dependency to guix, Martin Becze, 2020/02/23
[bug#38408] [PATCH v9 6/8] guix: import: crate: memorize crate->guix-package,
Martin Becze <=
[bug#38408] [PATCH v9 2/8] guix: import: crate: Use semver to resovle module versions, Martin Becze, 2020/02/04
[bug#38408] [PATCH v9 7/8] guix: import: utils: trim patch version from names, Martin Becze, 2020/02/04
[bug#38408] [PATCH v9 8/8] guix: import: parametrized importing of dev dependencies, Martin Becze, 2020/02/04
[bug#38408] [PATCH v9 0/8] recursive semver crate importer!, Leo Famulari, 2020/02/20