[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
142/182: gnu: make-bootstrap: Memoize GCC variant.
From: |
guix-commits |
Subject: |
142/182: gnu: make-bootstrap: Memoize GCC variant. |
Date: |
Fri, 15 Nov 2019 00:01:59 -0500 (EST) |
kkebreau pushed a commit to branch wip-gnome-updates
in repository guix.
commit 0f5eae8ce67bb30e4d04fe2888ad3c4c5568f5be
Author: Ludovic Courtès <address@hidden>
Date: Sat Nov 9 22:22:39 2019 +0100
gnu: make-bootstrap: Memoize GCC variant.
This reduces the number of nodes in "guix graph guile-static-stripped"
from 165 to 150. Likewise, the hit rate in the 'add-data-to-store'
cache for "guix build guile-static-stripped -nd" goes from 24% to 12%.
* gnu/packages/make-bootstrap.scm (gcc-for-bootstrap): New procedure.
(package-with-relocatable-glibc): Use it.
---
gnu/packages/make-bootstrap.scm | 62 ++++++++++++++++++++++-------------------
1 file changed, 34 insertions(+), 28 deletions(-)
diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm
index 4b8387a..4e6be32 100644
--- a/gnu/packages/make-bootstrap.scm
+++ b/gnu/packages/make-bootstrap.scm
@@ -88,6 +88,39 @@ for `sh' in $PATH, and without nscd, and with static NSS
modules."
;; contain store file names, so the CRC changes at every rebuild.)
(outputs (delete "debug" (package-outputs base))))))
+(define gcc-for-bootstrap
+ (mlambdaq (glibc)
+ "Return a variant of GCC that uses the bootstrap variant of GLIBC."
+ (package
+ (inherit gcc)
+ (outputs '("out")) ;all in one so libgcc_s is easily found
+ (native-search-paths
+ ;; Set CPLUS_INCLUDE_PATH so GCC is able to find the libc
+ ;; C++ headers.
+ (cons (search-path-specification
+ (variable "CPLUS_INCLUDE_PATH")
+ (files '("include")))
+ (package-native-search-paths gcc)))
+ (inputs
+ `( ;; Distinguish the name so we can refer to it below.
+ ("bootstrap-libc" ,(glibc-for-bootstrap glibc))
+ ("libc:static" ,(glibc-for-bootstrap glibc) "static")
+ ,@(package-inputs gcc)))
+ (arguments
+ (substitute-keyword-arguments (package-arguments gcc)
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (add-before 'configure 'treat-glibc-as-system-header
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((libc (assoc-ref inputs "bootstrap-libc")))
+ ;; GCCs build processes requires that the libc
+ ;; we're building against is on the system header
+ ;; search path.
+ (for-each (lambda (var)
+ (setenv var (string-append libc "/include")))
+ '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH"))
+ #t))))))))))
+
(define (package-with-relocatable-glibc p)
"Return a variant of P that uses the libc as defined by
`glibc-for-bootstrap'."
@@ -127,34 +160,7 @@ for `sh' in $PATH, and without nscd, and with static NSS
modules."
,@(%final-inputs)))
`(("libc" ,(glibc-for-bootstrap glibc))
("libc:static" ,(glibc-for-bootstrap glibc) "static")
- ("gcc" ,(package (inherit gcc)
- (outputs '("out")) ;all in one so libgcc_s is easily found
- (native-search-paths
- ;; Set CPLUS_INCLUDE_PATH so GCC is able to find the libc
- ;; C++ headers.
- (cons (search-path-specification
- (variable "CPLUS_INCLUDE_PATH")
- (files '("include")))
- (package-native-search-paths gcc)))
- (inputs
- `(;; Distinguish the name so we can refer to it below.
- ("bootstrap-libc" ,(glibc-for-bootstrap glibc))
- ("libc:static" ,(glibc-for-bootstrap glibc) "static")
- ,@(package-inputs gcc)))
- (arguments
- (substitute-keyword-arguments (package-arguments gcc)
- ((#:phases phases)
- `(modify-phases ,phases
- (add-before 'configure 'treat-glibc-as-system-header
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((libc (assoc-ref inputs
"bootstrap-libc")))
- ;; GCCs build processes requires that the libc
- ;; we're building against is on the system
header
- ;; search path.
- (for-each (lambda (var)
- (setenv var (string-append libc
"/include")))
- '("C_INCLUDE_PATH"
"CPLUS_INCLUDE_PATH"))
- #t)))))))))
+ ("gcc" ,(gcc-for-bootstrap glibc))
,@(fold alist-delete (%final-inputs) '("libc" "gcc")))))
(package-with-explicit-inputs p inputs
- 125/182: gnu: Add homebank., (continued)
- 125/182: gnu: Add homebank., guix-commits, 2019/11/15
- 137/182: gnu: perl-file-configdir: Update to 0.021., guix-commits, 2019/11/15
- 120/182: gnu: botan: Update to 2.12.1., guix-commits, 2019/11/15
- 130/182: gnu: botan: Use getentropy()., guix-commits, 2019/11/15
- 123/182: news: Add Spanish translation., guix-commits, 2019/11/15
- 129/182: gnu: botan: Optimise., guix-commits, 2019/11/15
- 128/182: gnu: miniupnpc: Don't use NAME in source URI., guix-commits, 2019/11/15
- 133/182: gnu: fribidi: Fix CVE-2019-18397., guix-commits, 2019/11/15
- 136/182: gnu: perl-class-inspector: Update to 1.36., guix-commits, 2019/11/15
- 139/182: services: hpcguix-web: Delete lock files during activation., guix-commits, 2019/11/15
- 142/182: gnu: make-bootstrap: Memoize GCC variant.,
guix-commits <=
- 143/182: gnu: make-bootstrap: Slightly clarify 'package-with-relocatable-glibc'., guix-commits, 2019/11/15
- 141/182: services: 'fold-services' memoizes service values., guix-commits, 2019/11/15
- 145/182: gnu: Add matcha-theme., guix-commits, 2019/11/15
- 144/182: doc: Mention value /var to localstatedir option., guix-commits, 2019/11/15
- 146/182: gnu: Add artyfx, guix-commits, 2019/11/15
- 152/182: gnu: gegl: Add source URIs., guix-commits, 2019/11/15
- 151/182: gnu: babl: Update to 0.1.72., guix-commits, 2019/11/15
- 159/182: gnu: cgal: Use HTTPS home page., guix-commits, 2019/11/15
- 157/182: gnu: faad2: Update to 2.8.6., guix-commits, 2019/11/15
- 163/182: gnu: monero-gui: Update to 0.15.0.0., guix-commits, 2019/11/15