diff --git a/nixos/modules/system/boot/stage-1-init.sh b/nixos/modules/system/boot/stage-1-init.sh index 8fcc1f029723e..3175836698091 100644 --- a/nixos/modules/system/boot/stage-1-init.sh +++ b/nixos/modules/system/boot/stage-1-init.sh @@ -232,7 +232,8 @@ 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 +# 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)..." modprobe $i diff --git a/nixos/modules/system/boot/stage-1.nix b/nixos/modules/system/boot/stage-1.nix index 1575c0257d1c6..c45857441c6ca 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 < 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 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 ]; 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 = [ 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"; 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 }; } 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 + 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/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..cd1bccd1800f2 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 @@ -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,6 +46,8 @@ stdenv.mkDerivation (args // { inherit src; + patches = map fetchpatch' patches; + strictDeps = true; prefixKey = "-prefix "; 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. */ + 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, + 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" 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" 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 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/2.33-master.patch.gz b/pkgs/development/libraries/glibc/2.33-master.patch.gz deleted file mode 100644 index 777e94e2b2ea5..0000000000000 Binary files a/pkgs/development/libraries/glibc/2.33-master.patch.gz and /dev/null differ diff --git a/pkgs/development/libraries/glibc/2.34-master.patch.gz b/pkgs/development/libraries/glibc/2.34-master.patch.gz new file mode 100644 index 0000000000000..8fb02ca6d7217 Binary files /dev/null and b/pkgs/development/libraries/glibc/2.34-master.patch.gz differ diff --git a/pkgs/development/libraries/glibc/common.nix b/pkgs/development/libraries/glibc/common.nix index ffec9972d2875..47aa304e7d398 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 @@ -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; @@ -138,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. diff --git a/pkgs/development/libraries/glibc/default.nix b/pkgs/development/libraries/glibc/default.nix index caaacfe4f4368..65a622f046736 100644 --- a/pkgs/development/libraries/glibc/default.nix +++ b/pkgs/development/libraries/glibc/default.nix @@ -119,6 +119,17 @@ 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 + 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. 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. */ 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 ]; 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; }; } 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 ]; 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; }; } 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); + } 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 \ 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; { 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 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 { 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 ]; 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 ]; 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"; 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 = [ diff --git a/pkgs/development/libraries/spdlog/default.nix b/pkgs/development/libraries/spdlog/default.nix index d4e0888ffd2ff..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 }: +{ lib, stdenv, fetchFromGitHub, cmake, fmt_8, fetchpatch }: let - generic = { version, sha256 }: + generic = { version, sha256, patches ? [] }: stdenv.mkDerivation { pname = "spdlog"; inherit version; @@ -13,6 +13,8 @@ let inherit sha256; }; + inherit patches; + nativeBuildInputs = [ cmake ]; # spdlog <1.3 uses a bundled version of fmt propagatedBuildInputs = lib.optional (lib.versionAtLeast version "1.3") fmt_8; @@ -51,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 { 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 ]; 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/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 ]; 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/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"; 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..26732657eb9f5 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) + { diff --git a/pkgs/games/cataclysm-dda/common.nix b/pkgs/games/cataclysm-dda/common.nix index ccba8e23d5ae7..3a620c075debc 100644 --- a/pkgs/games/cataclysm-dda/common.nix +++ b/pkgs/games/cataclysm-dda/common.nix @@ -49,7 +49,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" 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"; 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; }; } 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" 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"; 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 ] 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 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' 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) '' 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 = [ 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/ diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix index d2c28b97ff939..e5771860bce36 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; } ); 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 = 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]; 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 ]; 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/"; 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\\)=" 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/"; 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 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; 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 {