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 @@
 | 
			
		|||
  #:use-module (guix utils)
 | 
			
		||||
  #:use-module (srfi srfi-1)
 | 
			
		||||
  #:use-module (srfi srfi-26)
 | 
			
		||||
  #:use-module (ice-9 vlist)
 | 
			
		||||
  #:use-module (ice-9 match))
 | 
			
		||||
 | 
			
		||||
;;; Commentary:
 | 
			
		||||
| 
						 | 
				
			
			@ -1204,6 +1205,40 @@ store.")
 | 
			
		|||
      ("gcc" ,gcc-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)
 | 
			
		||||
  "Return a complete toolchain for GCC."
 | 
			
		||||
  (package
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -216,12 +216,16 @@ explicitly appear in OS."
 | 
			
		|||
(define %base-packages
 | 
			
		||||
  ;; Default set of packages globally visible.  It should include anything
 | 
			
		||||
  ;; required for basic administrator tasks.
 | 
			
		||||
  (list bash coreutils findutils grep sed
 | 
			
		||||
        procps psmisc less zile
 | 
			
		||||
  (cons* procps psmisc less zile
 | 
			
		||||
         guile-final (@ (gnu packages admin) dmd) guix
 | 
			
		||||
         util-linux inetutils isc-dhcp
 | 
			
		||||
         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
 | 
			
		||||
  ;; Default contents for /etc/issue.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Reference in a new issue