50 lines
1.3 KiB
Nix
50 lines
1.3 KiB
Nix
{ mkDerivation
|
||
, writeShellScript
|
||
, mtree, make
|
||
, bsdSetupHook, netbsdSetupHook
|
||
, makeMinimal
|
||
, mandoc, groff, rsync
|
||
, compatIfNeeded, fts
|
||
|
||
}:
|
||
|
||
# HACK: to ensure parent directories exist. This emulates GNU
|
||
# install’s -D option. No alternative seems to exist in BSD install.
|
||
let
|
||
binstall = writeShellScript "binstall" ''
|
||
set -eu
|
||
for last in "$@"; do true; done
|
||
mkdir -p $(dirname $last)
|
||
@out@/bin/xinstall "$@"
|
||
'';
|
||
in
|
||
mkDerivation {
|
||
path = "usr.bin/xinstall";
|
||
version = "9.2";
|
||
sha256 = "1f6pbz3qv1qcrchdxif8p5lbmnwl8b9nq615hsd3cyl4avd5bfqj";
|
||
extraPaths = [ mtree.src make.src ];
|
||
nativeBuildInputs = [
|
||
bsdSetupHook netbsdSetupHook
|
||
makeMinimal
|
||
mandoc groff rsync
|
||
];
|
||
skipIncludesPhase = true;
|
||
buildInputs = compatIfNeeded
|
||
# fts header is needed. glibc already has this header, but musl doesn't,
|
||
# so make sure pkgsMusl.netbsd.install still builds in case you want to
|
||
# remove it!
|
||
++ [ fts ];
|
||
installPhase = ''
|
||
runHook preInstall
|
||
|
||
install -D install.1 $out/share/man/man1/install.1
|
||
install -D xinstall $out/bin/xinstall
|
||
install -D -m 0550 ${binstall} $out/bin/binstall
|
||
substituteInPlace $out/bin/binstall --subst-var out
|
||
ln -s $out/bin/binstall $out/bin/install
|
||
|
||
runHook postInstall
|
||
'';
|
||
setupHook = ./install-setup-hook.sh;
|
||
}
|