Subject: bug#54832: closed (Re: [bug#54832] [patch] update glibc to 2.35)

From: [email-masked] (GNU bug Tracking System)
Date: Thu, 01 Sep 2022 22:34:02 +0000

Your bug report

#54832: [patch] update glibc to 2.35

which was filed against the guix-patches package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
54832: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=54832
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: [bug#54832] [patch] update glibc to 2.35
From: Marius Bakke <[email-masked]>
To: Greg Hogan <[email-masked]>, zamfofex <[email-masked]>
Cc: [email-masked], Ludovic Courtès <[email-masked]>, Maxime Devos <[email-masked]>
Date: Fri, 02 Sep 2022 00:32:56 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Greg Hogan <[email-masked]> skriver:

> On Tue, Jul 19, 2022 at 12:14 PM zamfofex <[email-masked]> wrote:
>>
>> > There’s a comment at the top of ‘glibc-dl-cache.patch’ that explains
>> > what it does, but see
>> > <https://guix.gnu.org/en/blog/2021/taming-the-stat-storm-with-a-loader-cache/>
>> > for details.  I can take a look and update it.
>>
>> It seems we both misinterpreted the diff I had sent originally, as that patch has not actually been removed, but rather its line was changed (it was moved upwards). So good news, no need for changes or further investigation!
>
> I have used your patch to bootstrap with GCC 12 (in order to use both
> gcc-12 and llvm-14 in the same profile) and I have found that without
> "glibc-ldd-x86_64.patch", sometimes ldd will throw a "not a dynamic
> executable" error. I assume the powerpc patch is likewise still
> required.

I submitted a variant of this patch to #57533 that preserves
glibc-ldd-x86_64.patch.

Closing this issue, as it has been superseded by #57533.

Thanks zamfofex!

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"