80 lines
1.9 KiB
Nix
80 lines
1.9 KiB
Nix
{ lib
|
|
, callPackage
|
|
, python27Packages
|
|
, installShellFiles
|
|
, fetchFromGitHub
|
|
, file
|
|
, findutils
|
|
, gettext
|
|
, bats
|
|
, bash
|
|
, doCheck ? true
|
|
}:
|
|
let
|
|
version = "0.4.2";
|
|
rSrc = fetchFromGitHub {
|
|
owner = "abathur";
|
|
repo = "resholve";
|
|
rev = "v${version}";
|
|
hash = "sha256-ArUQjqh4LRvFLzHiTIcae0q/VFxFF/X9eOFeRnYmTO0=";
|
|
};
|
|
deps = callPackage ./deps.nix {
|
|
/*
|
|
resholve needs to patch Oil, but trying to avoid adding
|
|
them all *to* nixpkgs, since they aren't specific to
|
|
nix/nixpkgs.
|
|
*/
|
|
oilPatches = [
|
|
"${rSrc}/0001-add_setup_py.patch"
|
|
"${rSrc}/0002-add_MANIFEST_in.patch"
|
|
"${rSrc}/0003-fix_codegen_shebang.patch"
|
|
"${rSrc}/0004-disable-internal-py-yajl-for-nix-built.patch"
|
|
];
|
|
};
|
|
in
|
|
python27Packages.buildPythonApplication {
|
|
pname = "resholve";
|
|
inherit version;
|
|
src = rSrc;
|
|
format = "other";
|
|
|
|
nativeBuildInputs = [ installShellFiles ];
|
|
|
|
propagatedBuildInputs = [ deps.oildev python27Packages.ConfigArgParse ];
|
|
|
|
patchPhase = ''
|
|
for file in resholve; do
|
|
substituteInPlace $file --subst-var-by version ${version}
|
|
done
|
|
'';
|
|
|
|
installPhase = ''
|
|
install -Dm755 resholve $out/bin/resholve
|
|
installManPage resholve.1
|
|
'';
|
|
|
|
inherit doCheck;
|
|
checkInputs = [ bats ];
|
|
RESHOLVE_PATH = "${lib.makeBinPath [ file findutils gettext ]}";
|
|
|
|
checkPhase = ''
|
|
# explicit interpreter for test suite
|
|
export INTERP="${bash}/bin/bash" PATH="$out/bin:$PATH"
|
|
patchShebangs .
|
|
./test.sh
|
|
'';
|
|
|
|
# Do not propagate Python; may be obsoleted by nixos/nixpkgs#102613
|
|
# for context on why, see abathur/resholve#20
|
|
postFixup = ''
|
|
rm $out/nix-support/propagated-build-inputs
|
|
'';
|
|
|
|
meta = with lib; {
|
|
description = "Resolve external shell-script dependencies";
|
|
homepage = "https://github.com/abathur/resholve";
|
|
license = with licenses; [ mit ];
|
|
maintainers = with maintainers; [ abathur ];
|
|
platforms = platforms.all;
|
|
};
|
|
}
|