[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#42338] [PATCH v5 4/9] guix: import: composer: Use memoization.
From: |
Nicolas Graves |
Subject: |
[bug#42338] [PATCH v5 4/9] guix: import: composer: Use memoization. |
Date: |
Thu, 2 Nov 2023 16:16:51 +0100 |
---
guix/import/composer.scm | 24 ++++++++++++++----------
1 file changed, 14 insertions(+), 10 deletions(-)
diff --git a/guix/import/composer.scm b/guix/import/composer.scm
index c152f402bb..177dc63092 100644
--- a/guix/import/composer.scm
+++ b/guix/import/composer.scm
@@ -27,6 +27,7 @@ (define-module (guix import composer)
#:use-module (guix import json)
#:use-module (guix import utils)
#:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix memoization)
#:use-module (guix packages)
#:use-module (guix serialization)
#:use-module (guix upstream)
@@ -197,16 +198,18 @@ (define (make-php-sexp composer-package)
((license) license)
(_ license)))))))))
-(define* (composer->guix-package package-name #:optional version)
- "Fetch the metadata for PACKAGE-NAME from packagist.org, and return the
+(define composer->guix-package
+ (memoize
+ (lambda* (package-name #:key version #:allow-other-keys)
+ "Fetch the metadata for PACKAGE-NAME from packagist.org, and return the
`package' s-expression corresponding to that package, or #f on failure."
- (let ((package (composer-fetch package-name version)))
- (and package
- (let* ((package (json->composer-package package))
- (dependencies-names (composer-package-require package))
- (dev-dependencies-names (composer-package-dev-require
package)))
- (values (make-php-sexp package)
- (append dependencies-names dev-dependencies-names))))))
+ (let ((package (composer-fetch package-name version)))
+ (and package
+ (let* ((package (json->composer-package package))
+ (dependencies-names (composer-package-require package))
+ (dev-dependencies-names (composer-package-dev-require
package)))
+ (values (make-php-sexp package)
+ (append dependencies-names dev-dependencies-names))))))))
(define (guix-name->composer-name name)
"Given a guix package name, return the name of the package in Packagist."
@@ -265,6 +268,7 @@ (define %composer-updater
(import latest-release)))
(define* (composer-recursive-import package-name #:optional version)
- (recursive-import package-name '()
+ (recursive-import package-name
+ #:version version
#:repo->guix-package composer->guix-package
#:guix-name php-package-name))
--
2.41.0
- [bug#42338] [PATCH v5 0/9] Composer build-system, Nicolas Graves, 2023/11/02
- [bug#42338] [PATCH v5 1/9] guix: import: Add composer importer., Nicolas Graves, 2023/11/02
- [bug#42338] [PATCH v5 2/9] gnu: Add composer-classloader., Nicolas Graves, 2023/11/02
- [bug#42338] [PATCH v5 5/9] guix: import: composer: Fix json->require., Nicolas Graves, 2023/11/02
- [bug#42338] [PATCH v5 4/9] guix: import: composer: Use memoization.,
Nicolas Graves <=
- [bug#42338] [PATCH v5 9/9] gnu: composer-build-system: Full check phase rewrite., Nicolas Graves, 2023/11/02
- [bug#42338] [PATCH v5 7/9] guix: import: composer: Modern inputs formatting., Nicolas Graves, 2023/11/02
- [bug#42338] [PATCH v5 3/9] guix: Add composer-build-system., Nicolas Graves, 2023/11/02
- [bug#42338] [PATCH v5 8/9] guix: import: composer: Full rewrite composer-fetch., Nicolas Graves, 2023/11/02
- [bug#42338] [PATCH v5 6/9] guix: import: composer: More robust string->license., Nicolas Graves, 2023/11/02