mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 05:18:07 -05:00
system: Prefer packages from %FINAL-INPUTS.
* gnu/packages/base.scm (canonical-package): New procedure. * gnu/system.scm (%base-packages): Pass BASH, COREUTILS, FINDUTILS, GREP, and SED through 'canonical-package'.
This commit is contained in:
parent
eef4096c14
commit
9b762b8d7c
2 changed files with 45 additions and 6 deletions
|
@ -42,6 +42,7 @@ (define-module (gnu packages base)
|
||||||
#:use-module (guix utils)
|
#:use-module (guix utils)
|
||||||
#:use-module (srfi srfi-1)
|
#:use-module (srfi srfi-1)
|
||||||
#:use-module (srfi srfi-26)
|
#:use-module (srfi srfi-26)
|
||||||
|
#:use-module (ice-9 vlist)
|
||||||
#:use-module (ice-9 match))
|
#:use-module (ice-9 match))
|
||||||
|
|
||||||
;;; Commentary:
|
;;; Commentary:
|
||||||
|
@ -1204,6 +1205,40 @@ (define-public %final-inputs
|
||||||
("gcc" ,gcc-final)
|
("gcc" ,gcc-final)
|
||||||
("libc" ,glibc-final))))
|
("libc" ,glibc-final))))
|
||||||
|
|
||||||
|
(define-public canonical-package
|
||||||
|
(let ((name->package (fold (lambda (input result)
|
||||||
|
(match input
|
||||||
|
((_ package)
|
||||||
|
(vhash-cons (package-full-name package)
|
||||||
|
package result))))
|
||||||
|
vlist-null
|
||||||
|
`(("guile" ,guile-final)
|
||||||
|
,@%final-inputs))))
|
||||||
|
(lambda (package)
|
||||||
|
"Return the 'canonical' variant of PACKAGE---i.e., if PACKAGE is one of
|
||||||
|
the implicit inputs of 'gnu-build-system', return that one, otherwise return
|
||||||
|
PACKAGE.
|
||||||
|
|
||||||
|
The goal is to avoid duplication in cases like GUILE-FINAL vs. GUILE-2.0,
|
||||||
|
COREUTILS-FINAL vs. COREUTILS, etc."
|
||||||
|
;; XXX: This doesn't handle dependencies of the final inputs, such as
|
||||||
|
;; libunistring, GMP, etc.
|
||||||
|
(match (vhash-assoc (package-full-name package) name->package)
|
||||||
|
((_ . canon)
|
||||||
|
;; In general we want CANON, except if we're cross-compiling: CANON
|
||||||
|
;; uses explicit inputs, so it is "anchored" in the bootstrapped
|
||||||
|
;; process, with dependencies on things that cannot be
|
||||||
|
;; cross-compiled.
|
||||||
|
(if (%current-target-system)
|
||||||
|
package
|
||||||
|
canon))
|
||||||
|
(_ package)))))
|
||||||
|
|
||||||
|
|
||||||
|
;;;
|
||||||
|
;;; GCC toolchain.
|
||||||
|
;;;
|
||||||
|
|
||||||
(define (gcc-toolchain gcc)
|
(define (gcc-toolchain gcc)
|
||||||
"Return a complete toolchain for GCC."
|
"Return a complete toolchain for GCC."
|
||||||
(package
|
(package
|
||||||
|
|
|
@ -216,12 +216,16 @@ (define (operating-system-services os)
|
||||||
(define %base-packages
|
(define %base-packages
|
||||||
;; Default set of packages globally visible. It should include anything
|
;; Default set of packages globally visible. It should include anything
|
||||||
;; required for basic administrator tasks.
|
;; required for basic administrator tasks.
|
||||||
(list bash coreutils findutils grep sed
|
(cons* procps psmisc less zile
|
||||||
procps psmisc less zile
|
guile-final (@ (gnu packages admin) dmd) guix
|
||||||
guile-final (@ (gnu packages admin) dmd) guix
|
util-linux inetutils isc-dhcp
|
||||||
util-linux inetutils isc-dhcp
|
net-tools ; XXX: remove when Inetutils suffices
|
||||||
net-tools ; XXX: remove when Inetutils suffices
|
module-init-tools kbd
|
||||||
module-init-tools kbd))
|
|
||||||
|
;; The packages below are also in %FINAL-INPUTS, so take them from
|
||||||
|
;; there to avoid duplication.
|
||||||
|
(map canonical-package
|
||||||
|
(list bash coreutils findutils grep sed))))
|
||||||
|
|
||||||
(define %default-issue
|
(define %default-issue
|
||||||
;; Default contents for /etc/issue.
|
;; Default contents for /etc/issue.
|
||||||
|
|
Loading…
Reference in a new issue