summaryrefslogtreecommitdiff
path: root/gnu/packages/make-bootstrap.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/make-bootstrap.scm')
-rw-r--r--gnu/packages/make-bootstrap.scm508
1 files changed, 248 insertions, 260 deletions
diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm
index cdcb1dcaa2..267adde48c 100644
--- a/gnu/packages/make-bootstrap.scm
+++ b/gnu/packages/make-bootstrap.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017, 2021 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018, 2019 Mark H Weaver <mhw@netris.org>
@@ -23,13 +23,14 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages make-bootstrap)
+ #:use-module (guix gexp)
#:use-module (guix utils)
#:use-module (guix packages)
#:use-module (guix memoization)
#:use-module ((guix licenses) #:select (gpl3+))
#:use-module (guix build-system trivial)
#:use-module (guix build-system gnu)
- #:use-module ((gnu packages) #:select (search-patch))
+ #:use-module ((gnu packages) #:select (search-patch search-patches))
#:use-module (gnu packages base)
#:use-module (gnu packages cross-base)
#:use-module (gnu packages bash)
@@ -72,8 +73,10 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
(package
(inherit base)
(source (origin (inherit (package-source base))
- (patches (cons (search-patch "glibc-bootstrap-system.patch")
- (origin-patches (package-source base))))))
+ (patches (append (search-patches
+ "glibc-bootstrap-system.patch"
+ "glibc-static-nss.patch")
+ (origin-patches (package-source base))))))
(arguments
(substitute-keyword-arguments (package-arguments base)
((#:configure-flags flags)
@@ -203,8 +206,17 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
(("^xz_LDADD =")
"xz_LDADD = -all-static"))
#t)))))))
- (gawk (package (inherit gawk)
- (source (origin (inherit (package-source gawk))
+ (gawk (package
+ (inherit gawk)
+ (source (origin
+ (inherit (package-source gawk))
+ (modules '((guix build utils)))
+ (snippet
+ ;; Do not build 'getopt.c' since that leads to a
+ ;; link failure due to duplicate symbols with
+ ;; 'libc.a'.
+ '(substitute* "support/Makefile.in"
+ (("getopt\\.\\$\\(OBJEXT\\)") "")))
(patches (cons (search-patch "gawk-shell.patch")
(origin-patches
(package-source gawk))))))
@@ -213,7 +225,9 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
;; plug-in mechanism just fail on static builds:
;;
;; ./fts.awk:1: error: can't open shared library `filefuncs' for reading (No such file or directory)
- #:tests? #f
+ ;;
+ ;; Therefore disable extensions support.
+ #:configure-flags (list "--disable-extensions")
,@(substitute-keyword-arguments (package-arguments gawk)
((#:phases phases)
@@ -260,19 +274,9 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
(delete 'fix-egrep-and-fgrep)))))))
(finalize (compose static-package
package-with-relocatable-glibc)))
- `(,@(map (match-lambda
- ((name package)
- (list name (finalize package))))
- `(("tar" ,tar)
- ("gzip" ,gzip)
- ("bzip2" ,bzip2)
- ("xz" ,xz)
- ("patch" ,patch)
- ("coreutils" ,coreutils)
- ("sed" ,sed)
- ("grep" ,grep)
- ("gawk" ,gawk)))
- ("bash" ,static-bash))))
+ (append (map finalize
+ (list tar gzip bzip2 xz patch coreutils sed grep gawk))
+ (list static-bash))))
(define %static-binaries
(package
@@ -317,7 +321,10 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
;; same name as the input.
(for-each (match-lambda
((name . dir)
- (let ((source (string-append dir "/bin/" name)))
+ (let* ((name (if (string-prefix? "bash" name)
+ "bash"
+ name))
+ (source (string-append dir "/bin/" name)))
(format #t "copying ~s...~%" source)
(copy-file source
(string-append bin "/" name)))))
@@ -362,7 +369,7 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
(out (assoc-ref %outputs "out")))
(copy-linux-headers out in)
#t))))
- (inputs `(("linux-libre-headers" ,linux-libre-headers)))))
+ (inputs (list linux-libre-headers))))
(define %binutils-static
;; Statically-linked Binutils.
@@ -374,10 +381,6 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
(package-arguments binutils))
((#:configure-flags flags _ ...)
flags)))
- #:make-flags ,(match (memq #:make-flags (package-arguments binutils))
- ((#:make-flags flags _ ...)
- flags)
- (_ ''()))
#:strip-flags '("--strip-all")
#:phases (modify-phases %standard-phases
(add-before 'configure 'all-static
@@ -395,32 +398,31 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
(define %binutils-static-stripped
;; The subset of Binutils that we need.
- (package (inherit %binutils-static)
+ (package
+ (inherit %binutils-static)
(name (string-append (package-name %binutils-static) "-stripped"))
(build-system trivial-build-system)
(outputs '("out"))
(arguments
- `(#:modules ((guix build utils))
- #:builder
- (begin
- (use-modules (guix build utils))
-
- (setvbuf (current-output-port)
- (cond-expand (guile-2.0 _IOLBF) (else 'line)))
- (let* ((in (assoc-ref %build-inputs "binutils"))
- (out (assoc-ref %outputs "out"))
- (bin (string-append out "/bin")))
- (mkdir-p bin)
- (for-each (lambda (file)
- (let ((target (string-append bin "/" file)))
- (format #t "copying `~a'...~%" file)
- (copy-file (string-append in "/bin/" file)
- target)
- (remove-store-references target)))
- '("ar" "as" "ld" "nm" "objcopy" "objdump"
- "ranlib" "readelf" "size" "strings" "strip"))
- #t))))
- (inputs `(("binutils" ,%binutils-static)))))
+ (list #:modules '((guix build utils))
+ #:builder
+ #~(begin
+ (use-modules (guix build utils))
+
+ (setvbuf (current-output-port)
+ (cond-expand (guile-2.0 _IOLBF) (else 'line)))
+ (let* ((in #$%binutils-static)
+ (out #$output)
+ (bin (string-append out "/bin")))
+ (mkdir-p bin)
+ (for-each (lambda (file)
+ (let ((target (string-append bin "/" file)))
+ (format #t "copying `~a'...~%" file)
+ (copy-file (string-append in "/bin/" file)
+ target)
+ (remove-store-references target)))
+ '("ar" "as" "ld" "nm" "objcopy" "objdump"
+ "ranlib" "readelf" "size" "strings" "strip"))))))))
(define (%glibc-stripped)
;; GNU libc's essential shared libraries, dynamic linker, and headers,
@@ -441,7 +443,7 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
(assoc-ref %build-inputs "kernel-headers")))))
(inputs `(("kernel-headers"
,(if (or (and (%current-target-system)
- (hurd-triplet? (%current-target-system)))
+ (target-hurd? (%current-target-system)))
(string-suffix? "-hurd" (%current-system)))
gnumach-headers
linux-libre-headers))
@@ -533,66 +535,64 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
(define %gcc-stripped
;; The subset of GCC files needed for bootstrap.
- (package (inherit gcc-7)
+ (package
+ (inherit gcc-7)
(name "gcc-stripped")
(build-system trivial-build-system)
(source #f)
(outputs '("out")) ;only one output
(arguments
- `(#:modules ((guix build utils))
- #:builder
- (begin
- (use-modules (srfi srfi-1)
- (srfi srfi-26)
- (guix build utils))
-
- (setvbuf (current-output-port)
- (cond-expand (guile-2.0 _IOLBF) (else 'line)))
- (let* ((out (assoc-ref %outputs "out"))
- (bindir (string-append out "/bin"))
- (libdir (string-append out "/lib"))
- (includedir (string-append out "/include"))
- (libexecdir (string-append out "/libexec"))
- (gcc (assoc-ref %build-inputs "gcc")))
- (copy-recursively (string-append gcc "/bin") bindir)
- (for-each remove-store-references
- (find-files bindir ".*"))
-
- (copy-recursively (string-append gcc "/lib") libdir)
- (for-each remove-store-references
- (remove (cut string-suffix? ".h" <>)
- (find-files libdir ".*")))
-
- (copy-recursively (string-append gcc "/libexec")
- libexecdir)
- (for-each remove-store-references
- (find-files libexecdir ".*"))
-
- ;; Starting from GCC 4.8, helper programs built natively
- ;; (‘genchecksum’, ‘gcc-nm’, etc.) rely on C++ headers.
- (copy-recursively (string-append gcc "/include/c++")
- (string-append includedir "/c++"))
-
- ;; For native builds, check whether the binaries actually work.
- ,@(if (%current-target-system)
- '()
- '((for-each (lambda (prog)
- (invoke (string-append gcc "/bin/" prog)
- "--version"))
- '("gcc" "g++" "cpp"))))
-
- #t))))
- (inputs `(("gcc" ,%gcc-static)))))
+ (list #:modules '((guix build utils))
+ #:builder
+ #~(begin
+ (use-modules (srfi srfi-1)
+ (srfi srfi-26)
+ (guix build utils))
+
+ (setvbuf (current-output-port)
+ (cond-expand (guile-2.0 _IOLBF) (else 'line)))
+ (let* ((out #$output)
+ (bindir (string-append out "/bin"))
+ (libdir (string-append out "/lib"))
+ (includedir (string-append out "/include"))
+ (libexecdir (string-append out "/libexec"))
+ (gcc #$%gcc-static))
+ (copy-recursively (string-append gcc "/bin") bindir)
+ (for-each remove-store-references
+ (find-files bindir ".*"))
+
+ (copy-recursively (string-append gcc "/lib") libdir)
+ (for-each remove-store-references
+ (remove (cut string-suffix? ".h" <>)
+ (find-files libdir ".*")))
+
+ (copy-recursively (string-append gcc "/libexec")
+ libexecdir)
+ (for-each remove-store-references
+ (find-files libexecdir ".*"))
+
+ ;; Starting from GCC 4.8, helper programs built natively
+ ;; (‘genchecksum’, ‘gcc-nm’, etc.) rely on C++ headers.
+ (copy-recursively (string-append gcc "/include/c++")
+ (string-append includedir "/c++"))
+
+ ;; For native builds, check whether the binaries actually work.
+ #$@(if (%current-target-system)
+ '()
+ '((for-each (lambda (prog)
+ (invoke (string-append gcc "/bin/" prog)
+ "--version"))
+ '("gcc" "g++" "cpp"))))))))))
;; Two packages: first build static, bare minimum content.
(define %mescc-tools-static
;; A statically linked MesCC Tools.
(package
- (inherit mescc-tools-0.5.2)
+ (inherit mescc-tools)
(name "mescc-tools-static")
(arguments
`(#:system "i686-linux"
- ,@(substitute-keyword-arguments (package-arguments mescc-tools-0.5.2)
+ ,@(substitute-keyword-arguments (package-arguments mescc-tools)
((#:make-flags flags)
`(cons "CC=gcc -static" ,flags)))))))
@@ -605,52 +605,47 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
(name (string-append (package-name %mescc-tools-static) "-stripped"))
(build-system trivial-build-system)
(arguments
- `(#:modules ((guix build utils))
- #:builder
- (begin
- (use-modules (guix build utils))
- (let* ((in (assoc-ref %build-inputs "mescc-tools"))
- (out (assoc-ref %outputs "out"))
- (bin (string-append out "/bin")))
- (mkdir-p bin)
- (for-each (lambda (file)
- (let ((target (string-append bin "/" file)))
- (format #t "copying `~a'...~%" file)
- (copy-file (string-append in "/bin/" file)
- target)
- (remove-store-references target)))
- '( "M1" "blood-elf" "hex2"))
- #t))))
- (inputs `(("mescc-tools" ,%mescc-tools-static)))))
+ (list #:modules '((guix build utils))
+ #:builder
+ #~(begin
+ (use-modules (guix build utils))
+ (let* ((in #$%mescc-tools-static)
+ (out #$output)
+ (bin (string-append out "/bin")))
+ (mkdir-p bin)
+ (for-each (lambda (file)
+ (let ((target (string-append bin "/" file)))
+ (format #t "copying `~a'...~%" file)
+ (copy-file (string-append in "/bin/" file)
+ target)
+ (remove-store-references target)))
+ '( "M1" "blood-elf" "hex2"))))))))
;; Two packages: first build static, bare minimum content.
(define-public %mes-minimal
;; A minimal Mes without documentation.
- (let ((triplet "i686-unknown-linux-gnu"))
- (package
- (inherit mes-0.19)
- (name "mes-minimal")
- (native-inputs
- `(("guile" ,guile-2.2)))
- (arguments
- `(#:system "i686-linux"
- #:strip-binaries? #f
- #:configure-flags '("--mes")
- #:phases
- (modify-phases %standard-phases
- (delete 'patch-shebangs)
- (add-after 'install 'strip-install
- (lambda _
- (let* ((out (assoc-ref %outputs "out"))
- (share (string-append out "/share")))
- (delete-file-recursively (string-append out "/lib/guile"))
- (delete-file-recursively (string-append share "/guile"))
- (delete-file-recursively (string-append share "/mes/scaffold"))
-
- (for-each delete-file
- (find-files
- (string-append share "/mes/lib")
- "\\.(h|c)")))))))))))
+ (package
+ (inherit mes)
+ (name "mes-minimal")
+ (native-inputs (list guile-3.0))
+ (arguments
+ `(#:system "i686-linux"
+ #:strip-binaries? #f
+ #:configure-flags '("--mes")
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'patch-shebangs)
+ (add-after 'install 'strip-install
+ (lambda _
+ (let* ((out (assoc-ref %outputs "out"))
+ (share (string-append out "/share")))
+ (delete-file-recursively (string-append out "/lib/guile"))
+ (delete-file-recursively (string-append share "/guile"))
+
+ (for-each delete-file
+ (find-files
+ (string-append share "/mes/lib")
+ "\\.(h|c)"))))))))))
;; next remove store references.
(define %mes-minimal-stripped
@@ -660,21 +655,20 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
(name (string-append (package-name %mes-minimal) "-stripped"))
(build-system trivial-build-system)
(arguments
- `(#:modules ((guix build utils))
- #:builder
- (begin
- (use-modules (guix build utils))
- (let ((in (assoc-ref %build-inputs "mes"))
- (out (assoc-ref %outputs "out")))
-
- (copy-recursively in out)
- (for-each (lambda (dir)
- (for-each remove-store-references
- (find-files (string-append out "/" dir)
- ".*")))
- '("bin" "share/mes"))
- #t))))
- (inputs `(("mes" ,%mes-minimal)))))
+ (list #:modules '((guix build utils))
+ #:allowed-references '()
+ #:builder
+ #~(begin
+ (use-modules (guix build utils))
+ (let ((in #$%mes-minimal)
+ (out #$output))
+
+ (copy-recursively in out)
+ (for-each (lambda (dir)
+ (for-each remove-store-references
+ (find-files (string-append out "/" dir)
+ ".*")))
+ '("bin" "share/mes"))))))))
(define* (make-guile-static guile patches)
(package-with-relocatable-glibc
@@ -692,25 +686,22 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
(outputs (delete "debug" (package-outputs guile)))
(inputs
- `(("libunistring:static" ,libunistring "static")
- ,@(package-inputs guile)))
+ (modify-inputs (package-inputs guile)
+ (prepend `(,libunistring "static"))))
(propagated-inputs
- `(("bdw-gc" ,libgc/static-libs)
- ,@(alist-delete "bdw-gc"
- (package-propagated-inputs guile))))
+ (modify-inputs (package-propagated-inputs guile)
+ (replace "bdw-gc" libgc/static-libs)))
(arguments
(substitute-keyword-arguments (package-arguments guile)
((#:configure-flags flags '())
;; When `configure' checks for ltdl availability, it
;; doesn't try to link using libtool, and thus fails
;; because of a missing -ldl. Work around that.
-
- ;; XXX: On ARMv7, disable JIT: it causes crashes with 3.0.2,
- ;; possibly related to <https://bugs.gnu.org/40737>.
- (if (target-arm32?)
- ''("LDFLAGS=-ldl" "--disable-jit")
- ''("LDFLAGS=-ldl")))
+ `(list "LDFLAGS=-ldl" "--enable-mini-gmp"
+ ,@(if (hurd-target?)
+ '("--disable-jit")
+ '())))
((#:phases phases '%standard-phases)
`(modify-phases ,phases
@@ -757,44 +748,41 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
(build-system trivial-build-system)
(arguments
;; The end result should depend on nothing but itself.
- `(#:allowed-references ("out")
- #:modules ((guix build utils))
- #:builder
- (let ((version ,(version-major+minor (package-version static-guile))))
- (use-modules (guix build utils))
-
- (let* ((in (assoc-ref %build-inputs "guile"))
- (out (assoc-ref %outputs "out"))
- (guile1 (string-append in "/bin/guile"))
- (guile2 (string-append out "/bin/guile")))
- (mkdir-p (string-append out "/share/guile/" version))
- (copy-recursively (string-append in "/share/guile/" version)
- (string-append out "/share/guile/" version))
-
- (mkdir-p (string-append out "/lib/guile/" version "/ccache"))
- (copy-recursively (string-append in "/lib/guile/" version "/ccache")
- (string-append out "/lib/guile/" version "/ccache"))
-
- (mkdir (string-append out "/bin"))
- (copy-file guile1 guile2)
-
- ;; Verify that the relocated Guile works.
- ,@(if (%current-target-system)
- '()
- '((invoke guile2 "--version")))
-
- ;; Strip store references.
- (remove-store-references guile2)
-
- ;; Verify that the stripped Guile works. If it aborts, it could be
- ;; that it tries to open iconv descriptors and fails because libc's
- ;; iconv data isn't available (see `guile-default-utf8.patch'.)
- ,@(if (%current-target-system)
- '()
- '((invoke guile2 "--version")))
-
- #t))))
- (inputs `(("guile" ,static-guile)))
+ (list #:allowed-references '("out")
+ #:modules '((guix build utils))
+ #:builder
+ #~(let ((version #$(version-major+minor (package-version static-guile))))
+ (use-modules (guix build utils))
+
+ (let* ((in #$static-guile)
+ (out #$output)
+ (guile1 (string-append in "/bin/guile"))
+ (guile2 (string-append out "/bin/guile")))
+ (mkdir-p (string-append out "/share/guile/" version))
+ (copy-recursively (string-append in "/share/guile/" version)
+ (string-append out "/share/guile/" version))
+
+ (mkdir-p (string-append out "/lib/guile/" version "/ccache"))
+ (copy-recursively (string-append in "/lib/guile/" version "/ccache")
+ (string-append out "/lib/guile/" version "/ccache"))
+
+ (mkdir (string-append out "/bin"))
+ (copy-file guile1 guile2)
+
+ ;; Verify that the relocated Guile works.
+ #$@(if (%current-target-system)
+ '()
+ '((invoke guile2 "--version")))
+
+ ;; Strip store references.
+ (remove-store-references guile2)
+
+ ;; Verify that the stripped Guile works. If it aborts, it could be
+ ;; that it tries to open iconv descriptors and fails because libc's
+ ;; iconv data isn't available (see `guile-default-utf8.patch'.)
+ #$@(if (%current-target-system)
+ '()
+ '((invoke guile2 "--version")))))))
(outputs '("out"))
(synopsis "Minimal statically-linked and relocatable Guile")))
@@ -809,37 +797,35 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
(define (tarball-package pkg)
"Return a package containing a tarball of PKG."
- (package (inherit pkg)
+ (package
+ (inherit pkg)
(name (string-append (package-name pkg) "-tarball"))
(build-system trivial-build-system)
- (native-inputs `(("tar" ,tar)
- ("xz" ,xz)))
- (inputs `(("input" ,pkg)))
+ (native-inputs (list tar xz))
(arguments
- (let ((name (package-name pkg))
- (version (package-version pkg)))
- `(#:modules ((guix build utils))
- #:builder
- (begin
- (use-modules (guix build utils))
- (let ((out (assoc-ref %outputs "out"))
- (input (assoc-ref %build-inputs "input"))
- (tar (assoc-ref %build-inputs "tar"))
- (xz (assoc-ref %build-inputs "xz")))
- (mkdir out)
- (set-path-environment-variable "PATH" '("bin") (list tar xz))
- (with-directory-excursion input
- (invoke "tar" "cJvf"
- (string-append out "/"
- ,name "-" ,version
- "-"
- ,(or (%current-target-system)
- (%current-system))
- ".tar.xz")
- "."
- ;; avoid non-determinism in the archive
- "--sort=name" "--mtime=@0"
- "--owner=root:0" "--group=root:0")))))))))
+ (list #:modules '((guix build utils))
+ #:builder
+ #~(begin
+ (use-modules (guix build utils))
+ (let ((out #$output)
+ (input #$pkg)
+ (tar #+(this-package-native-input "tar"))
+ (xz #+(this-package-native-input "xz")))
+ (mkdir out)
+ (set-path-environment-variable "PATH" '("bin") (list tar xz))
+ (with-directory-excursion input
+ (invoke "tar" "cJvf"
+ (string-append out "/"
+ #$(package-name pkg) "-"
+ #$(package-version pkg)
+ "-"
+ #$(or (%current-target-system)
+ (%current-system))
+ ".tar.xz")
+ "."
+ ;; avoid non-determinism in the archive
+ "--sort=name" "--mtime=@0"
+ "--owner=root:0" "--group=root:0"))))))))
(define %bootstrap-binaries-tarball
;; A tarball with the statically-linked bootstrap binaries.
@@ -882,36 +868,38 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
(source #f)
(build-system trivial-build-system)
(arguments
- `(#:modules ((guix build utils))
- #:builder
- (let ((out (assoc-ref %outputs "out")))
- (use-modules (guix build utils)
- (ice-9 match)
- (srfi srfi-26))
-
- (setvbuf (current-output-port)
- (cond-expand (guile-2.0 _IOLBF) (else 'line)))
- (mkdir out)
- (chdir out)
- (for-each (match-lambda
- ((name . directory)
- (for-each (lambda (file)
- (format #t "~a -> ~a~%" file out)
- (symlink file (basename file)))
- (find-files directory "\\.tar\\."))))
- %build-inputs)
- #t)))
- (inputs `(("guile-tarball" ,%guile-bootstrap-tarball)
- ,@(match (or (%current-target-system) (%current-system))
- ((or "i686-linux" "x86_64-linux")
- `(("bootstrap-mescc-tools" ,%mescc-tools-bootstrap-tarball)
- ("bootstrap-mes" ,%mes-bootstrap-tarball)
- ("bootstrap-linux-libre-headers"
- ,%linux-libre-headers-bootstrap-tarball)))
- (_ `(("gcc-tarball" ,%gcc-bootstrap-tarball)
- ("binutils-tarball" ,%binutils-bootstrap-tarball)
- ("glibc-tarball" ,(%glibc-bootstrap-tarball))
- ("coreutils&co-tarball" ,%bootstrap-binaries-tarball))))))
+ (list #:modules '((guix build utils))
+ #:builder
+ #~(begin
+ (use-modules (guix build utils)
+ (ice-9 match)
+ (srfi srfi-26))
+
+ (define out #$output)
+
+ (setvbuf (current-output-port)
+ (cond-expand (guile-2.0 _IOLBF) (else 'line)))
+ (mkdir out)
+ (chdir out)
+ (for-each (match-lambda
+ ((name . directory)
+ (for-each (lambda (file)
+ (format #t "~a -> ~a~%" file out)
+ (symlink file (basename file)))
+ (find-files directory "\\.tar\\."))))
+ %build-inputs))))
+ (inputs
+ (append (list %guile-bootstrap-tarball)
+ (match (or (%current-target-system) (%current-system))
+ ((or "i686-linux" "x86_64-linux")
+ (list %mescc-tools-bootstrap-tarball
+ %mes-bootstrap-tarball
+ %linux-libre-headers-bootstrap-tarball))
+ (_
+ (list %gcc-bootstrap-tarball
+ %binutils-bootstrap-tarball
+ (%glibc-bootstrap-tarball)
+ %bootstrap-binaries-tarball)))))
(synopsis "Tarballs containing all the bootstrap binaries")
(description synopsis)
(home-page #f)