Files
nixpkgs/pkgs/development/interpreters/python/build-python-package.nix
T

45 lines
1.5 KiB
Nix
Raw Normal View History

# This function provides a generic Python package builder,
# and can build packages that use distutils, setuptools or flit.
2009-05-24 21:02:59 +00:00
{ lib
, config
, python
2017-05-28 09:20:47 +02:00
, wrapPython
, setuptools
, unzip
, ensureNewerSourcesForZipFilesHook
, toPythonModule
2017-05-28 09:20:47 +02:00
, namePrefix
, bootstrapped-pip
2016-12-03 13:04:52 +01:00
, flit
}:
2009-05-24 21:02:59 +00:00
2016-12-03 13:04:52 +01:00
let
setuptools-specific = import ./build-python-package-setuptools.nix { inherit lib python bootstrapped-pip; };
2017-02-01 14:26:27 +01:00
flit-specific = import ./build-python-package-flit.nix { inherit python flit; };
2016-12-03 13:04:52 +01:00
wheel-specific = import ./build-python-package-wheel.nix { };
common = import ./build-python-package-common.nix { inherit python bootstrapped-pip; };
2017-05-28 09:20:47 +02:00
mkPythonDerivation = import ./mk-python-derivation.nix {
inherit lib config python wrapPython setuptools unzip ensureNewerSourcesForZipFilesHook toPythonModule namePrefix;
2017-05-28 09:20:47 +02:00
};
2016-12-03 13:04:52 +01:00
in
2016-04-26 17:57:13 +02:00
2016-12-03 13:04:52 +01:00
{
# Several package formats are supported.
# "setuptools" : Install a common setuptools/distutils based package. This builds a wheel.
# "wheel" : Install from a pre-compiled wheel.
# "flit" : Install a flit package. This builds a wheel.
# "other" : Provide your own buildPhase and installPhase.
format ? "setuptools"
, ... } @ attrs:
2009-05-24 21:02:59 +00:00
let
2016-04-26 17:57:13 +02:00
formatspecific =
2016-12-03 13:04:52 +01:00
if format == "setuptools" then common (setuptools-specific attrs)
else if format == "flit" then common (flit-specific attrs)
else if format == "wheel" then common (wheel-specific attrs)
else if format == "other" then {}
else throw "Unsupported format ${format}";
2016-04-26 17:57:13 +02:00
2017-02-01 14:26:27 +01:00
in mkPythonDerivation ( attrs // formatspecific )