poetry2nix/hooks/default.nix
adisbladis 31effa4e4e Add hook to remove normal files from site-packages
This is a fairly common packaging mistake that it's better that we solve in a hook than in one-by-one in overrides.

Normal files in site-packages isn't always a mistake, so we can't clean them up wholesale, but we can clean up some common mistakes.
2022-02-05 21:50:20 +12:00

94 lines
2.2 KiB
Nix

{ python
, buildPackages
, makeSetupHook
, wheel
, pip
}:
let
callPackage = python.pythonForBuild.pkgs.callPackage;
pythonInterpreter = python.pythonForBuild.interpreter;
pythonSitePackages = python.sitePackages;
in
{
removePathDependenciesHook = callPackage
(
{}:
makeSetupHook
{
name = "remove-path-dependencies.sh";
deps = [ ];
substitutions = {
inherit pythonInterpreter;
yj = "${buildPackages.yj}/bin/yj";
pyprojectPatchScript = "${./pyproject-without-special-deps.py}";
fields = [ "path" ];
kind = "path";
};
} ./remove-special-dependencies.sh
)
{ };
removeGitDependenciesHook = callPackage
({}:
makeSetupHook
{
name = "remove-git-dependencies.sh";
deps = [ ];
substitutions = {
inherit pythonInterpreter;
yj = "${buildPackages.yj}/bin/yj";
pyprojectPatchScript = "${./pyproject-without-special-deps.py}";
fields = [ "git" "branch" "rev" "tag" ];
kind = "git";
};
} ./remove-special-dependencies.sh
)
{ };
pipBuildHook = callPackage
(
{ pip, wheel }:
makeSetupHook
{
name = "pip-build-hook.sh";
deps = [ pip wheel ];
substitutions = {
inherit pythonInterpreter pythonSitePackages;
};
} ./pip-build-hook.sh
)
{ };
poetry2nixFixupHook = callPackage
(
{}:
makeSetupHook
{
name = "fixup-hook.sh";
deps = [ ];
substitutions = {
inherit pythonSitePackages;
filenames = builtins.concatStringsSep " " [
"pyproject.toml"
"README.md"
];
};
} ./fixup-hook.sh
)
{ };
# When the "wheel" package itself is a wheel the nixpkgs hook (which pulls in "wheel") leads to infinite recursion
# It doesn't _really_ depend on wheel though, it just copies the wheel.
wheelUnpackHook = callPackage
({}:
makeSetupHook
{
name = "wheel-unpack-hook.sh";
deps = [ ];
} ./wheel-unpack-hook.sh
)
{ };
}