
* aescrypt: change `${pname}` to string literal * bandwidth: change `${pname}` to string literal * bc: change `${pname}` to string literal * bdfresize: change `${pname}` to string literal * birdfont: change `${pname}` to string literal * brltty: change `${pname}` to string literal * calamares: change `${pname}` to string literal * ccal: change `${pname}` to string literal * clac: change `${pname}` to string literal * colord-gtk4: change `${pname}` to string literal * colord: change `${pname}` to string literal * colorless: change `${pname}` to string literal * cunit: change `${pname}` to string literal * datamash: change `${pname}` to string literal * dateutils: change `${pname}` to string literal * desktop-file-utils: change `${pname}` to string literal * digitemp: change `${pname}` to string literal * ding-libs: change `${pname}` to string literal * docbook2mdoc: change `${pname}` to string literal * dtach: change `${pname}` to string literal * empty: change `${pname}` to string literal * entr: change `${pname}` to string literal * envsubst: change `${pname}` to string literal * ethtool: change `${pname}` to string literal * fdtools: change `${pname}` to string literal * filebench: change `${pname}` to string literal * findutils: change `${pname}` to string literal * fortune: change `${pname}` to string literal * fpart: change `${pname}` to string literal * fxlinuxprintutil: change `${pname}` to string literal * gbdfed: change `${pname}` to string literal * getopt: change `${pname}` to string literal * github-copilot-cli: change `${pname}` to string literal * gparted: change `${pname}` to string literal * hddtemp: change `${pname}` to string literal * hdfview: change `${pname}` to string literal * hpcg: change `${pname}` to string literal * hpl: change `${pname}` to string literal * ink: change `${pname}` to string literal * ised: change `${pname}` to string literal * isoimagewriter: change `${pname}` to string literal * kronometer: change `${pname}` to string literal * libsForQt5.qt5ct: change `${pname}` to string literal * lilo: change `${pname}` to string literal * lockfileProgs: change `${pname}` to string literal * map-cmd: change `${pname}` to string literal * mcrypt: change `${pname}` to string literal * most: change `${pname}` to string literal * mrtg: change `${pname}` to string literal * ms-sys: change `${pname}` to string literal * multitime: change `${pname}` to string literal * nbench: change `${pname}` to string literal * osinfo-db-tools: change `${pname}` to string literal * parallel-full: change `${pname}` to string literal * phoronix-test-suite: change `${pname}` to string literal * pod2mdoc: change `${pname}` to string literal * powerline-rs: change `${pname}` to string literal * recoverjpeg: change `${pname}` to string literal * recutils: change `${pname}` to string literal * routino: change `${pname}` to string literal * rpm-ostree: change `${pname}` to string literal * screen: change `${pname}` to string literal * sharedown: change `${pname}` to string literal * statserial: change `${pname}` to string literal * taoup: change `${pname}` to string literal * texi2mdoc: change `${pname}` to string literal * tmpwatch: change `${pname}` to string literal * toilet: change `${pname}` to string literal * triehash: change `${pname}` to string literal * ttfautohint: change `${pname}` to string literal * txt2man: change `${pname}` to string literal * urjtag: change `${pname}` to string literal * uudeview: change `${pname}` to string literal * uutils-coreutils: change `${pname}` to string literal * vttest: change `${pname}` to string literal * wacomtablet: change `${pname}` to string literal * xcd: change `${pname}` to string literal * xdaliclock: change `${pname}` to string literal * xjobs: change `${pname}` to string literal * feishin: change `${pname}` to string literal * gifsicle: change `${pname}` to string literal * nzbhydra2: change `${pname}` to string literal * vatprism: change `${pname}` to string literal * webfs: change `${pname}` to string literal * yggstack: change `${pname}` to string literal
100 lines
3.3 KiB
Nix
100 lines
3.3 KiB
Nix
{ lib, stdenv, fetchurl
|
|
, updateAutotoolsGnuConfigScriptsHook
|
|
, 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.10.0";
|
|
|
|
src = fetchurl {
|
|
url = "mirror://gnu/findutils/findutils-${version}.tar.xz";
|
|
sha256 = "sha256-E4fgtn/yR9Kr3pmPkN+/cMFJE5Glnd/suK5ph4nwpPU=";
|
|
};
|
|
|
|
postPatch = ''
|
|
substituteInPlace xargs/xargs.c --replace 'char default_cmd[] = "echo";' 'char default_cmd[] = "${coreutils}/bin/echo";'
|
|
'';
|
|
|
|
patches = [ ./no-install-statedir.patch ];
|
|
|
|
nativeBuildInputs = [ updateAutotoolsGnuConfigScriptsHook ];
|
|
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.isFreeBSD
|
|
&& !(stdenv.hostPlatform.libc == "glibc" && stdenv.hostPlatform.isi686)
|
|
&& (stdenv.hostPlatform.libc != "musl")
|
|
&& stdenv.hostPlatform == stdenv.buildPlatform;
|
|
|
|
outputs = [ "out" "info" "locate"];
|
|
|
|
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"
|
|
];
|
|
|
|
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\\)="
|
|
];
|
|
|
|
postInstall = ''
|
|
moveToOutput bin/locate $locate
|
|
moveToOutput bin/updatedb $locate
|
|
'';
|
|
|
|
# can't move man pages in postInstall because the multi-output hook will move them back to $out
|
|
postFixup = ''
|
|
moveToOutput share/man/man5 $locate
|
|
moveToOutput share/man/man1/locate.1.gz $locate
|
|
moveToOutput share/man/man1/updatedb.1.gz $locate
|
|
'';
|
|
|
|
enableParallelBuilding = true;
|
|
|
|
# bionic libc is super weird and has issues with fortify outside of its own libc, check this comment:
|
|
# https://github.com/NixOS/nixpkgs/pull/192630#discussion_r978985593
|
|
# or you can check libc/include/sys/cdefs.h in bionic source code
|
|
hardeningDisable = lib.optional (stdenv.hostPlatform.libc == "bionic") "fortify";
|
|
|
|
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;
|
|
* xargs - build and execute command lines from standard input.
|
|
|
|
The following are available in the locate output:
|
|
|
|
* locate - list files in databases that match a pattern;
|
|
* updatedb - update a file name database;
|
|
'';
|
|
|
|
platforms = lib.platforms.all;
|
|
|
|
license = lib.licenses.gpl3Plus;
|
|
|
|
mainProgram = "find";
|
|
};
|
|
}
|