[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#68266] [PATCH 7/7] packages: rust: Memoize make-rust-sysroot result
From: |
Ludovic Courtès |
Subject: |
[bug#68266] [PATCH 7/7] packages: rust: Memoize make-rust-sysroot results. |
Date: |
Fri, 12 Jan 2024 15:13:12 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
Hi,
Christopher Baines <mail@cbaines.net> skribis:
> 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.
>
> * gnu/packages/rust.scm (make-rust-sysroot): Move code to
> make-rust-sysroot/implementation.
> (make-rust-sysroot/implementation): New variable.
>
> Change-Id: Ibb30c7398328c87c032bb8828635a34ada935167
[...]
> (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))
We should avoid using ‘mlambda’ (without ‘q’) with packages as it leads
to deep object comparisons. That’s why for packages we typically
always have one-argument (mlambdaq (package) …).
But since ‘base-rust’ wasn’t a parameter before, let’s keep it simple
(‘diff --ignore-space-change’):
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 2b86cf3c8b..983a3f0f41 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -62,6 +62,7 @@ (define-module (gnu packages rust)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix memoization)
#:use-module (guix packages)
#:use-module ((guix build utils) #:select (alist-replace))
#:use-module (guix utils)
@@ -1060,7 +1061,8 @@ (define-public rust
`("procps" ,procps)
(package-native-inputs base-rust))))))
-(define*-public (make-rust-sysroot target)
+(define-public make-rust-sysroot
+ (mlambda (target)
(let ((base-rust rust))
(package
(inherit base-rust)
@@ -1228,7 +1230,7 @@ (define*-public (make-rust-sysroot target)
(cross-binutils target)))))
(properties
`((hidden? . #t)
- ,(package-properties base-rust))))))
+ ,(package-properties base-rust)))))))
(define-public rust-analyzer
(package
It should help when cross-compiling several ‘cargo-build-system’ packages:
--8<---------------cut here---------------start------------->8---
$ time GUIX_PROFILING=object-cache guix build --no-grafts greetd wlgreet
du-dust circtools --target=aarch64-linux-gnu -d # before
/gnu/store/mivzv83wryv9gp5bjncg5m1831dx2xwr-circtools-1.0.0.drv
/gnu/store/4xf7kh9mi0vpvs8m1ak4x8w1rpsdpv6z-du-dust-0.8.6.drv
/gnu/store/ayk54gvlbc1qam6irzf9kaig56dhzni0-wlgreet-0.4.1.drv
/gnu/store/r601i40cii9ic5w1k4hy5c2yngfayh64-greetd-0.9.0.drv
Object Cache:
fresh caches: 22
lookups: 40435
hits: 36821 (91.1%)
cache size: 3613 entries
real 0m2.964s
user 0m2.925s
sys 0m0.174s
$ time GUIX_PROFILING=object-cache ./pre-inst-env guix build --no-grafts greetd
wlgreet du-dust circtools --target=aarch64-linux-gnu -d # after
/gnu/store/1wsldmvigjb8w2gk418npbnfznlb0ck1-circtools-1.0.0.drv
/gnu/store/b5c73fawjdvkgy431qxz9l6l9y9a9lhz-du-dust-0.8.6.drv
/gnu/store/zwc7qzsbzf62dgbbzy74lki4hsr406bw-wlgreet-0.4.1.drv
/gnu/store/vjdd23hc82701afb132z1ajcqa7hfd74-greetd-0.9.0.drv
Object Cache:
fresh caches: 22
lookups: 37942
hits: 34523 (91.0%)
cache size: 3418 entries
real 0m2.980s
user 0m3.300s
sys 0m0.160s
--8<---------------cut here---------------end--------------->8---
(Here we removed ~2.5k nodes from the cache.)
WDYT?
Ludo’.
- [bug#68266] [PATCH 0/7] Memoize packages associated with cross building., Christopher Baines, 2024/01/05
- [bug#68266] [PATCH 1/7] gnu: Memozise make-ld-wrapper results., Christopher Baines, 2024/01/05
- [bug#68266] [PATCH 2/7] gnu: Memozise cross-binutils results., Christopher Baines, 2024/01/05
- [bug#68266] [PATCH 3/7] gnu: Memozise cross-gcc results., Christopher Baines, 2024/01/05
- [bug#68266] [PATCH 5/7] gnu: Memozise cross-mig results., Christopher Baines, 2024/01/05
- [bug#68266] [PATCH 4/7] gnu: Memozise cross-kernel-headers results., Christopher Baines, 2024/01/05
- [bug#68266] [PATCH 7/7] packages: rust: Memoize make-rust-sysroot results., Christopher Baines, 2024/01/05
- [bug#68266] [PATCH 6/7] gnu: Memozise cross-libc results., Christopher Baines, 2024/01/05
- [bug#68266] [PATCH 1/7] gnu: Memozise make-ld-wrapper results., Ludovic Courtès, 2024/01/08
[bug#68266] [PATCH v2] guix: store: Add report-object-cache-duplication., Christopher Baines, 2024/01/10