Python: rewrite requiredPythonModules. Add requiredPythonModules attribute to derivation

wip/yesman
Frederik Rietdijk 7 years ago
parent 87317bab0a
commit a334930490
  1. 4
      pkgs/development/interpreters/python/build-python-package.nix
  2. 11
      pkgs/development/interpreters/python/mk-python-derivation.nix
  3. 14
      pkgs/top-level/python-packages.nix

@ -7,7 +7,7 @@
, setuptools
, unzip
, ensureNewerSourcesHook
, pythonModule
, toPythonModule
, namePrefix
, bootstrapped-pip
, flit
@ -19,7 +19,7 @@ let
wheel-specific = import ./build-python-package-wheel.nix { };
common = import ./build-python-package-common.nix { inherit python bootstrapped-pip; };
mkPythonDerivation = import ./mk-python-derivation.nix {
inherit lib python wrapPython setuptools unzip ensureNewerSourcesHook pythonModule namePrefix;
inherit lib python wrapPython setuptools unzip ensureNewerSourcesHook toPythonModule namePrefix;
};
in

@ -7,7 +7,7 @@
, unzip
, ensureNewerSourcesHook
# Whether the derivation provides a Python module or not.
, pythonModule
, toPythonModule
, namePrefix
}:
@ -54,7 +54,7 @@ if disabled
then throw "${name} not supported for interpreter ${python.executable}"
else
python.stdenv.mkDerivation (builtins.removeAttrs attrs [
toPythonModule (python.stdenv.mkDerivation (builtins.removeAttrs attrs [
"disabled" "checkInputs" "doCheck" "doInstallCheck" "dontWrapPythonPrograms" "catchConflicts"
] // {
@ -84,14 +84,9 @@ python.stdenv.mkDerivation (builtins.removeAttrs attrs [
${python.interpreter} ${./catch_conflicts}/catch_conflicts.py
'' + attrs.postFixup or '''';
passthru = {
inherit python; # The python interpreter
inherit pythonModule;
} // passthru;
meta = {
# default to python's platforms
platforms = python.meta.platforms;
isBuildPythonPackage = python.meta.platforms;
} // meta;
})
}))

@ -56,14 +56,14 @@ let
flit = self.flit;
# We want Python libraries to be named like e.g. "python3.6-${name}"
inherit namePrefix;
pythonModule = python;
inherit toPythonModule;
}));
buildPythonApplication = makeOverridablePythonPackage ( makeOverridable (callPackage ../development/interpreters/python/build-python-package.nix {
inherit bootstrapped-pip;
flit = self.flit;
namePrefix = "";
pythonModule = false;
toPythonModule = x: x; # Application does not provide modules.
}));
graphiteVersion = "1.0.2";
@ -91,11 +91,9 @@ let
# Get list of required Python modules given a list of derivations.
requiredPythonModules = drvs: let
filterNull = list: filter (x: !isNull x) list;
conditionalGetRecurse = attr: condition: drv: let f = conditionalGetRecurse attr condition; in
(if (condition drv) then unique [drv]++(concatMap f (filterNull(getAttr attr drv))) else []);
_required = drv: conditionalGetRecurse "propagatedBuildInputs" hasPythonModule drv;
in [python] ++ (unique (concatMap _required (filterNull drvs)));
removeNull = list: filter (x: !isNull x) list;
modules = filter hasPythonModule (removeNull drvs);
in unique ([python] ++ modules ++ concatLists (catAttrs "requiredPythonModules" modules));
# Create a PYTHONPATH from a list of derivations. This function recurses into the items to find derivations
# providing Python modules.
@ -106,9 +104,9 @@ let
drv.overrideAttrs( oldAttrs: {
# Use passthru in order to prevent rebuilds when possible.
passthru = (oldAttrs.passthru or {})// {
name = namePrefix + oldAttrs.name;
pythonModule = python;
pythonPath = [ ]; # Deprecated, for compatibility.
requiredPythonModules = requiredPythonModules drv.propagatedBuildInputs;
};
});

Loading…
Cancel
Save