diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 0e49b6044c..32a462b545 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -13,7 +13,7 @@ ;;; Copyright © 2017, 2018, 2020 Marius Bakke ;;; Copyright © 2017 Eric Bavier ;;; Copyright © 2018 Tobias Geerinckx-Rice -;;; Copyright © 2018, 2019 Ricardo Wurmus +;;; Copyright © 2018, 2019, 2022 Ricardo Wurmus ;;; Copyright © 2020 Vitaliy Shatrov ;;; Copyright © 2020 Chris Marusich ;;; Copyright © 2021 Leo Le Bouter @@ -46,6 +46,7 @@ (define-module (gnu packages base) #:use-module (gnu packages bash) #:use-module (gnu packages bison) #:use-module (gnu packages ed) + #:use-module (gnu packages gawk) #:use-module (gnu packages gcc) #:use-module (gnu packages guile) #:use-module (gnu packages multiprecision) @@ -1014,6 +1015,105 @@ (define-public glibc-2.29 "glibc-reinstate-prlimit64-fallback.patch" "glibc-2.29-supported-locales.patch")))))) + +(define-public glibc-2.2.5 + (package + (inherit glibc) + (version "2.2.5") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/glibc/glibc-" version ".tar.gz")) + (patches (search-patches "glibc-boot-2.2.5.patch" + "glibc-bootstrap-system-2.2.5.patch")) + (sha256 + (base32 + "1vl48i16gx6h68whjyhgnn1s57vqq32f9ygfa2fls7pdkbsqvp2q")))) + (arguments + (list #:system "i686-linux" + #:implicit-inputs? #f + #:tests? #f + #:strip-binaries? #f + #:validate-runpath? #f + #:parallel-build? #f ; gcc-2.95.3 ICEs on massively parallel builds + #:make-flags + #~(list (string-append + "SHELL=" #$(this-package-native-input "bash") "/bin/sh")) + #:configure-flags + #~(list "--enable-shared" + "--enable-static" + "--disable-sanity-checks" + "--build=i686-unknown-linux-gnu" + "--host=i686-unknown-linux-gnu" + (string-append "--with-headers=" + #$(this-package-native-input "kernel-headers") + "/include") + "--enable-static-nss" + "--without-__thread" + "--without-cvs" + "--without-gd" + "--without-tls" + (string-append "--prefix=" #$output)) + #:phases + #~(modify-phases %standard-phases + (add-before 'configure 'setenv + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bash (assoc-ref inputs "bash")) + (shell (string-append bash "/bin/bash")) + (gcc (assoc-ref inputs "gcc")) + (cppflags (string-append + " -D MES_BOOTSTRAP=1" + " -D BOOTSTRAP_GLIBC=1")) + (cflags (string-append " -L " (getcwd)))) + (setenv "CONFIG_SHELL" shell) + (setenv "SHELL" shell) + (setenv "CPP" (string-append gcc "/bin/gcc -E " cppflags)) + (setenv "CC" (string-append gcc "/bin/gcc " cppflags cflags))))) + (replace 'configure ; needs classic invocation of configure + (lambda* (#:key configure-flags #:allow-other-keys) + (format (current-error-port) + "running ./configure ~a\n" (string-join configure-flags)) + (apply invoke "./configure" configure-flags))) + (add-after 'configure 'fixup-configure + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bash (assoc-ref inputs "bash")) + (shell (string-append bash "/bin/bash"))) + (substitute* "config.make" + (("INSTALL = scripts/") "INSTALL = $(..)./scripts/")) + (substitute* "config.make" + (("INSTALL = scripts/") "INSTALL = $(..)./scripts/") + (("BASH = ") (string-append + "SHELL = " shell " + BASH = "))))))))) + (supported-systems '("i686-linux" "x86_64-linux")) + (outputs '("out")) + (inputs '()) + (propagated-inputs '()) + (native-inputs + ;; Lazily resolve NAME in (gnu packages commencement) to avoid a cycle. + (let ((c (lambda (name) + (module-ref (resolve-interface + '(gnu packages commencement)) + name)))) + `(("bash" ,bash-minimal) + ("coreutils" ,coreutils) + ("gawk" ,gawk) + ("grep" ,grep) + ("make" ,gnu-make) + ("sed" ,sed) + ("tar" ,tar) + ("bzip2" ,bzip2) + ("gzip" ,gzip) + ("patch" ,patch) + ("xz" ,xz) + ("kernel-headers" ,linux-libre-headers) + + ;; Old toolchain + ("gcc" ,(c 'gcc-mesboot0)) + ("binutils" ,(c 'binutils-mesboot)) + ("libc" ,(c 'glibc-mesboot0))))))) + (define-public (make-gcc-libc base-gcc libc) "Return a GCC that targets LIBC." (package (inherit base-gcc) diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index 3fb4b2054f..3fb26f4c9e 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -1264,7 +1264,7 @@ (define gawk-mesboot0 (install-file "gawk" bin) (symlink "gawk" (string-append bin "/awk")))))))))) -(define glibc-mesboot0 +(define-public glibc-mesboot0 ;; GNU C Library 2.2.5 is the most recent glibc that we managed to build ;; using gcc-2.95.3. Newer versions (2.3.x, 2.6, 2.1x) seem to need a newer ;; gcc. @@ -1358,7 +1358,7 @@ (define glibc-mesboot0 "SHELL = " shell " BASH = "))))))))))) -(define gcc-mesboot0 +(define-public gcc-mesboot0 (package (inherit gcc-core-mesboot0) (name "gcc-mesboot0") @@ -1992,7 +1992,7 @@ (define hello-mesboot (lambda _ (invoke "./hello")))))))) -(define binutils-mesboot +(define-public binutils-mesboot (package (inherit binutils) (name "binutils-mesboot")