aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2019-10-12 14:42:36 +0200
committerLudovic Courtès <ludo@gnu.org>2019-10-12 15:18:25 +0200
commit099dbc4fd332d27a5010f17093f1d6b09d26212e (patch)
treebc24269f6ce1eeb9372ae16b9cfa48faedac73b6
parentd7e29a2b265a249d053f4763edd00e717ce8388d (diff)
downloadguix-099dbc4fd332d27a5010f17093f1d6b09d26212e.tar
guix-099dbc4fd332d27a5010f17093f1d6b09d26212e.tar.gz
gnu: Improve memoization of 'package-with-bootstrap-guile'.
Before that, the command: GUIX_PROFILING=memoization guix build -e '(@@ (gnu packages commencement) gnu-make-final)' -nd would show that 'package-with-bootstrap-guile' was called 2256 times (hit rate: 89%). Now, it is called 745 times (hit rate: 85%). "guix build libreoffice -nd" goes from 2.60s to 2.40s (-8%). * gnu/packages/commencement.scm (gnu-make-final) (coreutils-final, grep-final, sed-final, %final-inputs): Call 'package-with-bootstrap-guile' before 'package-with-explicit-inputs'.
-rw-r--r--gnu/packages/commencement.scm55
1 files changed, 27 insertions, 28 deletions
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 5bd139f30d..f234fa0a8a 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -2403,34 +2403,33 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
(define gnu-make-final
;; The final GNU Make, which uses the final Guile.
- (package-with-bootstrap-guile
- (package-with-explicit-inputs gnu-make
- (lambda _
- `(("guile" ,guile-final)
- ,@(%boot5-inputs)))
- (current-source-location))))
+ (package-with-explicit-inputs (package-with-bootstrap-guile gnu-make)
+ (lambda _
+ `(("guile" ,guile-final)
+ ,@(%boot5-inputs)))
+ (current-source-location)))
(define coreutils-final
;; The final Coreutils. Treat them specially because some packages, such as
;; Findutils, keep a reference to the Coreutils they were built with.
- (package-with-bootstrap-guile
- (package-with-explicit-inputs coreutils
- %boot5-inputs
- (current-source-location)
+ (package-with-explicit-inputs (package-with-bootstrap-guile coreutils)
+ %boot5-inputs
+ (current-source-location)
- ;; Use the final Guile, linked against the
- ;; final libc with working iconv, so that
- ;; 'substitute*' works well when touching
- ;; test files in Gettext.
- #:guile guile-final)))
+ ;; Use the final Guile, linked against the
+ ;; final libc with working iconv, so that
+ ;; 'substitute*' works well when touching
+ ;; test files in Gettext.
+ #:guile guile-final))
(define grep-final
;; The final grep. Gzip holds a reference to it (via zgrep), so it must be
;; built before gzip.
- (let ((grep (package-with-bootstrap-guile
- (package-with-explicit-inputs grep %boot5-inputs
- (current-source-location)
- #:guile guile-final))))
+ (let ((grep (package-with-explicit-inputs
+ (package-with-bootstrap-guile grep)
+ %boot5-inputs
+ (current-source-location)
+ #:guile guile-final)))
(package/inherit grep
(inputs (alist-delete "pcre" (package-inputs grep)))
(native-inputs `(("perl" ,perl-boot0))))))
@@ -2443,10 +2442,10 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
(define sed-final
;; The final sed.
- (let ((sed (package-with-bootstrap-guile
- (package-with-explicit-inputs sed %boot6-inputs
- (current-source-location)
- #:guile guile-final))))
+ (let ((sed (package-with-explicit-inputs (package-with-bootstrap-guile sed)
+ %boot6-inputs
+ (current-source-location)
+ #:guile guile-final)))
(package/inherit sed (native-inputs `(("perl" ,perl-boot0))))))
(define-public %final-inputs
@@ -2454,12 +2453,12 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
;; still use 'package-with-bootstrap-guile' so that the bootstrap tools are
;; used for origins that have patches, thereby avoiding circular
;; dependencies.
- (let ((finalize (compose package-with-bootstrap-guile
- (cut package-with-explicit-inputs <> %boot6-inputs
- (current-source-location)))))
+ (let ((finalize (compose (cut package-with-explicit-inputs <> %boot6-inputs
+ (current-source-location))
+ package-with-bootstrap-guile)))
`(,@(map (match-lambda
- ((name package)
- (list name (finalize package))))
+ ((name package)
+ (list name (finalize package))))
`(("tar" ,tar)
("gzip" ,gzip)
("bzip2" ,bzip2)