about summary refs log tree commit diff
path: root/nixpkgs/pkgs/tools/misc/findutils/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/tools/misc/findutils/default.nix')
-rw-r--r--nixpkgs/pkgs/tools/misc/findutils/default.nix71
1 files changed, 71 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/tools/misc/findutils/default.nix b/nixpkgs/pkgs/tools/misc/findutils/default.nix
new file mode 100644
index 000000000000..18881ef181d2
--- /dev/null
+++ b/nixpkgs/pkgs/tools/misc/findutils/default.nix
@@ -0,0 +1,71 @@
+{ lib, stdenv, fetchurl
+, coreutils
+}:
+
+# 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.
+
+stdenv.mkDerivation rec {
+  pname = "findutils";
+  version = "4.7.0";
+
+  src = fetchurl {
+    url = "mirror://gnu/findutils/${pname}-${version}.tar.xz";
+    sha256 = "16kqz9yz98dasmj70jwf5py7jk558w96w0vgp3zf9xsqk3gzpzn5";
+  };
+
+  postPatch = ''
+    substituteInPlace xargs/xargs.c --replace 'char default_cmd[] = "echo";' 'char default_cmd[] = "${coreutils}/bin/echo";'
+  '';
+
+  patches = [ ./no-install-statedir.patch ]
+    # fix gnulib tests on 32-bit ARM. Included on findutils master.
+    # https://lists.gnu.org/r/bug-gnulib/2020-08/msg00225.html
+    ++ lib.optional stdenv.hostPlatform.isAarch32 ./fix-gnulib-tests-arm.patch;
+
+  buildInputs = [ coreutils ]; # bin/updatedb script needs to call sort
+
+  # Since glibc-2.25 the i686 tests hang reliably right after test-sleep.
+  doCheck
+    =  !stdenv.hostPlatform.isDarwin
+    && !(stdenv.hostPlatform.libc == "glibc" && stdenv.hostPlatform.isi686)
+    && (stdenv.hostPlatform.libc != "musl")
+    && stdenv.hostPlatform == stdenv.buildPlatform;
+
+  outputs = [ "out" "info" ];
+
+  configureFlags = [
+    # "sort" need not be on the PATH as a run-time dep, so we need to tell
+    # configure where it is. Covers the cross and native case alike.
+    "SORT=${coreutils}/bin/sort"
+    "--localstatedir=/var/cache"
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = {
+    homepage = "https://www.gnu.org/software/findutils/";
+    description = "GNU Find Utilities, the basic directory searching utilities of the GNU operating system";
+
+    longDescription = ''
+      The GNU Find Utilities are the basic directory searching
+      utilities of the GNU operating system.  These programs are
+      typically used in conjunction with other programs to provide
+      modular and powerful directory search and file locating
+      capabilities to other commands.
+
+      The tools supplied with this package are:
+
+          * find - search for files in a directory hierarchy;
+          * locate - list files in databases that match a pattern;
+          * updatedb - update a file name database;
+          * xargs - build and execute command lines from standard input.
+    '';
+
+    platforms = lib.platforms.all;
+
+    license = lib.licenses.gpl3Plus;
+  };
+}