mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2025-01-11 13:49:23 -05:00
gnu: glibc: Update to 2.35.
* gnu/packages/base.scm (glibc): Update to 2.35. [arguments]: Handle empty library files. * gnu/packages/patches/glibc-hurd-clock_gettime_monotonic.patch: Adjust for renamed file. Signed-off-by: Marius Bakke <marius@gnu.org>
This commit is contained in:
parent
27322ac30b
commit
25b30622b4
2 changed files with 33 additions and 5 deletions
|
@ -20,6 +20,7 @@
|
||||||
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
|
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
|
||||||
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
|
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
|
||||||
;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||||
|
;;; Copyright © 2022 zamfofex <zamfofex@twdb.moe>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -709,13 +710,13 @@ (define-public glibc
|
||||||
;; version 2.28, GNU/Hurd used a different glibc branch.
|
;; version 2.28, GNU/Hurd used a different glibc branch.
|
||||||
(package
|
(package
|
||||||
(name "glibc")
|
(name "glibc")
|
||||||
(version "2.33")
|
(version "2.35")
|
||||||
(source (origin
|
(source (origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append "mirror://gnu/glibc/glibc-" version ".tar.xz"))
|
(uri (string-append "mirror://gnu/glibc/glibc-" version ".tar.xz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"1zvp0qdfbdyqrzydz18d9zg3n5ygy8ps7cmny1bvsp8h1q05c99f"))
|
"0bpm1kfi09dxl4c6aanc5c9951fmf6ckkzay60cx7k37dcpp68si"))
|
||||||
(patches (search-patches "glibc-ldd-powerpc.patch"
|
(patches (search-patches "glibc-ldd-powerpc.patch"
|
||||||
"glibc-ldd-x86_64.patch"
|
"glibc-ldd-x86_64.patch"
|
||||||
"glibc-dl-cache.patch"
|
"glibc-dl-cache.patch"
|
||||||
|
@ -753,6 +754,7 @@ (define-public glibc
|
||||||
#:validate-runpath? #f
|
#:validate-runpath? #f
|
||||||
|
|
||||||
#:modules ((ice-9 ftw)
|
#:modules ((ice-9 ftw)
|
||||||
|
(srfi srfi-1)
|
||||||
(srfi srfi-26)
|
(srfi srfi-26)
|
||||||
(guix build utils)
|
(guix build utils)
|
||||||
(guix build gnu-build-system))
|
(guix build gnu-build-system))
|
||||||
|
@ -867,13 +869,34 @@ (define-public glibc
|
||||||
(add-after 'install 'move-static-libs
|
(add-after 'install 'move-static-libs
|
||||||
(lambda* (#:key outputs #:allow-other-keys)
|
(lambda* (#:key outputs #:allow-other-keys)
|
||||||
;; Move static libraries to the "static" output.
|
;; Move static libraries to the "static" output.
|
||||||
|
;; Note: As of GNU libc 2.34, the contents of some ".a"
|
||||||
|
;; files have been moved into "libc.so", and *both* empty
|
||||||
|
;; ".so" and ".a" files have been introduced to avoid
|
||||||
|
;; breaking existing executables and existing builds
|
||||||
|
;; respectively. The intent of the seemingly redundant
|
||||||
|
;; empty ".a" files is to avoid newly-compiled executables
|
||||||
|
;; from having dependencies on the empty shared libraries,
|
||||||
|
;; and as such, it is useful to have these ".a" files in
|
||||||
|
;; OUT in addition to STATIC.
|
||||||
|
|
||||||
|
;; XXX: It might be better to determine whether a static
|
||||||
|
;; library is empty by some criterion (such as their file
|
||||||
|
;; size equaling eight bytes) rather than hardcoding them
|
||||||
|
;; by name.
|
||||||
|
(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)
|
(define (static-library? file)
|
||||||
;; Return true if FILE is a static library. The
|
;; Return true if FILE is a static library. The
|
||||||
;; "_nonshared.a" files are referred to by libc.so,
|
;; "_nonshared.a" files are referred to by libc.so,
|
||||||
;; libpthread.so, etc., which are in fact linker
|
;; libpthread.so, etc., which are in fact linker
|
||||||
;; scripts.
|
;; scripts.
|
||||||
(and (string-suffix? ".a" file)
|
(and (string-suffix? ".a" file)
|
||||||
(not (string-contains file "_nonshared"))))
|
(not (string-contains file "_nonshared"))
|
||||||
|
(not (empty-static-library? file))))
|
||||||
|
|
||||||
(define (linker-script? file)
|
(define (linker-script? file)
|
||||||
;; Guess whether FILE, a ".a" file, is actually a
|
;; Guess whether FILE, a ".a" file, is actually a
|
||||||
|
@ -884,6 +907,7 @@ (define (linker-script? file)
|
||||||
(let* ((out (assoc-ref outputs "out"))
|
(let* ((out (assoc-ref outputs "out"))
|
||||||
(lib (string-append out "/lib"))
|
(lib (string-append out "/lib"))
|
||||||
(files (scandir lib static-library?))
|
(files (scandir lib static-library?))
|
||||||
|
(empty (scandir lib empty-static-library?))
|
||||||
(static (assoc-ref outputs "static"))
|
(static (assoc-ref outputs "static"))
|
||||||
(slib (string-append static "/lib")))
|
(slib (string-append static "/lib")))
|
||||||
(mkdir-p slib)
|
(mkdir-p slib)
|
||||||
|
@ -891,6 +915,10 @@ (define (linker-script? file)
|
||||||
(rename-file (string-append lib "/" base)
|
(rename-file (string-append lib "/" base)
|
||||||
(string-append slib "/" base)))
|
(string-append slib "/" base)))
|
||||||
files)
|
files)
|
||||||
|
(for-each (lambda (base)
|
||||||
|
(copy-file (string-append lib "/" base)
|
||||||
|
(string-append slib "/" base)))
|
||||||
|
empty)
|
||||||
|
|
||||||
;; Usually libm.a is a linker script so we need to
|
;; Usually libm.a is a linker script so we need to
|
||||||
;; change the file names in there to refer to STATIC
|
;; change the file names in there to refer to STATIC
|
||||||
|
|
|
@ -67,8 +67,8 @@ index fcd79fd554..1dd02aa449 100644
|
||||||
|
|
||||||
diff --git a/sysdeps/pthread/timer_create.c b/sysdeps/pthread/timer_create.c
|
diff --git a/sysdeps/pthread/timer_create.c b/sysdeps/pthread/timer_create.c
|
||||||
index 9d8a9ea8ae..3430582c09 100644
|
index 9d8a9ea8ae..3430582c09 100644
|
||||||
--- a/sysdeps/pthread/timer_create.c
|
--- a/rt/timer_create.c
|
||||||
+++ b/sysdeps/pthread/timer_create.c
|
+++ b/rt/timer_create.c
|
||||||
@@ -48,7 +48,7 @@ timer_create (clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
|
@@ -48,7 +48,7 @@ timer_create (clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue