aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu/packages/base.scm102
-rw-r--r--gnu/packages/commencement.scm6
2 files changed, 104 insertions, 4 deletions
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 <mbakke@fastmail.com>
;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2018, 2019, 2022 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2020 Vitaliy Shatrov <D0dyBo0D0dyBo0@protonmail.com>
;;; Copyright © 2020 Chris Marusich <cmmarusich@gmail.com>
;;; Copyright © 2021 Leo Le Bouter <lle-bout@zaclys.net>
@@ -46,6 +46,7 @@
#: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 @@ with the Linux kernel.")
"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 @@ ac_cv_c_float_format='IEEE (little-endian)'
(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 @@ ac_cv_c_float_format='IEEE (little-endian)'
"SHELL = " shell "
BASH = ")))))))))))
-(define gcc-mesboot0
+(define-public gcc-mesboot0
(package
(inherit gcc-core-mesboot0)
(name "gcc-mesboot0")
@@ -1992,7 +1992,7 @@ ac_cv_c_float_format='IEEE (little-endian)'
(lambda _
(invoke "./hello"))))))))
-(define binutils-mesboot
+(define-public binutils-mesboot
(package
(inherit binutils)
(name "binutils-mesboot")