~ruther/guix-local

9b762b8d7cd6b90bde5bc21c1d63601aad3d3885 — Ludovic Courtès 11 years ago eef4096
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'.
2 files changed, 45 insertions(+), 6 deletions(-)

M gnu/packages/base.scm
M gnu/system.scm
M gnu/packages/base.scm => gnu/packages/base.scm +35 -0
@@ 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

M gnu/system.scm => gnu/system.scm +10 -6
@@ 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
        guile-final (@ (gnu packages admin) dmd) guix
        util-linux inetutils isc-dhcp
        net-tools                        ; XXX: remove when Inetutils suffices
        module-init-tools kbd))
  (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

         ;; 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.