diff options
author | Ricardo Wurmus <rekado@elephly.net> | 2018-03-14 17:37:20 +0100 |
---|---|---|
committer | Ricardo Wurmus <rekado@elephly.net> | 2018-03-14 17:37:20 +0100 |
commit | 8c72ed923d77ee55989965bb02628043799b9548 (patch) | |
tree | 802e6eb910719a98fa09bf7c2bd884097f649adc /gnu/packages/commencement.scm | |
parent | 189be331acfda1c242a9c85fca8d2a0356742f48 (diff) | |
parent | aac6cbbfede0bbfafdbbeeb460f00a244333895d (diff) | |
download | guix-8c72ed923d77ee55989965bb02628043799b9548.tar.gz |
Merge branch 'master' into core-updates
Diffstat (limited to 'gnu/packages/commencement.scm')
-rw-r--r-- | gnu/packages/commencement.scm | 54 |
1 files changed, 34 insertions, 20 deletions
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index a475016876..33b957adfe 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -67,6 +67,15 @@ ;;; To avoid circular dependencies, this module should not be imported ;;; directly from anywhere. ;;; +;;; Below, we frequently use "inherit" to create modified packages. The +;;; reason why we use "inherit" instead of "package/inherit" is because we do +;;; not want these commencement packages to inherit grafts. By definition, +;;; these packages are not depended on at run time by any of the packages we +;;; use. Thus it does not make sense to inherit grafts. Furthermore, those +;;; grafts would often lead to extra overhead for users who would end up +;;; downloading those "-boot0" packages just to build package replacements +;;; that are in fact not going to be used. +;;; ;;; Code: (define gnu-make-boot0 @@ -649,27 +658,32 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" (define glibc-final ;; The final glibc, which embeds the statically-linked Bash built above. - (package (inherit glibc-final-with-bootstrap-bash) - (name "glibc") - (inputs `(("static-bash" ,static-bash-for-glibc) - ,@(alist-delete - "static-bash" - (package-inputs glibc-final-with-bootstrap-bash)))) - - ;; This time we need 'msgfmt' to install all the libc.mo files. - (native-inputs `(,@(package-native-inputs glibc-final-with-bootstrap-bash) - ("gettext" ,gettext-boot0))) - - ;; The final libc only refers to itself, but the 'debug' output contains - ;; references to GCC-BOOT0 and to the Linux headers. XXX: Would be great - ;; if 'allowed-references' were per-output. - (arguments - `(#:allowed-references - ,(cons* `(,gcc-boot0 "lib") (kernel-headers-boot0) - static-bash-for-glibc - (package-outputs glibc-final-with-bootstrap-bash)) + ;; Use 'package/inherit' so we get the 'replacement' of 'glibc', if any. + (let ((glibc (package-with-bootstrap-guile glibc))) + (package/inherit glibc + (name "glibc") + (inputs `(("static-bash" ,static-bash-for-glibc) + ,@(alist-delete + "static-bash" + (package-inputs glibc-final-with-bootstrap-bash)))) + + ;; This time we need 'msgfmt' to install all the libc.mo files. + (native-inputs `(,@(package-native-inputs glibc-final-with-bootstrap-bash) + ("gettext" ,gettext-boot0))) + + (propagated-inputs + (package-propagated-inputs glibc-final-with-bootstrap-bash)) + + ;; The final libc only refers to itself, but the 'debug' output contains + ;; references to GCC-BOOT0 and to the Linux headers. XXX: Would be great + ;; if 'allowed-references' were per-output. + (arguments + `(#:allowed-references + ,(cons* `(,gcc-boot0 "lib") (kernel-headers-boot0) + static-bash-for-glibc + (package-outputs glibc-final-with-bootstrap-bash)) - ,@(package-arguments glibc-final-with-bootstrap-bash))))) + ,@(package-arguments glibc-final-with-bootstrap-bash)))))) (define gcc-boot0-wrapped ;; Make the cross-tools GCC-BOOT0 and BINUTILS-BOOT0 available under the |