unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
From: Nicolas Graves via Guix-patches via <guix-patches@gnu.org>
To: 42338@debbugs.gnu.org
Cc: ngraves@ngraves.fr
Subject: [bug#42338] [PATCH v5 4/9] guix: import: composer: Use memoization.
Date: Thu,  2 Nov 2023 16:16:51 +0100	[thread overview]
Message-ID: <20231102151725.31362-5-ngraves@ngraves.fr> (raw)
In-Reply-To: <20231102151725.31362-1-ngraves@ngraves.fr>

---
 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





  parent reply	other threads:[~2023-11-02 15:18 UTC|newest]

Thread overview: 95+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-12 22:20 [bug#42338] [PATCH] Add composer build system (PHP) Julien Lepiller
2020-07-12 22:25 ` [bug#42338] [PATCH 01/34] guix: import: Add composer importer Julien Lepiller
2020-07-12 22:25   ` [bug#42338] [PATCH 02/34] gnu: Add composer-classloader Julien Lepiller
2020-07-12 22:25   ` [bug#42338] [PATCH 03/34] guix: Add composer-build-system Julien Lepiller
2020-09-07 14:09     ` Ludovic Courtès
2020-09-17 22:44       ` Julien Lepiller
2020-09-18  8:45         ` Ludovic Courtès
2020-09-18 23:24           ` Julien Lepiller
2020-09-25 10:33             ` Ludovic Courtès
2020-09-29 14:49               ` Julien Lepiller
2020-09-30  9:24                 ` Ludovic Courtès
2020-12-18 23:43                   ` Julien Lepiller
2020-12-21 14:51                     ` Ludovic Courtès
2020-07-12 22:25   ` [bug#42338] [PATCH 04/34] gnu: Add php-doctrine-instantiator Julien Lepiller
2020-07-12 22:25   ` [bug#42338] [PATCH 05/34] gnu: Add php-sebastian-recursion-context Julien Lepiller
2020-07-12 22:25   ` [bug#42338] [PATCH 06/34] gnu: Add php-sebastian-exporter Julien Lepiller
2020-07-12 22:25   ` [bug#42338] [PATCH 07/34] gnu: Add php-myclabs-deep-copy Julien Lepiller
2020-07-12 22:25   ` [bug#42338] [PATCH 08/34] gnu: Add php-phar-io-version Julien Lepiller
2020-07-12 22:25   ` [bug#42338] [PATCH 09/34] gnu: Add php-phar-io-manifest Julien Lepiller
2020-07-12 22:25   ` [bug#42338] [PATCH 10/34] gnu: Add php-symfony-polyfill-ctype Julien Lepiller
2020-07-12 22:25   ` [bug#42338] [PATCH 11/34] gnu: Add php-webmozart-assert Julien Lepiller
2020-07-12 22:25   ` [bug#42338] [PATCH 12/34] gnu: Add php-phpdocumentor-reflection-common Julien Lepiller
2020-07-12 22:25   ` [bug#42338] [PATCH 13/34] gnu: Add php-phpdocumentor-type-resolver Julien Lepiller
2020-07-12 22:25   ` [bug#42338] [PATCH 14/34] gnu: Add php-phpdocumentor-reflection-docblock Julien Lepiller
2020-07-12 22:25   ` [bug#42338] [PATCH 15/34] gnu: Add php-theseer-tokenizer Julien Lepiller
2020-07-12 22:25   ` [bug#42338] [PATCH 16/34] gnu: Add php-sebastian-code-unit-reverse-lookup Julien Lepiller
2020-07-12 22:25   ` [bug#42338] [PATCH 17/34] gnu: Add php-phpunit-php-token-stream Julien Lepiller
2020-07-12 22:25   ` [bug#42338] [PATCH 18/34] gnu: Add php-sebastian-version Julien Lepiller
2020-07-12 22:25   ` [bug#42338] [PATCH 19/34] gnu: Add php-phpunit-php-file-iterator Julien Lepiller
2020-07-12 22:25   ` [bug#42338] [PATCH 20/34] gnu: Add php-phpunit-php-text-template Julien Lepiller
2020-07-12 22:25   ` [bug#42338] [PATCH 21/34] gnu: Add php-sebastian-diff Julien Lepiller
2020-07-12 22:25   ` [bug#42338] [PATCH 22/34] gnu: Add php-sebastian-comparator Julien Lepiller
2020-07-12 22:25   ` [bug#42338] [PATCH 23/34] gnu: Add php-sebastian-environment Julien Lepiller
2020-07-12 22:25   ` [bug#42338] [PATCH 24/34] gnu: Add php-phpspec-prophecy Julien Lepiller
2020-07-12 22:25   ` [bug#42338] [PATCH 25/34] gnu: Add php-sebastian-object-reflector Julien Lepiller
2020-07-12 22:25   ` [bug#42338] [PATCH 26/34] gnu: Add php-sebastian-global-state Julien Lepiller
2020-07-12 22:25   ` [bug#42338] [PATCH 27/34] gnu: Add php-sebastian-object-enumerator Julien Lepiller
2020-07-12 22:25   ` [bug#42338] [PATCH 28/34] gnu: Add php-sebastian-resource-operations Julien Lepiller
2020-07-12 22:25   ` [bug#42338] [PATCH 29/34] gnu: Add php-sebastian-type Julien Lepiller
2020-07-12 22:25   ` [bug#42338] [PATCH 30/34] gnu: Add php-phpunit-php-code-coverage Julien Lepiller
2020-07-12 22:25   ` [bug#42338] [PATCH 31/34] gnu: Add php-phpunit-php-timer Julien Lepiller
2020-07-12 22:25   ` [bug#42338] [PATCH 32/34] gnu: Add php-phpunit-php-invoker Julien Lepiller
2020-07-12 22:25   ` [bug#42338] [PATCH 33/34] gnu: Add php-sebastian-code-unit Julien Lepiller
2020-07-12 22:25   ` [bug#42338] [PATCH 34/34] gnu: Add phpunit Julien Lepiller
2020-09-07 14:06   ` [bug#42338] [PATCH 01/34] guix: import: Add composer importer Ludovic Courtès
2020-09-17 22:43     ` Julien Lepiller
2020-09-18  8:31       ` Ludovic Courtès
2020-09-18 23:20         ` Julien Lepiller
2020-09-25 10:27           ` Ludovic Courtès
2021-10-16  4:15             ` [bug#42338] [PATCH] Add composer build system (PHP) Maxim Cournoyer
2021-08-23  9:46 ` [bug#42338] db
2022-08-13 20:30 ` [bug#42338] Ping about php composer guix-patches--- via
2022-08-13 20:38   ` Julien Lepiller
2022-10-06 16:27 ` [bug#42338] [PATCH] Add composer build system (PHP) Maxime Devos
2022-10-11 18:07   ` guix-patches--- via
2023-04-21  0:23 ` Adam Faiz via Guix-patches via
2023-09-26 10:31 ` [bug#42338] [PATCH v3 1/7] guix: import: Add composer importer Nicolas Graves via Guix-patches via
2023-09-26 10:31   ` [bug#42338] [PATCH v3 2/7] gnu: Add composer-classloader Nicolas Graves via Guix-patches via
2023-09-26 10:31   ` [bug#42338] [PATCH v3 3/7] guix: Add composer-build-system Nicolas Graves via Guix-patches via
2023-09-26 10:31   ` [bug#42338] [PATCH v3 4/7] guix: import: composer: Use memoization Nicolas Graves via Guix-patches via
2023-09-26 10:31   ` [bug#42338] [PATCH v3 5/7] guix: import: composer: Fix json->require Nicolas Graves via Guix-patches via
2023-09-26 10:31   ` [bug#42338] [PATCH v3 6/7] guix: import: composer: More robust string->license Nicolas Graves via Guix-patches via
2023-09-26 10:31   ` [bug#42338] [PATCH v3 7/7] guix: import: composer: Modern inputs formatting Nicolas Graves via Guix-patches via
2023-09-26 10:43   ` [bug#42338] [PATCH v3 1/7] guix: import: Add composer importer Nicolas Graves via Guix-patches via
2023-10-14 15:48   ` Ludovic Courtès
2023-09-26 11:25 ` [bug#42338] [PATCH v3] guix: import: composer: Fix match-lambda with a default fallback Nicolas Graves via Guix-patches via
2023-09-26 11:27   ` Nicolas Graves via Guix-patches via
2023-09-26 11:29 ` [bug#42338] [PATCH v4] guix: composer-build-system: Fix match-lambda with a fallback Nicolas Graves via Guix-patches via
2023-11-02 15:04 ` [bug#42338] [PATCH 0/9] Composer build system Nicolas Graves via Guix-patches via
2023-11-02 15:04   ` [bug#42338] [PATCH 1/9] guix: import: Add composer importer Nicolas Graves via Guix-patches via
2023-11-02 15:04   ` [bug#42338] [PATCH 2/9] gnu: Add composer-classloader Nicolas Graves via Guix-patches via
2023-11-02 15:04   ` [bug#42338] [PATCH 3/9] guix: Add composer-build-system Nicolas Graves via Guix-patches via
2023-11-02 15:04   ` [bug#42338] [PATCH 4/9] guix: import: composer: Use memoization Nicolas Graves via Guix-patches via
2023-11-02 15:04   ` [bug#42338] [PATCH 5/9] guix: import: composer: Fix json->require Nicolas Graves via Guix-patches via
2023-11-02 15:04   ` [bug#42338] [PATCH 6/9] guix: import: composer: More robust string->license Nicolas Graves via Guix-patches via
2023-11-02 15:04   ` [bug#42338] [PATCH 7/9] guix: import: composer: Modern inputs formatting Nicolas Graves via Guix-patches via
2023-11-02 15:04   ` [bug#42338] [PATCH 8/9] guix: import: composer: Full rewrite composer-fetch Nicolas Graves via Guix-patches via
2023-11-02 15:04   ` [bug#42338] [PATCH 9/9] gnu: composer-build-system: Full check phase rewrite Nicolas Graves via Guix-patches via
2023-11-02 15:16 ` [bug#42338] [PATCH v5 0/9] Composer build-system Nicolas Graves via Guix-patches via
2023-11-02 15:16   ` [bug#42338] [PATCH v5 1/9] guix: import: Add composer importer Nicolas Graves via Guix-patches via
2023-11-02 15:16   ` [bug#42338] [PATCH v5 2/9] gnu: Add composer-classloader Nicolas Graves via Guix-patches via
2023-11-02 15:16   ` [bug#42338] [PATCH v5 3/9] guix: Add composer-build-system Nicolas Graves via Guix-patches via
2023-11-02 15:16   ` Nicolas Graves via Guix-patches via [this message]
2023-11-02 15:16   ` [bug#42338] [PATCH v5 5/9] guix: import: composer: Fix json->require Nicolas Graves via Guix-patches via
2023-11-02 15:16   ` [bug#42338] [PATCH v5 6/9] guix: import: composer: More robust string->license Nicolas Graves via Guix-patches via
2023-11-02 15:16   ` [bug#42338] [PATCH v5 7/9] guix: import: composer: Modern inputs formatting Nicolas Graves via Guix-patches via
2023-11-02 15:16   ` [bug#42338] [PATCH v5 8/9] guix: import: composer: Full rewrite composer-fetch Nicolas Graves via Guix-patches via
2023-11-02 15:16   ` [bug#42338] [PATCH v5 9/9] gnu: composer-build-system: Full check phase rewrite Nicolas Graves via Guix-patches via
     [not found]   ` <87ttq3u8m4.fsf@ngraves.fr>
2023-12-07 12:36     ` [bug#42338] [Nicolas Graves via Guix-patches via] [bug#42338] [PATCH v5 0/9] Composer build-system Nicolas Graves via Guix-patches via
2023-12-18 22:33   ` Ludovic Courtès
2023-12-19  7:43     ` Nicolas Graves via Guix-patches via
2023-12-09 22:00 ` [bug#42338] [PATCH] Add composer build system (PHP) Charlie McMackin
2023-12-20 10:41 ` Wilko Meyer
2023-12-20 11:31   ` Julien Lepiller
2023-12-20 11:40     ` Wilko Meyer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231102151725.31362-5-ngraves@ngraves.fr \
    --to=guix-patches@gnu.org \
    --cc=42338@debbugs.gnu.org \
    --cc=ngraves@ngraves.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).