packages: rust: Memoize make-rust-sysroot results.

To ensure that it just returns a single package record for some given
arguments, as this helps to avoid poor performance of the store connection
object cache.

Performance with computing the cross derivations is important for the data
service, as it's currently very slow to process revisions.

* gnu/packages/rust.scm (make-rust-sysroot): Move code to
make-rust-sysroot/implementation.
(make-rust-sysroot/implementation): New variable.

Change-Id: Ibb30c7398328c87c032bb8828635a34ada935167
This commit is contained in:
Christopher Baines 2024-01-05 16:40:49 +00:00
parent 75a63e2a2e
commit d162bd0e72
No known key found for this signature in database
GPG key ID: 5E28A33B0B84F577

View file

@ -60,6 +60,7 @@ (define-module (gnu packages rust)
#:use-module (guix build-system gnu)
#:use-module (guix build-system trivial)
#:use-module (guix download)
#:use-module (guix memoization)
#:use-module (guix git-download)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
@ -1057,7 +1058,10 @@ (define-public rust
(package-native-inputs base-rust))))))
(define*-public (make-rust-sysroot target)
(let ((base-rust rust))
(make-rust-sysroot/implementation target rust))
(define make-rust-sysroot/implementation
(mlambda (target base-rust)
(package
(inherit base-rust)
(name (string-append "rust-sysroot-for-" target))