mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-02-24 21:14:52 +00:00

Prior to August 2023, any config.guess generated by autoconf will include a hardcoded /usr/bin/uname invocation for FreeBSD on any architecture other than arm. This clearly doesn't work under nix. We must then update or otherwise patch each old config.guess.
81 lines
2.6 KiB
Nix
81 lines
2.6 KiB
Nix
{ lib, stdenv, updateAutotoolsGnuConfigScriptsHook, glibcLocales, fetchurl, pcre2, libiconv, perl, runtimeShellPackage }:
|
|
|
|
# Note: this package is used for bootstrapping fetchurl, and thus
|
|
# cannot use fetchpatch! All mutable patches (generated by GitHub or
|
|
# cgit) that are needed here should be included directly in Nixpkgs as
|
|
# files.
|
|
|
|
let version = "3.11"; in
|
|
|
|
stdenv.mkDerivation {
|
|
pname = "gnugrep";
|
|
inherit version;
|
|
|
|
src = fetchurl {
|
|
url = "mirror://gnu/grep/grep-${version}.tar.xz";
|
|
hash = "sha256-HbKu3eidDepCsW2VKPiUyNFdrk4ZC1muzHj1qVEnbqs=";
|
|
};
|
|
|
|
# Some gnulib tests fail
|
|
# - on Musl: https://github.com/NixOS/nixpkgs/pull/228714
|
|
# - on x86_64-darwin: https://github.com/NixOS/nixpkgs/pull/228714#issuecomment-1576826330
|
|
postPatch = if stdenv.hostPlatform.isMusl || (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64) then ''
|
|
sed -i 's:gnulib-tests::g' Makefile.in
|
|
'' else null;
|
|
|
|
nativeCheckInputs = [ perl glibcLocales ];
|
|
outputs = [ "out" "info" ]; # the man pages are rather small
|
|
|
|
nativeBuildInputs = [ updateAutotoolsGnuConfigScriptsHook ];
|
|
buildInputs = [ pcre2 libiconv runtimeShellPackage ];
|
|
|
|
# cygwin: FAIL: multibyte-white-space
|
|
# freebsd: FAIL mb-non-UTF8-performance
|
|
# x86_64-darwin: fails 'stack-overflow' tests on Rosetta 2 emulator
|
|
doCheck = !stdenv.isCygwin && !stdenv.isFreeBSD && !(stdenv.isDarwin && stdenv.hostPlatform.isx86_64) && !stdenv.buildPlatform.isRiscV64;
|
|
|
|
# On macOS, force use of mkdir -p, since Grep's fallback
|
|
# (./install-sh) is broken.
|
|
preConfigure = ''
|
|
export MKDIR_P="mkdir -p"
|
|
'';
|
|
|
|
enableParallelBuilding = true;
|
|
|
|
# Fix reference to sh in bootstrap-tools, and invoke grep via
|
|
# absolute path rather than looking at argv[0].
|
|
postInstall =
|
|
''
|
|
rm $out/bin/egrep $out/bin/fgrep
|
|
echo "#! /bin/sh" > $out/bin/egrep
|
|
echo "exec $out/bin/grep -E \"\$@\"" >> $out/bin/egrep
|
|
echo "#! /bin/sh" > $out/bin/fgrep
|
|
echo "exec $out/bin/grep -F \"\$@\"" >> $out/bin/fgrep
|
|
chmod +x $out/bin/egrep $out/bin/fgrep
|
|
'';
|
|
|
|
meta = with lib; {
|
|
homepage = "https://www.gnu.org/software/grep/";
|
|
description = "GNU implementation of the Unix grep command";
|
|
|
|
longDescription = ''
|
|
The grep command searches one or more input files for lines
|
|
containing a match to a specified pattern. By default, grep
|
|
prints the matching lines.
|
|
'';
|
|
|
|
license = licenses.gpl3Plus;
|
|
|
|
maintainers = [
|
|
maintainers.das_j
|
|
maintainers.m00wl
|
|
];
|
|
platforms = platforms.all;
|
|
mainProgram = "grep";
|
|
};
|
|
|
|
passthru = {
|
|
inherit pcre2;
|
|
};
|
|
}
|