diff options
27 files changed, 375 insertions, 32 deletions
diff --git a/nixos/doc/manual/release-notes/rl-2305.section.md b/nixos/doc/manual/release-notes/rl-2305.section.md index cbc58c6bdc5f1..83e84af5d1b2b 100644 --- a/nixos/doc/manual/release-notes/rl-2305.section.md +++ b/nixos/doc/manual/release-notes/rl-2305.section.md @@ -16,6 +16,8 @@ In addition to numerous new and upgraded packages, this release has the followin It's recommended to use `nixos-rebuild boot` and `reboot`, rather than `nixos-rebuild switch` - since in some rare cases the switch of a live system might fail. + - glibc: 2.35 -\> 2.37 + - Cinnamon has been updated to 5.6, see [the pull request](https://github.com/NixOS/nixpkgs/pull/201328#issue-1449910204) for what is changed. - KDE Plasma has been updated to v5.27, see [the release notes](https://kde.org/announcements/plasma/5/5.27.0/) for what is changed. diff --git a/pkgs/applications/virtualization/qemu/default.nix b/pkgs/applications/virtualization/qemu/default.nix index a7a71977c4ae3..c847e32d7a92a 100644 --- a/pkgs/applications/virtualization/qemu/default.nix +++ b/pkgs/applications/virtualization/qemu/default.nix @@ -117,6 +117,15 @@ stdenv.mkDerivation rec { sha256 = "sha256-oC+bRjEHixv1QEFO9XAm4HHOwoiT+NkhknKGPydnZ5E="; revert = true; }) + # glibc >=2.37 compat, see https://lore.kernel.org/qemu-devel/20230110174901.2580297-1-berrange@redhat.com/ + (fetchpatch { + url = "https://gitlab.com/qemu-project/qemu/-/commit/9f0246539ae84a5e21efd1cc4516fc343f08115a.patch"; + sha256 = "sha256-1iWOWkLH0WP1Hk23fmrRVdX7YZWUXOvWRMTt8QM93BI="; + }) + (fetchpatch { + url = "https://gitlab.com/qemu-project/qemu/-/commit/6003159ce18faad4e1bc7bf9c85669019cd4950e.patch"; + sha256 = "sha256-DKGCbR+VDIFLp6FhER78gyJ3Rn1dD47pMtkcIIMd0B8="; + }) ] ++ lib.optional nixosTestRunner ./force-uid0-on-9p.patch; diff --git a/pkgs/development/compilers/gcc/10/default.nix b/pkgs/development/compilers/gcc/10/default.nix index f470cb120de1f..b6899e98b9395 100644 --- a/pkgs/development/compilers/gcc/10/default.nix +++ b/pkgs/development/compilers/gcc/10/default.nix @@ -58,6 +58,7 @@ let majorVersion = "10"; url = "https://gcc.gnu.org/git/?p=gcc.git;a=patch;h=de31f5445b12fd9ab9969dc536d821fe6f0edad0"; sha256 = "0sd52c898msqg7m316zp0ryyj7l326cjcn2y19dcxqp15r74qj0g"; }) + ../11/fix-struct-redefinition-on-glibc-2.36.patch ] ++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch ++ optional noSysDirs ../no-sys-dirs.patch ++ optional (noSysDirs && hostPlatform.isRiscV) ../no-sys-dirs-riscv.patch diff --git a/pkgs/development/compilers/gcc/11/default.nix b/pkgs/development/compilers/gcc/11/default.nix index 323e68e8691ad..d53acc9cde2e1 100644 --- a/pkgs/development/compilers/gcc/11/default.nix +++ b/pkgs/development/compilers/gcc/11/default.nix @@ -62,6 +62,7 @@ let majorVersion = "11"; url = "https://gcc.gnu.org/git/?p=gcc.git;a=patch;h=de31f5445b12fd9ab9969dc536d821fe6f0edad0"; sha256 = "0sd52c898msqg7m316zp0ryyj7l326cjcn2y19dcxqp15r74qj0g"; }) + ./fix-struct-redefinition-on-glibc-2.36.patch ] ++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch ++ optional noSysDirs ../no-sys-dirs.patch ++ optional (noSysDirs && hostPlatform.isRiscV) ../no-sys-dirs-riscv.patch diff --git a/pkgs/development/compilers/gcc/11/fix-struct-redefinition-on-glibc-2.36.patch b/pkgs/development/compilers/gcc/11/fix-struct-redefinition-on-glibc-2.36.patch new file mode 100644 index 0000000000000..3f5f64a3d0748 --- /dev/null +++ b/pkgs/development/compilers/gcc/11/fix-struct-redefinition-on-glibc-2.36.patch @@ -0,0 +1,41 @@ +From d2356ebb0084a0d80dbfe33040c9afe938c15d19 Mon Sep 17 00:00:00 2001 +From: Martin Liska <mliska@suse.cz> +Date: Mon, 11 Jul 2022 22:03:14 +0200 +Subject: [PATCH] libsanitizer: cherry-pick 9cf13067cb5088626ba7 from upstream + +9cf13067cb5088626ba7ee1ec4c42ec59c7995a0 [sanitizer] Remove #include <linux/fs.h> to resolve fsconfig_command/mount_attr conflict with glibc 2.36 + +(cherry picked from commit 2701442d0cf6292f6624443c15813d6d1a3562fe) +--- + .../sanitizer_platform_limits_posix.cpp | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp +index 025e575b5bc7..5743516c0460 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp ++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp +@@ -72,7 +72,9 @@ + #include <sys/vt.h> + #include <linux/cdrom.h> + #include <linux/fd.h> ++#if SANITIZER_ANDROID + #include <linux/fs.h> ++#endif + #include <linux/hdreg.h> + #include <linux/input.h> + #include <linux/ioctl.h> +@@ -828,10 +830,10 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr); + unsigned IOCTL_EVIOCGPROP = IOCTL_NOT_PRESENT; + unsigned IOCTL_EVIOCSKEYCODE_V2 = IOCTL_NOT_PRESENT; + #endif +- unsigned IOCTL_FS_IOC_GETFLAGS = FS_IOC_GETFLAGS; +- unsigned IOCTL_FS_IOC_GETVERSION = FS_IOC_GETVERSION; +- unsigned IOCTL_FS_IOC_SETFLAGS = FS_IOC_SETFLAGS; +- unsigned IOCTL_FS_IOC_SETVERSION = FS_IOC_SETVERSION; ++ unsigned IOCTL_FS_IOC_GETFLAGS = _IOR('f', 1, long); ++ unsigned IOCTL_FS_IOC_GETVERSION = _IOR('v', 1, long); ++ unsigned IOCTL_FS_IOC_SETFLAGS = _IOW('f', 2, long); ++ unsigned IOCTL_FS_IOC_SETVERSION = _IOW('v', 2, long); + unsigned IOCTL_GIO_CMAP = GIO_CMAP; + unsigned IOCTL_GIO_FONT = GIO_FONT; + unsigned IOCTL_GIO_UNIMAP = GIO_UNIMAP; diff --git a/pkgs/development/compilers/gcc/4.9/default.nix b/pkgs/development/compilers/gcc/4.9/default.nix index d966b75d377be..90880752ca7a6 100644 --- a/pkgs/development/compilers/gcc/4.9/default.nix +++ b/pkgs/development/compilers/gcc/4.9/default.nix @@ -60,7 +60,8 @@ let majorVersion = "4"; inherit (stdenv) buildPlatform hostPlatform targetPlatform; patches = - [ ../use-source-date-epoch.patch ../parallel-bconfig.patch ./parallel-strsignal.patch + [ ../9/fix-struct-redefinition-on-glibc-2.36.patch ../use-source-date-epoch.patch + ../parallel-bconfig.patch ./parallel-strsignal.patch ./libsanitizer.patch (fetchpatch { name = "avoid-ustat-glibc-2.28.patch"; diff --git a/pkgs/development/compilers/gcc/6/default.nix b/pkgs/development/compilers/gcc/6/default.nix index 953f931fa8190..1c0f727cbb98a 100644 --- a/pkgs/development/compilers/gcc/6/default.nix +++ b/pkgs/development/compilers/gcc/6/default.nix @@ -62,7 +62,8 @@ let majorVersion = "6"; inherit (stdenv) buildPlatform hostPlatform targetPlatform; - patches = optionals (!stdenv.targetPlatform.isRedox) [ + patches = [ ../9/fix-struct-redefinition-on-glibc-2.36.patch ] + ++ optionals (!stdenv.targetPlatform.isRedox) [ ../use-source-date-epoch.patch ./0001-Fix-build-for-glibc-2.31.patch # Fix https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80431 @@ -77,6 +78,7 @@ let majorVersion = "6"; ++ optional langAda ./gnat-glibc234.patch ++ optional langFortran ../gfortran-driving.patch ++ optional (targetPlatform.libc == "musl") ../libgomp-dont-force-initial-exec.patch + ++ optional langGo ./gogcc-workaround-glibc-2.36.patch # Obtain latest patch with ../update-mcfgthread-patches.sh ++ optional (!crossStageStatic && targetPlatform.isMinGW && threadsCross.model == "mcf") ./Added-mcf-thread-model-support-from-mcfgthread.patch diff --git a/pkgs/development/compilers/gcc/6/gogcc-workaround-glibc-2.36.patch b/pkgs/development/compilers/gcc/6/gogcc-workaround-glibc-2.36.patch new file mode 100644 index 0000000000000..bc11f990e5e92 --- /dev/null +++ b/pkgs/development/compilers/gcc/6/gogcc-workaround-glibc-2.36.patch @@ -0,0 +1,14 @@ +diff --git a/libgo/mksysinfo.sh b/libgo/mksysinfo.sh +index dd456e907..24e607c7b 100755 +--- a/libgo/mksysinfo.sh ++++ b/libgo/mksysinfo.sh +@@ -148,9 +148,6 @@ cat > sysinfo.c <<EOF + #if defined(HAVE_LINUX_ETHER_H) + #include <linux/ether.h> + #endif +-#if defined(HAVE_LINUX_FS_H) +-#include <linux/fs.h> +-#endif + #if defined(HAVE_LINUX_REBOOT_H) + #include <linux/reboot.h> + #endif diff --git a/pkgs/development/compilers/gcc/7/default.nix b/pkgs/development/compilers/gcc/7/default.nix index ab80d31893774..d6329c8661467 100644 --- a/pkgs/development/compilers/gcc/7/default.nix +++ b/pkgs/development/compilers/gcc/7/default.nix @@ -63,6 +63,8 @@ let majorVersion = "7"; url = "https://gcc.gnu.org/git/?p=gcc.git;a=patch;h=de31f5445b12fd9ab9969dc536d821fe6f0edad0"; sha256 = "0sd52c898msqg7m316zp0ryyj7l326cjcn2y19dcxqp15r74qj0g"; }) + + ../9/fix-struct-redefinition-on-glibc-2.36.patch ] ++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch ++ optionals targetPlatform.isNetBSD [ diff --git a/pkgs/development/compilers/gcc/8/default.nix b/pkgs/development/compilers/gcc/8/default.nix index a929663dca2e4..1484a92565723 100644 --- a/pkgs/development/compilers/gcc/8/default.nix +++ b/pkgs/development/compilers/gcc/8/default.nix @@ -53,6 +53,7 @@ let majorVersion = "8"; url = "https://gcc.gnu.org/git/?p=gcc.git;a=patch;h=de31f5445b12fd9ab9969dc536d821fe6f0edad0"; sha256 = "0sd52c898msqg7m316zp0ryyj7l326cjcn2y19dcxqp15r74qj0g"; }) + ../9/fix-struct-redefinition-on-glibc-2.36.patch ] ++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch ++ optional targetPlatform.isNetBSD ../libstdc++-netbsd-ctypes.patch ++ optional noSysDirs ../no-sys-dirs.patch diff --git a/pkgs/development/compilers/gcc/9/default.nix b/pkgs/development/compilers/gcc/9/default.nix index 6da17fb09451e..ce109a532af7a 100644 --- a/pkgs/development/compilers/gcc/9/default.nix +++ b/pkgs/development/compilers/gcc/9/default.nix @@ -56,6 +56,7 @@ let majorVersion = "9"; inherit (stdenv) buildPlatform hostPlatform targetPlatform; patches = [ + ./fix-struct-redefinition-on-glibc-2.36.patch # Fix https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80431 (fetchurl { name = "fix-bug-80431.patch"; diff --git a/pkgs/development/compilers/gcc/9/fix-struct-redefinition-on-glibc-2.36.patch b/pkgs/development/compilers/gcc/9/fix-struct-redefinition-on-glibc-2.36.patch new file mode 100644 index 0000000000000..5b4abfd02e0bf --- /dev/null +++ b/pkgs/development/compilers/gcc/9/fix-struct-redefinition-on-glibc-2.36.patch @@ -0,0 +1,31 @@ +Derived from ../11/fix-struct-redefinition-on-glibc-2.36.patch (upstream commit d2356ebb0084a0d80dbfe33040c9afe938c15d19) + +diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc +index e8fce8a02..cb1ac806e 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc ++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc +@@ -65,7 +65,9 @@ + #include <sys/vt.h> + #include <linux/cdrom.h> + #include <linux/fd.h> ++#if SANITIZER_ANDROID + #include <linux/fs.h> ++#endif + #include <linux/hdreg.h> + #include <linux/input.h> + #include <linux/ioctl.h> +@@ -846,10 +848,10 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr); + unsigned IOCTL_EVIOCGPROP = IOCTL_NOT_PRESENT; + unsigned IOCTL_EVIOCSKEYCODE_V2 = IOCTL_NOT_PRESENT; + #endif +- unsigned IOCTL_FS_IOC_GETFLAGS = FS_IOC_GETFLAGS; +- unsigned IOCTL_FS_IOC_GETVERSION = FS_IOC_GETVERSION; +- unsigned IOCTL_FS_IOC_SETFLAGS = FS_IOC_SETFLAGS; +- unsigned IOCTL_FS_IOC_SETVERSION = FS_IOC_SETVERSION; ++ unsigned IOCTL_FS_IOC_GETFLAGS = _IOR('f', 1, long); ++ unsigned IOCTL_FS_IOC_GETVERSION = _IOR('v', 1, long); ++ unsigned IOCTL_FS_IOC_SETFLAGS = _IOW('f', 2, long); ++ unsigned IOCTL_FS_IOC_SETVERSION = _IOW('v', 2, long); + unsigned IOCTL_GIO_CMAP = GIO_CMAP; + unsigned IOCTL_GIO_FONT = GIO_FONT; + unsigned IOCTL_GIO_UNIMAP = GIO_UNIMAP; diff --git a/pkgs/development/compilers/gcc/builder.sh b/pkgs/development/compilers/gcc/builder.sh index 52e044ad6b58a..a2155360edeed 100644 --- a/pkgs/development/compilers/gcc/builder.sh +++ b/pkgs/development/compilers/gcc/builder.sh @@ -262,7 +262,7 @@ postInstall() { fi # Get rid of some "fixed" header files - rm -rfv $out/lib/gcc/*/*/include-fixed/{root,linux} + rm -rfv $out/lib/gcc/*/*/include-fixed/{root,linux,sys/mount.h} # Replace hard links for i686-pc-linux-gnu-gcc etc. with symlinks. for i in $out/bin/*-gcc*; do diff --git a/pkgs/development/libraries/glibc/0001-Revert-Remove-all-usage-of-BASH-or-BASH-in-installed.patch b/pkgs/development/libraries/glibc/0001-Revert-Remove-all-usage-of-BASH-or-BASH-in-installed.patch index b2c998aabbef5..b7658b59fb1e5 100644 --- a/pkgs/development/libraries/glibc/0001-Revert-Remove-all-usage-of-BASH-or-BASH-in-installed.patch +++ b/pkgs/development/libraries/glibc/0001-Revert-Remove-all-usage-of-BASH-or-BASH-in-installed.patch @@ -1,4 +1,4 @@ -From faeeb0f353f5540da2015a41cb60fe43d199a1ac Mon Sep 17 00:00:00 2001 +From cdd0c4b168fe228de97778556cea5c0f936e0e79 Mon Sep 17 00:00:00 2001 From: Bernardo Meurer <bernardo@meurer.org> Date: Fri, 22 Jul 2022 22:11:07 -0700 Subject: [PATCH] Revert "Remove all usage of @BASH@ or ${BASH} in installed @@ -22,10 +22,10 @@ Co-authored-by: Maximilian Bosch <maximilian@mbosch.me> 8 files changed, 15 insertions(+), 10 deletions(-) diff --git a/debug/Makefile b/debug/Makefile -index 96029f32ee..cbbdeda277 100644 +index 52f9a7852c..22e4ae5461 100644 --- a/debug/Makefile +++ b/debug/Makefile -@@ -238,7 +238,8 @@ $(objpfx)pcprofiledump: $(objpfx)pcprofiledump.o +@@ -265,8 +265,9 @@ $(objpfx)pcprofiledump: $(objpfx)pcprofiledump.o $(objpfx)xtrace: xtrace.sh rm -f $@.new @@ -36,21 +36,22 @@ index 96029f32ee..cbbdeda277 100644 + -e 's|@PKGVERSION@|$(PKGVERSION)|' \ -e 's|@REPORT_BUGS_TO@|$(REPORT_BUGS_TO)|' $^ > $@.new \ && rm -f $@ && mv $@.new $@ && chmod +x $@ + diff --git a/debug/xtrace.sh b/debug/xtrace.sh -index 8c56e01449..c760391a33 100755 +index 3d1f2af43a..eb2ba7ad4a 100755 --- a/debug/xtrace.sh +++ b/debug/xtrace.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#! @BASH@ - # Copyright (C) 1999-2022 Free Software Foundation, Inc. + # Copyright (C) 1999-2023 Free Software Foundation, Inc. # This file is part of the GNU C Library. diff --git a/elf/Makefile b/elf/Makefile -index 3536b6af5e..83521d9dbc 100644 +index 0d19964d42..ee8ee1cd41 100644 --- a/elf/Makefile +++ b/elf/Makefile -@@ -256,7 +256,8 @@ $(objpfx)sotruss-lib.so: $(common-objpfx)libc.so $(objpfx)ld.so \ +@@ -250,7 +250,8 @@ $(objpfx)sotruss-lib.so: $(common-objpfx)libc.so $(objpfx)ld.so \ $(common-objpfx)libc_nonshared.a $(objpfx)sotruss: sotruss.sh $(common-objpfx)config.make @@ -60,7 +61,7 @@ index 3536b6af5e..83521d9dbc 100644 -e 's%@TEXTDOMAINDIR@%$(localedir)%g' \ -e 's%@PREFIX@%$(prefix)%g' \ -e 's|@PKGVERSION@|$(PKGVERSION)|g' \ -@@ -1363,6 +1364,7 @@ ldd-rewrite = -e 's%@RTLD@%$(rtlddir)/$(rtld-installed-name)%g' \ +@@ -1396,6 +1397,7 @@ ldd-rewrite = -e 's%@RTLD@%$(rtlddir)/$(rtld-installed-name)%g' \ -e 's%@VERSION@%$(version)%g' \ -e 's|@PKGVERSION@|$(PKGVERSION)|g' \ -e 's|@REPORT_BUGS_TO@|$(REPORT_BUGS_TO)|g' \ @@ -69,30 +70,30 @@ index 3536b6af5e..83521d9dbc 100644 ifeq ($(ldd-rewrite-script),no) diff --git a/elf/ldd.bash.in b/elf/ldd.bash.in -index 3253b32ef8..127eb59206 100644 +index e45dec5894..e09428506e 100644 --- a/elf/ldd.bash.in +++ b/elf/ldd.bash.in @@ -1,4 +1,4 @@ -#!/bin/bash +#! @BASH@ - # Copyright (C) 1996-2022 Free Software Foundation, Inc. + # Copyright (C) 1996-2023 Free Software Foundation, Inc. # This file is part of the GNU C Library. diff --git a/elf/sotruss.sh b/elf/sotruss.sh -index 22327eac5c..7d15bf4fc8 100755 +index 874a6bed3f..7cc154561e 100755 --- a/elf/sotruss.sh +++ b/elf/sotruss.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#! @BASH@ - # Copyright (C) 2011-2022 Free Software Foundation, Inc. + # Copyright (C) 2011-2023 Free Software Foundation, Inc. # This file is part of the GNU C Library. diff --git a/malloc/Makefile b/malloc/Makefile -index 2329cf718a..5d7de4bee7 100644 +index dfb51d344c..574b5e9579 100644 --- a/malloc/Makefile +++ b/malloc/Makefile -@@ -307,8 +307,9 @@ $(objpfx)mtrace: mtrace.pl +@@ -306,8 +306,9 @@ $(objpfx)mtrace: mtrace.pl $(objpfx)memusage: memusage.sh rm -f $@.new @@ -105,20 +106,20 @@ index 2329cf718a..5d7de4bee7 100644 && rm -f $@ && mv $@.new $@ && chmod +x $@ diff --git a/malloc/memusage.sh b/malloc/memusage.sh -index f447160b7d..faa4936639 100755 +index b1f5848b74..329e36ef8a 100755 --- a/malloc/memusage.sh +++ b/malloc/memusage.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#! @BASH@ - # Copyright (C) 1999-2022 Free Software Foundation, Inc. + # Copyright (C) 1999-2023 Free Software Foundation, Inc. # This file is part of the GNU C Library. diff --git a/timezone/Makefile b/timezone/Makefile -index a789c22d26..d65bdf2391 100644 +index 0306c0bca9..de9bbcc815 100644 --- a/timezone/Makefile +++ b/timezone/Makefile -@@ -130,7 +130,8 @@ $(testdata)/XT5: testdata/gen-XT5.sh +@@ -132,7 +132,8 @@ $(testdata)/XT5: testdata/gen-XT5.sh mv $@.tmp $@ $(objpfx)tzselect: tzselect.ksh $(common-objpfx)config.make @@ -129,5 +130,5 @@ index a789c22d26..d65bdf2391 100644 -e '/PKGVERSION=/s|=.*|="$(PKGVERSION)"|' \ -e '/REPORT_BUGS_TO=/s|=.*|="$(REPORT_BUGS_TO)"|' \ -- -2.37.0 +2.38.4 diff --git a/pkgs/development/libraries/glibc/2.35-master.patch.gz b/pkgs/development/libraries/glibc/2.35-master.patch.gz deleted file mode 100644 index 7b8423c5b61b8..0000000000000 --- a/pkgs/development/libraries/glibc/2.35-master.patch.gz +++ /dev/null Binary files differdiff --git a/pkgs/development/libraries/glibc/2.37-master.patch.gz b/pkgs/development/libraries/glibc/2.37-master.patch.gz new file mode 100644 index 0000000000000..04b4e264751ed --- /dev/null +++ b/pkgs/development/libraries/glibc/2.37-master.patch.gz Binary files differdiff --git a/pkgs/development/libraries/glibc/common.nix b/pkgs/development/libraries/glibc/common.nix index a3c2e4618493d..00b78f57db617 100644 --- a/pkgs/development/libraries/glibc/common.nix +++ b/pkgs/development/libraries/glibc/common.nix @@ -43,9 +43,9 @@ } @ args: let - version = "2.35"; - patchSuffix = "-224"; - sha256 = "sha256-USNzL2tnzNMZMF79OZlx1YWSEivMKmUYob0lEN0M9S4="; + version = "2.37"; + patchSuffix = "-8"; + sha256 = "sha256-Ilfv8RGhgV109GhW2q9AsBnB5VMVbGnUi6DL/Bu5GkM="; in assert withLinuxHeaders -> linuxHeaders != null; @@ -59,14 +59,14 @@ stdenv.mkDerivation ({ patches = [ /* No tarballs for stable upstream branch, only https://sourceware.org/git/glibc.git and using git would complicate bootstrapping. - $ git fetch --all -p && git checkout origin/release/2.35/master && git describe - glibc-2.35-210-ge123f08ad5 - $ git show --minimal --reverse glibc-2.35.. | gzip -9n --rsyncable - > 2.35-master.patch.gz + $ git fetch --all -p && git checkout origin/release/2.36/master && git describe + glibc-2.37-8-g590d0e089b + $ git show --minimal --reverse glibc-2.37.. | gzip -9n --rsyncable - > 2.37-master.patch.gz To compare the archive contents zdiff can be used. - $ zdiff -u 2.35-master.patch.gz ../nixpkgs/pkgs/development/libraries/glibc/2.35-master.patch.gz + $ zdiff -u 2.37-master.patch.gz ../nixpkgs/pkgs/development/libraries/glibc/2.37-master.patch.gz */ - ./2.35-master.patch.gz + ./2.37-master.patch.gz /* Allow NixOS and Nix to handle the locale-archive. */ ./nix-locale-archive.patch @@ -88,6 +88,13 @@ stdenv.mkDerivation ({ ./nix-nss-open-files.patch ./0001-Revert-Remove-all-usage-of-BASH-or-BASH-in-installed.patch + + /* Patch derived from archlinux (at the time of adding they're at 2.37), + https://github.com/archlinux/svntogit-packages/blob/packages/glibc/trunk/reenable_DT_HASH.patch + + See https://github.com/NixOS/nixpkgs/pull/188492#issuecomment-1233802991 for context. + */ + ./reenable_DT_HASH.patch ] ++ lib.optional stdenv.hostPlatform.isMusl ./fix-rpc-types-musl-conflicts.patch ++ lib.optional stdenv.buildPlatform.isDarwin ./darwin-cross-build.patch; diff --git a/pkgs/development/libraries/glibc/reenable_DT_HASH.patch b/pkgs/development/libraries/glibc/reenable_DT_HASH.patch new file mode 100644 index 0000000000000..f828b011bd9fe --- /dev/null +++ b/pkgs/development/libraries/glibc/reenable_DT_HASH.patch @@ -0,0 +1,145 @@ +From e47de5cb2d4dbecb58f569ed241e8e95c568f03c Mon Sep 17 00:00:00 2001 +From: Florian Weimer <fweimer@redhat.com> +Date: Fri, 29 Apr 2022 16:37:51 +0200 +Subject: [PATCH] Do not use --hash-style=both for building glibc shared + objects + +The comment indicates that --hash-style=both was used to maintain +compatibility with static dlopen, but we had many internal ABI +changes since then, so this compatiblity does not add value anymore. + +Reviewed-by: Carlos O'Donell <carlos@redhat.com> +--- + Makeconfig | 9 +++++++++ + Makerules | 7 +++++++ + config.make.in | 1 + + configure | 28 ++++++++++++++++++++++++++++ + configure.ac | 16 ++++++++++++++++ + 5 files changed, 61 insertions(+) + +diff --git b/Makeconfig a/Makeconfig +index 760f14e92f..0aa5fb0099 100644 +--- b/Makeconfig ++++ a/Makeconfig +@@ -362,6 +362,15 @@ relro-LDFLAGS = -Wl,-z,relro + LDFLAGS.so += $(relro-LDFLAGS) + LDFLAGS-rtld += $(relro-LDFLAGS) + ++ifeq (yes,$(have-hash-style)) ++# For the time being we unconditionally use 'both'. At some time we ++# should declare statically linked code as 'out of luck' and compile ++# with --hash-style=gnu only. ++hashstyle-LDFLAGS = -Wl,--hash-style=both ++LDFLAGS.so += $(hashstyle-LDFLAGS) ++LDFLAGS-rtld += $(hashstyle-LDFLAGS) ++endif ++ + ifeq (no,$(build-pie-default)) + pie-default = $(no-pie-ccflag) + else # build-pie-default +diff --git b/Makerules a/Makerules +index 354528b8c7..428464f092 100644 +--- b/Makerules ++++ a/Makerules +@@ -557,6 +557,13 @@ $(common-objpfx)shlib.lds: $(common-objpfx)config.make $(..)Makerules + -Wl,--verbose 2>/dev/null | \ + sed > $@T \ + -e '/^=========/,/^=========/!d;/^=========/d' \ ++ $(if $(filter yes,$(have-hash-style)), \ ++ -e 's/^.*\.gnu\.hash[ ]*:.*$$/ .note.ABI-tag : { *(.note.ABI-tag) } &/' \ ++ -e '/^[ ]*\.hash[ ]*:.*$$/{h;d;}' \ ++ -e '/DATA_SEGMENT_ALIGN/{H;g}' \ ++ , \ ++ -e 's/^.*\.hash[ ]*:.*$$/ .note.ABI-tag : { *(.note.ABI-tag) } &/' \ ++ ) \ + -e 's/^.*\*(\.dynbss).*$$/& \ + PROVIDE(__start___libc_freeres_ptrs = .); \ + *(__libc_freeres_ptrs) \ +diff --git b/config.make.in a/config.make.in +index fff4c78dd0..bf728c71c0 100644 +--- b/config.make.in ++++ a/config.make.in +@@ -70,6 +70,7 @@ have-libcap = @have_libcap@ + have-cc-with-libunwind = @libc_cv_cc_with_libunwind@ + fno-unit-at-a-time = @fno_unit_at_a_time@ + bind-now = @bindnow@ ++have-hash-style = @libc_cv_hashstyle@ + use-default-link = @use_default_link@ + have-cxx-thread_local = @libc_cv_cxx_thread_local@ + have-loop-to-function = @libc_cv_cc_loop_to_function@ +diff --git b/configure a/configure +index 716dc041b6..5a730dc5fc 100755 +--- b/configure ++++ a/configure +@@ -622,6 +622,7 @@ libc_cv_cc_nofma + libc_cv_mtls_dialect_gnu2 + fno_unit_at_a_time + libc_cv_has_glob_dat ++libc_cv_hashstyle + libc_cv_fpie + libc_cv_z_execstack + ASFLAGS_config +@@ -6193,6 +6194,33 @@ $as_echo "$libc_cv_fpie" >&6; } + + + ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --hash-style option" >&5 ++$as_echo_n "checking for --hash-style option... " >&6; } ++if ${libc_cv_hashstyle+:} false; then : ++ $as_echo_n "(cached) " >&6 ++else ++ cat > conftest.c <<EOF ++int _start (void) { return 42; } ++EOF ++if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp ++ -fPIC -shared -o conftest.so conftest.c ++ -Wl,--hash-style=both -nostdlib 1>&5' ++ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 ++ test $ac_status = 0; }; } ++then ++ libc_cv_hashstyle=yes ++else ++ libc_cv_hashstyle=no ++fi ++rm -f conftest* ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_hashstyle" >&5 ++$as_echo "$libc_cv_hashstyle" >&6; } ++ ++ + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLOB_DAT reloc" >&5 + $as_echo_n "checking for GLOB_DAT reloc... " >&6; } + if ${libc_cv_has_glob_dat+:} false; then : +diff --git b/configure.ac a/configure.ac +index d08ad4d64e..a045f6608e 100644 +--- b/configure.ac ++++ a/configure.ac +@@ -1360,6 +1360,22 @@ LIBC_TRY_CC_OPTION([-fpie], [libc_cv_fpie=yes], [libc_cv_fpie=no]) + + AC_SUBST(libc_cv_fpie) + ++AC_CACHE_CHECK(for --hash-style option, ++ libc_cv_hashstyle, [dnl ++cat > conftest.c <<EOF ++int _start (void) { return 42; } ++EOF ++if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp ++ -fPIC -shared -o conftest.so conftest.c ++ -Wl,--hash-style=both -nostdlib 1>&AS_MESSAGE_LOG_FD]) ++then ++ libc_cv_hashstyle=yes ++else ++ libc_cv_hashstyle=no ++fi ++rm -f conftest*]) ++AC_SUBST(libc_cv_hashstyle) ++ + AC_CACHE_CHECK(for GLOB_DAT reloc, + libc_cv_has_glob_dat, [dnl + cat > conftest.c <<EOF +-- +2.37.1 + diff --git a/pkgs/development/libraries/libcdio/default.nix b/pkgs/development/libraries/libcdio/default.nix index aacb7555a4b6f..c2bdea588dc0c 100644 --- a/pkgs/development/libraries/libcdio/default.nix +++ b/pkgs/development/libraries/libcdio/default.nix @@ -10,6 +10,12 @@ stdenv.mkDerivation rec { }; patches = [ + # Fixes test failure of realpath test with glibc-2.36 + (fetchpatch { + url = "https://src.fedoraproject.org/rpms/libcdio/raw/d49ccdd9c8b4e9d57c01539f4c8948f28ce82bca/f/realpath-test-fix.patch"; + sha256 = "sha256-ldAGlcf79uQ8QAt4Au8Iv6jsI6ICZXtXOKZBpyELtN8="; + }) + # pull pending upstream patch to fix build on ncurses-6.3: # https://savannah.gnu.org/patch/index.php?10130 (fetchpatch { diff --git a/pkgs/development/libraries/spdk/default.nix b/pkgs/development/libraries/spdk/default.nix index 31f65784061a3..bcf6b804ed627 100644 --- a/pkgs/development/libraries/spdk/default.nix +++ b/pkgs/development/libraries/spdk/default.nix @@ -55,6 +55,11 @@ in stdenv.mkDerivation rec { postPatch = '' patchShebangs . + + # glibc-2.36 adds arc4random, so we don't need the custom implementation + # here anymore. Fixed upstream in https://github.com/spdk/spdk/commit/43a3984c6c8fde7201d6c8dfe1b680cb88237269, + # but the patch doesn't apply here. + sed -i -e '1i #define HAVE_ARC4RANDOM 1' lib/iscsi/iscsi.c ''; enableParallelBuilding = true; diff --git a/pkgs/os-specific/linux/criu/default.nix b/pkgs/os-specific/linux/criu/default.nix index 71bde6220a02d..228916bd72346 100644 --- a/pkgs/os-specific/linux/criu/default.nix +++ b/pkgs/os-specific/linux/criu/default.nix @@ -21,6 +21,16 @@ stdenv.mkDerivation rec { url = "https://github.com/checkpoint-restore/criu/commit/1e6e826ffb7ac05f33fa123051c2fc2ddf0f68ea.patch"; hash = "sha256-LJjk0jQ5v5wqeprvBMpxhjLXn7v+lSPldEGgazGUM44="; }) + + # compat fixes for glibc-2.36 + (fetchpatch { + url = "https://github.com/checkpoint-restore/criu/commit/8cd5fccd6cf3d03afb5abe463134d31f54d42258.patch"; + sha256 = "sha256-b65DdLmyIuZik0dNRuWJKUPcDFA6CKq0bi4Vd26zgS4="; + }) + (fetchpatch { + url = "https://github.com/checkpoint-restore/criu/commit/517c0947050e63aac72f63a3bf373d76264723b9.patch"; + sha256 = "sha256-MPZ6oILVoZ7BQEZFjUlp3RuMC7iKTKXAtrUDFqbN4T8="; + }) ]; enableParallelBuilding = true; diff --git a/pkgs/os-specific/linux/lxc/default.nix b/pkgs/os-specific/linux/lxc/default.nix index 18c23c46c13c7..49f16db002f3b 100644 --- a/pkgs/os-specific/linux/lxc/default.nix +++ b/pkgs/os-specific/linux/lxc/default.nix @@ -1,5 +1,5 @@ { lib, stdenv, fetchurl, autoreconfHook, pkg-config, perl, docbook2x -, docbook_xml_dtd_45, python3Packages, pam +, docbook_xml_dtd_45, python3Packages, pam, fetchpatch # Optional Dependencies , libapparmor ? null, gnutls ? null, libselinux ? null, libseccomp ? null @@ -26,6 +26,13 @@ stdenv.mkDerivation rec { patches = [ ./support-db2x.patch + + # Backport of https://github.com/lxc/lxc/pull/4179 for glibc-2.36 build + (fetchpatch { + url = "https://github.com/lxc/lxc/commit/c1115e1503bf955c97f4cf3b925a6a9f619764c3.patch"; + sha256 = "sha256-aC1XQesRJfkyQnloB3NvR4p/1WITrqkGYzw50PDxDrs="; + excludes = [ "meson.build" ]; + }) ]; postPatch = '' diff --git a/pkgs/os-specific/linux/lxcfs/default.nix b/pkgs/os-specific/linux/lxcfs/default.nix index 67e96289e2abc..70d84d6311c41 100644 --- a/pkgs/os-specific/linux/lxcfs/default.nix +++ b/pkgs/os-specific/linux/lxcfs/default.nix @@ -14,6 +14,10 @@ stdenv.mkDerivation rec { sha256 = "sha256-+wp29GD+toXGfQbPGYbDJ7/P+FY1uQY4uK3OQxTE9GM="; }; + postPatch = '' + sed -i -e '1i #include <sys/pidfd.h>' src/bindings.c + ''; + nativeBuildInputs = [ pkg-config help2man autoreconfHook makeWrapper ]; buildInputs = [ fuse ]; diff --git a/pkgs/servers/x11/xorg/overrides.nix b/pkgs/servers/x11/xorg/overrides.nix index 7438f35e74b3a..fe572da715652 100644 --- a/pkgs/servers/x11/xorg/overrides.nix +++ b/pkgs/servers/x11/xorg/overrides.nix @@ -164,6 +164,7 @@ self: super: }); xdm = super.xdm.overrideAttrs (attrs: { + patches = (attrs.patches or []) ++ [ ./xdm-fix-header-inclusion.patch ]; buildInputs = attrs.buildInputs ++ [ libxcrypt ]; configureFlags = attrs.configureFlags or [] ++ [ "ac_cv_path_RAWCPP=${stdenv.cc.targetPrefix}cpp" diff --git a/pkgs/servers/x11/xorg/xdm-fix-header-inclusion.patch b/pkgs/servers/x11/xorg/xdm-fix-header-inclusion.patch new file mode 100644 index 0000000000000..7bde988aefd13 --- /dev/null +++ b/pkgs/servers/x11/xorg/xdm-fix-header-inclusion.patch @@ -0,0 +1,29 @@ +On glibc-2.36 this fails with + + genauth.c:45:12: fatal error: bsd/stdlib.h: No such file or directory + 45 | # include <bsd/stdlib.h> + | ^~~~~~~~~~~~~~ + +This is because the file will be included if HAVE_ARC4RANDOM is true and `__linux__` is set. +However, this is wrong: arc4random is now defined in glibc-2.36 and thus stdlib.h must be included +even though HAVE_ARC4RANDOM is true. + +diff --git a/xdm/genauth.c b/xdm/genauth.c +index cd2ad61..74d0ae1 100644 +--- a/xdm/genauth.c ++++ b/xdm/genauth.c +@@ -40,13 +40,7 @@ from The Open Group. + + #include <errno.h> + +-#ifdef HAVE_ARC4RANDOM +-# ifdef __linux__ +-# include <bsd/stdlib.h> +-# else +-# include <stdlib.h> +-# endif +-#endif ++#include <stdlib.h> + + #include <time.h> + #define Time_t time_t diff --git a/pkgs/tools/games/gamemode/default.nix b/pkgs/tools/games/gamemode/default.nix index 230ccb2ed5f26..25acf8cebb1eb 100644 --- a/pkgs/tools/games/gamemode/default.nix +++ b/pkgs/tools/games/gamemode/default.nix @@ -34,6 +34,12 @@ stdenv.mkDerivation rec { ./preload-nix-workaround.patch # Do not install systemd sysusers configuration ./no-install-systemd-sysusers.patch + + # fix build with glibc >=2.36 (declaration of pidfd_open) + (fetchpatch { + url = "https://github.com/FeralInteractive/gamemode/commit/4934191b1928ef695c3e8af21e75781f8591745f.patch"; + sha256 = "sha256-pWf2NGbd3gEJFwVP/EIJRbTD29V7keTQHy388enktsY="; + }) ]; postPatch = '' diff --git a/pkgs/tools/virtualization/distrobuilder/default.nix b/pkgs/tools/virtualization/distrobuilder/default.nix index a6f090be33f9e..a6ae67b07e7bf 100644 --- a/pkgs/tools/virtualization/distrobuilder/default.nix +++ b/pkgs/tools/virtualization/distrobuilder/default.nix @@ -8,6 +8,7 @@ , gnutar , squashfsTools , debootstrap +, fetchpatch }: let @@ -23,7 +24,7 @@ buildGoModule rec { pname = "distrobuilder"; version = "2.1"; - vendorSha256 = "sha256-6LsJ6nZIo+aC8kvF+1aZD1WoXNTj9siB8QhKPVA6MSc="; + vendorSha256 = "sha256-yRMsf8KfpNmVUX4Rn4ZPLUPFZCT/g78MKAfgbFDPVkE="; src = fetchFromGitHub { owner = "lxc"; @@ -35,6 +36,21 @@ buildGoModule rec { buildInputs = bins; + patches = [ + # go.mod update: needed to to include a newer lxd which contains + # https://github.com/lxc/lxd/commit/d83f061a21f509d42b7a334b97403d2a019a7b52 + # which is needed to fix the build w/glibc-2.36. + (fetchpatch { + url = "https://github.com/lxc/distrobuilder/commit/5346bcc77dd7f141a36a8da851f016d0b929835e.patch"; + sha256 = "sha256-H6cSbY0v/FThx72AvoAvUCs2VCYN/PQ0W4H82mQQ3SI="; + }) + # Fixup to keep it building after go.mod update. + (fetchpatch { + url = "https://github.com/lxc/distrobuilder/commit/2c8cbfbf603e7446efce9f30812812336ccf4f2c.patch"; + sha256 = "sha256-qqofghcHGosR2qycGb02c8rwErFyRRhsRKdQfyah8Ds="; + }) + ]; + # tests require a local keyserver (mkg20001/nixpkgs branch distrobuilder-with-tests) but gpg is currently broken in tests doCheck = false; |