Subject: [patch] update glibc to 2.35
From: zamfofex <[email-masked]>
To: "[email-masked]" <[email-masked]>
Date: Sat, 9 Apr 2022 22:16:31 -0300 (BRT)
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello! I have decided I wanted to work on updating glibc. I tested the updated glibc with the packages ‘hello’, ‘coreutils’, ‘grep’, ‘sed’ and ‘guile’, and they all built successfully!

I have attached the generated ‘git diff’ to this message, and I hope that is fine. If there are any issues, please feel free to let me know!

diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index 72329db..f2a0814 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -20,6 +20,7 @@
 ;;; Copyright © 2021 Maxime Devos <[email-masked]>
 ;;; Copyright © 2021 Guillaume Le Vaillant <[email-masked]>
 ;;; Copyright © 2021 Maxim Cournoyer <[email-masked]>
+;;; Copyright © 2022 zamfofex <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -694,16 +695,14 @@ (define-public glibc
   ;; version 2.28, GNU/Hurd used a different glibc branch.
   (package
    (name "glibc")
-   (version "2.33")
+   (version "2.35")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/glibc/glibc-" version ".tar.xz"))
             (sha256
              (base32
-              "1zvp0qdfbdyqrzydz18d9zg3n5ygy8ps7cmny1bvsp8h1q05c99f"))
-            (patches (search-patches "glibc-ldd-powerpc.patch"
-                                     "glibc-ldd-x86_64.patch"
-                                     "glibc-dl-cache.patch"
+              "0bpm1kfi09dxl4c6aanc5c9951fmf6ckkzay60cx7k37dcpp68si"))
+            (patches (search-patches "glibc-dl-cache.patch"
                                      "glibc-versioned-locpath.patch"
                                      "glibc-allow-kernel-2.6.32.patch"
                                      "glibc-reinstate-prlimit64-fallback.patch"
@@ -738,6 +737,7 @@ (define-public glibc
       #:validate-runpath? #f
 
       #:modules ((ice-9 ftw)
+                 (srfi srfi-1)
                  (srfi srfi-26)
                  (guix build utils)
                  (guix build gnu-build-system))
@@ -852,13 +852,19 @@ (define-public glibc
                  (add-after 'install 'move-static-libs
                    (lambda* (#:key outputs #:allow-other-keys)
                      ;; Move static libraries to the "static" output.
+
+                     (define empty-static-libraries '("libpthread.a" "libdl.a" "libutil.a" "libanl.a"))
+                     (define (empty-static-library? file)
+                       (any (lambda (s) (string=? file s)) empty-static-libraries))
+
                      (define (static-library? file)
                        ;; Return true if FILE is a static library.  The
                        ;; "_nonshared.a" files are referred to by libc.so,
                        ;; libpthread.so, etc., which are in fact linker
                        ;; scripts.
                        (and (string-suffix? ".a" file)
-                            (not (string-contains file "_nonshared"))))
+                            (not (string-contains file "_nonshared"))
+                            (not (empty-static-library? file))))
 
                      (define (linker-script? file)
                        ;; Guess whether FILE, a ".a" file, is actually a
@@ -869,6 +875,7 @@ (define (linker-script? file)
                      (let* ((out    (assoc-ref outputs "out"))
                             (lib    (string-append out "/lib"))
                             (files  (scandir lib static-library?))
+                            (files2 (scandir lib empty-static-library?))
                             (static (assoc-ref outputs "static"))
                             (slib   (string-append static "/lib")))
                        (mkdir-p slib)
@@ -876,6 +883,10 @@ (define (linker-script? file)
                                    (rename-file (string-append lib "/" base)
                                                 (string-append slib "/" base)))
                                  files)
+                       (for-each (lambda (base)
+                                   (copy-file (string-append lib "/" base)
+                                              (string-append slib "/" base)))
+                                 files2)
 
                        ;; Usually libm.a is a linker script so we need to
                        ;; change the file names in there to refer to STATIC
diff --git a/gnu/packages/m4.scm b/gnu/packages/m4.scm
index 090f557..e209494 100644
--- a/gnu/packages/m4.scm
+++ b/gnu/packages/m4.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2015 Ludovic Courtès <[email-masked]>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <[email-masked]>
+;;; Copyright © 2022 zamfofex <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -27,15 +28,17 @@ (define-module (gnu packages m4)
 (define-public m4
   (package
    (name "m4")
-   (version "1.4.18")
+   (version "1.4.19")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/m4/m4-"
                                 version ".tar.xz"))
-            (patches (search-patches "m4-gnulib-libio.patch"))
+            (patches (search-patches
+                      "m4-shell.patch"
+                      "m4-failing-test-bug.patch"))
             (sha256
              (base32
-              "01sfjd5a4waqw83bibvmn522g69qfqvwig9i2qlgy154l1nfihgj"))))
+              "15mghcksh11saylpm86h1zkz4in0rbi0pk8i6nqxkdikdmfdxbk3"))))
    (build-system gnu-build-system)
    (arguments
     `(;; Explicitly disable tests when cross-compiling, otherwise 'make check'
diff --git a/gnu/packages/patches/glibc-hurd-clock_gettime_monotonic.patch b/gnu/packages/patches/glibc-hurd-clock_gettime_monotonic.patch
index e31f99a..b022155 100644
--- a/gnu/packages/patches/glibc-hurd-clock_gettime_monotonic.patch
+++ b/gnu/packages/patches/glibc-hurd-clock_gettime_monotonic.patch
@@ -67,8 +67,8 @@ index fcd79fd554..1dd02aa449 100644
  
 diff --git a/sysdeps/pthread/timer_create.c b/sysdeps/pthread/timer_create.c
 index 9d8a9ea8ae..3430582c09 100644
---- a/sysdeps/pthread/timer_create.c
-+++ b/sysdeps/pthread/timer_create.c
+--- a/rt/timer_create.c
++++ b/rt/timer_create.c
 @@ -48,7 +48,7 @@ timer_create (clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
        return -1;
      }
diff --git a/gnu/packages/patches/m4-failing-test-bug.patch b/gnu/packages/patches/m4-failing-test-bug.patch
new file mode 100644
index 0000000..39f11c1
--- /dev/null
+++ b/gnu/packages/patches/m4-failing-test-bug.patch
@@ -0,0 +1,7 @@
+--- a/tests/test-execute.sh
++++ b/tests/test-execute.sh
+@@ -0,1 +0,3 @@
+-for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ; do
++# Test case 5 is disabled because of a bug in Guix whereby
++# raising 'SIGINT' does not work as expected.
++for i in 0 1 2 3 4 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ; do
diff --git a/gnu/packages/patches/m4-shell.patch b/gnu/packages/patches/m4-shell.patch
new file mode 100644
index 0000000..f10e99f
--- /dev/null
+++ b/gnu/packages/patches/m4-shell.patch
@@ -0,0 +1,16 @@
+--- a/lib/config.hin
++++ b/lib/config.hin
+@@ -0,12 +0,1 @@
+-/* File name of the Bourne shell.  */
+-#if (defined _WIN32 && !defined __CYGWIN__) || defined __CYGWIN__ || defined __ANDROID__
+-/* Omit the directory part because
+-   - For native Windows programs in a Cygwin environment, the Cygwin mounts
+-     are not visible.
+-   - For 32-bit Cygwin programs in a 64-bit Cygwin environment, the Cygwin
+-     mounts are not visible.
+-   - On Android, /bin/sh does not exist. It's /system/bin/sh instead.  */
+-# define BOURNE_SHELL "sh"
+-#else
+-# define BOURNE_SHELL "/bin/sh"
+-#endif
++# define BOURNE_SHELL "sh"