From dab669e07584409d9c9a9dc2afa1c108aa948097 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 12 Oct 2019 15:01:50 +0200 Subject: gnu: ld-wrapper: Memoize. The command: guix graph -e '(@@ (gnu packages commencement) coreutils-final)' now shows 93 nodes (992 edges) instead of 176 nodes (1241 edges). * gnu/packages/commencement.scm (ld-wrapper-boot0): Use 'mlambda' instead of 'lambda'. (ld-wrapper-boot3): Likewise. --- gnu/packages/commencement.scm | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) (limited to 'gnu/packages/commencement.scm') diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index f234fa0a8a..d113acaba8 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -1942,15 +1942,16 @@ the bootstrap environment." (delete 'set-TZDIR))) ((#:tests? _ #f) #f)))))) -(define (ld-wrapper-boot0) - ;; We need this so binaries on Hurd will have libmachuser and libhurduser - ;; in their RUNPATH, otherwise validate-runpath will fail. - (make-ld-wrapper "ld-wrapper-boot0" - #:target boot-triplet - #:binutils binutils-boot0 - #:guile %bootstrap-guile - #:bash (car (assoc-ref (%boot0-inputs) "bash")) - #:guile-for-build %bootstrap-guile)) +(define ld-wrapper-boot0 + (mlambda () + ;; We need this so binaries on Hurd will have libmachuser and libhurduser + ;; in their RUNPATH, otherwise validate-runpath will fail. + (make-ld-wrapper "ld-wrapper-boot0" + #:target boot-triplet + #:binutils binutils-boot0 + #:guile %bootstrap-guile + #:bash (car (assoc-ref (%boot0-inputs) "bash")) + #:guile-for-build %bootstrap-guile))) (define (%boot1-inputs) ;; 2nd stage inputs. @@ -2238,13 +2239,14 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" ,@(package-arguments zlib))) (inputs (%boot2-inputs)))) -(define (ld-wrapper-boot3) - ;; A linker wrapper that uses the bootstrap Guile. - (make-ld-wrapper "ld-wrapper-boot3" - #:binutils binutils-final - #:guile %bootstrap-guile - #:bash (car (assoc-ref (%boot2-inputs) "bash")) - #:guile-for-build %bootstrap-guile)) +(define ld-wrapper-boot3 + (mlambda () + ;; A linker wrapper that uses the bootstrap Guile. + (make-ld-wrapper "ld-wrapper-boot3" + #:binutils binutils-final + #:guile %bootstrap-guile + #:bash (car (assoc-ref (%boot2-inputs) "bash")) + #:guile-for-build %bootstrap-guile))) (define gcc-final ;; The final GCC. -- cgit v1.2.3