~ruther/guix-local

4b0aa65c0a9301a70c798ea76a493f67ef8371f4 — David Elsing 2 years ago c18052f
gnu: import: Fix memoization in crate-recursive-import.

* guix/import/crate.scm (crate-recursive-import): Apply memoize outside the
lambda passed to recursive-import in order to actually use the memoization.

Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
1 files changed, 12 insertions(+), 9 deletions(-)

M guix/import/crate.scm
M guix/import/crate.scm => guix/import/crate.scm +12 -9
@@ 6,6 6,7 @@
;;; Copyright © 2022 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2023 Simon Tournier <zimon.toutoune@gmail.com>
;;; Copyright © 2023 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2023 David Elsing <david.elsing@posteo.net>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 328,15 329,17 @@ look up the development dependencs for the given crate."
      (values #f '())))

(define* (crate-recursive-import crate-name #:key version)
  (recursive-import crate-name
                    #:repo->guix-package (lambda* params
                      ;; download development dependencies only for the top level package
                      (let ((include-dev-deps? (equal? (car params) crate-name))
                            (crate->guix-package* (memoize crate->guix-package)))
                        (apply crate->guix-package*
                               (append params `(#:include-dev-deps? ,include-dev-deps?)))))
                    #:version version
                    #:guix-name crate-name->package-name))
  (recursive-import
   crate-name
   #:repo->guix-package
   (let ((crate->guix-package* (memoize crate->guix-package)))
     (lambda* params
       ;; download development dependencies only for the top level package
       (let ((include-dev-deps? (equal? (car params) crate-name)))
         (apply crate->guix-package*
                (append params `(#:include-dev-deps? ,include-dev-deps?))))))
   #:version version
   #:guix-name crate-name->package-name))

(define (guix-package->crate-name package)
  "Return the crate name of PACKAGE."