summary refs log tree commit diff
path: root/gnu/packages/base.scm
diff options
context:
space:
mode:
authorRicardo Wurmus <rekado@elephly.net>2022-02-05 00:56:54 +0100
committerRicardo Wurmus <rekado@elephly.net>2022-02-07 14:02:26 +0100
commitdefa85b26537a3cc20624fb9dbcae906226361d5 (patch)
tree02515efaf2e491e87c71203839a0885b31d6e51d /gnu/packages/base.scm
parent013086c3dbaa2e28dd1b3c21a7ebe51ac829a1eb (diff)
downloadguix-defa85b26537a3cc20624fb9dbcae906226361d5.tar.gz
gnu: Add glibc-2.2.5.
* gnu/packages/commencement.scm (glibc-mesboot0, gcc-mesboot0,
binutils-mesboot): Export variables.
* gnu/packages/base.scm (glibc-2.2.5): New variable.
Diffstat (limited to 'gnu/packages/base.scm')
-rw-r--r--gnu/packages/base.scm102
1 files changed, 101 insertions, 1 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)