From 97acaf6d65e869abf7dc9e6825aef4c0e7b98432 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Wed, 4 Aug 2021 23:50:10 +0200 Subject: [PATCH 01/73] glibc: 2.33-108 -> 2.34-115 Announcement: https://sourceware.org/pipermail/libc-alpha/2021-August/129718.html --- .../libraries/glibc/2.33-master.patch.gz | Bin 155232 -> 0 bytes .../libraries/glibc/2.34-master.patch.gz | Bin 0 -> 122816 bytes pkgs/development/libraries/glibc/common.nix | 16 +++---- .../libraries/glibc/nix-locale-archive.patch | 45 ++++++++++-------- 4 files changed, 32 insertions(+), 29 deletions(-) delete mode 100644 pkgs/development/libraries/glibc/2.33-master.patch.gz create mode 100644 pkgs/development/libraries/glibc/2.34-master.patch.gz diff --git a/pkgs/development/libraries/glibc/2.33-master.patch.gz b/pkgs/development/libraries/glibc/2.33-master.patch.gz deleted file mode 100644 index 777e94e2b2ea5d258abdbebf8f671f8003327e97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 155232 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%0DX$-ZyE^N&v1T-ZyxoKSeiZ`ovCs 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 z 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 n~|h_@GBhs=(qc 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 U6dbTJ4cq=>00{q#0|-6`0QLO#vH$=8 literal 0 HcmV?d00001 diff --git a/pkgs/development/libraries/glibc/common.nix b/pkgs/development/libraries/glibc/common.nix index ffec9972d2875..45fceace18be6 100644 --- a/pkgs/development/libraries/glibc/common.nix +++ b/pkgs/development/libraries/glibc/common.nix @@ -43,9 +43,9 @@ } @ args: let - version = "2.33"; - patchSuffix = "-117"; - sha256 = "sha256-LiVWAA4QXb1X8Layoy/yzxc73k8Nhd/8z9i35RoGd/8="; + version = "2.34"; + patchSuffix = "-115"; + sha256 = "sha256-RNJqH+ILiFOkj0cOrQHkJ56GmsFJsZXdpORKGV2YGrI="; in assert withLinuxHeaders -> linuxHeaders != null; @@ -62,14 +62,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.33/master && git describe - glibc-2.33-117-g55446dd8a2 - $ git show --minimal --reverse glibc-2.33.. | gzip -9n --rsyncable - > 2.33-master.patch.gz + $ git fetch --all -p && git checkout origin/release/2.34/master && git describe + glibc-2.34-115-gd5d1c95aaf + $ git show --minimal --reverse glibc-2.34.. | gzip -9n --rsyncable - > 2.34-master.patch.gz To compare the archive contents zdiff can be used. - $ zdiff -u 2.33-master.patch.gz ../nixpkgs/pkgs/development/libraries/glibc/2.33-master.patch.gz + $ zdiff -u 2.34-master.patch.gz ../nixpkgs/pkgs/development/libraries/glibc/2.34-master.patch.gz */ - ./2.33-master.patch.gz + ./2.34-master.patch.gz /* Allow NixOS and Nix to handle the locale-archive. */ ./nix-locale-archive.patch diff --git a/pkgs/development/libraries/glibc/nix-locale-archive.patch b/pkgs/development/libraries/glibc/nix-locale-archive.patch index 39312951fcf91..2fedf2a7a7dbd 100644 --- a/pkgs/development/libraries/glibc/nix-locale-archive.patch +++ b/pkgs/development/libraries/glibc/nix-locale-archive.patch @@ -1,7 +1,8 @@ -diff -Naur glibc-2.27-orig/locale/loadarchive.c glibc-2.27/locale/loadarchive.c ---- glibc-2.27-orig/locale/loadarchive.c 2018-02-01 11:17:18.000000000 -0500 -+++ glibc-2.27/locale/loadarchive.c 2018-02-17 22:32:25.680169462 -0500 -@@ -123,6 +123,23 @@ +diff --git a/locale/loadarchive.c b/locale/loadarchive.c +index 512769eaec..171dbb4ad9 100644 +--- a/locale/loadarchive.c ++++ b/locale/loadarchive.c +@@ -123,6 +123,23 @@ calculate_head_size (const struct locarhead *h) return MAX (namehash_end, MAX (string_end, locrectab_end)); } @@ -25,7 +26,7 @@ diff -Naur glibc-2.27-orig/locale/loadarchive.c glibc-2.27/locale/loadarchive.c /* Find the locale *NAMEP in the locale archive, and return the internalized data structure for its CATEGORY data. If this locale has -@@ -202,7 +219,7 @@ +@@ -202,7 +219,7 @@ _nl_load_locale_from_archive (int category, const char **namep) archmapped = &headmap; /* The archive has never been opened. */ @@ -34,23 +35,25 @@ diff -Naur glibc-2.27-orig/locale/loadarchive.c glibc-2.27/locale/loadarchive.c if (fd < 0) /* Cannot open the archive, for whatever reason. */ return NULL; -@@ -397,8 +414,7 @@ +@@ -397,8 +414,7 @@ _nl_load_locale_from_archive (int category, const char **namep) if (fd == -1) { - struct stat64 st; + struct __stat64_t64 st; - fd = __open_nocancel (archfname, - O_RDONLY|O_LARGEFILE|O_CLOEXEC); -+ fd = open_locale_archive (); ++ fd = open_locale_archive(); if (fd == -1) /* Cannot open the archive, for whatever reason. */ return NULL; -diff -Naur glibc-2.27-orig/locale/programs/locale.c glibc-2.27/locale/programs/locale.c ---- glibc-2.27-orig/locale/programs/locale.c 2018-02-01 11:17:18.000000000 -0500 -+++ glibc-2.27/locale/programs/locale.c 2018-02-17 22:36:39.726293213 -0500 -@@ -633,6 +633,24 @@ +diff --git a/locale/programs/locale.c b/locale/programs/locale.c +index ca0a95be99..e484783402 100644 +--- a/locale/programs/locale.c ++++ b/locale/programs/locale.c +@@ -633,6 +633,24 @@ nameentcmp (const void *a, const void *b) + } - static int ++static int +open_locale_archive (void) +{ + int fd = -1; @@ -68,11 +71,10 @@ diff -Naur glibc-2.27-orig/locale/programs/locale.c glibc-2.27/locale/programs/l +} + + -+static int + static int write_archive_locales (void **all_datap, char *linebuf) { - struct stat64 st; -@@ -644,7 +662,7 @@ +@@ -645,7 +663,7 @@ write_archive_locales (void **all_datap, char *linebuf) int fd, ret = 0; uint32_t cnt; @@ -81,10 +83,11 @@ diff -Naur glibc-2.27-orig/locale/programs/locale.c glibc-2.27/locale/programs/l if (fd < 0) return 0; -diff -Naur glibc-2.27-orig/locale/programs/locarchive.c glibc-2.27/locale/programs/locarchive.c ---- glibc-2.27-orig/locale/programs/locarchive.c 2018-02-01 11:17:18.000000000 -0500 -+++ glibc-2.27/locale/programs/locarchive.c 2018-02-17 22:40:51.245293975 -0500 -@@ -117,6 +117,22 @@ +diff --git a/locale/programs/locarchive.c b/locale/programs/locarchive.c +index f38e835c52..779a3199fc 100644 +--- a/locale/programs/locarchive.c ++++ b/locale/programs/locarchive.c +@@ -117,6 +117,22 @@ prepare_address_space (int fd, size_t total, size_t *reserved, int *xflags, } @@ -107,7 +110,7 @@ diff -Naur glibc-2.27-orig/locale/programs/locarchive.c glibc-2.27/locale/progra static void create_archive (const char *archivefname, struct locarhandle *ah) { -@@ -578,7 +594,7 @@ +@@ -578,7 +594,7 @@ open_archive (struct locarhandle *ah, bool readonly) while (1) { /* Open the archive. We must have exclusive write access. */ From 7459a4021cb33d71598f0cbf8c798f9168638d3f Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sun, 22 Aug 2021 19:39:47 +0200 Subject: [PATCH 02/73] stdenv-bootstrap: force using new libc from stage2 This fix is needed to work around linker-errors such as undefined reference to `__libc_csu_fini' which I got in almost every derivation which is part of stage2. The reasoning behind this is that the startup-code was simplified[1] and thus `__libc_csu_fini` doesn't exist anymore. A workable solution is to use a newer libc which properly links in stage3. And actually this seems expected given the rationale for stage3: # Construct a third stdenv identical to the 2nd, except that this # one uses the rebuilt Glibc from stage2. It still uses the recent # binutils and rest of the bootstrap tools, including GCC. So this patch basically overrides the libraries inside `gcc-unwrapped` - which is basically the bootstrap tools and thus also contains the libc used in stage3 - with the shared objects from the freshly built libc from stage2. [1] https://sourceware.org/pipermail/libc-alpha/2021-March/123079.html --- pkgs/stdenv/linux/default.nix | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix index d2c28b97ff939..e20ea9e16860a 100644 --- a/pkgs/stdenv/linux/default.nix +++ b/pkgs/stdenv/linux/default.nix @@ -230,7 +230,7 @@ in overrides = self: super: { inherit (prevStage) ccWrapperStdenv - gcc-unwrapped coreutils gnugrep + coreutils gnugrep perl gnum4 bison; dejagnu = super.dejagnu.overrideAttrs (a: { doCheck = false; } ); @@ -254,6 +254,19 @@ in ''; }); + gcc-unwrapped = self.stdenvNoCC.mkDerivation { + inherit (prevStage.gcc-unwrapped) name; + dontUnpack = true; + dontBuild = true; + installPhase = '' + mkdir -p $out + cp -ar ${prevStage.gcc-unwrapped}/* $out/ + chmod -R a+w $out/ + cp -a ${getLibc self}/lib/* $out/lib/ + chmod -R a-w $out/ + ''; + }; + # This also contains the full, dynamically linked, final Glibc. binutils = prevStage.binutils.override { # Rewrap the binutils with the new glibc, so both the next From 7bc32b3e5cc623a7b4b0fad900db26258592b9e6 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sun, 22 Aug 2021 19:40:56 +0200 Subject: [PATCH 03/73] glibc: symlink `libpthread.so -> libpthread.so.0` (same for `-lrt`) for backwards compatibility Linking via `-lpthread` (or `-pthread`) is not needed anymore since `glibc-2.34` since all the functionality is part of `libc.so.6` and `libpthread.so.6` only exists for backwards-compatibility. However, e.g. `gcc` (`libgomp` to be precise) expects a `libpthread.so` to link against, otherwise the configure script will fail. As already stated in the glibc release-notes itself, it is to expect that a lot more applications will have issues with this, so I decided to re-add `libpthread.so` as well. For `librt.so.1`, the same thing is needed to make sure that Perl still compiles: /nix/store/d6y5r7m93x14bmgn2p75fannz39jz66f-binutils-2.35.1/bin/ld: cannot find -lrt collect2: error: ld returned 1 exit status make[1]: *** [Makefile:490: ../../lib/auto/Time/HiRes/HiRes.so] Error 1 make[1]: Leaving directory '/build/perl-5.34.0/dist/Time-HiRes' --- pkgs/development/libraries/glibc/default.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkgs/development/libraries/glibc/default.nix b/pkgs/development/libraries/glibc/default.nix index caaacfe4f4368..dfe1d2db7d58a 100644 --- a/pkgs/development/libraries/glibc/default.nix +++ b/pkgs/development/libraries/glibc/default.nix @@ -119,6 +119,14 @@ callPackage ./common.nix { inherit stdenv; } { # Get rid of more unnecessary stuff. rm -rf $out/var $bin/bin/sln + + # Backwards-compatibility to fix e.g. + # "configure: error: Pthreads are required to build libgomp" during `gcc`-build + # because it's not actually needed anymore to link against `pthreads` since + # it's now part of `libc.so.6` itself, but the gcc build breaks if + # this doesn't work. + ln -sf $out/lib/libpthread.so.0 $out/lib/libpthread.so + ln -sf $out/lib/librt.so.1 $out/lib/librt.so '' # For some reason these aren't stripped otherwise and retain reference # to bootstrap-tools; on cross-arm this stripping would break objects. From 49028fb110ffb19e5326879d7ec6245ebd0315d2 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Mon, 23 Aug 2021 12:12:17 +0200 Subject: [PATCH 04/73] findutils: fix build w/glibc-2.34 This "-D__nonnull\\(params\\)=" leads to a compilation failure in e.g. the configure phase: configure:21131: gcc -c -D__nonnull\(params\)= conftest.c >&5 : warning: ISO C99 requires whitespace after the macro name : error: stray '\' in program : error: expected ',' or ';' before '(' token : error: stray '\' in program According to the commit this isn't even needed on Linux. I confirmed that this is an (expectable) glibc-2.34 thing by checking that * the issue doesn't occur with gcc 10/11 on a recent glibc-2.33 staging. * the issue DOES occur in a docker container with Fedora rawhide (which has glibc 2.34 and gcc 11). --- pkgs/tools/misc/findutils/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/tools/misc/findutils/default.nix b/pkgs/tools/misc/findutils/default.nix index 3746c4b4657fc..56d710c854549 100644 --- a/pkgs/tools/misc/findutils/default.nix +++ b/pkgs/tools/misc/findutils/default.nix @@ -40,7 +40,7 @@ stdenv.mkDerivation rec { "--localstatedir=/var/cache" ]; - CFLAGS = [ + CFLAGS = lib.optionals stdenv.isDarwin [ # TODO: Revisit upstream issue https://savannah.gnu.org/bugs/?59972 # https://github.com/Homebrew/homebrew-core/pull/69761#issuecomment-770268478 "-D__nonnull\\(params\\)=" From 9fe34ccfbe8e80f6c0c5b2df3625e0e44d2ed070 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Tue, 24 Aug 2021 12:38:20 +0200 Subject: [PATCH 05/73] glibc: also create backwards-compat symlinks for libdl and libutil This fixes at least the openssl build. --- pkgs/development/libraries/glibc/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/development/libraries/glibc/default.nix b/pkgs/development/libraries/glibc/default.nix index dfe1d2db7d58a..a48276f0b9ca4 100644 --- a/pkgs/development/libraries/glibc/default.nix +++ b/pkgs/development/libraries/glibc/default.nix @@ -127,6 +127,8 @@ callPackage ./common.nix { inherit stdenv; } { # this doesn't work. ln -sf $out/lib/libpthread.so.0 $out/lib/libpthread.so ln -sf $out/lib/librt.so.1 $out/lib/librt.so + ln -sf $out/lib/libdl.so.2 $out/lib/libdl.so + ln -sf $out/lib/libutil.so.1 $out/lib/libutil.so '' # For some reason these aren't stripped otherwise and retain reference # to bootstrap-tools; on cross-arm this stripping would break objects. From f363b7c5dfc50b3b3051c333678d22fd318fa89d Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Fri, 27 Aug 2021 12:13:21 +0200 Subject: [PATCH 06/73] boost1{69,70,72}: fix build w/glibc-2.34 To quote the release-notes[1]: > When _DYNAMIC_STACK_SIZE_SOURCE or _GNU_SOURCE are defined, > PTHREAD_STACK_MIN is no longer constant and is redefined to > sysconf(_SC_THREAD_STACK_MIN). This supports dynamic sized register > sets for modern architectural features like Arm SVE. This basically means that if the above applies, `#if PTHREAD_STACK_MIN > 0` won't compile anymore because `PTHREAD_STACK_MIN` isn't a hard-coded number, but `__sysconf (__SC_THREAD_STACK_MIN_VALUE)`[2]. The issue (for 1.69, 1.70, 1.72 - the other versions seem OK) was reported upstream, but only for Solaris[3], however the corresponding patches[4] seem to work as well for us. Failing Hydra build: https://hydra.nixos.org/build/150926294 [1] https://sourceware.org/pipermail/libc-alpha/2021-August/129718.html [2] See `${pkgs.glibc.dev}/include/bits/pthread_stack_min-dynamic.h` [3] https://github.com/boostorg/thread/issues/283 [4] https://github.com/conan-io/conan-center-index/pull/361 --- pkgs/development/libraries/boost/1.69.nix | 2 ++ pkgs/development/libraries/boost/1.70.nix | 2 ++ pkgs/development/libraries/boost/1.72.nix | 2 ++ .../libraries/boost/pthread-stack-min-fix.patch | 15 +++++++++++++++ 4 files changed, 21 insertions(+) create mode 100644 pkgs/development/libraries/boost/pthread-stack-min-fix.patch diff --git a/pkgs/development/libraries/boost/1.69.nix b/pkgs/development/libraries/boost/1.69.nix index d934e3267fcb2..c8846daa64f33 100644 --- a/pkgs/development/libraries/boost/1.69.nix +++ b/pkgs/development/libraries/boost/1.69.nix @@ -8,4 +8,6 @@ callPackage ./generic.nix (args // rec { # SHA256 from http://www.boost.org/users/history/version_1_69_0.html sha256 = "8f32d4617390d1c2d16f26a27ab60d97807b35440d45891fa340fc2648b04406"; }; + + patches = [ ./pthread-stack-min-fix.patch ]; }) diff --git a/pkgs/development/libraries/boost/1.70.nix b/pkgs/development/libraries/boost/1.70.nix index bc70797acda8d..4d50f41e49ce5 100644 --- a/pkgs/development/libraries/boost/1.70.nix +++ b/pkgs/development/libraries/boost/1.70.nix @@ -8,4 +8,6 @@ callPackage ./generic.nix (args // rec { # SHA256 from http://www.boost.org/users/history/version_1_70_0.html sha256 = "430ae8354789de4fd19ee52f3b1f739e1fba576f0aded0897c3c2bc00fb38778"; }; + + patches = [ ./pthread-stack-min-fix.patch ]; }) diff --git a/pkgs/development/libraries/boost/1.72.nix b/pkgs/development/libraries/boost/1.72.nix index bb2fccdfaf786..666a3cacb656a 100644 --- a/pkgs/development/libraries/boost/1.72.nix +++ b/pkgs/development/libraries/boost/1.72.nix @@ -11,5 +11,7 @@ callPackage ./generic.nix (args // rec { # SHA256 from http://www.boost.org/users/history/version_1_72_0.html sha256 = "59c9b274bc451cf91a9ba1dd2c7fdcaf5d60b1b3aa83f2c9fa143417cc660722"; }; + + patches = [ ./pthread-stack-min-fix.patch ]; }) diff --git a/pkgs/development/libraries/boost/pthread-stack-min-fix.patch b/pkgs/development/libraries/boost/pthread-stack-min-fix.patch new file mode 100644 index 0000000000000..b6c85f8405298 --- /dev/null +++ b/pkgs/development/libraries/boost/pthread-stack-min-fix.patch @@ -0,0 +1,15 @@ +Taken from https://github.com/conan-io/conan-center-index/pull/361/files + +diff --git a/include/boost/thread/pthread/thread_data.hpp b/include/boost/thread/pthread/thread_data.hpp +index aefbeb4..bc9b136 100644 +--- a/boost/thread/pthread/thread_data.hpp ++++ b/boost/thread/pthread/thread_data.hpp +@@ -57,7 +57,7 @@ namespace boost + #else + std::size_t page_size = ::sysconf( _SC_PAGESIZE); + #endif +-#if PTHREAD_STACK_MIN > 0 ++#ifdef PTHREAD_STACK_MIN + if (size Date: Fri, 27 Aug 2021 19:21:16 +0200 Subject: [PATCH 07/73] glibc: revert `/bin/bash` usage Rather than `$BASH`, `glibc` now hardcodes `/bin/bash` as interpreter[1] in several scripts (including `ldd`). This is a problem because relevant programs such as `ldd(1)` won't work properly without this since we set `BASH` to `/bin/sh` to avoid dependencies to the bootstrap tools for `bash` as runtime-dependency (since NixOS doesn't have `/bin/bash`). Considering that this was only done as an "improvement" to their build-system and not because they wanted to use some bashisms here (the variable was always called `BASH` and we still used `/bin/sh` anyways), I'd consider this to be relatively safe. [1] 5188a9d0265cc6f7235a8af1d31ab02e4a24853d --- ...l-usage-of-BASH-or-BASH-in-installed.patch | 131 ++++++++++++++++++ pkgs/development/libraries/glibc/common.nix | 2 + 2 files changed, 133 insertions(+) create mode 100644 pkgs/development/libraries/glibc/0001-Revert-Remove-all-usage-of-BASH-or-BASH-in-installed.patch 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 new file mode 100644 index 0000000000000..45bad2867e906 --- /dev/null +++ b/pkgs/development/libraries/glibc/0001-Revert-Remove-all-usage-of-BASH-or-BASH-in-installed.patch @@ -0,0 +1,131 @@ +From f81744bae4442345ff6f40d80fdb8adaba8b330f Mon Sep 17 00:00:00 2001 +From: Maximilian Bosch +Date: Fri, 27 Aug 2021 17:19:27 +0200 +Subject: [PATCH] Revert "Remove all usage of @BASH@ or ${BASH} in installed + files, and hardcode /bin/bash instead" + +We need the ability to override to use `/bin/sh` here to avoid having +some bootstrap tools in a final build product. + +This reverts commit 5188a9d0265cc6f7235a8af1d31ab02e4a24853d. +--- + debug/Makefile | 5 +++-- + debug/xtrace.sh | 2 +- + elf/Makefile | 4 +++- + elf/ldd.bash.in | 2 +- + elf/sotruss.sh | 2 +- + malloc/Makefile | 5 +++-- + malloc/memusage.sh | 2 +- + timezone/Makefile | 3 ++- + 8 files changed, 15 insertions(+), 10 deletions(-) + +diff --git a/debug/Makefile b/debug/Makefile +index 6893111cbf..3f66666c6c 100644 +--- a/debug/Makefile ++++ b/debug/Makefile +@@ -216,7 +216,8 @@ $(objpfx)pcprofiledump: $(objpfx)pcprofiledump.o + + $(objpfx)xtrace: xtrace.sh + rm -f $@.new +- sed -e 's|@VERSION@|$(version)|' -e 's|@SLIBDIR@|$(sLIBdir)|' \ +- -e 's|@BINDIR@|$(bindir)|' -e 's|@PKGVERSION@|$(PKGVERSION)|' \ ++ sed -e 's|@BASH@|$(BASH)|' -e 's|@VERSION@|$(version)|' \ ++ -e 's|@SLIBDIR@|$(sLIBdir)|' -e 's|@BINDIR@|$(bindir)|' \ ++ -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 9697fbe0b4..279fe59ac6 100755 +--- a/debug/xtrace.sh ++++ b/debug/xtrace.sh +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#! @BASH@ + # Copyright (C) 1999-2021 Free Software Foundation, Inc. + # This file is part of the GNU C Library. + # Contributed by Ulrich Drepper , 1999. +diff --git a/elf/Makefile b/elf/Makefile +index d05f410592..9264409fdd 100644 +--- a/elf/Makefile ++++ b/elf/Makefile +@@ -144,7 +144,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 +- sed -e 's%@VERSION@%$(version)%g' \ ++ sed -e 's%@BASH@%$(BASH)%g' \ ++ -e 's%@VERSION@%$(version)%g' \ + -e 's%@TEXTDOMAINDIR@%$(localedir)%g' \ + -e 's%@PREFIX@%$(prefix)%g' \ + -e 's|@PKGVERSION@|$(PKGVERSION)|g' \ +@@ -659,6 +660,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' \ ++ -e 's%@BASH@%$(BASH)%g' \ + -e 's%@TEXTDOMAINDIR@%$(localedir)%g' + + ifeq ($(ldd-rewrite-script),no) +diff --git a/elf/ldd.bash.in b/elf/ldd.bash.in +index ba736464ac..57442bc3f2 100644 +--- a/elf/ldd.bash.in ++++ b/elf/ldd.bash.in +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#! @BASH@ + # Copyright (C) 1996-2021 Free Software Foundation, Inc. + # This file is part of the GNU C Library. + +diff --git a/elf/sotruss.sh b/elf/sotruss.sh +index 003cf4d825..fd4da80244 100755 +--- a/elf/sotruss.sh ++++ b/elf/sotruss.sh +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#! @BASH@ + # Copyright (C) 2011-2021 Free Software Foundation, Inc. + # This file is part of the GNU C Library. + +diff --git a/malloc/Makefile b/malloc/Makefile +index 9b70831d38..90ecadff6c 100644 +--- a/malloc/Makefile ++++ b/malloc/Makefile +@@ -271,8 +271,9 @@ $(objpfx)mtrace: mtrace.pl + + $(objpfx)memusage: memusage.sh + rm -f $@.new +- sed -e 's|@VERSION@|$(version)|' -e 's|@SLIBDIR@|$(sLIBdir)|' \ +- -e 's|@BINDIR@|$(bindir)|' -e 's|@PKGVERSION@|$(PKGVERSION)|' \ ++ sed -e 's|@BASH@|$(BASH)|' -e 's|@VERSION@|$(version)|' \ ++ -e 's|@SLIBDIR@|$(sLIBdir)|' -e 's|@BINDIR@|$(bindir)|' \ ++ -e 's|@PKGVERSION@|$(PKGVERSION)|' \ + -e 's|@REPORT_BUGS_TO@|$(REPORT_BUGS_TO)|' $^ > $@.new \ + && rm -f $@ && mv $@.new $@ && chmod +x $@ + +diff --git a/malloc/memusage.sh b/malloc/memusage.sh +index 0645f09911..c1cd4e23b7 100755 +--- a/malloc/memusage.sh ++++ b/malloc/memusage.sh +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#! @BASH@ + # Copyright (C) 1999-2021 Free Software Foundation, Inc. + # This file is part of the GNU C Library. + # Contributed by Ulrich Drepper , 1999. +diff --git a/timezone/Makefile b/timezone/Makefile +index c624a189b3..395abfeebd 100644 +--- a/timezone/Makefile ++++ b/timezone/Makefile +@@ -123,7 +123,8 @@ $(testdata)/XT%: testdata/XT% + cp $< $@ + + $(objpfx)tzselect: tzselect.ksh $(common-objpfx)config.make +- sed -e 's|TZDIR=[^}]*|TZDIR=$(zonedir)|' \ ++ sed -e 's|/bin/bash|$(BASH)|' \ ++ -e 's|TZDIR=[^}]*|TZDIR=$(zonedir)|' \ + -e '/TZVERSION=/s|see_Makefile|"$(version)"|' \ + -e '/PKGVERSION=/s|=.*|="$(PKGVERSION)"|' \ + -e '/REPORT_BUGS_TO=/s|=.*|="$(REPORT_BUGS_TO)"|' \ +-- +2.31.1 + diff --git a/pkgs/development/libraries/glibc/common.nix b/pkgs/development/libraries/glibc/common.nix index 45fceace18be6..599a7f2a13024 100644 --- a/pkgs/development/libraries/glibc/common.nix +++ b/pkgs/development/libraries/glibc/common.nix @@ -125,6 +125,8 @@ stdenv.mkDerivation ({ /* https://github.com/NixOS/nixpkgs/pull/137601 */ ./nix-nss-open-files.patch + + ./0001-Revert-Remove-all-usage-of-BASH-or-BASH-in-installed.patch ] ++ lib.optional stdenv.hostPlatform.isMusl ./fix-rpc-types-musl-conflicts.patch ++ lib.optional stdenv.buildPlatform.isDarwin ./darwin-cross-build.patch; From 2357e828f5dc9fca7dc9df0e62f210c79f948649 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Thu, 23 Sep 2021 23:37:00 +0200 Subject: [PATCH 08/73] gdb: fix build w/glibc-2.34 This is a problem that seems to be related to the most recent `gdb` update in staging from 10.2 to 11.1[1] where `gdb` started to fail during build with the following message: checking for stdlib.h... In file included from /nix/store/vf96x4h90fm7bwf5zvfx8zb82fm1p21j-glibc-2.34-5-dev/include/signal.h:328, from ../../gnulib/import/signal.h:52, from targ-map.c:7: targ-map.c:412:17: error: initializer element is not constant 412 | { "SIGSTKSZ", SIGSTKSZ, TARGET_SIGSTKSZ }, | ^~~~~~~~ targ-map.c:412:17: note: (near initialization for 'cb_init_signal_map[18].host_val') Since I couldn't find any patches in the upstream repo or for other repos - according to Repology we seem to be the only distro trying to ship `gdb-11` with `glibc-2.34` - so I found the culprit while bisecting `gdb` which seems to be commit `a0e674c1`[2]. It seems as if the entire `sim/`-subtree is now built by default if `--enable-targets=all` is set (which we do for cross debugging). However it also generates a file called `targ-map.c` referencing `SIGSTKSZ` assuming that it's const, although this is not the case anymore with `glibc-2.34`[3]. Since I don't really understand, what precisely is going on in there and there are no patches available I decided to switch back to the 10.2 behavior here and disable the feature by specifying `--disable-sim` as configure flag. Failing Hydra build: https://hydra.nixos.org/build/153893135 [1] 43b96f66ef7a69602b74f9bced64573c11a1df05 [2] https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=a0e674c1ce2c877426f8a861c5294c535c5d49e6 [3] see https://sourceware.org/pipermail/libc-alpha/2021-August/129718.html --- pkgs/development/tools/misc/gdb/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/tools/misc/gdb/default.nix b/pkgs/development/tools/misc/gdb/default.nix index 5bb5bc0652fec..91947a024d7d8 100644 --- a/pkgs/development/tools/misc/gdb/default.nix +++ b/pkgs/development/tools/misc/gdb/default.nix @@ -92,6 +92,7 @@ stdenv.mkDerivation rec { "--disable-shared" "--enable-static" "--with-system-zlib" "--with-system-readline" + "--disable-sim" "--with-gmp=${gmp.dev}" "--with-mpfr=${mpfr.dev}" From 3aa6c49ab4a6b094ab6f125303b674bb99985f35 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Wed, 8 Sep 2021 19:23:41 +0200 Subject: [PATCH 09/73] libressl: fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/151984996 --- .../libraries/libressl/default.nix | 4 + .../libressl/fix-build-with-glibc.patch | 92 +++++++++++++++++++ 2 files changed, 96 insertions(+) create mode 100644 pkgs/development/libraries/libressl/fix-build-with-glibc.patch diff --git a/pkgs/development/libraries/libressl/default.nix b/pkgs/development/libraries/libressl/default.nix index 7a2718c015395..4de1d7e7d152f 100644 --- a/pkgs/development/libraries/libressl/default.nix +++ b/pkgs/development/libraries/libressl/default.nix @@ -89,6 +89,10 @@ in { libressl_3_2 = generic { version = "3.2.7"; sha256 = "112bjfrwwqlk0lak7fmfhcls18ydf62cp7gxghf4gklpfl1zyckw"; + patches = [ + # See https://github.com/libressl-portable/portable/issues/653 for context. + ./fix-build-with-glibc.patch + ]; }; libressl_3_4 = generic { version = "3.4.2"; diff --git a/pkgs/development/libraries/libressl/fix-build-with-glibc.patch b/pkgs/development/libraries/libressl/fix-build-with-glibc.patch new file mode 100644 index 0000000000000..db482bcb35da3 --- /dev/null +++ b/pkgs/development/libraries/libressl/fix-build-with-glibc.patch @@ -0,0 +1,92 @@ +diff --git a/tests/explicit_bzero.c b/tests/explicit_bzero.c +index 34c60baa8a..9c0e917829 100644 +--- a/tests/explicit_bzero.c ++++ b/tests/explicit_bzero.c +@@ -1,4 +1,4 @@ +-/* $OpenBSD: explicit_bzero.c,v 1.6 2014/07/11 01:10:35 matthew Exp $ */ ++/* $OpenBSD: explicit_bzero.c,v 1.7 2021/03/27 11:17:58 bcook Exp $ */ + /* + * Copyright (c) 2014 Google Inc. + * +@@ -18,6 +18,7 @@ + #include + #include + #include ++#include + #include + #include + +@@ -36,19 +37,33 @@ enum { + SECRETBYTES = SECRETCOUNT * sizeof(secret) + }; + +-static char altstack[SIGSTKSZ + SECRETBYTES]; ++/* ++ * As of glibc 2.34, when _GNU_SOURCE is defined, SIGSTKSZ is no longer ++ * constant on Linux. SIGSTKSZ is redefined to sysconf (_SC_SIGSTKSZ). ++ */ ++static char *altstack; ++#define ALTSTACK_SIZE (SIGSTKSZ + SECRETBYTES) + + static void + setup_stack(void) + { ++ altstack = calloc(1, ALTSTACK_SIZE); ++ ASSERT_NE(NULL, altstack); ++ + const stack_t sigstk = { + .ss_sp = altstack, +- .ss_size = sizeof(altstack), ++ .ss_size = ALTSTACK_SIZE + }; + + ASSERT_EQ(0, sigaltstack(&sigstk, NULL)); + } + ++static void ++cleanup_stack(void) ++{ ++ free(altstack); ++} ++ + static void + assert_on_stack(void) + { +@@ -129,7 +144,7 @@ test_without_bzero() + char buf[SECRETBYTES]; + assert_on_stack(); + populate_secret(buf, sizeof(buf)); +- char *res = memmem(altstack, sizeof(altstack), buf, sizeof(buf)); ++ char *res = memmem(altstack, ALTSTACK_SIZE, buf, sizeof(buf)); + ASSERT_NE(NULL, res); + return (res); + } +@@ -140,7 +155,7 @@ test_with_bzero() + char buf[SECRETBYTES]; + assert_on_stack(); + populate_secret(buf, sizeof(buf)); +- char *res = memmem(altstack, sizeof(altstack), buf, sizeof(buf)); ++ char *res = memmem(altstack, ALTSTACK_SIZE, buf, sizeof(buf)); + ASSERT_NE(NULL, res); + explicit_bzero(buf, sizeof(buf)); + return (res); +@@ -183,15 +198,17 @@ main() + * on the stack. This sanity checks that call_on_stack() and + * populate_secret() work as intended. + */ +- memset(altstack, 0, sizeof(altstack)); ++ memset(altstack, 0, ALTSTACK_SIZE); + call_on_stack(do_test_without_bzero); + + /* + * Now test with a call to explicit_bzero() and check that we + * *don't* find any instances of the secret data. + */ +- memset(altstack, 0, sizeof(altstack)); ++ memset(altstack, 0, ALTSTACK_SIZE); + call_on_stack(do_test_with_bzero); + ++ cleanup_stack(); ++ + return (0); + } From 8631ba18eee7fe48dc17244fa8b6425b3d84201e Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Thu, 16 Sep 2021 23:04:56 +0200 Subject: [PATCH 10/73] fuse: fix build w/glibc-2.34 `closefrom` is now a part of `glibc-2.34`[1]: > * The function closefrom has been added. It closes all file descriptors > greater than or equal to a given integer. This function is a GNU extension, > although it is also present in other systems. Failing Hydra build: https://hydra.nixos.org/build/152456339 [1] https://sourceware.org/pipermail/libc-alpha/2021-August/129718.html --- pkgs/os-specific/linux/fuse/common.nix | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pkgs/os-specific/linux/fuse/common.nix b/pkgs/os-specific/linux/fuse/common.nix index 5adb1b5355ad4..88035cf60c805 100644 --- a/pkgs/os-specific/linux/fuse/common.nix +++ b/pkgs/os-specific/linux/fuse/common.nix @@ -31,7 +31,13 @@ in stdenv.mkDerivation rec { }) ++ (if isFuse3 then [ ./fuse3-install.patch ./fuse3-Do-not-set-FUSERMOUNT_DIR.patch ] - else [ ./fuse2-Do-not-set-FUSERMOUNT_DIR.patch ]); + else [ + ./fuse2-Do-not-set-FUSERMOUNT_DIR.patch + (fetchpatch { + url = "https://gitweb.gentoo.org/repo/gentoo.git/plain/sys-fs/fuse/files/fuse-2.9.9-closefrom-glibc-2-34.patch?id=8a970396fca7aca2d5a761b8e7a8242f1eef14c9"; + sha256 = "sha256-ELYBW/wxRcSMssv7ejCObrpsJHtOPJcGq33B9yHQII4="; + }) + ]); nativeBuildInputs = if isFuse3 then [ meson ninja pkg-config ] From 486f248ce46043cd4c76e60012c83a14f310784e Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Thu, 16 Sep 2021 23:16:02 +0200 Subject: [PATCH 11/73] catch: fix build w/glibc-2.34 The issue was that `SIGSTKSZ` isn't an actual const anymore and thus can't be used to define sizes of static variables such as static char foo[SIGSTKSZ]; since this results in compiler errors such as error: array bound is not an integer constant before ']' token Fedora worked around this by hard-coding the value in `catch`. Since this is mainly a testing-framework and there's no other fix for v1 - we should eventually remove it entirely in favor of v2 anyways - I guess this is a good-enough fix. Failing Hydra build: https://hydra.nixos.org/build/152455108 --- pkgs/development/libraries/catch/default.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkgs/development/libraries/catch/default.nix b/pkgs/development/libraries/catch/default.nix index c89fbd477c960..c4d64a0f47878 100644 --- a/pkgs/development/libraries/catch/default.nix +++ b/pkgs/development/libraries/catch/default.nix @@ -20,6 +20,12 @@ stdenv.mkDerivation rec { url = "https://github.com/catchorg/Catch2/commit/bb6d08323f23a39eb65dd86671e68f4f5d3f2d6c.patch"; sha256 = "1vhbzx84nrhhf9zlbl6h5zmg3r5w5v833ihlswsysb9wp2i4isc5"; }) + + # Fix glibc-2.34 build + (fetchpatch { + url = "https://src.fedoraproject.org/rpms/catch1/raw/23276476148a657e7a45ade547f858cbf965a33a/f/catch1-sigstksz.patch"; + sha256 = "sha256-XSsI3iDEZCUSbozlYWC0y/LZ7qr/5zwACpn1jHKD0yU="; + }) ]; doCheck = true; From f81f59dfce012b9835980e2865e1c107fca009c8 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Fri, 17 Sep 2021 22:25:19 +0200 Subject: [PATCH 12/73] autofs: fix build w/glibc-2.34 This build was also broken by a libc const that isn't a number anymore and thus can't be used at places where a constant value is needed: automount.c:86:37: error: initializer element is not constant Failing Hydra build: https://hydra.nixos.org/build/153253104 --- pkgs/os-specific/linux/autofs/default.nix | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/pkgs/os-specific/linux/autofs/default.nix b/pkgs/os-specific/linux/autofs/default.nix index 7b29f5a0e5cfe..5e552301fe48e 100644 --- a/pkgs/os-specific/linux/autofs/default.nix +++ b/pkgs/os-specific/linux/autofs/default.nix @@ -1,5 +1,7 @@ { lib, stdenv, fetchurl, flex, bison, linuxHeaders, libtirpc, mount, umount, nfs-utils, e2fsprogs -, libxml2, libkrb5, kmod, openldap, sssd, cyrus_sasl, openssl, rpcsvc-proto }: +, libxml2, libkrb5, kmod, openldap, sssd, cyrus_sasl, openssl, rpcsvc-proto +, fetchpatch +}: stdenv.mkDerivation rec { version = "5.1.6"; @@ -10,6 +12,15 @@ stdenv.mkDerivation rec { sha256 = "1vya21mb4izj3khcr3flibv7xc15vvx2v0rjfk5yd31qnzcy7pnx"; }; + patches = [ + # glibc 2.34 compat + (fetchpatch { + url = "https://src.fedoraproject.org/rpms/autofs/raw/cc745af5e42396d540d5b3b92fae486e232bf6bd/f/autofs-5.1.7-use-default-stack-size-for-threads.patch"; + sha256 = "sha256-6ETDFbW7EhHR03xFWF+6OJBgn9NX3WW3bGhTNGodaOc="; + excludes = [ "CHANGELOG" ]; + }) + ]; + preConfigure = '' configureFlags="--enable-force-shutdown --enable-ignore-busy --with-path=$PATH" export sssldir="${sssd}/lib/sssd/modules" From b9078e581b20e613dfd3a36a262d2da31c74ce81 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sat, 18 Sep 2021 19:42:06 +0200 Subject: [PATCH 13/73] qt515.qtwebengine: fix build w/glibc-2.34 Derived from Fedora 35: https://src.fedoraproject.org/rpms/qt5-qtwebengine/c/d122c011631137b79455850c363676c655cf9e09?branch=rawhide Failing Hydra build: https://hydra.nixos.org/build/153232768 --- pkgs/development/libraries/qt-5/5.15/default.nix | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pkgs/development/libraries/qt-5/5.15/default.nix b/pkgs/development/libraries/qt-5/5.15/default.nix index 5943a80a701e7..74b92dda1df2b 100644 --- a/pkgs/development/libraries/qt-5/5.15/default.nix +++ b/pkgs/development/libraries/qt-5/5.15/default.nix @@ -56,7 +56,13 @@ let qtdeclarative = [ ./qtdeclarative.patch ]; qtscript = [ ./qtscript.patch ]; qtserialport = [ ./qtserialport.patch ]; - qtwebengine = lib.optionals stdenv.isDarwin [ + qtwebengine = [ + # glibc 2.34 compat + (fetchpatch { + url = "https://src.fedoraproject.org/rpms/qt5-qtwebengine/raw/d122c011631137b79455850c363676c655cf9e09/f/qtwebengine-everywhere-src-5.15.5-SIGSTKSZ.patch"; + sha256 = "sha256-1zS7nvbe5ZVuW/wSNOUBc2Qz0aB483Kfnz1JbzKEI+M="; + }) + ] ++ lib.optionals stdenv.isDarwin [ ./qtwebengine-darwin-no-platform-check.patch ./qtwebengine-mac-dont-set-dsymutil-path.patch ]; From 0caf7e5f0c53b2a3c7320e376eda97e1b29baa68 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sat, 18 Sep 2021 19:49:29 +0200 Subject: [PATCH 14/73] qt514.qtwebengine: fix build w/glibc-2.34 Same problem here as with QT 5.15. Failing Hydra build: https://hydra.nixos.org/build/153224604 --- pkgs/development/libraries/qt-5/5.14/default.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkgs/development/libraries/qt-5/5.14/default.nix b/pkgs/development/libraries/qt-5/5.14/default.nix index 65ce74dac021d..5a3bf205fbce3 100644 --- a/pkgs/development/libraries/qt-5/5.14/default.nix +++ b/pkgs/development/libraries/qt-5/5.14/default.nix @@ -96,6 +96,12 @@ let stripLen = 1; extraPrefix = "src/3rdparty/"; }) + + # glibc 2.34 compat + (fetchpatch { + url = "https://src.fedoraproject.org/rpms/qt5-qtwebengine/raw/4cef673b2dd01ce85ce7a841cf352104bbe79668/f/qtwebengine-everywhere-5.15.2-SIGSTKSZ.patch"; + sha256 = "sha256-2D0/FL4PBL4p6ccd6JoDAGqNtLs2aeE1OdM+PJItock="; + }) ] ++ lib.optional stdenv.isDarwin ./qtwebengine-darwin-no-platform-check.patch; qtwebkit = [ (fetchpatch { From 96418eb0e78ccce10d8c9e07457fa0c754cb04e8 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sat, 18 Sep 2021 20:09:57 +0200 Subject: [PATCH 15/73] rcs: fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/153235059 --- pkgs/applications/version-management/rcs/default.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkgs/applications/version-management/rcs/default.nix b/pkgs/applications/version-management/rcs/default.nix index d46a67a8601e0..6982bd43b2632 100644 --- a/pkgs/applications/version-management/rcs/default.nix +++ b/pkgs/applications/version-management/rcs/default.nix @@ -9,6 +9,14 @@ stdenv.mkDerivation rec { sha256 = "sha256-Q93+EHJKi4XiRo9kA7YABzcYbwHmDgvWL95p2EIjTMU="; }; + patches = [ + # glibc 2.34 compat + (fetchpatch { + url = "https://src.fedoraproject.org/rpms/rcs/raw/f8e07cd37f4abfb36e37d41852bb8f9e234d3fb1/f/rcs-5.10.0-SIGSTKSZ.patch"; + sha256 = "sha256-mc6Uye9mdEsLBcOnf1m1TUb1BV0ncNU//iKBpLGBjho="; + }) + ]; + ac_cv_path_ED = "${ed}/bin/ed"; DIFF = "${diffutils}/bin/diff"; DIFF3 = "${diffutils}/bin/diff3"; From 48d713574293092544bd7deae2cef1e789f478e1 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Tue, 21 Sep 2021 11:38:58 +0200 Subject: [PATCH 16/73] emacs: fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/153252802 --- pkgs/applications/editors/emacs/27.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkgs/applications/editors/emacs/27.nix b/pkgs/applications/editors/emacs/27.nix index 436785c34f686..064231b24565c 100644 --- a/pkgs/applications/editors/emacs/27.nix +++ b/pkgs/applications/editors/emacs/27.nix @@ -7,5 +7,10 @@ import ./generic.nix (rec { url = "https://git.savannah.gnu.org/cgit/emacs.git/patch/?id=a88f63500e475f842e5fbdd9abba4ce122cdb082"; sha256 = "sha256-RF9b5PojFUAjh2TDUW4+HaWveV30Spy1iAXhaWf1ZVg="; }) + # glibc 2.34 compat + (fetchpatch { + url = "https://src.fedoraproject.org/rpms/emacs/raw/181aafcdb7ee2fded9fce4cfc448f27edccc927f/f/emacs-glibc-2.34.patch"; + sha256 = "sha256-2o3C/jhZPl2OW/LmVPt/fhdwbS9NOdF9lVEF1Kn9aEk="; + }) ]; }) From 1470227ef41c4b101c77f3f1969d3978678215df Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Thu, 30 Sep 2021 19:23:43 +0200 Subject: [PATCH 17/73] postfix: fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/154082134 --- pkgs/servers/mail/postfix/default.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pkgs/servers/mail/postfix/default.nix b/pkgs/servers/mail/postfix/default.nix index 08c55f771724d..942023b4eaf43 100644 --- a/pkgs/servers/mail/postfix/default.nix +++ b/pkgs/servers/mail/postfix/default.nix @@ -1,5 +1,6 @@ { stdenv, lib, fetchurl, makeWrapper, gnused, db, openssl, cyrus_sasl, libnsl , coreutils, findutils, gnugrep, gawk, icu, pcre, m4 +, fetchpatch , buildPackages, nixosTests , withLDAP ? true, openldap , withPgSQL ? false, postgresql @@ -46,6 +47,12 @@ in stdenv.mkDerivation rec { ./postfix-3.0-no-warnings.patch ./post-install-script.patch ./relative-symlinks.patch + + # glibc 2.34 compat + (fetchpatch { + url = "https://src.fedoraproject.org/rpms/postfix/raw/2f9d42453e67ebc43f786d98262a249037f80a77/f/postfix-3.6.2-glibc-234-build-fix.patch"; + sha256 = "sha256-xRUL5gaoIt6HagGlhsGwvwrAfYvzMgydsltYMWvl9BI="; + }) ]; postPatch = lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) '' From 917b7e5fd2e29346040dc95a39cae17f92eae0dc Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Thu, 30 Sep 2021 21:18:53 +0200 Subject: [PATCH 18/73] ocaml: fix build w/glibc-2.34 ChangeLog: https://hydra.nixos.org/build/154122673 --- pkgs/development/compilers/ocaml/4.12.nix | 5 +++++ pkgs/development/compilers/ocaml/generic.nix | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/pkgs/development/compilers/ocaml/4.12.nix b/pkgs/development/compilers/ocaml/4.12.nix index 0662e66e0b6ab..949ca185a3c35 100644 --- a/pkgs/development/compilers/ocaml/4.12.nix +++ b/pkgs/development/compilers/ocaml/4.12.nix @@ -3,4 +3,9 @@ import ./generic.nix { minor_version = "12"; patch_version = "0"; sha256 = "1hxy349jfa2vkfgmxf6pvd9w4z5bmcgsg0fxfdabcghyvjw9vvir"; + patches = [ + { url = "https://src.fedoraproject.org/rpms/ocaml/raw/129153b85109944bf0b2922949f77ef8f32b39a1/f/0004-Dynamically-allocate-the-alternate-signal-stack-1026.patch"; + sha256 = "sha256-FdQ1HkMKHU9QvgLPUBvMdPiEa7w7IL3+1F3SLv63Gog="; + } + ]; } diff --git a/pkgs/development/compilers/ocaml/generic.nix b/pkgs/development/compilers/ocaml/generic.nix index ec52e56c1faa2..debc3d4272a4f 100644 --- a/pkgs/development/compilers/ocaml/generic.nix +++ b/pkgs/development/compilers/ocaml/generic.nix @@ -1,4 +1,4 @@ -{ minor_version, major_version, patch_version +{ minor_version, major_version, patch_version, patches ? [] , ...}@args: let versionNoPatch = "${toString major_version}.${toString minor_version}"; @@ -6,7 +6,7 @@ let safeX11 = stdenv: !(stdenv.isAarch32 || stdenv.isMips || stdenv.hostPlatform.isStatic); in -{ lib, stdenv, fetchurl, ncurses, buildEnv, libunwind +{ lib, stdenv, fetchurl, ncurses, buildEnv, libunwind, fetchpatch , libX11, xorgproto, useX11 ? safeX11 stdenv && !lib.versionAtLeast version "4.09" , aflSupport ? false , flambdaSupport ? false @@ -44,6 +44,8 @@ stdenv.mkDerivation (args // { inherit src; + patches = map fetchpatch patches; + strictDeps = true; prefixKey = "-prefix "; From 8e16dcc4aa268de14fdaa0fac4acf7c7a11df903 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sun, 3 Oct 2021 20:00:54 +0200 Subject: [PATCH 19/73] openjdk11: fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/154132196 --- pkgs/development/compilers/openjdk/11.nix | 1 + pkgs/development/compilers/openjdk/16.nix | 1 + .../compilers/openjdk/fix-glibc-2.34.patch | 24 +++++++++++++++++++ 3 files changed, 26 insertions(+) create mode 100644 pkgs/development/compilers/openjdk/fix-glibc-2.34.patch diff --git a/pkgs/development/compilers/openjdk/11.nix b/pkgs/development/compilers/openjdk/11.nix index 6f4b78286d63a..8c45bece9adc1 100644 --- a/pkgs/development/compilers/openjdk/11.nix +++ b/pkgs/development/compilers/openjdk/11.nix @@ -40,6 +40,7 @@ let ./currency-date-range-jdk10.patch ./increase-javadoc-heap.patch ./fix-library-path-jdk11.patch + ./fix-glibc-2.34.patch ] ++ lib.optionals (!headless && enableGnome2) [ ./swing-use-gtk-jdk10.patch ]; diff --git a/pkgs/development/compilers/openjdk/16.nix b/pkgs/development/compilers/openjdk/16.nix index e6fd12a632b38..0a4a8e1de4131 100644 --- a/pkgs/development/compilers/openjdk/16.nix +++ b/pkgs/development/compilers/openjdk/16.nix @@ -48,6 +48,7 @@ let url = "https://src.fedoraproject.org/rpms/java-openjdk/raw/06c001c7d87f2e9fe4fedeef2d993bcd5d7afa2a/f/rh1673833-remove_removal_of_wformat_during_test_compilation.patch"; sha256 = "082lmc30x64x583vqq00c8y0wqih3y4r0mp1c4bqq36l22qv6b6r"; }) + ./fix-glibc-2.34.patch ] ++ lib.optionals (!headless && enableGnome2) [ ./swing-use-gtk-jdk13.patch ]; diff --git a/pkgs/development/compilers/openjdk/fix-glibc-2.34.patch b/pkgs/development/compilers/openjdk/fix-glibc-2.34.patch new file mode 100644 index 0000000000000..7bf8b2b167447 --- /dev/null +++ b/pkgs/development/compilers/openjdk/fix-glibc-2.34.patch @@ -0,0 +1,24 @@ +Taken from https://build.opensuse.org/package/view_file/Java:Factory/java-15-openjdk/openjdk-glibc234.patch + +--- openjdk/test/hotspot/jtreg/runtime/StackGuardPages/exeinvoke.c 2021-04-09 11:36:58.000000000 +0200 ++++ openjdk/test/hotspot/jtreg/runtime/StackGuardPages/exeinvoke.c 2021-08-26 15:42:52.326232581 +0200 +@@ -67,8 +67,17 @@ + longjmp(context, 1); + } + ++static char* altstack = NULL; ++ + void set_signal_handler() { +- static char altstack[SIGSTKSZ]; ++ if (altstack == NULL) { ++ // Dynamically allocated in case SIGSTKSZ is not constant ++ altstack = malloc(SIGSTKSZ); ++ if (altstack == NULL) { ++ fprintf(stderr, "Test ERROR. Unable to malloc altstack space\n"); ++ exit(7); ++ } ++ } + + stack_t ss = { + .ss_size = SIGSTKSZ, + From f97b9951865b659bd0ee3ae6662676ad0efafa4b Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sun, 3 Oct 2021 22:29:02 +0200 Subject: [PATCH 20/73] texinfo: fix build w/glibc-2.34 --- pkgs/development/tools/misc/texinfo/6.8.nix | 4 + .../development/tools/misc/texinfo/common.nix | 4 +- .../tools/misc/texinfo/fix-glibc-2.34.patch | 186 ++++++++++++++++++ 3 files changed, 192 insertions(+), 2 deletions(-) create mode 100644 pkgs/development/tools/misc/texinfo/fix-glibc-2.34.patch diff --git a/pkgs/development/tools/misc/texinfo/6.8.nix b/pkgs/development/tools/misc/texinfo/6.8.nix index 11435bf329f66..992f695bc92ca 100644 --- a/pkgs/development/tools/misc/texinfo/6.8.nix +++ b/pkgs/development/tools/misc/texinfo/6.8.nix @@ -1,4 +1,8 @@ import ./common.nix { version = "6.8"; sha256 = "1i7yb7mrp3inz25zbzv2pllr4y7d58v818f1as7iz8mw53nm7dwf"; + patches = [ + # glibc 2.34 compat + ./fix-glibc-2.34.patch + ]; } diff --git a/pkgs/development/tools/misc/texinfo/common.nix b/pkgs/development/tools/misc/texinfo/common.nix index b379df09a4b06..e47d3369de966 100644 --- a/pkgs/development/tools/misc/texinfo/common.nix +++ b/pkgs/development/tools/misc/texinfo/common.nix @@ -1,4 +1,4 @@ -{ version, sha256 }: +{ version, sha256, patches ? [] }: { lib, stdenv, buildPackages, fetchurl, perl, xz, gettext @@ -26,7 +26,7 @@ stdenv.mkDerivation { inherit sha256; }; - patches = optional crossBuildTools ./cross-tools-flags.patch; + patches = patches ++ (optional crossBuildTools ./cross-tools-flags.patch); # ncurses is required to build `makedoc' # this feature is introduced by the ./cross-tools-flags.patch diff --git a/pkgs/development/tools/misc/texinfo/fix-glibc-2.34.patch b/pkgs/development/tools/misc/texinfo/fix-glibc-2.34.patch new file mode 100644 index 0000000000000..60f2e63b7ce03 --- /dev/null +++ b/pkgs/development/tools/misc/texinfo/fix-glibc-2.34.patch @@ -0,0 +1,186 @@ + +Patch by Vitezslav Crhonek +Source: https://src.fedoraproject.org/rpms/texinfo/c/9b2cca4817fa4bd8d520fed05e9560fc7183dcdf?branch=rawhide + +diff -up texinfo-6.8/gnulib/lib/cdefs.h.orig texinfo-6.8/gnulib/lib/cdefs.h +--- texinfo-6.8/gnulib/lib/cdefs.h.orig 2021-03-11 19:57:53.000000000 +0100 ++++ texinfo-6.8/gnulib/lib/cdefs.h 2021-07-19 12:26:46.985176475 +0200 +@@ -321,15 +321,15 @@ + + /* The nonnull function attribute marks pointer parameters that + must not be NULL. */ +-#ifndef __attribute_nonnull__ ++#ifndef __nonnull + # if __GNUC_PREREQ (3,3) || __glibc_has_attribute (__nonnull__) +-# define __attribute_nonnull__(params) __attribute__ ((__nonnull__ params)) ++# define __nonnull(params) __attribute__ ((__nonnull__ params)) + # else +-# define __attribute_nonnull__(params) ++# define __nonnull(params) + # endif +-#endif +-#ifndef __nonnull +-# define __nonnull(params) __attribute_nonnull__ (params) ++#elif !defined __GLIBC__ ++# undef __nonnull ++# define __nonnull(params) _GL_ATTRIBUTE_NONNULL (params) + #endif + + /* If fortification mode, we warn about unused results of certain +diff -up texinfo-6.8/gnulib/lib/libc-config.h.orig texinfo-6.8/gnulib/lib/libc-config.h +--- texinfo-6.8/gnulib/lib/libc-config.h.orig 2021-03-11 19:57:54.000000000 +0100 ++++ texinfo-6.8/gnulib/lib/libc-config.h 2021-07-19 12:27:58.810590975 +0200 +@@ -33,9 +33,9 @@ + #include + + /* On glibc this includes and and #defines +- _FEATURES_H, __WORDSIZE, and __set_errno. On FreeBSD 11 and +- DragonFlyBSD 5.9 it includes which defines __nonnull. +- Elsewhere it is harmless. */ ++ _FEATURES_H, __WORDSIZE, and __set_errno. On FreeBSD 11 it ++ includes which defines __nonnull. Elsewhere it ++ is harmless. */ + #include + + /* From glibc . */ +diff -up texinfo-6.8/gnulib/lib/malloc/dynarray-skeleton.c.orig texinfo-6.8/gnulib/lib/malloc/dynarray-skeleton.c +--- texinfo-6.8/gnulib/lib/malloc/dynarray-skeleton.c.orig 2021-03-11 19:57:54.000000000 +0100 ++++ texinfo-6.8/gnulib/lib/malloc/dynarray-skeleton.c 2021-07-19 12:24:46.878419397 +0200 +@@ -192,7 +192,7 @@ DYNARRAY_NAME (free__array__) (struct DY + + /* Initialize a dynamic array object. This must be called before any + use of the object. */ +-__attribute_nonnull__ ((1)) ++__nonnull ((1)) + static void + DYNARRAY_NAME (init) (struct DYNARRAY_STRUCT *list) + { +@@ -202,7 +202,7 @@ DYNARRAY_NAME (init) (struct DYNARRAY_ST + } + + /* Deallocate the dynamic array and its elements. */ +-__attribute_maybe_unused__ __attribute_nonnull__ ((1)) ++__attribute_maybe_unused__ __nonnull ((1)) + static void + DYNARRAY_FREE (struct DYNARRAY_STRUCT *list) + { +@@ -213,7 +213,7 @@ DYNARRAY_FREE (struct DYNARRAY_STRUCT *l + } + + /* Return true if the dynamic array is in an error state. */ +-__attribute_nonnull__ ((1)) ++__nonnull ((1)) + static inline bool + DYNARRAY_NAME (has_failed) (const struct DYNARRAY_STRUCT *list) + { +@@ -222,7 +222,7 @@ DYNARRAY_NAME (has_failed) (const struct + + /* Mark the dynamic array as failed. All elements are deallocated as + a side effect. */ +-__attribute_nonnull__ ((1)) ++__nonnull ((1)) + static void + DYNARRAY_NAME (mark_failed) (struct DYNARRAY_STRUCT *list) + { +@@ -236,7 +236,7 @@ DYNARRAY_NAME (mark_failed) (struct DYNA + + /* Return the number of elements which have been added to the dynamic + array. */ +-__attribute_nonnull__ ((1)) ++__nonnull ((1)) + static inline size_t + DYNARRAY_NAME (size) (const struct DYNARRAY_STRUCT *list) + { +@@ -245,7 +245,7 @@ DYNARRAY_NAME (size) (const struct DYNAR + + /* Return a pointer to the array element at INDEX. Terminate the + process if INDEX is out of bounds. */ +-__attribute_nonnull__ ((1)) ++__nonnull ((1)) + static inline DYNARRAY_ELEMENT * + DYNARRAY_NAME (at) (struct DYNARRAY_STRUCT *list, size_t index) + { +@@ -257,7 +257,7 @@ DYNARRAY_NAME (at) (struct DYNARRAY_STRU + /* Return a pointer to the first array element, if any. For a + zero-length array, the pointer can be NULL even though the dynamic + array has not entered the failure state. */ +-__attribute_nonnull__ ((1)) ++__nonnull ((1)) + static inline DYNARRAY_ELEMENT * + DYNARRAY_NAME (begin) (struct DYNARRAY_STRUCT *list) + { +@@ -267,7 +267,7 @@ DYNARRAY_NAME (begin) (struct DYNARRAY_S + /* Return a pointer one element past the last array element. For a + zero-length array, the pointer can be NULL even though the dynamic + array has not entered the failure state. */ +-__attribute_nonnull__ ((1)) ++__nonnull ((1)) + static inline DYNARRAY_ELEMENT * + DYNARRAY_NAME (end) (struct DYNARRAY_STRUCT *list) + { +@@ -294,7 +294,7 @@ DYNARRAY_NAME (add__) (struct DYNARRAY_S + /* Add ITEM at the end of the array, enlarging it by one element. + Mark *LIST as failed if the dynamic array allocation size cannot be + increased. */ +-__attribute_nonnull__ ((1)) ++__nonnull ((1)) + static inline void + DYNARRAY_NAME (add) (struct DYNARRAY_STRUCT *list, DYNARRAY_ELEMENT item) + { +@@ -348,8 +348,7 @@ DYNARRAY_NAME (emplace__) (struct DYNARR + /* Allocate a place for a new element in *LIST and return a pointer to + it. The pointer can be NULL if the dynamic array cannot be + enlarged due to a memory allocation failure. */ +-__attribute_maybe_unused__ __attribute_warn_unused_result__ +-__attribute_nonnull__ ((1)) ++__attribute_maybe_unused__ __attribute_warn_unused_result__ __nonnull ((1)) + static + /* Avoid inlining with the larger initialization code. */ + #if !(defined (DYNARRAY_ELEMENT_INIT) || defined (DYNARRAY_ELEMENT_FREE)) +@@ -373,7 +372,7 @@ DYNARRAY_NAME (emplace) (struct DYNARRAY + existing size, new elements are added (which can be initialized). + Otherwise, the list is truncated, and elements are freed. Return + false on memory allocation failure (and mark *LIST as failed). */ +-__attribute_maybe_unused__ __attribute_nonnull__ ((1)) ++__attribute_maybe_unused__ __nonnull ((1)) + static bool + DYNARRAY_NAME (resize) (struct DYNARRAY_STRUCT *list, size_t size) + { +@@ -418,7 +417,7 @@ DYNARRAY_NAME (resize) (struct DYNARRAY_ + } + + /* Remove the last element of LIST if it is present. */ +-__attribute_maybe_unused__ __attribute_nonnull__ ((1)) ++__attribute_maybe_unused__ __nonnull ((1)) + static void + DYNARRAY_NAME (remove_last) (struct DYNARRAY_STRUCT *list) + { +@@ -435,7 +434,7 @@ DYNARRAY_NAME (remove_last) (struct DYNA + + /* Remove all elements from the list. The elements are freed, but the + list itself is not. */ +-__attribute_maybe_unused__ __attribute_nonnull__ ((1)) ++__attribute_maybe_unused__ __nonnull ((1)) + static void + DYNARRAY_NAME (clear) (struct DYNARRAY_STRUCT *list) + { +@@ -453,8 +452,7 @@ DYNARRAY_NAME (clear) (struct DYNARRAY_S + stored in *RESULT if LIST refers to an empty list. On success, the + pointer in *RESULT is heap-allocated and must be deallocated using + free. */ +-__attribute_maybe_unused__ __attribute_warn_unused_result__ +-__attribute_nonnull__ ((1, 2)) ++__attribute_maybe_unused__ __attribute_warn_unused_result__ __nonnull ((1, 2)) + static bool + DYNARRAY_NAME (finalize) (struct DYNARRAY_STRUCT *list, + DYNARRAY_FINAL_TYPE *result) +@@ -485,8 +483,7 @@ DYNARRAY_NAME (finalize) (struct DYNARRA + have a sentinel at the end). If LENGTHP is not NULL, the array + length is written to *LENGTHP. *LIST is re-initialized and can be + reused. */ +-__attribute_maybe_unused__ __attribute_warn_unused_result__ +-__attribute_nonnull__ ((1)) ++__attribute_maybe_unused__ __attribute_warn_unused_result__ __nonnull ((1)) + static DYNARRAY_ELEMENT * + DYNARRAY_NAME (finalize) (struct DYNARRAY_STRUCT *list, size_t *lengthp) + { From bcf8aeff3c7fbf92d576f89dad6a21913f7eb37a Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Fri, 8 Oct 2021 13:21:25 +0200 Subject: [PATCH 21/73] ocaml 4.10/4.11: fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/155189331 Applied a smaller patch from Fedora's fork[1] as it also applies on older versions. That said, these versions seem unmaintained anyways, so we should probably drop them entirely. [1] https://pagure.io/fedora-ocaml/c/dfb5e954a04f59b0456cc4c0ddf3acaf22e0ff07?branch=fedora-35-4.12.0 --- pkgs/development/compilers/ocaml/4.10.nix | 3 ++ pkgs/development/compilers/ocaml/4.11.nix | 3 ++ pkgs/development/compilers/ocaml/generic.nix | 4 +- .../glibc-2.34-for-ocaml-4.10-and-11.patch | 37 +++++++++++++++++++ 4 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/compilers/ocaml/glibc-2.34-for-ocaml-4.10-and-11.patch diff --git a/pkgs/development/compilers/ocaml/4.10.nix b/pkgs/development/compilers/ocaml/4.10.nix index 78051040b5718..48d01a5a8c8d2 100644 --- a/pkgs/development/compilers/ocaml/4.10.nix +++ b/pkgs/development/compilers/ocaml/4.10.nix @@ -3,4 +3,7 @@ import ./generic.nix { minor_version = "10"; patch_version = "2"; sha256 = "sha256-locUYQeCgtXbAiB32JveJchfteN2YStE+MN9ToTwAOM="; + patches = [ + ./glibc-2.34-for-ocaml-4.10-and-11.patch + ]; } diff --git a/pkgs/development/compilers/ocaml/4.11.nix b/pkgs/development/compilers/ocaml/4.11.nix index 3e5aefc11f1ce..6a2e4f61f80e2 100644 --- a/pkgs/development/compilers/ocaml/4.11.nix +++ b/pkgs/development/compilers/ocaml/4.11.nix @@ -3,4 +3,7 @@ import ./generic.nix { minor_version = "11"; patch_version = "2"; sha256 = "1m3wrgkkv3f77wvcymjm0i2srxzmx62y6jln3i0a2px07ng08l9z"; + patches = [ + ./glibc-2.34-for-ocaml-4.10-and-11.patch + ]; } diff --git a/pkgs/development/compilers/ocaml/generic.nix b/pkgs/development/compilers/ocaml/generic.nix index debc3d4272a4f..cd1bccd1800f2 100644 --- a/pkgs/development/compilers/ocaml/generic.nix +++ b/pkgs/development/compilers/ocaml/generic.nix @@ -35,6 +35,8 @@ let x11env = buildEnv { name = "x11env"; paths = [libX11 xorgproto]; }; x11lib = x11env + "/lib"; x11inc = x11env + "/include"; + + fetchpatch' = x: if builtins.isAttrs x then fetchpatch x else x; in stdenv.mkDerivation (args // { @@ -44,7 +46,7 @@ stdenv.mkDerivation (args // { inherit src; - patches = map fetchpatch patches; + patches = map fetchpatch' patches; strictDeps = true; diff --git a/pkgs/development/compilers/ocaml/glibc-2.34-for-ocaml-4.10-and-11.patch b/pkgs/development/compilers/ocaml/glibc-2.34-for-ocaml-4.10-and-11.patch new file mode 100644 index 0000000000000..4ff9e6fddba57 --- /dev/null +++ b/pkgs/development/compilers/ocaml/glibc-2.34-for-ocaml-4.10-and-11.patch @@ -0,0 +1,37 @@ +From dfb5e954a04f59b0456cc4c0ddf3acaf22e0ff07 Mon Sep 17 00:00:00 2001 +From: Richard W.M. Jones +Date: Feb 28 2021 20:45:47 +0000 +Subject: Workaround for glibc non-constant SIGSTKSZ + + +https://github.com/ocaml/ocaml/issues/10250 + +Signed-off-by: Richard W.M. Jones + +--- + +diff --git a/runtime/signals_nat.c b/runtime/signals_nat.c +index 8b64ab4..7f0a975 100644 +--- a/runtime/signals_nat.c ++++ b/runtime/signals_nat.c +@@ -181,7 +181,19 @@ DECLARE_SIGNAL_HANDLER(trap_handler) + #error "CONTEXT_SP is required if HAS_STACK_OVERFLOW_DETECTION is defined" + #endif + ++#ifndef __GLIBC__ + static char sig_alt_stack[SIGSTKSZ]; ++#else ++/* glibc 2.34 has non-constant SIGSTKSZ */ ++static char *sig_alt_stack; ++ ++static void allocate_sig_alt_stack(void) __attribute__((constructor)); ++static void ++allocate_sig_alt_stack(void) ++{ ++ sig_alt_stack = malloc(SIGSTKSZ); ++} ++#endif + + /* Code compiled with ocamlopt never accesses more than + EXTRA_STACK bytes below the stack pointer. */ + From f8a7d99e54e0a7cc0a41e89c74e04015aafdc369 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sat, 9 Oct 2021 22:55:55 +0200 Subject: [PATCH 22/73] spdlog: 1.8.5 -> 1.9.2, fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/155163350 --- pkgs/development/libraries/spdlog/default.nix | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/pkgs/development/libraries/spdlog/default.nix b/pkgs/development/libraries/spdlog/default.nix index d4e0888ffd2ff..2857b8776f696 100644 --- a/pkgs/development/libraries/spdlog/default.nix +++ b/pkgs/development/libraries/spdlog/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchFromGitHub, cmake, fmt_8 }: +{ lib, stdenv, fetchFromGitHub, cmake, fmt_8, fetchpatch }: let generic = { version, sha256 }: @@ -13,6 +13,14 @@ let inherit sha256; }; + patches = [ + # glibc 2.34 compat + (fetchpatch { + url = "https://github.com/gabime/spdlog/commit/d54b8e89c058f3cab2b32b3e9a2b49fd171d5895.patch"; + sha256 = "sha256-pb7cREF90GXb5Mbs8xFLQ+eLo6Xum13/xYa8JUgJlbI="; + }) + ]; + nativeBuildInputs = [ cmake ]; # spdlog <1.3 uses a bundled version of fmt propagatedBuildInputs = lib.optional (lib.versionAtLeast version "1.3") fmt_8; From 49a7ee9604b6c4c0a7389baa293b9f57a331ed9c Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sat, 9 Oct 2021 23:09:45 +0200 Subject: [PATCH 23/73] seasocks: fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/155145624 --- pkgs/development/libraries/seasocks/default.nix | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pkgs/development/libraries/seasocks/default.nix b/pkgs/development/libraries/seasocks/default.nix index fd53db0dcf919..044948a012e34 100644 --- a/pkgs/development/libraries/seasocks/default.nix +++ b/pkgs/development/libraries/seasocks/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchFromGitHub, cmake, python3, zlib }: +{ lib, stdenv, fetchFromGitHub, cmake, python3, zlib, catch2 }: stdenv.mkDerivation rec { pname = "seasocks"; @@ -11,9 +11,15 @@ stdenv.mkDerivation rec { sha256 = "1f9a3mx3yjmr5qry4rc1c7mrx3348iifxm7d8sj8yd41kqnzmfv4"; }; + postPatch = '' + cp ${catch2}/include/catch2/catch.hpp src/test/c/catch/catch2/catch.hpp + ''; + nativeBuildInputs = [ cmake ]; buildInputs = [ zlib python3 ]; + doCheck = true; + meta = with lib; { homepage = "https://github.com/mattgodbolt/seasocks"; description = "Tiny embeddable C++ HTTP and WebSocket server"; From c2050675d6c7f9d2a7aaaa3d3d00c7b4f22753cc Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sat, 9 Oct 2021 23:24:31 +0200 Subject: [PATCH 24/73] leatherman: fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/155215198 --- pkgs/development/libraries/leatherman/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/development/libraries/leatherman/default.nix b/pkgs/development/libraries/leatherman/default.nix index 874c567ed42e8..05cf84144feb7 100644 --- a/pkgs/development/libraries/leatherman/default.nix +++ b/pkgs/development/libraries/leatherman/default.nix @@ -11,6 +11,8 @@ stdenv.mkDerivation rec { owner = "puppetlabs"; }; + cmakeFlags = [ "-DLEATHERMAN_ENABLE_TESTING=OFF" ]; + NIX_CFLAGS_COMPILE = "-Wno-error"; nativeBuildInputs = [ cmake ]; From b770794ce34ad8d1f03a24954123d4c41487286c Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sat, 9 Oct 2021 23:37:51 +0200 Subject: [PATCH 25/73] eternal-terminal: fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/154077447 --- pkgs/tools/networking/eternal-terminal/default.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pkgs/tools/networking/eternal-terminal/default.nix b/pkgs/tools/networking/eternal-terminal/default.nix index 035a99103fc7d..0fb559afc990c 100644 --- a/pkgs/tools/networking/eternal-terminal/default.nix +++ b/pkgs/tools/networking/eternal-terminal/default.nix @@ -7,6 +7,7 @@ , openssl , protobuf , zlib +, catch2 }: stdenv.mkDerivation rec { @@ -20,6 +21,10 @@ stdenv.mkDerivation rec { hash = "sha256-cCZbG0CD5V/FTj1BuVr083EJ+BCgIcKHomNtpJb3lOo="; }; + preBuild = '' + cp ${catch2}/include/catch2/catch.hpp ../external_imported/Catch2/single_include/catch2/catch.hpp + ''; + nativeBuildInputs = [ cmake ]; @@ -42,6 +47,8 @@ stdenv.mkDerivation rec { "-std=c++17" ]; + doCheck = true; + meta = with lib; { description = "Remote shell that automatically reconnects without interrupting the session"; homepage = "https://eternalterminal.dev/"; From c905ab58a2fe60e0a34b3c1ed13b28b573267da3 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sun, 10 Oct 2021 14:18:20 +0200 Subject: [PATCH 26/73] trenchbroom: fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/155141010 --- pkgs/applications/misc/trenchbroom/default.nix | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/pkgs/applications/misc/trenchbroom/default.nix b/pkgs/applications/misc/trenchbroom/default.nix index 8a7025060607f..a49fbf71191e8 100644 --- a/pkgs/applications/misc/trenchbroom/default.nix +++ b/pkgs/applications/misc/trenchbroom/default.nix @@ -21,6 +21,19 @@ stdenv.mkDerivation rec { --subst-var-by APP_VERSION_YEAR ${lib.versions.major version} \ --subst-var-by APP_VERSION_NUMBER ${lib.versions.minor version} \ --subst-var-by GIT_DESCRIBE v${version} + + # Tests don't compile because of vendored `catch2` being incompatible with glibc-2.34. + # Also, no need to since we don't even run them. + substituteInPlace lib/CMakeLists.txt \ + --replace "add_subdirectory(Catch2)" "" + substituteInPlace lib/vecmath/CMakeLists.txt \ + --replace "add_subdirectory(test)" "" \ + --replace "add_subdirectory(lib)" "" + substituteInPlace lib/kdl/CMakeLists.txt \ + --replace "add_subdirectory(test)" "" + substituteInPlace common/CMakeLists.txt \ + --replace "add_subdirectory(test)" "" \ + --replace "add_subdirectory(benchmark)" "" ''; nativeBuildInputs = [ cmake git pandoc wrapQtAppsHook copyDesktopItems ]; From 7c5781615febc475d9b33ae07d2cdf634b50a783 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Wed, 13 Oct 2021 14:35:47 +0200 Subject: [PATCH 27/73] trafficserver: fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/155205200 --- pkgs/servers/http/trafficserver/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkgs/servers/http/trafficserver/default.nix b/pkgs/servers/http/trafficserver/default.nix index 9058a4cbda75d..06d640a5bc00f 100644 --- a/pkgs/servers/http/trafficserver/default.nix +++ b/pkgs/servers/http/trafficserver/default.nix @@ -13,6 +13,7 @@ , python3 , xz , zlib +, catch2 # recommended dependencies , withHwloc ? true , hwloc @@ -113,6 +114,8 @@ stdenv.mkDerivation rec { tools/check-unused-dependencies substituteInPlace configure --replace '/usr/bin/file' '${file}/bin/file' + + cp ${catch2}/include/catch2/catch.hpp tests/include/catch.hpp '' + lib.optionalString stdenv.isLinux '' substituteInPlace configure \ --replace '/usr/include/linux' '${linuxHeaders}/include/linux' From d4593d4dafa3dab28acb76eb0256081077fcc15d Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Wed, 13 Oct 2021 14:46:46 +0200 Subject: [PATCH 28/73] pdfslicer: fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/155183850 --- pkgs/applications/misc/pdfslicer/default.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkgs/applications/misc/pdfslicer/default.nix b/pkgs/applications/misc/pdfslicer/default.nix index 31bc471401592..ed20f460a1677 100644 --- a/pkgs/applications/misc/pdfslicer/default.nix +++ b/pkgs/applications/misc/pdfslicer/default.nix @@ -24,6 +24,12 @@ stdenv.mkDerivation rec { sha256 = "0sja0ddd9c8wjjpzk2ag8q1lxpj09adgmhd7wnsylincqnj2jyls"; }; + postPatch = '' + # Don't build tests, vendored catch doesn't build with latest glibc. + substituteInPlace CMakeLists.txt \ + --replace "add_subdirectory (tests)" "" + ''; + nativeBuildInputs = [ cmake gettext From a3f4ff59ae365e1f10b5fa36dd802eb7d7b326f6 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Wed, 13 Oct 2021 14:56:50 +0200 Subject: [PATCH 29/73] openmw: mark as broken --- pkgs/games/openmw/default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkgs/games/openmw/default.nix b/pkgs/games/openmw/default.nix index edc8147a2b77b..8746d3172ac83 100644 --- a/pkgs/games/openmw/default.nix +++ b/pkgs/games/openmw/default.nix @@ -83,5 +83,10 @@ mkDerivation rec { license = licenses.gpl3Plus; maintainers = with maintainers; [ abbradar marius851000 ]; platforms = platforms.linux; + + # 2021-10-13, doesn't compile with glibc-2.34, maintainers prefer a fix on glibc's end. + # Can be marked as un-broken as soon as https://gitlab.com/OpenMW/openmw/-/merge_requests/1239 + # is resolved and a patch is appliable here. + broken = true; }; } From dbe99a0172e9316cf5f3a9c6a3935efeecb1b1fc Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Wed, 13 Oct 2021 18:59:14 +0200 Subject: [PATCH 30/73] ntp: fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/155170191 Patch derived from linuxfromscratch/openembedded.org[1][2]. [1] https://www.linuxfromscratch.org/blfs/view/svn/basicnet/ntp.html [2] https://patchwork.openembedded.org/patch/180019/ --- pkgs/tools/networking/ntp/default.nix | 5 ++++ .../tools/networking/ntp/glibc-2.34-fix.patch | 28 +++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 pkgs/tools/networking/ntp/glibc-2.34-fix.patch diff --git a/pkgs/tools/networking/ntp/default.nix b/pkgs/tools/networking/ntp/default.nix index 92a6005e2a669..d1673a013e9a7 100644 --- a/pkgs/tools/networking/ntp/default.nix +++ b/pkgs/tools/networking/ntp/default.nix @@ -9,6 +9,11 @@ stdenv.mkDerivation rec { sha256 = "06cwhimm71safmwvp6nhxp6hvxsg62whnbgbgiflsqb8mgg40n7n"; }; + patches = [ + # From https://patchwork.openembedded.org/patch/180019/ + ./glibc-2.34-fix.patch + ]; + configureFlags = [ "--sysconfdir=/etc" "--localstatedir=/var" diff --git a/pkgs/tools/networking/ntp/glibc-2.34-fix.patch b/pkgs/tools/networking/ntp/glibc-2.34-fix.patch new file mode 100644 index 0000000000000..256f125a77b26 --- /dev/null +++ b/pkgs/tools/networking/ntp/glibc-2.34-fix.patch @@ -0,0 +1,28 @@ +From 082a504cfcc046c3d8adaae1164268bc94e5108a Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sat, 31 Jul 2021 10:51:41 -0700 +Subject: [PATCH] libntp: Do not use PTHREAD_STACK_MIN on glibc +In glibc 2.34+ PTHREAD_STACK_MIN is not a compile-time constant which +could mean different stack sizes at runtime on different architectures +and it also causes compile failure. Default glibc thread stack size +or 64Kb set by ntp should be good in glibc these days. +Upstream-Status: Pending +Signed-off-by: Khem Raj +--- + libntp/work_thread.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) +diff --git a/libntp/work_thread.c b/libntp/work_thread.c +index 03a5647..3ddd751 100644 +--- a/libntp/work_thread.c ++++ b/libntp/work_thread.c +@@ -41,7 +41,7 @@ + #ifndef THREAD_MINSTACKSIZE + # define THREAD_MINSTACKSIZE (64U * 1024) + #endif +-#ifndef __sun ++#if !defined(__sun) && !defined(__GLIBC__) + #if defined(PTHREAD_STACK_MIN) && THREAD_MINSTACKSIZE < PTHREAD_STACK_MIN + # undef THREAD_MINSTACKSIZE + # define THREAD_MINSTACKSIZE PTHREAD_STACK_MIN +-- +2.32.0 From f8fc20df2b7bdae96c8b8abfae13f70437cc80bd Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Wed, 13 Oct 2021 19:18:49 +0200 Subject: [PATCH 31/73] breakpad: fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/155160812 Fix derived from Fedora's Chromium fix[1]. [1] https://src.fedoraproject.org/rpms/chromium/blob/c3fea076996d62bff1404d06de5ef3adf93426db/f/chromium-92.0.4515.107-rawhide-gcc-std-max-fix.patch --- pkgs/development/misc/breakpad/default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkgs/development/misc/breakpad/default.nix b/pkgs/development/misc/breakpad/default.nix index 7fb2b329667d4..045e2e8f9a6e4 100644 --- a/pkgs/development/misc/breakpad/default.nix +++ b/pkgs/development/misc/breakpad/default.nix @@ -20,6 +20,11 @@ in stdenv.mkDerivation { ln -s ${lss} $sourceRoot/src/third_party/lss ''; + postPatch = '' + substituteInPlace src/client/linux/handler/exception_handler.cc \ + --replace "max(16384" "max(static_cast(16384)" + ''; + meta = with lib; { description = "An open-source multi-platform crash reporting system"; homepage = "https://chromium.googlesource.com/breakpad"; From 65f5fdb81823a4875e8c714211ef117d3ededadf Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Wed, 13 Oct 2021 19:41:31 +0200 Subject: [PATCH 32/73] arangodb*: fix build w/glibc-2.34 Failing Hydra builds: * https://hydra.nixos.org/build/155187495 (3.3) * https://hydra.nixos.org/build/155161270 (3.4) * https://hydra.nixos.org/build/155154245 (3.5) --- pkgs/servers/nosql/arangodb/default.nix | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/pkgs/servers/nosql/arangodb/default.nix b/pkgs/servers/nosql/arangodb/default.nix index bf7f7b4396096..d9f1892beca94 100644 --- a/pkgs/servers/nosql/arangodb/default.nix +++ b/pkgs/servers/nosql/arangodb/default.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, fetchFromGitHub, openssl, zlib, cmake, python2, perl, snappy, lzo, which }: +{ stdenv, lib, fetchFromGitHub, openssl, zlib, cmake, python2, perl, snappy, lzo, which, catch2, catch }: let common = { version, sha256 }: stdenv.mkDerivation { @@ -26,6 +26,14 @@ let # with nixpkgs, it has no sense to check for a version update substituteInPlace js/client/client.js --replace "require('@arangodb').checkAvailableVersions();" "" substituteInPlace js/server/server.js --replace "require('@arangodb').checkAvailableVersions();" "" + + ${if (lib.versionOlder version "3.4") then '' + cp ${catch}/include/catch/catch.hpp 3rdParty/catch/catch.hpp + '' else if (lib.versionOlder version "3.5") then '' + cp ${catch2}/include/catch2/catch.hpp 3rdParty/catch/catch.hpp + '' else '' + (cd 3rdParty/boost/1.69.0 && patch -p1 < ${../../../development/libraries/boost/pthread-stack-min-fix.patch}) + ''} ''; cmakeFlags = [ From 84635a6e17a8907b1f28d3efb9d3b98ea61cbe66 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Thu, 14 Oct 2021 14:42:44 +0200 Subject: [PATCH 33/73] apitrace: fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/155150225 --- pkgs/applications/graphics/apitrace/default.nix | 6 ++++++ .../graphics/apitrace/glibc-2.34-compat.patch | 13 +++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 pkgs/applications/graphics/apitrace/glibc-2.34-compat.patch diff --git a/pkgs/applications/graphics/apitrace/default.nix b/pkgs/applications/graphics/apitrace/default.nix index f842cf6f5c4b8..756f0da9f3481 100644 --- a/pkgs/applications/graphics/apitrace/default.nix +++ b/pkgs/applications/graphics/apitrace/default.nix @@ -11,6 +11,12 @@ stdenv.mkDerivation rec { owner = "apitrace"; }; + patches = [ + # glibc 2.34 compat + # derived from https://github.com/apitrace/apitrace/commit/d28a980802ad48568c87da02d630c8babfe163bb + ./glibc-2.34-compat.patch + ]; + # LD_PRELOAD wrappers need to be statically linked to work against all kinds # of games -- so it's fine to use e.g. bundled snappy. buildInputs = [ libX11 procps python2 libdwarf qtbase qtwebkit ]; diff --git a/pkgs/applications/graphics/apitrace/glibc-2.34-compat.patch b/pkgs/applications/graphics/apitrace/glibc-2.34-compat.patch new file mode 100644 index 0000000000000..3f8cebe030c04 --- /dev/null +++ b/pkgs/applications/graphics/apitrace/glibc-2.34-compat.patch @@ -0,0 +1,13 @@ +diff --git a/wrappers/dlsym.cpp b/wrappers/dlsym.cpp +index 2eda082..0c0c8ee 100644 +--- a/wrappers/dlsym.cpp ++++ b/wrappers/dlsym.cpp +@@ -34,7 +34,7 @@ + #include "os.hpp" + + +-#ifdef __GLIBC__ ++#if defined(__GLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ < 34 + + + #include From 40fc0090fc5442d8dd67423284282548625618a6 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Thu, 14 Oct 2021 14:46:29 +0200 Subject: [PATCH 34/73] aspcud: fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/155189149 --- pkgs/tools/misc/aspcud/default.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pkgs/tools/misc/aspcud/default.nix b/pkgs/tools/misc/aspcud/default.nix index ef1b6a5a4ca5b..12cc6572abcb9 100644 --- a/pkgs/tools/misc/aspcud/default.nix +++ b/pkgs/tools/misc/aspcud/default.nix @@ -2,6 +2,7 @@ , stdenv , fetchFromGitHub , boost +, catch2 , clasp , cmake , gringo @@ -19,6 +20,10 @@ stdenv.mkDerivation rec { hash = "sha256-d04GPMoz6PMGq6iiul0zT1C9Mljdl9uJJ2C8MIwcmaw="; }; + postPatch = '' + cp ${catch2}/include/catch2/catch.hpp libcudf/tests/catch.hpp + ''; + nativeBuildInputs = [ cmake ]; buildInputs = [ boost clasp gringo re2c ]; @@ -28,6 +33,8 @@ stdenv.mkDerivation rec { "-DASPCUD_CLASP_PATH=${clasp}/bin/clasp" ]; + doCheck = true; + meta = with lib; { description = "Solver for package problems in CUDF format using ASP"; homepage = "https://potassco.org/aspcud/"; From 0bdcc484855b74fc50f2f821e81ee9518550a4cb Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Thu, 14 Oct 2021 15:16:18 +0200 Subject: [PATCH 35/73] conky: fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/155171697 --- pkgs/os-specific/linux/conky/default.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pkgs/os-specific/linux/conky/default.nix b/pkgs/os-specific/linux/conky/default.nix index 9bd8890e71348..87f5bb052f488 100644 --- a/pkgs/os-specific/linux/conky/default.nix +++ b/pkgs/os-specific/linux/conky/default.nix @@ -1,7 +1,7 @@ { config, lib, stdenv, fetchFromGitHub, pkg-config, cmake # dependencies -, glib, libXinerama +, glib, libXinerama, catch2 # optional features without extra dependencies , mpdSupport ? true @@ -85,6 +85,8 @@ stdenv.mkDerivation rec { sed -i 's/ Example: .*$//' doc/config_settings.xml substituteInPlace cmake/Conky.cmake --replace "# set(RELEASE true)" "set(RELEASE true)" + + cp ${catch2}/include/catch2/catch.hpp tests/catch2/catch.hpp ''; NIX_LDFLAGS = "-lgcc_s"; @@ -133,6 +135,8 @@ stdenv.mkDerivation rec { # src/conky.cc:137:23: fatal error: defconfig.h: No such file or directory enableParallelBuilding = false; + doCheck = true; + meta = with lib; { homepage = "http://conky.sourceforge.net/"; description = "Advanced, highly configurable system monitor based on torsmo"; From 29e14f8a72530d059a1eed65ab2c772cc91e76be Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sun, 17 Oct 2021 19:04:58 +0200 Subject: [PATCH 36/73] polyml*: fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/156205993 --- pkgs/development/compilers/polyml/5.6.nix | 10 +++++++++- pkgs/development/compilers/polyml/5.7.nix | 12 ++++++++++-- pkgs/development/compilers/polyml/default.nix | 8 ++++++++ 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/pkgs/development/compilers/polyml/5.6.nix b/pkgs/development/compilers/polyml/5.6.nix index 7858e3f6dc119..4354ce7e2d671 100644 --- a/pkgs/development/compilers/polyml/5.6.nix +++ b/pkgs/development/compilers/polyml/5.6.nix @@ -1,4 +1,4 @@ -{lib, stdenv, fetchurl, autoreconfHook}: +{lib, stdenv, fetchurl, autoreconfHook, fetchpatch }: let version = "5.6"; @@ -12,6 +12,14 @@ stdenv.mkDerivation { substituteInPlace configure.ac --replace stdc++ c++ ''; + patches = [ + # glibc 2.34 compat + (fetchpatch { + url = "https://src.fedoraproject.org/rpms/polyml/raw/4d8868ca5a1ce3268f212599a321f8011c950496/f/polyml-pthread-stack-min.patch"; + sha256 = "1h5ihg2sxld9ymrl3f2mpnbn2242ka1fsa0h4gl9h90kndvg6kby"; + }) + ]; + buildInputs = lib.optional stdenv.isDarwin autoreconfHook; src = fetchurl { diff --git a/pkgs/development/compilers/polyml/5.7.nix b/pkgs/development/compilers/polyml/5.7.nix index 5ac6990383cce..efd3d1bfd40aa 100644 --- a/pkgs/development/compilers/polyml/5.7.nix +++ b/pkgs/development/compilers/polyml/5.7.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchFromGitHub, autoreconfHook, gmp, libffi }: +{ lib, stdenv, fetchFromGitHub, autoreconfHook, gmp, libffi, fetchpatch }: stdenv.mkDerivation rec { pname = "polyml"; @@ -8,7 +8,15 @@ stdenv.mkDerivation rec { substituteInPlace configure.ac --replace stdc++ c++ ''; - patches = [ ./5.7-new-libffi-FFI_SYSV.patch ]; + patches = [ + ./5.7-new-libffi-FFI_SYSV.patch + + # glibc 2.34 compat + (fetchpatch { + url = "https://src.fedoraproject.org/rpms/polyml/raw/4d8868ca5a1ce3268f212599a321f8011c950496/f/polyml-pthread-stack-min.patch"; + sha256 = "1h5ihg2sxld9ymrl3f2mpnbn2242ka1fsa0h4gl9h90kndvg6kby"; + }) + ]; buildInputs = [ libffi gmp ]; diff --git a/pkgs/development/compilers/polyml/default.nix b/pkgs/development/compilers/polyml/default.nix index 8a283bb6cf998..63506b8f07fad 100644 --- a/pkgs/development/compilers/polyml/default.nix +++ b/pkgs/development/compilers/polyml/default.nix @@ -12,6 +12,14 @@ stdenv.mkDerivation rec { nativeBuildInputs = lib.optional stdenv.isDarwin autoreconfHook; + patches = [ + # glibc 2.34 compat + (fetchpatch { + url = "https://src.fedoraproject.org/rpms/polyml/raw/4d8868ca5a1ce3268f212599a321f8011c950496/f/polyml-pthread-stack-min.patch"; + sha256 = "1h5ihg2sxld9ymrl3f2mpnbn2242ka1fsa0h4gl9h90kndvg6kby"; + }) + ]; + configureFlags = [ "--enable-shared" "--with-system-libffi" From da905d4cf918e28f924bab99c6f2a4012d55410d Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Thu, 28 Oct 2021 18:52:35 +0200 Subject: [PATCH 37/73] nixos/stage-1: fix `modprobe` in initial ramdisk on systems w/glibc-2.34 This effectively fixes the majority of all VM tests which were broken because `/dev/vda` (or any other block device) wasn't mountable: machine # mounting /dev/vda on /... machine # mount: mounting /dev/vda on /mnt-root/ failed: No such device[ 2.820976] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000100 machine # [ 2.821757] CPU: 0 PID: 1 Comm: init Not tainted 5.10.72 #1-NixOS machine # [ 2.821757] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.14.0-0-g155821a1990b-prebuilt.qemu.org 04/01/2014 machine # [ 2.821757] Call Trace: machine # [ 2.821757] dump_stack+0x6b/0x83 machine # [ 2.821757] panic+0x101/0x2c8 machine # [ 2.821757] do_exit.cold+0x14/0xb3 machine # [ 2.821757] do_group_exit+0x33/0xa0 machine # [ 2.821757] __x64_sys_exit_group+0x14/0x20 machine # [ 2.821757] do_syscall_64+0x33/0x40 machine # [ 2.821757] entry_SYSCALL_64_after_hwframe+0x44/0xa9 machine # [ 2.821757] RIP: 0033:0x7f67ec2800f6 machine # [ 2.821757] Code: 00 4c 8b 0d 2c 5d 11 00 eb 19 66 2e 0f 1f 84 00 00 00 00 00 89 d7 89 f0 0f 05 48 3d 00 f0 ff ff 77 22 f4 89 d7 44 89 c0 0f 05 <48> 3d 00 f0 ff ff 76 e2 f7 d8 64 41 89 01 eb da 66 2e 0f 1f 84 00 machine # [ 2.821757] RSP: 002b:00007fff8f5a71d8 EFLAGS: 00000202 ORIG_RAX: 00000000000000e7 machine # [ 2.821757] RAX: ffffffffffffffda RBX: 0000000000699704 RCX: 00007f67ec2800f6 machine # [ 2.821757] RDX: 0000000000000001 RSI: 000000000000003c RDI: 0000000000000001 machine # [ 2.821757] RBP: 0000000000000004 R08: 00000000000000e7 R09: ffffffffffffff80 machine # [ 2.821757] R10: 00007f67ec33f3e0 R11: 0000000000000202 R12: 000000000000000b machine # [ 2.821757] R13: 00007fff8f5a75a8 R14: 0000000000000000 R15: 00000000004fc198 machine # [ 2.821757] Kernel Offset: 0x31e00000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff) machine # [ 2.821757] Rebooting in 1 seconds.. This happened because the kernel failed to load modules such as `ext4` from `boot.initrd.availableKernelModules`[1] on e.g. a `mount(2)` syscall. The problem is that `kmod` isn't linked against `libpthread.so.0` anymore because it got merged into `libc.so.6` (however, the .so still exists), but still needs it: machine # newfstatat(AT_FDCWD, "/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-glibc-2.34-36/lib/x86_64", 0x7ffd951114c0, 0) = -1 ENOENT (No such file or directory) machine # openat(AT_FDCWD, "/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-glibc-2.34-36/lib/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) machine # newfstatat(AT_FDCWD, "/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-glibc-2.34-36/lib/x86_64", 0x7ffd951114c0, 0) = -1 ENOENT (No such file or directory) machine # openat(AT_FDCWD, "/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-glibc-2.34-36/lib/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) machine # newfstatat(AT_FDCWD, "/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-glibc-2.34-36/lib", 0x7ffd951114c0, 0) = -1 ENOENT (No such file or directory) machine # openat(AT_FDCWD, "/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-glibc-2.34-36/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) machine # writev(2, [{iov_base="/nix/store/kdc9n48ksdc1a8y8w512w"..., iov_len=69}, {iov_base=": ", iov_len=2}, {iov_base="error while loading shared libra"..., iov_len=36}, {iov_base=": ", iov_len=2}, {iov_base="libpthread.so.0", iov_len=15}, {iov_base=": ", iov_len=2}, {iov_base="cy machine # ) = 184 machine # exit_group(127) = ? machine # +++ exited with 127 +++ machine # mount: mounting /dev/vda on /mnt-root/ failed: No such device machine # [ 19.167180] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000100 machine # [ 19.167711] CPU: 0 PID: 1 Comm: init Not tainted 5.10.72 #1-NixOS This is not a problem * inside stage-1 because `LD_LIBRARY_PATH` points to `$out/lib` of extra-utils where `libpthread.so.6` also exists. * on a running system because `${pkgs.glibc}/lib` is part of kmod's rpath. However this is a problem inside the kernel which calls `modprobe` (in our case `kmod`) to load modules and doesn't know about `LD_LIBRARY_PATH`. Also, the rpath-reference was nuked. To work around this, the kernel's `modprobe` (i.e. `/proc/sys/kernel/modprobe`) now points to a wrapper which explicitly declares `LD_LIBRARY_PATH`. We can't use `makeWrapper` here because `modprobe` itself must not be renamed. Otherwise, `kmod` (which is the link-target of `modprobe`) won't work because it expects `argv[0] == "modprobe"` to perform modprobe's tasks. [1] https://nixos.org/manual/nixos/stable/options.html#opt-boot.initrd.availableKernelModules --- nixos/modules/system/boot/stage-1-init.sh | 2 +- nixos/modules/system/boot/stage-1.nix | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/nixos/modules/system/boot/stage-1-init.sh b/nixos/modules/system/boot/stage-1-init.sh index 8fcc1f029723e..ec8860b742490 100644 --- a/nixos/modules/system/boot/stage-1-init.sh +++ b/nixos/modules/system/boot/stage-1-init.sh @@ -232,7 +232,7 @@ done mkdir -p /lib ln -s @modulesClosure@/lib/modules /lib/modules ln -s @modulesClosure@/lib/firmware /lib/firmware -echo @extraUtils@/bin/modprobe > /proc/sys/kernel/modprobe +echo @extraUtils@/bin/modprobe-kernel > /proc/sys/kernel/modprobe for i in @kernelModules@; do info "loading module $(basename $i)..." modprobe $i diff --git a/nixos/modules/system/boot/stage-1.nix b/nixos/modules/system/boot/stage-1.nix index 1575c0257d1c6..5999a993b141c 100644 --- a/nixos/modules/system/boot/stage-1.nix +++ b/nixos/modules/system/boot/stage-1.nix @@ -131,6 +131,26 @@ let copy_bin_and_libs ${pkgs.kmod}/bin/kmod ln -sf kmod $out/bin/modprobe + # Dirty hack to make sure the kernel properly loads modules + # such as ext4 on demand (e.g. on a `mount(2)` syscall). This is necessary + # because `kmod` isn't linked against `libpthread.so.0` anymore (since + # it was merged into `libc.so.6` since version `2.34`), but still needs + # to access it for some reason. This is not an issue in stage-1 itself + # because of the `LD_LIBRARY_PATH`-variable and anytime later because the rpath of + # kmod/modprobe points to glibc's `$out/lib` where `libpthread.so.6` exists. + # However, this is a problem when the kernel calls `modprobe` inside + # the initial ramdisk because it doesn't know about the + # `LD_LIbRARY_PATH` and the rpath was nuked. + # + # Also, we can't use `makeWrapper` here because `kmod` only does + # `modprobe` functionality if `argv[0] == "modprobe"`. + cat >$out/bin/modprobe-kernel < Date: Sun, 31 Oct 2021 14:04:43 +0100 Subject: [PATCH 38/73] libowfat: mark as broken Failing Hydra build: https://hydra.nixos.org/build/156248131 This doesn't build with `glibc-2.34`, however there's already an upstream fix and can be marked as unbroken as soon as it's available[1]. I tried to apply the patch from a Git mirror[2], however this doesn't apply properly on `0.32` and I decided to wait for a release - such as Gentoo does it - instead. [1] https://bugs.gentoo.org/806505 [2] https://git.lighttpd.net/mirrors/libowfat/commit/a10f89d5f3fbe58e8233cc755b599d1d07c63e44 --- pkgs/development/libraries/libowfat/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkgs/development/libraries/libowfat/default.nix b/pkgs/development/libraries/libowfat/default.nix index 9db1354677d65..665121b58b5ce 100644 --- a/pkgs/development/libraries/libowfat/default.nix +++ b/pkgs/development/libraries/libowfat/default.nix @@ -17,5 +17,8 @@ stdenv.mkDerivation rec { homepage = "https://www.fefe.de/libowfat/"; license = licenses.gpl2; platforms = platforms.linux; + # Doesn't build with glibc 2.34: https://hydra.nixos.org/build/156248131 + # Should be fixed with the next release: https://bugs.gentoo.org/806505 + broken = true; }; } From 5f56cd54061d9d79aa387ad1df677cfac7eaf55f Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sun, 31 Oct 2021 14:09:41 +0100 Subject: [PATCH 39/73] tiscamera: fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/156249703 --- pkgs/os-specific/linux/tiscamera/default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkgs/os-specific/linux/tiscamera/default.nix b/pkgs/os-specific/linux/tiscamera/default.nix index 38bc7c3eaff31..1182aead36bed 100644 --- a/pkgs/os-specific/linux/tiscamera/default.nix +++ b/pkgs/os-specific/linux/tiscamera/default.nix @@ -17,6 +17,7 @@ , python3Packages , libuuid , wrapGAppsHook +, catch2 }: stdenv.mkDerivation rec { @@ -30,6 +31,10 @@ stdenv.mkDerivation rec { sha256 = "0hpy9yhc4mn6w8gvzwif703smmcys0j2jqbz2xfghqxcyb0ykplj"; }; + postPatch = '' + cp ${catch2}/include/catch2/catch.hpp external/catch/catch.hpp + ''; + nativeBuildInputs = [ cmake pkg-config From 18d915e48e2ff34a525eac03ab0dba82ef89eceb Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sun, 31 Oct 2021 14:14:16 +0100 Subject: [PATCH 40/73] ursadb: fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/156279394 --- pkgs/servers/ursadb/default.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkgs/servers/ursadb/default.nix b/pkgs/servers/ursadb/default.nix index 836a5934d96b6..c9b39eccd8a81 100644 --- a/pkgs/servers/ursadb/default.nix +++ b/pkgs/servers/ursadb/default.nix @@ -11,6 +11,14 @@ stdenv.mkDerivation rec { hash = "sha256-/EK1CKJ0IR7fkKSpQkONbWcz6uhUoAwK430ljNYsV5U="; }; + postPatch = '' + substituteInPlace CMakeLists.txt \ + --replace \ + "add_executable(ursadb_test Tests.cpp)" "" \ + --replace \ + "target_link_libraries(ursadb_test ursa)" "" + ''; + installPhase = '' mkdir -p $out/bin cp ursadb $out/bin/ From 89caa8e552328b8a28d0133ed5931927eb671ddc Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sun, 31 Oct 2021 14:24:09 +0100 Subject: [PATCH 41/73] libfive: mark as broken Failing Hydra build: https://hydra.nixos.org/build/156227205 Vendored `catch2` is too old and thus cannot be patched. --- pkgs/development/libraries/libfive/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/libfive/default.nix b/pkgs/development/libraries/libfive/default.nix index 8634f05ebbc7c..00031e66bf506 100644 --- a/pkgs/development/libraries/libfive/default.nix +++ b/pkgs/development/libraries/libfive/default.nix @@ -47,5 +47,6 @@ mkDerivation { maintainers = with maintainers; [ hodapp kovirobi ]; license = with licenses; [ mpl20 gpl2Plus ]; platforms = with platforms; linux ++ darwin; + broken = true; }; } From fe58c181d3573e35da55bf43c3827d2e7627c8af Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sun, 31 Oct 2021 14:33:13 +0100 Subject: [PATCH 42/73] libspf2: fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/156229214 --- pkgs/development/libraries/libspf2/default.nix | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/pkgs/development/libraries/libspf2/default.nix b/pkgs/development/libraries/libspf2/default.nix index c48c71e144852..203f2768e37b1 100644 --- a/pkgs/development/libraries/libspf2/default.nix +++ b/pkgs/development/libraries/libspf2/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchFromGitHub, autoreconfHook }: +{ lib, stdenv, fetchFromGitHub, autoreconfHook, fetchpatch }: with lib; @@ -13,6 +13,14 @@ stdenv.mkDerivation rec { sha256 = "03iiaafdcwh220pqignk407h6klrakwz0zkb8iwk6nkwipkwvhsx"; }; + patches = [ + # glibc-2.34 compat + (fetchpatch { + url = "https://raw.githubusercontent.com/gentoo/gentoo/dbb8a5c9f749cc11e61cfe558f164b165cbc30cb/mail-filter/libspf2/files/libspf2-1.2.11-undefined-dn_.patch"; + sha256 = "sha256-6JVVkVGCcFJsNeBdVTPcLhW4KoHLY4ai/KXDMliXgPA="; + }) + ]; + postPatch = '' # disable static bins compilation sed -i \ From 6b98a5e51256e8b9d7a5c30f93a8d4178554013f Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sun, 31 Oct 2021 14:44:28 +0100 Subject: [PATCH 43/73] nethack-qt: fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/156236800 --- pkgs/games/nethack/default.nix | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/pkgs/games/nethack/default.nix b/pkgs/games/nethack/default.nix index 2b29bddad93ca..f6de3d57c1304 100644 --- a/pkgs/games/nethack/default.nix +++ b/pkgs/games/nethack/default.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, fetchurl, coreutils, ncurses, gzip, flex, bison +{ stdenv, lib, fetchurl, coreutils, ncurses, gzip, flex, bison, fetchpatch , less , buildPackages , x11Mode ? false, qtMode ? false, libXaw, libXext, libXpm, bdftopcf, mkfontdir, pkg-config, qt5 @@ -24,6 +24,15 @@ in stdenv.mkDerivation rec { else if qtMode then "nethack-qt" else "nethack"; + patches = [ + # Don't unset `__warn_unused_result__`, breaks on glibc-2.34 + (fetchpatch { + url = "https://github.com/NetHack/NetHack/commit/81d73ce417dda6a98e2e918e06922e68b67c53f7.patch"; + sha256 = "sha256-PX9XtJTEE3K1yg/IwIzEIT+EZWi02gU+9msrsG9ZWQY="; + revert = true; + }) + ]; + src = fetchurl { url = "https://nethack.org/download/${version}/nethack-${lib.replaceStrings ["."] [""] version}-src.tgz"; sha256 = "1liyckjp34j354qnxc1zn9730lh1p2dabrg1hap24z6xnqx0rpng"; From 748faeb623035c1360eeb6dc4b05abf5defd721c Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Mon, 3 Jan 2022 23:19:37 +0100 Subject: [PATCH 44/73] glibc: don't hide symbol `__nss_files_fopen` I realized that `libredirect` doesn't wrap `__nss_files_fopen` anymore which subsequently broke the `checkPhase` of `pkgs.openssh`[1] which was implemented in 85c63a515d21c8fa27a561a9b8a1db5b18118e39. The reason for that is what `libc_hidden_{def,proto}` are used for, to quote `libc-symbols.h`[2]: The following macros are used for PLT bypassing within libc.so (and if needed other libraries similarly). This basically means that these symbols are altered in a way so that they cannot be wrapped by `libredirect` even though it re-defines `__nss_files_fopen` while being loaded at first with `LD_PRELOAD`. The problem was caused by a change in 2.34[3] where the `files`-module for NSS isn't loaded from `libnss_files.so.2` anymore, but the relevant symbols are directly obtained from `libc.so.6` since a lot of glibc's APIs were merged into `libc.so.6` before. As this would effectively break `libredirect` whenever it tries to wrap C APIs that interact with NSS (e.g. to use `getpwnam(3)`), I decided to undo this change for `__nss_files_fopen`. [1] https://hydra.nixos.org/build/160688523 [2] https://sourceware.org/git/?p=glibc.git;a=blob;f=include/libc-symbols.h;h=d41ecf4384d07f9108698dba1d4e9e6a7a9b975f;hb=ae37d06c7d127817ba43850f0f898b793d42aea7 [3] https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=f9c8b11ed7726b858cd7b7cea0d3d7c5233d78cf;hp=6212bb67f4695962748a5981e1b9fea105af74f6 --- pkgs/development/libraries/glibc/common.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkgs/development/libraries/glibc/common.nix b/pkgs/development/libraries/glibc/common.nix index 599a7f2a13024..47aa304e7d398 100644 --- a/pkgs/development/libraries/glibc/common.nix +++ b/pkgs/development/libraries/glibc/common.nix @@ -140,6 +140,10 @@ stdenv.mkDerivation ({ # nscd needs libgcc, and we don't want it dynamically linked # because we don't want it to depend on bootstrap-tools libs. echo "LDFLAGS-nscd += -static-libgcc" >> nscd/Makefile + + # Ensure that `__nss_files_fopen` can still be wrapped by `libredirect`. + sed -i -e '/libc_hidden_def (__nss_files_fopen)/d' nss/nss_files_fopen.c + sed -i -e '/libc_hidden_proto (__nss_files_fopen)/d' include/nss_files.h '' # FIXME: find a solution for infinite recursion in cross builds. # For now it's hopefully acceptable that IDN from libc doesn't reliably work. From 1046c86c9986ca7239b00a6ef1396aae0961ba90 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sun, 9 Jan 2022 16:14:04 +0100 Subject: [PATCH 45/73] libosmscout: fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/163072881 --- pkgs/development/libraries/libosmscout/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/development/libraries/libosmscout/default.nix b/pkgs/development/libraries/libosmscout/default.nix index 2f83963d205f1..b11ec3eb94c1d 100644 --- a/pkgs/development/libraries/libosmscout/default.nix +++ b/pkgs/development/libraries/libosmscout/default.nix @@ -11,6 +11,8 @@ mkDerivation rec { sha256 = "1pa459h52kw88mvsdvkz83f4p35vvgsfy2qfjwcj61gj4y9d2rq4"; }; + cmakeFlags = [ "-DOSMSCOUT_BUILD_TESTS=OFF" ]; + nativeBuildInputs = [ cmake pkg-config ]; buildInputs = [ marisa qtlocation ]; From c0f49544d4952b1c63180fbb3dd5af2611a1b6c6 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sun, 9 Jan 2022 16:32:33 +0100 Subject: [PATCH 46/73] maude: fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/163067005 --- pkgs/development/interpreters/maude/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkgs/development/interpreters/maude/default.nix b/pkgs/development/interpreters/maude/default.nix index 860f9ac3a5eb1..30055dc7a3dd6 100644 --- a/pkgs/development/interpreters/maude/default.nix +++ b/pkgs/development/interpreters/maude/default.nix @@ -30,6 +30,10 @@ stdenv.mkDerivation { hardeningDisable = [ "stackprotector" ] ++ lib.optionals stdenv.isi686 [ "pic" "fortify" ]; + # Fix for glibc-2.34, see + # https://gitweb.gentoo.org/repo/gentoo.git/commit/dev-lang/maude/maude-3.1-r1.ebuild?id=f021cc6cfa1e35eb9c59955830f1fd89bfcb26b4 + configureFlags = [ "--without-libsigsegv" ]; + preConfigure = '' configureFlagsArray=( --datadir="$out/share/maude" From 4427e547ca418bac7cc2a6b4c5d144a4a2fac126 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sun, 9 Jan 2022 16:49:52 +0100 Subject: [PATCH 47/73] jetbrains.jdk: fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/163085108 --- pkgs/development/compilers/jetbrains-jdk/default.nix | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/pkgs/development/compilers/jetbrains-jdk/default.nix b/pkgs/development/compilers/jetbrains-jdk/default.nix index bfff07aabcb2a..2d76b98f580cb 100644 --- a/pkgs/development/compilers/jetbrains-jdk/default.nix +++ b/pkgs/development/compilers/jetbrains-jdk/default.nix @@ -1,4 +1,4 @@ -{ lib, openjdk11, fetchFromGitHub, jetbrains }: +{ lib, openjdk11, fetchFromGitHub, jetbrains, fetchpatch }: openjdk11.overrideAttrs (oldAttrs: rec { pname = "jetbrains-jdk"; @@ -10,7 +10,12 @@ openjdk11.overrideAttrs (oldAttrs: rec { rev = "jb${version}"; sha256 = "sha256-TPNYZUkAoiZfp7Ci3fslKnRNGY1lnyIhXYUt6J31lwI="; }; - patches = []; + patches = [ + (fetchpatch { + url = "https://github.com/JetBrains/JetBrainsRuntime/commit/980cfdf8d04c015bf2ecb4642064e45e3f36630d.patch"; + sha256 = "sha256-/f20sWnlWoObgdgZKWD785q0aRZ5oIP5pzW+AmejLWM="; + }) + ]; meta = with lib; { description = "An OpenJDK fork to better support Jetbrains's products."; longDescription = '' From 81e0c947ecbf88e89f75bed560b07ae2fdc006a5 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sun, 9 Jan 2022 16:58:31 +0100 Subject: [PATCH 48/73] xnee: fix build w/glibc-2.34 ChangeLog: https://hydra.nixos.org/build/163058159 --- pkgs/tools/X11/xnee/default.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkgs/tools/X11/xnee/default.nix b/pkgs/tools/X11/xnee/default.nix index c3355b8026338..00ebb1ecec23e 100644 --- a/pkgs/tools/X11/xnee/default.nix +++ b/pkgs/tools/X11/xnee/default.nix @@ -15,6 +15,12 @@ stdenv.mkDerivation rec { do sed -i "$i" -e's|/bin/bash|${stdenv.shell}|g ; s|/usr/bin/env bash|${stdenv.shell}|g' done + + # Fix for glibc-2.34. For some reason, `LIBSEMA="CCC"` is added + # if `sem_init` is part of libc which causes errors like + # `gcc: error: CCC: No such file or directory` during the build. + substituteInPlace configure \ + --replace 'LIBSEMA="CCC"' 'LIBSEMA=""' ''; buildInputs = From 7605d492a772670ebe621a9d0a8f7e34dcf79300 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sun, 9 Jan 2022 17:01:27 +0100 Subject: [PATCH 49/73] qt512.qtwebengine: fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/163120450 --- pkgs/development/libraries/qt-5/5.12/default.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkgs/development/libraries/qt-5/5.12/default.nix b/pkgs/development/libraries/qt-5/5.12/default.nix index d89547261880d..01b65eb3e43ad 100644 --- a/pkgs/development/libraries/qt-5/5.12/default.nix +++ b/pkgs/development/libraries/qt-5/5.12/default.nix @@ -85,6 +85,14 @@ let qtscript = [ ./qtscript.patch ]; qtserialport = [ ./qtserialport.patch ]; qtwebengine = [ + # glibc 2.34 compat + (fetchpatch { + url = "https://src.fedoraproject.org/rpms/qt5-qtwebengine/raw/d122c011631137b79455850c363676c655cf9e09/f/qtwebengine-everywhere-src-5.15.5-SIGSTKSZ.patch"; + sha256 = "sha256-CJxN6sTvWdPVEwSkr0zpPrjyhUIi6tYSWb8ZyO0sY2o="; + excludes = [ + "src/3rdparty/chromium/third_party/abseil-cpp/absl/debugging/failure_signal_handler.cc" + ]; + }) ./qtwebengine-no-build-skip.patch # https://gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/707 # https://bugreports.qt.io/browse/QTBUG-77037 From f31930977deea1c0c49b8a72234a0a7a7864aa35 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sun, 9 Jan 2022 17:09:08 +0100 Subject: [PATCH 50/73] djmount: fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/163123869 --- pkgs/tools/filesystems/djmount/default.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkgs/tools/filesystems/djmount/default.nix b/pkgs/tools/filesystems/djmount/default.nix index f5b0a0315dfcb..3111be5b4d12e 100644 --- a/pkgs/tools/filesystems/djmount/default.nix +++ b/pkgs/tools/filesystems/djmount/default.nix @@ -8,6 +8,14 @@ stdenv.mkDerivation rec { sha256 = "0kqf0cy3h4cfiy5a2sigmisx0lvvsi1n0fbyb9ll5gacmy1b8nxa"; }; + postPatch = '' + # Taken from https://github.com/pupnp/pupnp/pull/334/files + substituteInPlace libupnp/threadutil/inc/ithread.h \ + --replace \ + "#define ithread_mutexattr_setkind_np pthread_mutexattr_setkind_np" \ + '#define ithread_mutexattr_setkind_np pthread_mutexattr_settype' + ''; + nativeBuildInputs = [ pkg-config ]; buildInputs = [ fuse]; From 52bba1de8ae33329d9e5937f0585c56179160938 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Mon, 10 Jan 2022 16:33:32 +0100 Subject: [PATCH 51/73] clingcon: fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/163641612 --- pkgs/applications/science/logic/potassco/clingcon.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkgs/applications/science/logic/potassco/clingcon.nix b/pkgs/applications/science/logic/potassco/clingcon.nix index 1614adf45537e..d7ec2e72433e3 100644 --- a/pkgs/applications/science/logic/potassco/clingcon.nix +++ b/pkgs/applications/science/logic/potassco/clingcon.nix @@ -2,6 +2,7 @@ , fetchFromGitHub , cmake , clingo +, catch2 }: stdenv.mkDerivation rec { @@ -15,6 +16,10 @@ stdenv.mkDerivation rec { sha256 = "1g2xkz9nsgqnrw3fdf5jchl16f0skj5mm32va61scc2yrchll166"; }; + postPatch = '' + cp ${catch2}/include/catch2/catch.hpp libclingcon/tests/catch.hpp + ''; + nativeBuildInputs = [ cmake clingo ]; cmakeFlags = [ From 322c490803f242fef658f37f4ddf71b97e2e05fd Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Mon, 10 Jan 2022 16:34:40 +0100 Subject: [PATCH 52/73] mustache-hpp: fix build w/glibc-2.34 Actually, this package doesn't need a build as it copies over the .hpp-file only, so I simplified it a bit. Failing Hydra build: https://hydra.nixos.org/build/163643601 --- pkgs/development/libraries/mustache-hpp/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/mustache-hpp/default.nix b/pkgs/development/libraries/mustache-hpp/default.nix index 373f232a9866d..ce6dd1d21a9b3 100644 --- a/pkgs/development/libraries/mustache-hpp/default.nix +++ b/pkgs/development/libraries/mustache-hpp/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchFromGitHub, cmake }: +{ lib, stdenv, fetchFromGitHub }: stdenv.mkDerivation rec { pname = "mustache"; @@ -11,11 +11,11 @@ stdenv.mkDerivation rec { sha256 = "0r9rbk6v1wpld2ismfsk2lkhbyv3dkf0p03hkjivbj05qkfhvlbb"; }; - nativeBuildInputs = [ cmake ]; + dontBuild = true; installPhase = '' mkdir -p $out/include - cp ../mustache.hpp $out/include + cp mustache.hpp $out/include ''; meta = with lib; { From a2ac7c607b965aa2296421bfd801f1c74f09fd9a Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Mon, 10 Jan 2022 16:40:44 +0100 Subject: [PATCH 53/73] recastnavigation: fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/163634618 --- pkgs/development/libraries/recastnavigation/default.nix | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pkgs/development/libraries/recastnavigation/default.nix b/pkgs/development/libraries/recastnavigation/default.nix index d39d1a7132191..6fd2056d2ea2b 100644 --- a/pkgs/development/libraries/recastnavigation/default.nix +++ b/pkgs/development/libraries/recastnavigation/default.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, fetchFromGitHub, cmake, libGL, SDL2, libGLU }: +{ stdenv, lib, fetchFromGitHub, cmake, libGL, SDL2, libGLU, catch }: stdenv.mkDerivation rec { pname = "recastai"; @@ -13,6 +13,12 @@ stdenv.mkDerivation rec { sha256 = "sha256-QP3lMMFR6fiKQTksAkRL6X9yaoVz2xt4QSIP9g6piww="; }; + postPatch = '' + cp ${catch}/include/catch/catch.hpp Tests/catch.hpp + ''; + + doCheck = true; + nativeBuildInputs = [ cmake ]; buildInputs = [ libGL SDL2 libGLU ]; From 5f9c36c07f0f82d5488f7264651e32dd4c6b0e0a Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Mon, 10 Jan 2022 22:53:35 +0100 Subject: [PATCH 54/73] spdlog_0: fix build w/glibc-2.34 The patch only appears necessary for spdlog_1, so we skip it for v0 which builds fine without it. Failing Hydra build: https://hydra.nixos.org/build/163659629 --- pkgs/development/libraries/spdlog/default.nix | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/pkgs/development/libraries/spdlog/default.nix b/pkgs/development/libraries/spdlog/default.nix index 2857b8776f696..6ef4f4af43aee 100644 --- a/pkgs/development/libraries/spdlog/default.nix +++ b/pkgs/development/libraries/spdlog/default.nix @@ -1,7 +1,7 @@ { lib, stdenv, fetchFromGitHub, cmake, fmt_8, fetchpatch }: let - generic = { version, sha256 }: + generic = { version, sha256, patches ? [] }: stdenv.mkDerivation { pname = "spdlog"; inherit version; @@ -13,13 +13,7 @@ let inherit sha256; }; - patches = [ - # glibc 2.34 compat - (fetchpatch { - url = "https://github.com/gabime/spdlog/commit/d54b8e89c058f3cab2b32b3e9a2b49fd171d5895.patch"; - sha256 = "sha256-pb7cREF90GXb5Mbs8xFLQ+eLo6Xum13/xYa8JUgJlbI="; - }) - ]; + inherit patches; nativeBuildInputs = [ cmake ]; # spdlog <1.3 uses a bundled version of fmt @@ -59,6 +53,13 @@ in spdlog_1 = generic { version = "1.9.2"; sha256 = "sha256-GSUdHtvV/97RyDKy8i+ticnSlQCubGGWHg4Oo+YAr8Y="; + patches = [ + # glibc 2.34 compat + (fetchpatch { + url = "https://github.com/gabime/spdlog/commit/d54b8e89c058f3cab2b32b3e9a2b49fd171d5895.patch"; + sha256 = "sha256-pb7cREF90GXb5Mbs8xFLQ+eLo6Xum13/xYa8JUgJlbI="; + }) + ]; }; spdlog_0 = generic { From 8ba95b68554d35faa422dec4a8bb201510e6686b Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Mon, 10 Jan 2022 22:58:19 +0100 Subject: [PATCH 55/73] symengine: fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/163675793 --- pkgs/development/libraries/symengine/default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkgs/development/libraries/symengine/default.nix b/pkgs/development/libraries/symengine/default.nix index cbe5e13a7007e..5cb2e21178630 100644 --- a/pkgs/development/libraries/symengine/default.nix +++ b/pkgs/development/libraries/symengine/default.nix @@ -5,6 +5,7 @@ , flint , mpfr , libmpc +, catch }: stdenv.mkDerivation rec { @@ -18,6 +19,10 @@ stdenv.mkDerivation rec { sha256 = "sha256-5KpxBusJCuwrfFWHbrRKlH6Ic7YivYqz2m+BCbNfZp0="; }; + postPatch = '' + cp ${catch}/include/catch/catch.hpp symengine/utilities/catch/catch.hpp + ''; + nativeBuildInputs = [ cmake ]; buildInputs = [ gmp flint mpfr libmpc ]; From 6a977757e284b76468c7973f094eb99aa20b9251 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Tue, 11 Jan 2022 12:25:50 +0100 Subject: [PATCH 56/73] zeroc-ice: fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/163122463 --- pkgs/development/libraries/zeroc-ice/default.nix | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/pkgs/development/libraries/zeroc-ice/default.nix b/pkgs/development/libraries/zeroc-ice/default.nix index fcd836348556f..9a1861f60440a 100644 --- a/pkgs/development/libraries/zeroc-ice/default.nix +++ b/pkgs/development/libraries/zeroc-ice/default.nix @@ -3,6 +3,7 @@ , darwin, libiconv, Security , python3 # for tests only , cpp11 ? false +, fetchpatch }: let @@ -32,6 +33,18 @@ in stdenv.mkDerivation rec { sha256 = "0zc8gmlzl2f38m1fj6pv2vm8ka7fkszd6hx2lb8gfv65vn3m4sk4"; }; + patches = [ + # Fixes for openssl 3.0 / glibc-2.34. + (fetchpatch { + url = "https://github.com/zeroc-ice/ice/commit/7204b31a082a10cd481c1f31dbb6184ec699160d.patch"; + sha256 = "sha256-RN8kQrvWRu1oXB7UV7DkYbZ8A0VyJYGArx6ikovwefo="; + }) + (fetchpatch { + url = "https://github.com/zeroc-ice/ice/commit/358e7fea00383d55d1c19d38a3bbb64aca803aeb.patch"; + sha256 = "sha256-ntrTO6qHB7dw398BRdAyJQUfVYW3iEfzUaBYoWWOEDs="; + }) + ]; + buildInputs = [ zeroc_mcpp bzip2 expat libedit lmdb openssl ] ++ lib.optionals stdenv.isDarwin [ darwin.cctools libiconv Security ]; From e10ea9608a46565bd4d8d0a692647f9ce43b1de5 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Tue, 11 Jan 2022 20:42:16 +0100 Subject: [PATCH 57/73] gcc{7,9,10}: apply patches for asan w/glibc-2.34 This should fix a few broken cc-wrapper tests that also check for libasan[1][2][3]: [...] checking whether sanitizers are fully functional... ==243==ERROR: AddressSanitizer failed to allocate 0x0 (0) bytes of SetAlternateSignalStack (error code: 22) [...] The underlying issue is that `SIGSTKSZ` isn't a compile-time constant anymore, but in this case the uninitialized `kAltStackSize` was initialized early enough to evalute to `0`[4]. The issue is already fixed in gcc11 and there's GCC 8.5 which also contains the patch, however the backports to v9 and v10 aren't released yet, so we have to apply patches on our own here. For GCC 7.5 I applied the patch from gcc8 as it doesn't seem as if there's an official upstream backport. [1] https://hydra.nixos.org/build/163102264 [2] https://hydra.nixos.org/build/163624687 [3] https://hydra.nixos.org/build/163619227 [4] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100114 --- pkgs/development/compilers/gcc/10/default.nix | 4 +- .../gcc/10/gcc10-asan-glibc-2.34.patch | 70 +++++++++++++++++++ pkgs/development/compilers/gcc/7/default.nix | 3 + .../gcc/7/gcc8-asan-glibc-2.34.patch | 70 +++++++++++++++++++ pkgs/development/compilers/gcc/9/default.nix | 2 +- .../gcc/9/gcc9-asan-glibc-2.34.patch | 70 +++++++++++++++++++ 6 files changed, 216 insertions(+), 3 deletions(-) create mode 100644 pkgs/development/compilers/gcc/10/gcc10-asan-glibc-2.34.patch create mode 100644 pkgs/development/compilers/gcc/7/gcc8-asan-glibc-2.34.patch create mode 100644 pkgs/development/compilers/gcc/9/gcc9-asan-glibc-2.34.patch diff --git a/pkgs/development/compilers/gcc/10/default.nix b/pkgs/development/compilers/gcc/10/default.nix index 4493fd936ec38..6c5adac600c8d 100644 --- a/pkgs/development/compilers/gcc/10/default.nix +++ b/pkgs/development/compilers/gcc/10/default.nix @@ -61,8 +61,8 @@ let majorVersion = "10"; inherit (stdenv) buildPlatform hostPlatform targetPlatform; - patches = - optional (targetPlatform != hostPlatform) ../libstdc++-target.patch + patches = [ ./gcc10-asan-glibc-2.34.patch ] + ++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch ++ optional noSysDirs ../no-sys-dirs.patch ++ optional (noSysDirs && hostPlatform.isRiscV) ../no-sys-dirs-riscv.patch /* ++ optional (hostPlatform != buildPlatform) (fetchpatch { # XXX: Refine when this should be applied diff --git a/pkgs/development/compilers/gcc/10/gcc10-asan-glibc-2.34.patch b/pkgs/development/compilers/gcc/10/gcc10-asan-glibc-2.34.patch new file mode 100644 index 0000000000000..d6d4f41ffdf87 --- /dev/null +++ b/pkgs/development/compilers/gcc/10/gcc10-asan-glibc-2.34.patch @@ -0,0 +1,70 @@ +From 950bac27d63c1c2ac3a6ed867692d6a13f21feb3 Mon Sep 17 00:00:00 2001 +From: Jakub Jelinek +Date: Sat, 17 Apr 2021 11:27:14 +0200 +Subject: [PATCH] sanitizer: Fix asan against glibc 2.34 [PR100114] + +As mentioned in the PR, SIGSTKSZ is no longer a compile time constant in +glibc 2.34 and later, so +static const uptr kAltStackSize = SIGSTKSZ * 4; +needs dynamic initialization, but is used by a function called indirectly +from .preinit_array and therefore before the variable is constructed. +This results in using 0 size instead and all asan instrumented programs +die with: +==91==ERROR: AddressSanitizer failed to allocate 0x0 (0) bytes of SetAlternateSignalStack (error code: 22) + +Here is a cherry-pick from upstream to fix this. + +2021-04-17 Jakub Jelinek + + PR sanitizer/100114 + * sanitizer_common/sanitizer_posix_libcdep.cpp: Cherry-pick + llvm-project revisions 82150606fb11d28813ae6da1101f5bda638165fe + and b93629dd335ffee2fc4b9b619bf86c3f9e6b0023. + +(cherry picked from commit d9f462fb372fb02da032cefd6b091d7582c425ae) +--- + .../sanitizer_common/sanitizer_posix_libcdep.cpp | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +diff --git a/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cpp b/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cpp +index 304b3a01a08..ac88fbe074e 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cpp ++++ b/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cpp +@@ -169,7 +169,11 @@ bool SupportsColoredOutput(fd_t fd) { + + #if !SANITIZER_GO + // TODO(glider): different tools may require different altstack size. +-static const uptr kAltStackSize = SIGSTKSZ * 4; // SIGSTKSZ is not enough. ++static uptr GetAltStackSize() { ++ // SIGSTKSZ is not enough. ++ static const uptr kAltStackSize = SIGSTKSZ * 4; ++ return kAltStackSize; ++} + + void SetAlternateSignalStack() { + stack_t altstack, oldstack; +@@ -180,10 +184,9 @@ void SetAlternateSignalStack() { + // TODO(glider): the mapped stack should have the MAP_STACK flag in the + // future. It is not required by man 2 sigaltstack now (they're using + // malloc()). +- void* base = MmapOrDie(kAltStackSize, __func__); +- altstack.ss_sp = (char*) base; ++ altstack.ss_size = GetAltStackSize(); ++ altstack.ss_sp = (char *)MmapOrDie(altstack.ss_size, __func__); + altstack.ss_flags = 0; +- altstack.ss_size = kAltStackSize; + CHECK_EQ(0, sigaltstack(&altstack, nullptr)); + } + +@@ -191,7 +194,7 @@ void UnsetAlternateSignalStack() { + stack_t altstack, oldstack; + altstack.ss_sp = nullptr; + altstack.ss_flags = SS_DISABLE; +- altstack.ss_size = kAltStackSize; // Some sane value required on Darwin. ++ altstack.ss_size = GetAltStackSize(); // Some sane value required on Darwin. + CHECK_EQ(0, sigaltstack(&altstack, &oldstack)); + UnmapOrDie(oldstack.ss_sp, oldstack.ss_size); + } +-- +2.27.0 + diff --git a/pkgs/development/compilers/gcc/7/default.nix b/pkgs/development/compilers/gcc/7/default.nix index dcb7d0b91f6f1..72f3e06bd32b8 100644 --- a/pkgs/development/compilers/gcc/7/default.nix +++ b/pkgs/development/compilers/gcc/7/default.nix @@ -63,6 +63,9 @@ let majorVersion = "7"; ./riscv-pthread-reentrant.patch # https://gcc.gnu.org/ml/gcc-patches/2018-03/msg00297.html ./riscv-no-relax.patch + # Fix for asan w/glibc-2.34. Although there's no upstream backport to v7, + # the patch from gcc 8 seems to work perfectly fine. + ./gcc8-asan-glibc-2.34.patch ./0001-Fix-build-for-glibc-2.31.patch ] diff --git a/pkgs/development/compilers/gcc/7/gcc8-asan-glibc-2.34.patch b/pkgs/development/compilers/gcc/7/gcc8-asan-glibc-2.34.patch new file mode 100644 index 0000000000000..5645b97c1d898 --- /dev/null +++ b/pkgs/development/compilers/gcc/7/gcc8-asan-glibc-2.34.patch @@ -0,0 +1,70 @@ +From ef195a39d0d3b929cc676302d074b42c25460601 Mon Sep 17 00:00:00 2001 +From: Jakub Jelinek +Date: Sat, 17 Apr 2021 11:27:14 +0200 +Subject: [PATCH] sanitizer: Fix asan against glibc 2.34 [PR100114] + +As mentioned in the PR, SIGSTKSZ is no longer a compile time constant in +glibc 2.34 and later, so +static const uptr kAltStackSize = SIGSTKSZ * 4; +needs dynamic initialization, but is used by a function called indirectly +from .preinit_array and therefore before the variable is constructed. +This results in using 0 size instead and all asan instrumented programs +die with: +==91==ERROR: AddressSanitizer failed to allocate 0x0 (0) bytes of SetAlternateSignalStack (error code: 22) + +Here is a cherry-pick from upstream to fix this. + +2021-04-17 Jakub Jelinek + + PR sanitizer/100114 + * sanitizer_common/sanitizer_posix_libcdep.cc: Cherry-pick + llvm-project revisions 82150606fb11d28813ae6da1101f5bda638165fe + and b93629dd335ffee2fc4b9b619bf86c3f9e6b0023. + +(cherry picked from commit 950bac27d63c1c2ac3a6ed867692d6a13f21feb3) +--- + .../sanitizer_common/sanitizer_posix_libcdep.cc | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +diff --git a/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cc b/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cc +index 1a37118c299..066079b3954 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cc ++++ b/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cc +@@ -159,7 +159,11 @@ bool SupportsColoredOutput(fd_t fd) { + + #if !SANITIZER_GO + // TODO(glider): different tools may require different altstack size. +-static const uptr kAltStackSize = SIGSTKSZ * 4; // SIGSTKSZ is not enough. ++static uptr GetAltStackSize() { ++ // SIGSTKSZ is not enough. ++ static const uptr kAltStackSize = SIGSTKSZ * 4; ++ return kAltStackSize; ++} + + void SetAlternateSignalStack() { + stack_t altstack, oldstack; +@@ -170,10 +174,9 @@ void SetAlternateSignalStack() { + // TODO(glider): the mapped stack should have the MAP_STACK flag in the + // future. It is not required by man 2 sigaltstack now (they're using + // malloc()). +- void* base = MmapOrDie(kAltStackSize, __func__); +- altstack.ss_sp = (char*) base; ++ altstack.ss_size = GetAltStackSize(); ++ altstack.ss_sp = (char *)MmapOrDie(altstack.ss_size, __func__); + altstack.ss_flags = 0; +- altstack.ss_size = kAltStackSize; + CHECK_EQ(0, sigaltstack(&altstack, nullptr)); + } + +@@ -181,7 +184,7 @@ void UnsetAlternateSignalStack() { + stack_t altstack, oldstack; + altstack.ss_sp = nullptr; + altstack.ss_flags = SS_DISABLE; +- altstack.ss_size = kAltStackSize; // Some sane value required on Darwin. ++ altstack.ss_size = GetAltStackSize(); // Some sane value required on Darwin. + CHECK_EQ(0, sigaltstack(&altstack, &oldstack)); + UnmapOrDie(oldstack.ss_sp, oldstack.ss_size); + } +-- +2.27.0 + diff --git a/pkgs/development/compilers/gcc/9/default.nix b/pkgs/development/compilers/gcc/9/default.nix index 9d21ed667f6c0..62878cb6d8773 100644 --- a/pkgs/development/compilers/gcc/9/default.nix +++ b/pkgs/development/compilers/gcc/9/default.nix @@ -78,7 +78,7 @@ let majorVersion = "9"; # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96796 # # This patch can most likely be removed by a post 9.3.0-release. - [ ./avoid-cycling-subreg-reloads.patch ] + [ ./avoid-cycling-subreg-reloads.patch ./gcc9-asan-glibc-2.34.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/gcc9-asan-glibc-2.34.patch b/pkgs/development/compilers/gcc/9/gcc9-asan-glibc-2.34.patch new file mode 100644 index 0000000000000..1aea1f9b18a14 --- /dev/null +++ b/pkgs/development/compilers/gcc/9/gcc9-asan-glibc-2.34.patch @@ -0,0 +1,70 @@ +From 3d0135bf3be416bbe2531dc763d19b749eb2b856 Mon Sep 17 00:00:00 2001 +From: Jakub Jelinek +Date: Sat, 17 Apr 2021 11:27:14 +0200 +Subject: [PATCH] sanitizer: Fix asan against glibc 2.34 [PR100114] + +As mentioned in the PR, SIGSTKSZ is no longer a compile time constant in +glibc 2.34 and later, so +static const uptr kAltStackSize = SIGSTKSZ * 4; +needs dynamic initialization, but is used by a function called indirectly +from .preinit_array and therefore before the variable is constructed. +This results in using 0 size instead and all asan instrumented programs +die with: +==91==ERROR: AddressSanitizer failed to allocate 0x0 (0) bytes of SetAlternateSignalStack (error code: 22) + +Here is a cherry-pick from upstream to fix this. + +2021-04-17 Jakub Jelinek + + PR sanitizer/100114 + * sanitizer_common/sanitizer_posix_libcdep.cc: Cherry-pick + llvm-project revisions 82150606fb11d28813ae6da1101f5bda638165fe + and b93629dd335ffee2fc4b9b619bf86c3f9e6b0023. + +(cherry picked from commit 950bac27d63c1c2ac3a6ed867692d6a13f21feb3) +--- + .../sanitizer_common/sanitizer_posix_libcdep.cc | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +diff --git a/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cc b/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cc +index d2fd76a6d36..1917e29ced2 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cc ++++ b/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cc +@@ -169,7 +169,11 @@ bool SupportsColoredOutput(fd_t fd) { + + #if !SANITIZER_GO + // TODO(glider): different tools may require different altstack size. +-static const uptr kAltStackSize = SIGSTKSZ * 4; // SIGSTKSZ is not enough. ++static uptr GetAltStackSize() { ++ // SIGSTKSZ is not enough. ++ static const uptr kAltStackSize = SIGSTKSZ * 4; ++ return kAltStackSize; ++} + + void SetAlternateSignalStack() { + stack_t altstack, oldstack; +@@ -180,10 +184,9 @@ void SetAlternateSignalStack() { + // TODO(glider): the mapped stack should have the MAP_STACK flag in the + // future. It is not required by man 2 sigaltstack now (they're using + // malloc()). +- void* base = MmapOrDie(kAltStackSize, __func__); +- altstack.ss_sp = (char*) base; ++ altstack.ss_size = GetAltStackSize(); ++ altstack.ss_sp = (char *)MmapOrDie(altstack.ss_size, __func__); + altstack.ss_flags = 0; +- altstack.ss_size = kAltStackSize; + CHECK_EQ(0, sigaltstack(&altstack, nullptr)); + } + +@@ -191,7 +194,7 @@ void UnsetAlternateSignalStack() { + stack_t altstack, oldstack; + altstack.ss_sp = nullptr; + altstack.ss_flags = SS_DISABLE; +- altstack.ss_size = kAltStackSize; // Some sane value required on Darwin. ++ altstack.ss_size = GetAltStackSize(); // Some sane value required on Darwin. + CHECK_EQ(0, sigaltstack(&altstack, &oldstack)); + UnmapOrDie(oldstack.ss_sp, oldstack.ss_size); + } +-- +2.27.0 + From 64f9c9236150cdf03ffacf2c5fcf0055fea1f428 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sun, 23 Jan 2022 01:26:21 +0100 Subject: [PATCH 58/73] soci: fix build w/glibc-2.34 We don't run the tests and I didn't manage to get them running trivially, so let's disable them. This not only speeds up compilation-time, but also fixes the build for glibc 2.34. Failing Hydra build: https://hydra.nixos.org/build/163952252 --- pkgs/development/libraries/soci/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/soci/default.nix b/pkgs/development/libraries/soci/default.nix index b17fbe16655be..142081da0153a 100644 --- a/pkgs/development/libraries/soci/default.nix +++ b/pkgs/development/libraries/soci/default.nix @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { ]; # Do not build static libraries - cmakeFlags = [ "-DSOCI_STATIC=OFF" "-DCMAKE_CXX_STANDARD=11" ]; + cmakeFlags = [ "-DSOCI_STATIC=OFF" "-DCMAKE_CXX_STANDARD=11" "-DSOCI_TESTS=off" ]; nativeBuildInputs = [ cmake ]; buildInputs = [ From da55ba2a06e02e200daa3433ea84d0f9874eff4e Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Fri, 28 Jan 2022 16:52:53 +0100 Subject: [PATCH 59/73] sfizz: fix build w/glibc-2.34, actually enable tests Failing Hydra build: https://hydra.nixos.org/build/163931927 --- pkgs/applications/audio/sfizz/default.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkgs/applications/audio/sfizz/default.nix b/pkgs/applications/audio/sfizz/default.nix index 54acc782c6037..aaa79bd3e3922 100644 --- a/pkgs/applications/audio/sfizz/default.nix +++ b/pkgs/applications/audio/sfizz/default.nix @@ -1,6 +1,7 @@ { lib, stdenv, fetchFromGitHub, libjack2, libsndfile, xorg, freetype , libxkbcommon, cairo, glib, gnome, flac, libogg, libvorbis, libopus, cmake -, pango, pkg-config }: +, pango, pkg-config, catch2 +}: stdenv.mkDerivation rec { pname = "sfizz"; @@ -40,6 +41,8 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ cmake pkg-config ]; postPatch = '' + cp ${catch2}/include/catch2/catch.hpp tests/catch2/catch.hpp + substituteInPlace plugins/editor/external/vstgui4/vstgui/lib/platform/linux/x11fileselector.cpp \ --replace 'zenitypath = "zenity"' 'zenitypath = "${gnome.zenity}/bin/zenity"' substituteInPlace plugins/editor/src/editor/NativeHelpers.cpp \ @@ -48,6 +51,8 @@ stdenv.mkDerivation rec { cmakeFlags = [ "-DCMAKE_BUILD_TYPE=Release" "-DSFIZZ_TESTS=ON" ]; + doCheck = true; + meta = with lib; { homepage = "https://github.com/sfztools/sfizz"; description = "SFZ jack client and LV2 plugin"; From 9a9fff59b28d06cd3f22397c778fcbacf46ccc22 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Fri, 28 Jan 2022 17:00:05 +0100 Subject: [PATCH 60/73] quvi*: mark as broken Failing Hydra build: https://hydra.nixos.org/build/163943269 Given that it hasn't had a release since 2013[1] and Gentoo/Fedora already dropped it[2][3]. Also, there are a lot of alternative stream/video downloaders, so it doesn't seem a big deal. [1] http://quvi.sourceforge.net/news/ [2] https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=80024f2367f394b46326064823d0c39f373e2820 [3] https://src.fedoraproject.org/rpms/quvi/c/bf189503ae6c15d2731679e292c0a90ce1454e62?branch=rawhide --- pkgs/applications/video/quvi/library.nix | 1 + pkgs/applications/video/quvi/scripts.nix | 1 + pkgs/applications/video/quvi/tool.nix | 1 + 3 files changed, 3 insertions(+) diff --git a/pkgs/applications/video/quvi/library.nix b/pkgs/applications/video/quvi/library.nix index 071e67a172116..548b3d7f9724d 100644 --- a/pkgs/applications/video/quvi/library.nix +++ b/pkgs/applications/video/quvi/library.nix @@ -18,5 +18,6 @@ stdenv.mkDerivation rec { license = lib.licenses.lgpl21Plus; platforms = lib.platforms.linux; maintainers = [ ]; + broken = true; # missing glibc-2.34 support, no upstream activity }; } diff --git a/pkgs/applications/video/quvi/scripts.nix b/pkgs/applications/video/quvi/scripts.nix index 676d073900c52..a31ef6e72ae6a 100644 --- a/pkgs/applications/video/quvi/scripts.nix +++ b/pkgs/applications/video/quvi/scripts.nix @@ -17,5 +17,6 @@ stdenv.mkDerivation rec { license = lib.licenses.lgpl21Plus; platforms = lib.platforms.linux; maintainers = [ ]; + broken = true; # missing glibc-2.34 support, no upstream activity }; } diff --git a/pkgs/applications/video/quvi/tool.nix b/pkgs/applications/video/quvi/tool.nix index 87c8066a976c5..ad6233cbd0012 100644 --- a/pkgs/applications/video/quvi/tool.nix +++ b/pkgs/applications/video/quvi/tool.nix @@ -21,5 +21,6 @@ stdenv.mkDerivation rec { license = lib.licenses.lgpl21Plus; platforms = lib.platforms.linux; maintainers = [ ]; + broken = true; # missing glibc-2.34 support, no upstream activity }; } From 357dd9ed5f5d956e97080996bcf0ed6fdf5b3257 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Fri, 28 Jan 2022 17:14:04 +0100 Subject: [PATCH 61/73] zeroc-ice-36: remove, unmaintained --- pkgs/development/libraries/zeroc-ice/3.6.nix | 59 ------------------- .../uninitialized-variable-warning.patch | 20 ------- pkgs/top-level/aliases.nix | 3 + pkgs/top-level/all-packages.nix | 4 -- 4 files changed, 3 insertions(+), 83 deletions(-) delete mode 100644 pkgs/development/libraries/zeroc-ice/3.6.nix delete mode 100644 pkgs/development/libraries/zeroc-ice/uninitialized-variable-warning.patch diff --git a/pkgs/development/libraries/zeroc-ice/3.6.nix b/pkgs/development/libraries/zeroc-ice/3.6.nix deleted file mode 100644 index e8082e50447ae..0000000000000 --- a/pkgs/development/libraries/zeroc-ice/3.6.nix +++ /dev/null @@ -1,59 +0,0 @@ -{ stdenv, lib, fetchFromGitHub -, mcpp, bzip2, expat, openssl, db5 -, darwin, libiconv, Security -, zeroc-ice # to share meta -, cpp11 ? false -}: - -stdenv.mkDerivation rec { - pname = "zeroc-ice"; - version = "3.6.5"; - - src = fetchFromGitHub { - owner = "zeroc-ice"; - repo = "ice"; - rev = "v${version}"; - sha256 = "073h7v1f2sw77cr1a6xxa5l9j547pz24sxa9qdjc4zki0ivcnq15"; - }; - - buildInputs = [ mcpp bzip2 expat openssl db5 ] - ++ lib.optionals stdenv.isDarwin [ darwin.cctools libiconv Security ]; - - postUnpack = '' - sourceRoot=$sourceRoot/cpp - ''; - - prePatch = lib.optionalString stdenv.isDarwin '' - substituteInPlace config/Make.rules.Darwin \ - --replace xcrun "" - ''; - - patches = [ - # Fixes compilation warning about uninitialied variables (in test code) - ./uninitialized-variable-warning.patch - ]; - - preBuild = '' - makeFlagsArray+=( - "prefix=$out" - "OPTIMIZE=yes" - "USR_DIR_INSTALL=yes" - "CONFIGS=${if cpp11 then "cpp11-shared" else "shared"}" - "SKIP=slice2py" # provided by a separate package - ) - ''; - - # cannot find -lIceXML (linking bin/transformdb) - enableParallelBuilding = false; - - outputs = [ "out" "bin" "dev" ]; - - postInstall = '' - mkdir -p $bin $dev/share - mv $out/bin $bin - mv $out/share/Ice-* $dev/share/ice - rm -rf $out/share/slice - ''; - - inherit (zeroc-ice) meta; -} diff --git a/pkgs/development/libraries/zeroc-ice/uninitialized-variable-warning.patch b/pkgs/development/libraries/zeroc-ice/uninitialized-variable-warning.patch deleted file mode 100644 index 878dee26bb83b..0000000000000 --- a/pkgs/development/libraries/zeroc-ice/uninitialized-variable-warning.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff --git a/test/Glacier2/dynamicFiltering/TestControllerI.h b/test/Glacier2/dynamicFiltering/TestControllerI.h -index 7e21639..1279200 100644 ---- a/test/Glacier2/dynamicFiltering/TestControllerI.h -+++ b/test/Glacier2/dynamicFiltering/TestControllerI.h -@@ -21,13 +21,12 @@ struct SessionTuple - { - Glacier2::SessionPrx session; - Glacier2::SessionControlPrx sessionControl; -- bool configured; -+ bool configured = false; - - SessionTuple() {} - SessionTuple(Glacier2::SessionPrx s, Glacier2::SessionControlPrx control): - session(s), -- sessionControl(control), -- configured(false) -+ sessionControl(control) - {} - - SessionTuple& diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 46371603fda10..e85ef792e4393 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -1411,6 +1411,9 @@ mapAliases ({ targetLlvmLibraries = targetPackages.llvmPackages_git.libraries; }); + # Added 2022-01-28 + zeroc-ice-36 = throw "Unmaintained, doesn't build w/glibc-2.34"; + /* If these are in the scope of all-packages.nix, they cause collisions between mixed versions of qt. See: https://github.com/NixOS/nixpkgs/pull/101369 */ diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 0a2099114318e..4118bd5b0e2cd 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -30174,10 +30174,6 @@ with pkgs; zeroc-ice-cpp11 = zeroc-ice.override { cpp11 = true; }; - zeroc-ice-36 = callPackage ../development/libraries/zeroc-ice/3.6.nix { - inherit (darwin.apple_sdk.frameworks) Security; - }; - zeronet = callPackage ../applications/networking/p2p/zeronet { }; zexy = callPackage ../applications/audio/pd-plugins/zexy { From 2db6c7e893ffcfa79e94fb3f6d70666c36e26043 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Fri, 28 Jan 2022 17:45:33 +0100 Subject: [PATCH 62/73] jumanpp: fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/163976320 --- ...001-Exclude-all-tests-from-the-build.patch | 177 ++++++++++++++++++ pkgs/tools/text/jumanpp/default.nix | 3 + 2 files changed, 180 insertions(+) create mode 100644 pkgs/tools/text/jumanpp/0001-Exclude-all-tests-from-the-build.patch diff --git a/pkgs/tools/text/jumanpp/0001-Exclude-all-tests-from-the-build.patch b/pkgs/tools/text/jumanpp/0001-Exclude-all-tests-from-the-build.patch new file mode 100644 index 0000000000000..d41bada82def8 --- /dev/null +++ b/pkgs/tools/text/jumanpp/0001-Exclude-all-tests-from-the-build.patch @@ -0,0 +1,177 @@ +From c52a5046e19718a43d48c9b3cfdc121d964e8c3b Mon Sep 17 00:00:00 2001 +From: Maximilian Bosch +Date: Fri, 28 Jan 2022 17:43:35 +0100 +Subject: [PATCH] Exclude all tests from the build + +For some reason it isn't sufficient to set `-DJPP_ENABLE_TESTS=OFF`. +Doing that because the tests on 2.0.0-rc3 don't seem to be working and +the vendored catch2 doesn't build with glibc 2.34. +--- + src/CMakeLists.txt | 3 +-- + src/core/CMakeLists.txt | 11 +---------- + src/core/analysis/CMakeLists.txt | 2 -- + src/core/codegen/CMakeLists.txt | 3 --- + src/core/spec/CMakeLists.txt | 2 -- + src/core/training/CMakeLists.txt | 2 -- + src/jumandic/CMakeLists.txt | 8 +------- + src/rnn/CMakeLists.txt | 5 +---- + src/util/CMakeLists.txt | 2 -- + 9 files changed, 4 insertions(+), 34 deletions(-) + +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 169dff5..64b6a07 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -67,7 +67,6 @@ function(jpp_feature_codegen) + endfunction(jpp_feature_codegen) + + add_subdirectory(util) +-add_subdirectory(testing) + add_subdirectory(core) + add_subdirectory(jumandic) +-add_subdirectory(rnn) +\ No newline at end of file ++add_subdirectory(rnn) +diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt +index c63d134..01c825e 100644 +--- a/src/core/CMakeLists.txt ++++ b/src/core/CMakeLists.txt +@@ -55,20 +55,11 @@ set(core_hdrs + ${core_hdrs} + ) + +-set(core_test_srcs +- ${core_test_srcs} +- ${core_tsrcs} +- test/test_analyzer_env.h +- ../testing/test_analyzer.h +- ) +- + add_library(jpp_core ${core_srcs} ${core_hdrs} ${libs3p_pegtl_headers}) +-jpp_test_executable(jpp_core_tests ${core_test_srcs}) + + target_include_directories(jpp_core PUBLIC ${jpp_core_cfg_dir}) + + target_link_libraries(jpp_core PUBLIC jpp_util jpp_rnn PRIVATE pathie) +-target_link_libraries(jpp_core_tests jpp_core jpp_core_train) + + if (${JPP_USE_PROTOBUF}) + target_include_directories(jpp_core PUBLIC ${Protobuf_INCLUDE_DIR} ${CMAKE_CURRENT_BINARY_DIR}) +@@ -78,4 +69,4 @@ endif() + add_subdirectory(benchmarks) + if (${JPP_ENABLE_DEV_TOOLS}) + add_subdirectory(devtools) +-endif () +\ No newline at end of file ++endif () +diff --git a/src/core/analysis/CMakeLists.txt b/src/core/analysis/CMakeLists.txt +index 526263e..1b32f8d 100644 +--- a/src/core/analysis/CMakeLists.txt ++++ b/src/core/analysis/CMakeLists.txt +@@ -79,5 +79,3 @@ jpp_core_files(core_hdrs + ) + + +-jpp_test_executable(jpp_core_analysis_tests ${core_analysis_tsrc}) +-target_link_libraries(jpp_core_analysis_tests jpp_core) +diff --git a/src/core/codegen/CMakeLists.txt b/src/core/codegen/CMakeLists.txt +index a905cee..fa759c7 100644 +--- a/src/core/codegen/CMakeLists.txt ++++ b/src/core/codegen/CMakeLists.txt +@@ -30,7 +30,4 @@ set(jpp_codegen_tsrcs + + add_library(jpp_core_codegen ${jpp_codegen_srcs} ${jpp_codegen_hdrs}) + +-jpp_test_executable(jpp_codegen_tests ${jpp_codegen_tsrcs}) +-target_include_directories(jpp_codegen_tests PRIVATE ${cgtest02_INCLUDE}) + target_link_libraries(jpp_core_codegen jpp_core) +-target_link_libraries(jpp_codegen_tests jpp_core_codegen) +\ No newline at end of file +diff --git a/src/core/spec/CMakeLists.txt b/src/core/spec/CMakeLists.txt +index f495d67..da827b9 100644 +--- a/src/core/spec/CMakeLists.txt ++++ b/src/core/spec/CMakeLists.txt +@@ -33,5 +33,3 @@ jpp_core_files(core_hdrs + + ) + +-jpp_test_executable(jpp_core_spec_tests ${core_spec_tsrc} ${libs3p_pegtl_headers}) +-target_link_libraries(jpp_core_spec_tests jpp_core) +\ No newline at end of file +diff --git a/src/core/training/CMakeLists.txt b/src/core/training/CMakeLists.txt +index 960437e..4ede9e1 100644 +--- a/src/core/training/CMakeLists.txt ++++ b/src/core/training/CMakeLists.txt +@@ -39,7 +39,5 @@ set(core_train_hdrs + + + add_library(jpp_core_train ${core_train_src} ${core_train_hdrs}) +-jpp_test_executable(jpp_core_train_tests ${core_train_tsrc}) + + target_link_libraries(jpp_core_train jpp_core) +-target_link_libraries(jpp_core_train_tests jpp_core_train) +\ No newline at end of file +diff --git a/src/jumandic/CMakeLists.txt b/src/jumandic/CMakeLists.txt +index bef3149..85a8b5d 100644 +--- a/src/jumandic/CMakeLists.txt ++++ b/src/jumandic/CMakeLists.txt +@@ -53,10 +53,6 @@ if (${JPP_USE_PROTOBUF}) + endif () + + +-jpp_test_executable(jpp_jumandic_tests ${jumandic_tests}) +-jpp_test_executable(jpp_bug_tests ${bug_test_sources}) +-target_include_directories(jpp_jumandic_tests PRIVATE ${jpp_jumandic_cg_INCLUDE}) +- + add_executable(jpp_jumandic_bootstrap main/bootstrap.cc) + add_executable(jumanpp_v2 main/jumanpp.cc) + add_executable(jumanpp_v2_train main/jumanpp_train.cc main/jumanpp_train.h) +@@ -64,11 +60,9 @@ add_executable(jpp_jumandic_pathdiff main/path_diff.cc) + target_include_directories(jpp_jumandic_pathdiff PRIVATE ${jpp_jumandic_cg_INCLUDE}) + + target_link_libraries(jpp_jumandic jpp_jumandic_spec) +-target_link_libraries(jpp_jumandic_tests jpp_jumandic jpp_core_train) +-target_link_libraries(jpp_bug_tests jpp_jumandic jpp_core_train) + target_link_libraries(jpp_jumandic_bootstrap jpp_jumandic) + target_link_libraries(jumanpp_v2 jpp_jumandic) + target_link_libraries(jumanpp_v2_train jpp_jumandic jpp_core_train) + target_link_libraries(jpp_jumandic_pathdiff jpp_jumandic) + +-install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/jumanpp_v2 RENAME jumanpp DESTINATION bin) +\ No newline at end of file ++install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/jumanpp_v2 RENAME jumanpp DESTINATION bin) +diff --git a/src/rnn/CMakeLists.txt b/src/rnn/CMakeLists.txt +index 448ba51..ca09a00 100644 +--- a/src/rnn/CMakeLists.txt ++++ b/src/rnn/CMakeLists.txt +@@ -1,12 +1,9 @@ + set(jpp_rnn_sources mikolov_rnn.cc) + set(jpp_rnn_includes mikolov_rnn.h simple_rnn_impl.h mikolov_rnn_impl.h rnn_arg_parse.h) +-set(jpp_rnn_tests mikolov_rnn_test.cc) + + add_library(jpp_rnn ${jpp_rnn_sources} ${jpp_rnn_includes} ) + add_library(jumanpp_rnn_legacy legacy/rnnlmlib.h legacy/rnnlmlib_static.h legacy/rnnlmlib_static.cpp) + +-jpp_test_executable(jpp_rnn_tests ${jpp_rnn_tests}) + target_link_libraries(jpp_rnn jpp_util) +-target_link_libraries(jpp_rnn_tests jpp_rnn jumanpp_rnn_legacy) + +-target_link_libraries(jumanpp_rnn_legacy jpp_util) +\ No newline at end of file ++target_link_libraries(jumanpp_rnn_legacy jpp_util) +diff --git a/src/util/CMakeLists.txt b/src/util/CMakeLists.txt +index 53b6c57..c4599d5 100644 +--- a/src/util/CMakeLists.txt ++++ b/src/util/CMakeLists.txt +@@ -25,8 +25,6 @@ endif() + + + add_library(jpp_util ${jpp_util_sources} ${jpp_util_headers} ${BACKWARD_headers}) +-jpp_test_executable(jpp_util_test ${jpp_util_test_srcs} ${jpp_util_headers}) +-target_link_libraries(jpp_util_test jpp_util) + target_link_libraries(jpp_util ${CMAKE_THREAD_LIBS_INIT}) + target_include_directories(jpp_util PUBLIC ${JPP_LIBS_DIR} ${JPP_SRC_DIR}) + target_compile_features(jpp_util PUBLIC +-- +2.33.1 + diff --git a/pkgs/tools/text/jumanpp/default.nix b/pkgs/tools/text/jumanpp/default.nix index 5fb5ec88d6793..5bea259bccafc 100644 --- a/pkgs/tools/text/jumanpp/default.nix +++ b/pkgs/tools/text/jumanpp/default.nix @@ -9,6 +9,9 @@ stdenv.mkDerivation rec { sha256 = "sha256-ASdr6qbkSe71M7QmuuwidCa4xQhDVoXBJ2XqvSY53pQ="; }; + patches = [ ./0001-Exclude-all-tests-from-the-build.patch ]; + cmakeFlags = [ "-DJPP_ENABLE_TESTS=OFF" ]; + nativeBuildInputs = [ cmake ]; buildInputs = [ protobuf ] ++ lib.optional stdenv.isDarwin libiconv; From b43a3567eca70579e2a34e5fba3fda6154ea142f Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Fri, 28 Jan 2022 19:50:19 +0100 Subject: [PATCH 63/73] cpp-hocon: fix build w/glibc-2.34 Simply disable tests as it tries to pull in an old `catch2` from `leatherman`. Failing Hydra build: https://hydra.nixos.org/build/163982252 --- pkgs/development/libraries/cpp-hocon/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkgs/development/libraries/cpp-hocon/default.nix b/pkgs/development/libraries/cpp-hocon/default.nix index dfe7f77767038..bba2e03f8d59b 100644 --- a/pkgs/development/libraries/cpp-hocon/default.nix +++ b/pkgs/development/libraries/cpp-hocon/default.nix @@ -11,6 +11,10 @@ stdenv.mkDerivation rec { owner = "puppetlabs"; }; + postPatch = '' + sed -i -e '/add_subdirectory(tests)/d' lib/CMakeLists.txt + ''; + NIX_CFLAGS_COMPILE = "-Wno-error"; nativeBuildInputs = [ cmake ]; From 6320b7240f75d11b5a96bc03372a839c53427433 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Fri, 28 Jan 2022 20:52:45 +0100 Subject: [PATCH 64/73] cataclysm-dda: fix build w/glibc-2.34 * Enable parallel building to speed up the build-time. * Disable tests as vendored catch2 doesn't compile against glibc 2.34 and I couldn't get the tests to run in the sandbox. Failing Hydra build: https://hydra.nixos.org/build/163952121 --- pkgs/games/cataclysm-dda/common.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/games/cataclysm-dda/common.nix b/pkgs/games/cataclysm-dda/common.nix index ccba8e23d5ae7..33790cf88008b 100644 --- a/pkgs/games/cataclysm-dda/common.nix +++ b/pkgs/games/cataclysm-dda/common.nix @@ -39,6 +39,8 @@ stdenv.mkDerivation { buildInputs = cursesDeps ++ optionals tiles tilesDeps; + enableParallelBuilding = true; + postPatch = '' patchShebangs . @@ -49,7 +51,7 @@ stdenv.mkDerivation { ''; makeFlags = [ - "PREFIX=$(out)" "LANGUAGES=all" + "PREFIX=$(out)" "LANGUAGES=all" "RUNTESTS=0" (if useXdgDir then "USE_XDG_DIR=1" else "USE_HOME_DIR=1") ] ++ optionals (!debug) [ "RELEASE=1" From 25172c97d03c3035869c8a1a753232b0b5017cd1 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Fri, 28 Jan 2022 21:17:27 +0100 Subject: [PATCH 65/73] securefs: fix build w/glibc-2.34 Tests don't work in the sandbox and vendored catch2 doesn't compile, so we disable the tests. Failing Hydra build: https://hydra.nixos.org/build/163981825 --- pkgs/tools/filesystems/securefs/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkgs/tools/filesystems/securefs/default.nix b/pkgs/tools/filesystems/securefs/default.nix index 44e547b01c24d..4d56f08b44262 100644 --- a/pkgs/tools/filesystems/securefs/default.nix +++ b/pkgs/tools/filesystems/securefs/default.nix @@ -20,6 +20,10 @@ stdenv.mkDerivation rec { ./add-macfuse-support.patch ]; + postPatch = '' + sed -i -e '/TEST_SOURCES/d' CMakeLists.txt + ''; + nativeBuildInputs = [ cmake ]; buildInputs = [ fuse ]; From 11597d116244611940d3366db7c85f7181a32ae3 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Fri, 28 Jan 2022 21:44:02 +0100 Subject: [PATCH 66/73] sfxr-qt: fix build w/glibc-2.34 Failing Hydra build: https://hydra.nixos.org/build/163999266 --- pkgs/applications/audio/sfxr-qt/default.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pkgs/applications/audio/sfxr-qt/default.nix b/pkgs/applications/audio/sfxr-qt/default.nix index bf8b826f544f9..ef83531e43658 100644 --- a/pkgs/applications/audio/sfxr-qt/default.nix +++ b/pkgs/applications/audio/sfxr-qt/default.nix @@ -7,6 +7,7 @@ , qtquickcontrols2 , SDL , python3 +, catch2 }: mkDerivation rec { @@ -21,6 +22,10 @@ mkDerivation rec { fetchSubmodules = true; }; + postPatch = '' + cp ${catch2}/include/catch2/catch.hpp 3rdparty/catch2/single_include/catch2/catch.hpp + ''; + nativeBuildInputs = [ cmake extra-cmake-modules @@ -33,6 +38,8 @@ mkDerivation rec { SDL ]; + doCheck = true; + meta = with lib; { homepage = "https://github.com/agateau/sfxr-qt"; description = "A sound effect generator, QtQuick port of sfxr"; From e9187abff193a6689621acb00c3ee31c954bf793 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sun, 27 Feb 2022 12:04:46 +0100 Subject: [PATCH 67/73] gdb: remove `--disable-sim` fix --- pkgs/development/tools/misc/gdb/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/pkgs/development/tools/misc/gdb/default.nix b/pkgs/development/tools/misc/gdb/default.nix index 91947a024d7d8..5bb5bc0652fec 100644 --- a/pkgs/development/tools/misc/gdb/default.nix +++ b/pkgs/development/tools/misc/gdb/default.nix @@ -92,7 +92,6 @@ stdenv.mkDerivation rec { "--disable-shared" "--enable-static" "--with-system-zlib" "--with-system-readline" - "--disable-sim" "--with-gmp=${gmp.dev}" "--with-mpfr=${mpfr.dev}" From 69af73d4b05fcb2cdd35e9f82ba881718172a920 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sun, 27 Feb 2022 12:11:18 +0100 Subject: [PATCH 68/73] texinfo: review fixes --- pkgs/development/tools/misc/texinfo/common.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/tools/misc/texinfo/common.nix b/pkgs/development/tools/misc/texinfo/common.nix index e47d3369de966..26732657eb9f5 100644 --- a/pkgs/development/tools/misc/texinfo/common.nix +++ b/pkgs/development/tools/misc/texinfo/common.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation { inherit sha256; }; - patches = patches ++ (optional crossBuildTools ./cross-tools-flags.patch); + patches = patches ++ optional crossBuildTools ./cross-tools-flags.patch; # ncurses is required to build `makedoc' # this feature is introduced by the ./cross-tools-flags.patch From e110983ed3c6bb301b9a4266e400e0e1b2ef58dd Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sun, 27 Feb 2022 14:06:23 +0100 Subject: [PATCH 69/73] glibc: add empty libpthread.a See https://github.com/NixOS/nixpkgs/pull/133431#discussion_r805338099 --- pkgs/development/libraries/glibc/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/libraries/glibc/default.nix b/pkgs/development/libraries/glibc/default.nix index a48276f0b9ca4..65a622f046736 100644 --- a/pkgs/development/libraries/glibc/default.nix +++ b/pkgs/development/libraries/glibc/default.nix @@ -129,6 +129,7 @@ callPackage ./common.nix { inherit stdenv; } { ln -sf $out/lib/librt.so.1 $out/lib/librt.so ln -sf $out/lib/libdl.so.2 $out/lib/libdl.so ln -sf $out/lib/libutil.so.1 $out/lib/libutil.so + touch $out/lib/libpthread.a '' # For some reason these aren't stripped otherwise and retain reference # to bootstrap-tools; on cross-arm this stripping would break objects. From 1077a6e040b445bf3d0854a667a1c03f33aa5c60 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sun, 27 Feb 2022 14:06:45 +0100 Subject: [PATCH 70/73] nixos/stage-1: typo fixes --- nixos/modules/system/boot/stage-1-init.sh | 1 + nixos/modules/system/boot/stage-1.nix | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/nixos/modules/system/boot/stage-1-init.sh b/nixos/modules/system/boot/stage-1-init.sh index ec8860b742490..3175836698091 100644 --- a/nixos/modules/system/boot/stage-1-init.sh +++ b/nixos/modules/system/boot/stage-1-init.sh @@ -232,6 +232,7 @@ done mkdir -p /lib ln -s @modulesClosure@/lib/modules /lib/modules ln -s @modulesClosure@/lib/firmware /lib/firmware +# see comment in stage-1.nix for explanation echo @extraUtils@/bin/modprobe-kernel > /proc/sys/kernel/modprobe for i in @kernelModules@; do info "loading module $(basename $i)..." diff --git a/nixos/modules/system/boot/stage-1.nix b/nixos/modules/system/boot/stage-1.nix index 5999a993b141c..c45857441c6ca 100644 --- a/nixos/modules/system/boot/stage-1.nix +++ b/nixos/modules/system/boot/stage-1.nix @@ -136,11 +136,11 @@ let # because `kmod` isn't linked against `libpthread.so.0` anymore (since # it was merged into `libc.so.6` since version `2.34`), but still needs # to access it for some reason. This is not an issue in stage-1 itself - # because of the `LD_LIBRARY_PATH`-variable and anytime later because the rpath of + # because of the `LD_LIBRARY_PATH`-variable and anytime later because the rpath of # kmod/modprobe points to glibc's `$out/lib` where `libpthread.so.6` exists. # However, this is a problem when the kernel calls `modprobe` inside # the initial ramdisk because it doesn't know about the - # `LD_LIbRARY_PATH` and the rpath was nuked. + # `LD_LIBRARY_PATH` and the rpath was nuked. # # Also, we can't use `makeWrapper` here because `kmod` only does # `modprobe` functionality if `argv[0] == "modprobe"`. From 91fa7657d180942da624520231754706940f23f4 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sun, 27 Feb 2022 15:10:58 +0100 Subject: [PATCH 71/73] stdenv: revert gcc hack See https://github.com/NixOS/nixpkgs/pull/133431#discussion_r805339569 --- pkgs/stdenv/linux/default.nix | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix index e20ea9e16860a..e5771860bce36 100644 --- a/pkgs/stdenv/linux/default.nix +++ b/pkgs/stdenv/linux/default.nix @@ -254,19 +254,6 @@ in ''; }); - gcc-unwrapped = self.stdenvNoCC.mkDerivation { - inherit (prevStage.gcc-unwrapped) name; - dontUnpack = true; - dontBuild = true; - installPhase = '' - mkdir -p $out - cp -ar ${prevStage.gcc-unwrapped}/* $out/ - chmod -R a+w $out/ - cp -a ${getLibc self}/lib/* $out/lib/ - chmod -R a-w $out/ - ''; - }; - # This also contains the full, dynamically linked, final Glibc. binutils = prevStage.binutils.override { # Rewrap the binutils with the new glibc, so both the next From 41eb407d2c77046ed0cc8c4beb246be25728ffb2 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sun, 27 Feb 2022 18:33:00 +0100 Subject: [PATCH 72/73] Revert "jetbrains.jdk: fix build w/glibc-2.34" This reverts commit 4427e547ca418bac7cc2a6b4c5d144a4a2fac126. Patch is not needed anymore. --- pkgs/development/compilers/jetbrains-jdk/default.nix | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/pkgs/development/compilers/jetbrains-jdk/default.nix b/pkgs/development/compilers/jetbrains-jdk/default.nix index 2d76b98f580cb..bfff07aabcb2a 100644 --- a/pkgs/development/compilers/jetbrains-jdk/default.nix +++ b/pkgs/development/compilers/jetbrains-jdk/default.nix @@ -1,4 +1,4 @@ -{ lib, openjdk11, fetchFromGitHub, jetbrains, fetchpatch }: +{ lib, openjdk11, fetchFromGitHub, jetbrains }: openjdk11.overrideAttrs (oldAttrs: rec { pname = "jetbrains-jdk"; @@ -10,12 +10,7 @@ openjdk11.overrideAttrs (oldAttrs: rec { rev = "jb${version}"; sha256 = "sha256-TPNYZUkAoiZfp7Ci3fslKnRNGY1lnyIhXYUt6J31lwI="; }; - patches = [ - (fetchpatch { - url = "https://github.com/JetBrains/JetBrainsRuntime/commit/980cfdf8d04c015bf2ecb4642064e45e3f36630d.patch"; - sha256 = "sha256-/f20sWnlWoObgdgZKWD785q0aRZ5oIP5pzW+AmejLWM="; - }) - ]; + patches = []; meta = with lib; { description = "An OpenJDK fork to better support Jetbrains's products."; longDescription = '' From 82580b15188e994aff429220d1634b3fc6ad357f Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sun, 27 Feb 2022 20:02:04 +0100 Subject: [PATCH 73/73] cataclysm-dda: fix eval No idea why this breaks now, but let's see if that's sufficient to make ofborg happy. --- pkgs/games/cataclysm-dda/common.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkgs/games/cataclysm-dda/common.nix b/pkgs/games/cataclysm-dda/common.nix index 33790cf88008b..3a620c075debc 100644 --- a/pkgs/games/cataclysm-dda/common.nix +++ b/pkgs/games/cataclysm-dda/common.nix @@ -39,8 +39,6 @@ stdenv.mkDerivation { buildInputs = cursesDeps ++ optionals tiles tilesDeps; - enableParallelBuilding = true; - postPatch = '' patchShebangs .