From e86152986c6e6c563ced037c91403318d5a8b447 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sat, 5 Aug 2023 21:40:29 +0200 Subject: [PATCH 01/12] glibc: 2.37-39 -> 2.38-0 Announcement: https://sourceware.org/pipermail/libc-alpha/2023-July/150524.html So far this looks surprisingly good, I managed to build the stdenv on `aarch64-linux` and got up to building `zfs` and `nix` on `x86_64-linux`. The patchset is still empty because the latest commit on the release branch is the one the 2.38 tag points to. I added an empty file though to keep things consistent. Also applied the new version of the DT_HASH fix from ArchLinux[1]. This one's a way easier version than before because it doesn't contain the autoconf changes, but only hardcodes the desired ld flags. It was already confirmed that this patch is sufficient to fix the underlying problem[2]. [1] https://gitlab.archlinux.org/archlinux/packaging/packages/glibc/-/commit/e54d98e2d1aae4930ecad9404ef12234922d9dfd#7b1bfda0391ff4c2662e04a5e193c37e233a0738 [2] https://github.com/ValveSoftware/Proton/issues/6051#issuecomment-1666055553 --- .../libraries/glibc/2.37-master.patch.gz | Bin 54452 -> 0 bytes .../libraries/glibc/2.38-master.patch.gz | Bin 0 -> 20 bytes pkgs/development/libraries/glibc/common.nix | 26 +-- .../libraries/glibc/reenable_DT_HASH.patch | 149 ++---------------- 4 files changed, 30 insertions(+), 145 deletions(-) delete mode 100644 pkgs/development/libraries/glibc/2.37-master.patch.gz create mode 100644 pkgs/development/libraries/glibc/2.38-master.patch.gz diff --git a/pkgs/development/libraries/glibc/2.37-master.patch.gz b/pkgs/development/libraries/glibc/2.37-master.patch.gz deleted file mode 100644 index 16a52753cbdfbd086a92236239ff257b7dff41ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54452 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 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.37/master && git describe - glibc-2.37-39-g6529a7466c - $ git show --minimal --reverse glibc-2.37.. | gzip -9n --rsyncable - > 2.37-master.patch.gz + $ git fetch --all -p && git checkout origin/release/2.38/master && git describe + glibc-2.38 + $ git show --minimal --reverse glibc-2.38.. | gzip -9n --rsyncable - > 2.38-master.patch.gz To compare the archive contents zdiff can be used. - $ zdiff -u 2.37-master.patch.gz ../nixpkgs/pkgs/development/libraries/glibc/2.37-master.patch.gz + $ zdiff -u 2.38-master.patch.gz ../nixpkgs/pkgs/development/libraries/glibc/2.38-master.patch.gz */ - ./2.37-master.patch.gz + ./2.38-master.patch.gz /* Allow NixOS and Nix to handle the locale-archive. */ ./nix-locale-archive.patch @@ -89,10 +89,11 @@ stdenv.mkDerivation ({ ./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 + /* Patch derived from archlinux, + https://gitlab.archlinux.org/archlinux/packaging/packages/glibc/-/blob/e54d98e2d1aae4930ecad9404ef12234922d9dfd/reenable_DT_HASH.patch - See https://github.com/NixOS/nixpkgs/pull/188492#issuecomment-1233802991 for context. + See also https://github.com/ValveSoftware/Proton/issues/6051 + & https://github.com/NixOS/nixpkgs/pull/188492#issuecomment-1233802991 */ ./reenable_DT_HASH.patch ] @@ -135,6 +136,7 @@ stdenv.mkDerivation ({ "--enable-bind-now" (lib.withFeatureAs withLinuxHeaders "headers" "${linuxHeaders}/include") (lib.enableFeature profilingLibraries "profile") + "--enable-fortify-source" ] ++ lib.optionals (stdenv.hostPlatform.isx86 || stdenv.hostPlatform.isAarch64) [ # This feature is currently supported on # i386, x86_64 and x32 with binutils 2.29 or later, @@ -159,7 +161,7 @@ stdenv.mkDerivation ({ "libc_cv_as_needed=no" ] ++ lib.optional withGd "--with-gd" - ++ lib.optional (!withLibcrypt) "--disable-crypt"; + ++ lib.optional withLibcrypt "--enable-crypt"; makeFlags = (args.makeFlags or []) ++ [ "OBJCOPY=${stdenv.cc.targetPrefix}objcopy" diff --git a/pkgs/development/libraries/glibc/reenable_DT_HASH.patch b/pkgs/development/libraries/glibc/reenable_DT_HASH.patch index f828b011bd9f..87a2329d8240 100644 --- a/pkgs/development/libraries/glibc/reenable_DT_HASH.patch +++ b/pkgs/development/libraries/glibc/reenable_DT_HASH.patch @@ -1,145 +1,28 @@ -From e47de5cb2d4dbecb58f569ed241e8e95c568f03c Mon Sep 17 00:00:00 2001 -From: Florian Weimer -Date: Fri, 29 Apr 2022 16:37:51 +0200 -Subject: [PATCH] Do not use --hash-style=both for building glibc shared - objects +From 31915e55f9c34f6137ab1c5ac002375a2d5d4589 Mon Sep 17 00:00:00 2001 +From: Frederik Schwan +Date: Fri, 4 Aug 2023 15:19:57 +0200 +Subject: [PATCH] force --hash-style=both to keep compatibility with old niche + software -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 --- - Makeconfig | 9 +++++++++ - Makerules | 7 +++++++ - config.make.in | 1 + - configure | 28 ++++++++++++++++++++++++++++ - configure.ac | 16 ++++++++++++++++ - 5 files changed, 61 insertions(+) + Makeconfig | 4 ++++ + 1 file changed, 4 insertions(+) -diff --git b/Makeconfig a/Makeconfig -index 760f14e92f..0aa5fb0099 100644 ---- b/Makeconfig -+++ a/Makeconfig -@@ -362,6 +362,15 @@ relro-LDFLAGS = -Wl,-z,relro +diff --git a/Makeconfig b/Makeconfig +index 77d7fd14df..2ae67c4beb 100644 +--- a/Makeconfig ++++ b/Makeconfig +@@ -378,6 +378,10 @@ 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 <&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 <&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 < Date: Sat, 19 Aug 2023 13:32:42 +0200 Subject: [PATCH 02/12] direwolf: fix build w/ glibc-2.38 Failing Hydra build: https://hydra.nixos.org/build/230546596 --- pkgs/applications/radio/direwolf/default.nix | 2 + .../radio/direwolf/fix-strlcpy-usage.patch | 89 +++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 pkgs/applications/radio/direwolf/fix-strlcpy-usage.patch diff --git a/pkgs/applications/radio/direwolf/default.nix b/pkgs/applications/radio/direwolf/default.nix index d3c01aff7695..463ac0b50af9 100644 --- a/pkgs/applications/radio/direwolf/default.nix +++ b/pkgs/applications/radio/direwolf/default.nix @@ -14,6 +14,8 @@ stdenv.mkDerivation rec { sha256 = "0xmz64m02knbrpasfij4rrq53ksxna5idxwgabcw4n2b1ig7pyx5"; }; + patches = [ ./fix-strlcpy-usage.patch ]; + nativeBuildInputs = [ cmake ]; strictDeps = true; diff --git a/pkgs/applications/radio/direwolf/fix-strlcpy-usage.patch b/pkgs/applications/radio/direwolf/fix-strlcpy-usage.patch new file mode 100644 index 000000000000..9f43415114cb --- /dev/null +++ b/pkgs/applications/radio/direwolf/fix-strlcpy-usage.patch @@ -0,0 +1,89 @@ +strlcpy is now part of glibc, so there's absolutely no reason for a custom implementation, especially +one with printf debugging. Hence, removing all of that. + +See also https://hydra.nixos.org/build/230546596 +See glibc commit 454a20c8756c9c1d55419153255fc7692b3d2199 + +diff --git a/external/misc/strlcpy.c b/external/misc/strlcpy.c +index ff18800..b1cb443 100644 +--- a/external/misc/strlcpy.c ++++ b/external/misc/strlcpy.c +@@ -56,65 +56,3 @@ + + #include "textcolor.h" + +-/* +- * Copy src to string dst of size siz. At most siz-1 characters +- * will be copied. Always NUL terminates (unless siz == 0). +- * Returns strlen(src); if retval >= siz, truncation occurred. +- */ +- +-#if DEBUG_STRL +-size_t strlcpy_debug(char *__restrict__ dst, const char *__restrict__ src, size_t siz, const char *file, const char *func, int line) +-#else +-size_t strlcpy_debug(char *__restrict__ dst, const char *__restrict__ src, size_t siz) +-#endif +-{ +- char *d = dst; +- const char *s = src; +- size_t n = siz; +- size_t retval; +- +-#if DEBUG_STRL +- if (dst == NULL) { +- text_color_set (DW_COLOR_ERROR); +- dw_printf ("ERROR: strlcpy dst is NULL. (%s %s %d)\n", file, func, line); +- return (0); +- } +- if (src == NULL) { +- text_color_set (DW_COLOR_ERROR); +- dw_printf ("ERROR: strlcpy src is NULL. (%s %s %d)\n", file, func, line); +- return (0); +- } +- if (siz == 1 || siz == 4) { +- text_color_set (DW_COLOR_ERROR); +- dw_printf ("Suspicious strlcpy siz. Is it using sizeof a pointer variable? (%s %s %d)\n", file, func, line); +- } +-#endif +- +- /* Copy as many bytes as will fit */ +- if (n != 0 && --n != 0) { +- do { +- if ((*d++ = *s++) == 0) +- break; +- } while (--n != 0); +- } +- +- /* Not enough room in dst, add NUL and traverse rest of src */ +- if (n == 0) { +- if (siz != 0) +- *d = '\0'; /* NUL-terminate dst */ +- while (*s++) +- ; +- } +- +- retval = s - src - 1; /* count does not include NUL */ +- +-#if DEBUG_STRL +- if (retval >= siz) { +- text_color_set (DW_COLOR_ERROR); +- dw_printf ("WARNING: strlcpy result length %d exceeds maximum length %d. (%s %s %d)\n", +- (int)retval, (int)(siz-1), file, func, line); +- } +-#endif +- return (retval); +-} +- +diff --git a/src/direwolf.h b/src/direwolf.h +index efc329b..22eb748 100644 +--- a/src/direwolf.h ++++ b/src/direwolf.h +@@ -294,7 +294,7 @@ char *strcasestr(const char *S, const char *FIND); + #define HAVE_STRLCPY 1 + + +-#define DEBUG_STRL 1 ++#define DEBUG_STRL 0 + + #if DEBUG_STRL + From 5497c7ac5df57e4c472a307f62e0072a3ca6c3a1 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sat, 19 Aug 2023 13:41:38 +0200 Subject: [PATCH 03/12] root: fix build w/ glibc-2.38 Failing Hydra build: https://hydra.nixos.org/build/230518136 --- pkgs/applications/science/misc/root/default.nix | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/pkgs/applications/science/misc/root/default.nix b/pkgs/applications/science/misc/root/default.nix index 6dc630181be2..993bc26bba28 100644 --- a/pkgs/applications/science/misc/root/default.nix +++ b/pkgs/applications/science/misc/root/default.nix @@ -2,6 +2,7 @@ , lib , callPackage , fetchurl +, fetchpatch , makeWrapper , cmake , coreutils @@ -109,6 +110,18 @@ stdenv.mkDerivation rec { patches = [ ./sw_vers.patch + # glibc >=2.38 already has strlcat implemented. + # merged upstream, remove on next package bump. + (fetchpatch { + url = "https://github.com/root-project/root/commit/8fb0e35446ed67c9d56639b4708c8f05459b7f84.patch"; + hash = "sha256-7EabmYanqlQsYSQsi+S9eWs1v1pY6MncopL420Y3D4w="; + }) + ] ++ lib.optionals (python.pkgs.pythonAtLeast "3.11") [ + # Fix build against Python 3.11 + (fetchpatch { + url = "https://github.com/root-project/root/commit/484deb056dacf768aba4954073b41105c431bffc.patch"; + hash = "sha256-4qur2e3SxMIPgOg4IjlvuULR2BObuP7xdvs+LmNT2/s="; + }) ]; preConfigure = '' From 774a808ec9336326107de4096a07c22ed9c95a8e Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sat, 19 Aug 2023 14:14:34 +0200 Subject: [PATCH 04/12] kvmtool: fix build w/ glibc-2.38 Failing Hydra build: https://hydra.nixos.org/build/230541621 --- .../virtualization/kvmtool/default.nix | 2 ++ .../kvmtool/strlcpy-glibc-2.38-fix.patch | 25 +++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 pkgs/applications/virtualization/kvmtool/strlcpy-glibc-2.38-fix.patch diff --git a/pkgs/applications/virtualization/kvmtool/default.nix b/pkgs/applications/virtualization/kvmtool/default.nix index e7429f3312da..9aeb21e3f06a 100644 --- a/pkgs/applications/virtualization/kvmtool/default.nix +++ b/pkgs/applications/virtualization/kvmtool/default.nix @@ -10,6 +10,8 @@ stdenv.mkDerivation { sha256 = "sha256-wpc5DfHnui0lBVH4uOq6a7pXVUZStjNLRvauu6QpRvE="; }; + patches = [ ./strlcpy-glibc-2.38-fix.patch ]; + buildInputs = lib.optionals stdenv.hostPlatform.isAarch64 [ dtc ]; enableParallelBuilding = true; diff --git a/pkgs/applications/virtualization/kvmtool/strlcpy-glibc-2.38-fix.patch b/pkgs/applications/virtualization/kvmtool/strlcpy-glibc-2.38-fix.patch new file mode 100644 index 000000000000..457f8e3cff58 --- /dev/null +++ b/pkgs/applications/virtualization/kvmtool/strlcpy-glibc-2.38-fix.patch @@ -0,0 +1,25 @@ +Manually tell the compiler that strlcpy exists. The `try-build` function seems +somewhat broken, i.e. any code that I try to pass to it doesn't link because of an +"undefined reference to main" error (and some more quoting issues with newlines being +swalloed). + +Because both musl and glibc seemt o support strlcpy nowadays, I decided to just skip the +possibly broken feature-check and hardcode that it exists. + +diff --git a/Makefile b/Makefile +index ed2414b..37be9cd 100644 +--- a/Makefile ++++ b/Makefile +@@ -239,10 +239,8 @@ endif + # On a given system, some libs may link statically, some may not; so, check + # both and only build those that link! + +-ifeq ($(call try-build,$(SOURCE_STRLCPY),$(CFLAGS),$(LDFLAGS)),y) +- CFLAGS_DYNOPT += -DHAVE_STRLCPY +- CFLAGS_STATOPT += -DHAVE_STRLCPY +-endif ++CFLAGS_DYNOPT += -DHAVE_STRLCPY ++CFLAGS_STATOPT += -DHAVE_STRLCPY + + ifeq ($(call try-build,$(SOURCE_BFD),$(CFLAGS),$(LDFLAGS) -lbfd -static),y) + CFLAGS_STATOPT += -DCONFIG_HAS_BFD From b6a5be45845957d766997a9cf1b18fec2b0868f1 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sat, 19 Aug 2023 14:28:10 +0200 Subject: [PATCH 05/12] brickd: fix build w/ glibc-2.38 Since glibc-2.38[1], `strcasestr(3)` is available by default, not just when using _GNU_SOURCE. This means that the check whether this function is available in `brickd`'s build is bogus now since it bases this decision on __APPLE__ and _GNU_SOURCE rather than __GLIBC__. Failing Hydra build: https://hydra.nixos.org/build/230504252 [1] upstream commit 30e3ca78f92be44f46851557f54b47e789bd3416 --- pkgs/servers/brickd/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/servers/brickd/default.nix b/pkgs/servers/brickd/default.nix index 3977521a6f52..d3cf54114c3b 100644 --- a/pkgs/servers/brickd/default.nix +++ b/pkgs/servers/brickd/default.nix @@ -30,10 +30,11 @@ stdenv.mkDerivation { ''; buildPhase = '' - export # build the brickd binary mkdir src/daemonlib cp -r ${daemonlib}/* src/daemonlib + substituteInPlace src/daemonlib/utils.{c,h} \ + --replace "_GNU_SOURCE" "__GLIBC__" cd src/brickd make From a44542f7f6d6df5968cb4291a9372808a1034995 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sat, 19 Aug 2023 14:36:18 +0200 Subject: [PATCH 06/12] mamba: mark as broken Failing Hydra build: https://hydra.nixos.org/build/230518081 So apparently `vasprintf`, `asprintf` are now available by default, not just with `_GNU_SOURCE` and now `mamba` (or to be precise, its dependency `xputty`) fails like this: ../xputty/xfilepicker.c:225:5: error: format not a string literal and no format arguments [-Werror=format-security] 225 | asprintf(&filepicker->path, path); | ^~~~~~~~ It seems as if now that these functions are available by default, the format-security check from gcc actually works. --- pkgs/applications/audio/mamba/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkgs/applications/audio/mamba/default.nix b/pkgs/applications/audio/mamba/default.nix index 679062fccf20..fcfafbdb4bbf 100644 --- a/pkgs/applications/audio/mamba/default.nix +++ b/pkgs/applications/audio/mamba/default.nix @@ -37,5 +37,8 @@ stdenv.mkDerivation rec { license = licenses.bsd0; maintainers = with maintainers; [ magnetophon orivej ]; platforms = platforms.linux; + # 2023-08-19, `-Werror=format-security` fails for xputty + # reported as https://github.com/brummer10/libxputty/issues/12 + broken = true; }; } From 25b89fa9476a7b011ed6582d8e36d9a4fb4f8411 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sat, 19 Aug 2023 14:50:47 +0200 Subject: [PATCH 07/12] rset: mark as broken Failing Hydra build: https://hydra.nixos.org/build/230560459 Pretty outdated already and now having trouble with latest glibc. Since the patches don't apply anymore and the currently used tag is almost 2.5 years old, it's IMHO reasonable to consider it broken until somebody steps up to take care of this package. --- pkgs/tools/admin/rset/default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkgs/tools/admin/rset/default.nix b/pkgs/tools/admin/rset/default.nix index f7c00fffb1cc..5406a82f3bda 100644 --- a/pkgs/tools/admin/rset/default.nix +++ b/pkgs/tools/admin/rset/default.nix @@ -44,5 +44,10 @@ stdenv.mkDerivation rec { license = licenses.isc; platforms = platforms.unix; maintainers = with maintainers; [ cstrahan ]; + # 2023-08-19, fails to compile with glibc-2.38 because of strlcpy. + # At the time of writing, this was 4 minors behind already and + # the `paths.patch` didn't apply anymore, so this is now considered + # broken until somebody cares enough to fix and upgrade this. + broken = true; }; } From 8c66a65495aa851bfb1d5e3869f109efedf3f0ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Sun, 20 Aug 2023 09:21:21 +0200 Subject: [PATCH 08/12] rapidjson: skip a regressed test I don't think this is serious. Surely it doesn't indicate a bug in glibc. And if it indicates a non-test bug in rapidjson, it's not a new one and probably won't be worse with new glibc. --- pkgs/development/libraries/rapidjson/default.nix | 2 ++ .../libraries/rapidjson/test-skip-valgrind.diff | 7 +++++++ 2 files changed, 9 insertions(+) create mode 100644 pkgs/development/libraries/rapidjson/test-skip-valgrind.diff diff --git a/pkgs/development/libraries/rapidjson/default.nix b/pkgs/development/libraries/rapidjson/default.nix index f73e01b64764..b9a29c65eba0 100644 --- a/pkgs/development/libraries/rapidjson/default.nix +++ b/pkgs/development/libraries/rapidjson/default.nix @@ -29,6 +29,8 @@ stdenv.mkDerivation rec { url = "https://git.alpinelinux.org/aports/plain/community/rapidjson/do-not-include-gtest-src-dir.patch?id=9e5eefc7a5fcf5938a8dc8a3be8c75e9e6809909"; hash = "sha256-BjSZEwfCXA/9V+kxQ/2JPWbc26jQn35CfN8+8NW24s4="; }) + # One of these three tests reports memcpy overlap after update to glibc-2.38 + ./test-skip-valgrind.diff ]; postPatch = '' diff --git a/pkgs/development/libraries/rapidjson/test-skip-valgrind.diff b/pkgs/development/libraries/rapidjson/test-skip-valgrind.diff new file mode 100644 index 000000000000..a791d88699ff --- /dev/null +++ b/pkgs/development/libraries/rapidjson/test-skip-valgrind.diff @@ -0,0 +1,7 @@ +--- a/test/unittest/CMakeLists.txt ++++ b/test/unittest/CMakeLists.txt +@@ -82,3 +81,0 @@ +- add_test(NAME valgrind_unittest +- COMMAND valgrind --leak-check=full --error-exitcode=1 ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/unittest --gtest_filter=-SIMD.* +- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/bin) + From 8348b18c096d60e5b5821157f7e8df781330fed4 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sun, 24 Sep 2023 15:13:26 +0200 Subject: [PATCH 09/12] glibc: 2.38-0 -> 2.38-23 Fixes CVE-2023-4806 & CVE-2023-4527. --- .../libraries/glibc/2.38-master.patch.gz | Bin 20 -> 32759 bytes pkgs/development/libraries/glibc/common.nix | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/glibc/2.38-master.patch.gz b/pkgs/development/libraries/glibc/2.38-master.patch.gz index d4b9926df0b7defceb6caf0b474c4a190c5ca8f0..4eb3c7b2cdb321e7b3117eb8d234a4279837e662 100644 GIT binary patch literal 32759 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 literal 20 Scmb2|=3oE;CT3<31;zjkxB$BV diff --git a/pkgs/development/libraries/glibc/common.nix b/pkgs/development/libraries/glibc/common.nix index d141af3a795b..51d8a4dbe05c 100644 --- a/pkgs/development/libraries/glibc/common.nix +++ b/pkgs/development/libraries/glibc/common.nix @@ -44,7 +44,7 @@ let version = "2.38"; - patchSuffix = "-0"; + patchSuffix = "-23"; sha256 = "sha256-+4KZiZiyspllRnvBtp0VLpwwfSzzAcnq+0VVt3DvP9I="; in @@ -60,7 +60,7 @@ stdenv.mkDerivation ({ [ /* 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.38/master && git describe - glibc-2.38 + glibc-2.38-23-g0e1ef6779a $ git show --minimal --reverse glibc-2.38.. | gzip -9n --rsyncable - > 2.38-master.patch.gz To compare the archive contents zdiff can be used. From e86dbb20f7a2dc7401a5a7a3db6da70ff3d0a951 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sun, 24 Sep 2023 16:41:22 +0200 Subject: [PATCH 10/12] nixos/rl-2311: mention glibc 2.37 -> 2.38 bump --- nixos/doc/manual/release-notes/rl-2311.section.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/nixos/doc/manual/release-notes/rl-2311.section.md b/nixos/doc/manual/release-notes/rl-2311.section.md index efb0f17873ea..135d4d5a6a6f 100644 --- a/nixos/doc/manual/release-notes/rl-2311.section.md +++ b/nixos/doc/manual/release-notes/rl-2311.section.md @@ -24,6 +24,8 @@ - `root` and `wheel` are not given the ability to set (or preserve) arbitrary environment variables. +- [glibc](https://www.gnu.org/software/libc/) has been updated from version 2.37 to 2.38, see [the release notes](https://sourceware.org/glibc/wiki/Release/2.38) for what was changed. + [`sudo-rs`]: https://github.com/memorysafety/sudo-rs/ ## New Services {#sec-release-23.11-new-services} From 0668ba303ad04673bf542e134c1a8740551d2c0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Wed, 27 Sep 2023 13:54:13 +0200 Subject: [PATCH 11/12] libredwg: fix missing include with glibc-2.38 https://hydra.nixos.org/build/236161770/nixlog/4/tail --- pkgs/development/libraries/libredwg/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/development/libraries/libredwg/default.nix b/pkgs/development/libraries/libredwg/default.nix index 58a701bc15cc..9f530271771a 100644 --- a/pkgs/development/libraries/libredwg/default.nix +++ b/pkgs/development/libraries/libredwg/default.nix @@ -34,6 +34,8 @@ stdenv.mkDerivation rec { in '' # avoid git dependency cp ${printVersion} build-aux/git-version-gen + # failing to build otherwise since glibc-2.38 + sed '1i#include ' -i programs/dwg2SVG.c ''; preConfigure = lib.optionalString (stdenv.isDarwin && enablePython) '' From e016224a79188a353b1ba046205906da41cce8de Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Wed, 27 Sep 2023 14:36:44 +0200 Subject: [PATCH 12/12] swiftPackages.Foundation: fix build w/ glibc-2.38 Failing Hydra build: https://hydra.nixos.org/build/236210473 --- .../development/compilers/swift/foundation/default.nix | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pkgs/development/compilers/swift/foundation/default.nix b/pkgs/development/compilers/swift/foundation/default.nix index efb35bd74c9f..b0da48c68a95 100644 --- a/pkgs/development/compilers/swift/foundation/default.nix +++ b/pkgs/development/compilers/swift/foundation/default.nix @@ -5,6 +5,7 @@ { lib , stdenv +, fetchpatch , callPackage , cmake , ninja @@ -23,6 +24,15 @@ in stdenv.mkDerivation { inherit (sources) version; src = sources.swift-corelibs-foundation; + patches = [ + # from https://github.com/apple/swift-corelibs-foundation/pull/4811 + # fix build with glibc >=2.38 + (fetchpatch { + url = "https://github.com/apple/swift-corelibs-foundation/commit/47260803a108c6e0d639adcebeed3ac6a76e8bcd.patch"; + hash = "sha256-1JUSQW86IHKkBZqxvpk0P8zcSKntzOTNlMoGBfgeT4c="; + }) + ]; + outputs = [ "out" "dev" ]; nativeBuildInputs = [ cmake ninja swift ];