distro: Reduce the bootstrap set.
* distro/base.scm (%bootstrap-inputs): Remove `gnumake', `diffutils', and `findutils'. (gnu-make-boot0, diffutils-boot0, findutils-boot0, %boot0-inputs): New variables. (binutils-boot0, gcc-boot0, linux-headers-boot0, %boot1-inputs): Replace %BOOTSTRAP-INPUTS by %BOOT0-INPUTS. (final-inputs): Remove now unneeded call to `source-properties->location'.master
parent
2d14ef0f2c
commit
3c0670e686
|
@ -1273,15 +1273,10 @@ with the Linux kernel.")
|
|||
`(("libc" ,(nixpkgs-derivation "glibc"))
|
||||
,@(map (lambda (name)
|
||||
(list name (nixpkgs-derivation name)))
|
||||
|
||||
;; TODO: Reduce the bootstrap set. For instance, GNU Make can be
|
||||
;; built without a `make' instance; Findutils, bzip2, and xz can
|
||||
;; be built later.
|
||||
'("gnutar" "gzip" "bzip2" "xz" "diffutils" "patch"
|
||||
'("gnutar" "gzip" "bzip2" "xz" "patch"
|
||||
"coreutils" "gnused" "gnugrep" "bash"
|
||||
"findutils" ; used by `libtool'
|
||||
"gawk" ; used by `config.status'
|
||||
"gcc" "binutils" "gnumake")))))
|
||||
"gcc" "binutils")))))
|
||||
|
||||
(define-syntax substitute-keyword-arguments
|
||||
(syntax-rules ()
|
||||
|
@ -1300,6 +1295,50 @@ previous value of the keyword argument."
|
|||
(()
|
||||
(reverse before)))))))
|
||||
|
||||
(define gnu-make-boot0
|
||||
(package (inherit gnu-make)
|
||||
(name "make-boot0")
|
||||
(location (source-properties->location (current-source-location)))
|
||||
(arguments `(#:implicit-inputs? #f
|
||||
#:tests? #f ; cannot run "make check"
|
||||
#:phases
|
||||
(alist-replace
|
||||
'build (lambda _
|
||||
(zero? (system* "./build.sh")))
|
||||
(alist-replace
|
||||
'install (lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(bin (string-append out "/bin")))
|
||||
(mkdir out)
|
||||
(mkdir bin)
|
||||
(copy-file "make"
|
||||
(string-append bin "/make"))))
|
||||
%standard-phases))))
|
||||
(inputs %bootstrap-inputs)))
|
||||
|
||||
(define diffutils-boot0
|
||||
(let ((p (package-with-explicit-inputs diffutils
|
||||
`(("make" ,gnu-make-boot0)
|
||||
,@%bootstrap-inputs))))
|
||||
(package (inherit p)
|
||||
(location (source-properties->location (current-source-location)))
|
||||
(arguments `(#:tests? #f ; the test suite needs diffutils
|
||||
,@(package-arguments p))))))
|
||||
|
||||
(define findutils-boot0
|
||||
(package-with-explicit-inputs findutils
|
||||
`(("make" ,gnu-make-boot0)
|
||||
("diffutils" ,diffutils-boot0) ; for tests
|
||||
,@%bootstrap-inputs)
|
||||
(current-source-location)))
|
||||
|
||||
|
||||
(define %boot0-inputs
|
||||
`(("make" ,gnu-make-boot0)
|
||||
("diffutils" ,diffutils-boot0)
|
||||
("findutils" ,findutils-boot0)
|
||||
,@%bootstrap-inputs))
|
||||
|
||||
(define gcc-boot0
|
||||
(package (inherit gcc-4.7)
|
||||
(name "gcc-boot0")
|
||||
|
@ -1370,7 +1409,7 @@ previous value of the keyword argument."
|
|||
("gmp-source" ,(package-source gmp))
|
||||
("mpfr-source" ,(package-source mpfr))
|
||||
("mpc-source" ,(package-source mpc))
|
||||
,@%bootstrap-inputs))))
|
||||
,@%boot0-inputs))))
|
||||
|
||||
(define binutils-boot0
|
||||
;; Since Binutils in GCC-BOOT0 does not get installed, we need another one
|
||||
|
@ -1381,20 +1420,20 @@ previous value of the keyword argument."
|
|||
`(#:implicit-inputs? #f
|
||||
,@(package-arguments binutils)))
|
||||
(inputs `(("gcc" ,gcc-boot0)
|
||||
,@(alist-delete "gcc" %bootstrap-inputs)))))
|
||||
,@(alist-delete "gcc" %boot0-inputs)))))
|
||||
|
||||
(define linux-headers-boot0
|
||||
(package (inherit linux-headers)
|
||||
(arguments `(#:implicit-inputs? #f
|
||||
,@(package-arguments linux-headers)))
|
||||
(native-inputs `(("perl" ,(nixpkgs-derivation* "perl"))
|
||||
,@%bootstrap-inputs))))
|
||||
,@%boot0-inputs))))
|
||||
|
||||
(define %boot1-inputs
|
||||
;; 2nd stage inputs.
|
||||
`(("gcc" ,gcc-boot0)
|
||||
("binutils" ,binutils-boot0)
|
||||
,@(fold alist-delete %bootstrap-inputs
|
||||
,@(fold alist-delete %boot0-inputs
|
||||
'("gcc" "binutils"))))
|
||||
|
||||
(define-public glibc-final
|
||||
|
@ -1483,8 +1522,7 @@ previous value of the keyword argument."
|
|||
(define-public %final-inputs
|
||||
;; Final derivations used as implicit inputs by `gnu-build-system'.
|
||||
(let ((finalize (cut package-with-explicit-inputs <> %boot4-inputs
|
||||
(source-properties->location
|
||||
(current-source-location)))))
|
||||
(current-source-location))))
|
||||
`(,@(map (match-lambda
|
||||
((name package)
|
||||
(list name (finalize package))))
|
||||
|
|
Reference in New Issue