From 95152ad7a0fccb923941956ffb8cd89c583142e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Janne=20He=C3=9F?= Date: Fri, 28 Apr 2023 12:18:08 +0200 Subject: [PATCH 1/4] gnugrep: 3.7 -> 3.11 Also replace myself as a maintainer --- pkgs/tools/text/gnugrep/default.nix | 9 ++---- .../text/gnugrep/sigsegv-loongarch.patch | 31 ------------------- 2 files changed, 3 insertions(+), 37 deletions(-) delete mode 100644 pkgs/tools/text/gnugrep/sigsegv-loongarch.patch diff --git a/pkgs/tools/text/gnugrep/default.nix b/pkgs/tools/text/gnugrep/default.nix index fc285bb4c4de..09c6dfc00c71 100644 --- a/pkgs/tools/text/gnugrep/default.nix +++ b/pkgs/tools/text/gnugrep/default.nix @@ -5,7 +5,7 @@ # cgit) that are needed here should be included directly in Nixpkgs as # files. -let version = "3.7"; in +let version = "3.11"; in stdenv.mkDerivation { pname = "gnugrep"; @@ -13,12 +13,9 @@ stdenv.mkDerivation { src = fetchurl { url = "mirror://gnu/grep/grep-${version}.tar.xz"; - sha256 = "0g42svbc1nq5bamxfj6x7320wli4dlj86padk0hwgbk04hqxl42w"; + hash = "sha256-HbKu3eidDepCsW2VKPiUyNFdrk4ZC1muzHj1qVEnbqs="; }; - # https://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=b50c6442e43d79471a31a2a202d3e50c0557446f - patches = lib.optional stdenv.hostPlatform.isLoongArch64 ./sigsegv-loongarch.patch; - # Perl is needed for testing nativeBuildInputs = [ perl ] ++ lib.optional stdenv.hostPlatform.isLoongArch64 autoreconfHook; outputs = [ "out" "info" ]; # the man pages are rather small @@ -62,7 +59,7 @@ stdenv.mkDerivation { license = licenses.gpl3Plus; maintainers = [ - maintainers.eelco + maintainers.das_j maintainers.m00wl ]; platforms = platforms.all; diff --git a/pkgs/tools/text/gnugrep/sigsegv-loongarch.patch b/pkgs/tools/text/gnugrep/sigsegv-loongarch.patch deleted file mode 100644 index 19bb2c1d70ca..000000000000 --- a/pkgs/tools/text/gnugrep/sigsegv-loongarch.patch +++ /dev/null @@ -1,31 +0,0 @@ -From b50c6442e43d79471a31a2a202d3e50c0557446f Mon Sep 17 00:00:00 2001 -From: Sun Haiyong -Date: Sat, 4 Sep 2021 15:06:43 +0200 -Subject: sigsegv: Improve cross-compilation support for LoongArch CPU. - -* m4/stack-direction.m4 (SV_STACK_DIRECTION): Assume the stack grows -down on LoongArch. ---- - m4/stack-direction.m4 | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/m4/stack-direction.m4 b/m4/stack-direction.m4 -index 9328725..e682be9 100644 ---- a/m4/stack-direction.m4 -+++ b/m4/stack-direction.m4 -@@ -1,4 +1,4 @@ --# stack-direction.m4 serial 7 -+# stack-direction.m4 serial 8 - dnl Copyright (C) 2002-2021 Free Software Foundation, Inc. - dnl This file is free software, distributed under the terms of the GNU - dnl General Public License. As a special exception to the GNU General -@@ -32,6 +32,7 @@ AC_DEFUN([SV_STACK_DIRECTION], - i?86 | x86_64 | \ - i860 | \ - ia64 | \ -+ loongarch* | \ - m32r | \ - m68* | \ - m88k | \ --- -cgit v1.1 From 658c76a54fa14b5a1cbaa966be7dac3fe1fe38a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Janne=20He=C3=9F?= Date: Fri, 28 Apr 2023 12:26:10 +0200 Subject: [PATCH 2/4] gnugrep: Re-enable check phase by default long-pattern-perf is now disabled by default because the test is expensive. --- pkgs/tools/text/gnugrep/default.nix | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/pkgs/tools/text/gnugrep/default.nix b/pkgs/tools/text/gnugrep/default.nix index 09c6dfc00c71..9b6936ec9b65 100644 --- a/pkgs/tools/text/gnugrep/default.nix +++ b/pkgs/tools/text/gnugrep/default.nix @@ -16,17 +16,14 @@ stdenv.mkDerivation { hash = "sha256-HbKu3eidDepCsW2VKPiUyNFdrk4ZC1muzHj1qVEnbqs="; }; - # Perl is needed for testing - nativeBuildInputs = [ perl ] ++ lib.optional stdenv.hostPlatform.isLoongArch64 autoreconfHook; + nativeCheckInputs = [ perl ]; outputs = [ "out" "info" ]; # the man pages are rather small buildInputs = [ pcre libiconv ]; # cygwin: FAIL: multibyte-white-space # freebsd: FAIL mb-non-UTF8-performance - # all platforms: timing sensitivity in long-pattern-perf - #doCheck = !stdenv.isDarwin && !stdenv.isSunOS && !stdenv.isCygwin && !stdenv.isFreeBSD; - doCheck = false; + doCheck = !stdenv.isCygwin && !stdenv.isFreeBSD; # On macOS, force use of mkdir -p, since Grep's fallback # (./install-sh) is broken. From 11c8f46850d0f56fa14c880db4e06fade3db2d67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Janne=20He=C3=9F?= Date: Fri, 28 Apr 2023 12:47:45 +0200 Subject: [PATCH 3/4] gnugrep/stdenv: Fix PCRE support by replacing PCRE lib --- pkgs/stdenv/darwin/default.nix | 12 +++++++----- pkgs/stdenv/darwin/make-bootstrap-tools.nix | 4 ++-- pkgs/stdenv/linux/default.nix | 5 +++-- pkgs/stdenv/linux/make-bootstrap-tools.nix | 2 +- pkgs/tools/text/gnugrep/default.nix | 8 +++++--- 5 files changed, 18 insertions(+), 13 deletions(-) diff --git a/pkgs/stdenv/darwin/default.nix b/pkgs/stdenv/darwin/default.nix index ffe99da86922..780717db56b8 100644 --- a/pkgs/stdenv/darwin/default.nix +++ b/pkgs/stdenv/darwin/default.nix @@ -487,7 +487,7 @@ rec { nghttp2.lib coreutils gnugrep - pcre.out + gnugrep.pcre2.out gmp libiconv brotli.lib @@ -563,7 +563,7 @@ rec { nghttp2.lib coreutils gnugrep - pcre.out + gnugrep.pcre2.out gmp libiconv brotli.lib @@ -587,8 +587,9 @@ rec { persistent = self: super: with prevStage; { inherit gnumake gzip gnused bzip2 ed xz patch bash python3 - ncurses libffi zlib gmp pcre gnugrep cmake + ncurses libffi zlib gmp gnugrep cmake coreutils findutils diffutils patchutils ninja libxml2; + inherit (gnugrep) pcre2; # Hack to make sure we don't link ncurses in bootstrap tools. The proper # solution is to avoid passing -L/nix-store/...-bootstrap-tools/lib, @@ -643,8 +644,9 @@ rec { persistent = self: super: with prevStage; { inherit gnumake gzip gnused bzip2 gawk ed xz patch bash - ncurses libffi zlib gmp pcre gnugrep + ncurses libffi zlib gmp gnugrep coreutils findutils diffutils patchutils pbzx; + inherit (gnugrep) pcre2; darwin = super.darwin.overrideScope (_: _: { inherit (darwin) dyld ICU Libsystem Csu libiconv rewrite-tbd; @@ -734,7 +736,7 @@ rec { gawk gnugrep patch - pcre.out + gnugrep.pcre2.out gettext binutils.bintools binutils.bintools.lib diff --git a/pkgs/stdenv/darwin/make-bootstrap-tools.nix b/pkgs/stdenv/darwin/make-bootstrap-tools.nix index 5433e7afecf9..9c580447a6f4 100644 --- a/pkgs/stdenv/darwin/make-bootstrap-tools.nix +++ b/pkgs/stdenv/darwin/make-bootstrap-tools.nix @@ -54,7 +54,7 @@ in rec { chmod -R u+w $out/include cp -rL ${darwin.ICU}/include* $out/include cp -rL ${libiconv}/include/* $out/include - cp -rL ${lib.getDev gnugrep.pcre}/include/* $out/include + cp -rL ${lib.getDev gnugrep.pcre2}/include/* $out/include mv $out/include $out/include-Libsystem # Copy coreutils, bash, etc. @@ -86,7 +86,7 @@ in rec { cp -d ${libssh2.out}/lib/libssh*.dylib $out/lib cp -d ${lib.getLib openssl}/lib/*.dylib $out/lib - cp -d ${gnugrep.pcre.out}/lib/libpcre*.dylib $out/lib + cp -d ${gnugrep.pcre2.out}/lib/libpcre2*.dylib $out/lib cp -d ${lib.getLib libiconv}/lib/lib*.dylib $out/lib cp -d ${lib.getLib gettext}/lib/libintl*.dylib $out/lib chmod +x $out/lib/libintl*.dylib diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix index 6a743f60c9b2..20e988444559 100644 --- a/pkgs/stdenv/linux/default.nix +++ b/pkgs/stdenv/linux/default.nix @@ -639,7 +639,7 @@ in ] # Library dependencies ++ map getLib ( - [ attr acl zlib pcre libidn2 libunistring ] + [ attr acl zlib gnugrep.pcre2 libidn2 libunistring ] ++ lib.optional (gawk.libsigsegv != null) gawk.libsigsegv ) # More complicated cases @@ -658,7 +658,8 @@ in inherit (prevStage) gzip bzip2 xz bash coreutils diffutils findutils gawk gnused gnutar gnugrep gnupatch patchelf - attr acl zlib pcre libunistring; + attr acl zlib libunistring; + inherit (prevStage.gnugrep) pcre2; ${localSystem.libc} = getLibc prevStage; # Hack: avoid libidn2.{bin,dev} referencing bootstrap tools. There's a logical cycle. diff --git a/pkgs/stdenv/linux/make-bootstrap-tools.nix b/pkgs/stdenv/linux/make-bootstrap-tools.nix index 06750e5c7138..d6c4da0ab2be 100644 --- a/pkgs/stdenv/linux/make-bootstrap-tools.nix +++ b/pkgs/stdenv/linux/make-bootstrap-tools.nix @@ -130,7 +130,7 @@ in with pkgs; rec { cp -d ${patch}/bin/* $out/bin cp ${patchelf}/bin/* $out/bin - cp -d ${gnugrep.pcre.out}/lib/libpcre*.so* $out/lib # needed by grep + cp -d ${gnugrep.pcre2.out}/lib/libpcre2*.so* $out/lib # needed by grep # Copy what we need of GCC. cp -d ${bootGCC.out}/bin/gcc $out/bin diff --git a/pkgs/tools/text/gnugrep/default.nix b/pkgs/tools/text/gnugrep/default.nix index 9b6936ec9b65..992645a15db5 100644 --- a/pkgs/tools/text/gnugrep/default.nix +++ b/pkgs/tools/text/gnugrep/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchurl, pcre, libiconv, perl, autoreconfHook }: +{ lib, stdenv, fetchurl, pcre2, libiconv, perl, autoreconfHook }: # Note: this package is used for bootstrapping fetchurl, and thus # cannot use fetchpatch! All mutable patches (generated by GitHub or @@ -19,7 +19,7 @@ stdenv.mkDerivation { nativeCheckInputs = [ perl ]; outputs = [ "out" "info" ]; # the man pages are rather small - buildInputs = [ pcre libiconv ]; + buildInputs = [ pcre2 libiconv ]; # cygwin: FAIL: multibyte-white-space # freebsd: FAIL mb-non-UTF8-performance @@ -63,5 +63,7 @@ stdenv.mkDerivation { mainProgram = "grep"; }; - passthru = {inherit pcre;}; + passthru = { + inherit pcre2; + }; } From 10396d0f86dc5f9edefda391bc2bae1c23d80b79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Janne=20He=C3=9F?= Date: Mon, 1 May 2023 11:09:37 +0200 Subject: [PATCH 4/4] gnugrep: Add locales for tests This brings the number of skipped tests down from 48 to 9. --- pkgs/tools/text/gnugrep/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/text/gnugrep/default.nix b/pkgs/tools/text/gnugrep/default.nix index 992645a15db5..a4ee316937af 100644 --- a/pkgs/tools/text/gnugrep/default.nix +++ b/pkgs/tools/text/gnugrep/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchurl, pcre2, libiconv, perl, autoreconfHook }: +{ lib, stdenv, glibcLocales, fetchurl, pcre2, libiconv, perl, autoreconfHook }: # Note: this package is used for bootstrapping fetchurl, and thus # cannot use fetchpatch! All mutable patches (generated by GitHub or @@ -16,7 +16,7 @@ stdenv.mkDerivation { hash = "sha256-HbKu3eidDepCsW2VKPiUyNFdrk4ZC1muzHj1qVEnbqs="; }; - nativeCheckInputs = [ perl ]; + nativeCheckInputs = [ perl glibcLocales ]; outputs = [ "out" "info" ]; # the man pages are rather small buildInputs = [ pcre2 libiconv ];