diff options
author | Frederik Rietdijk <fridh@fridh.nl> | 2017-11-23 16:38:39 +0100 |
---|---|---|
committer | Frederik Rietdijk <fridh@fridh.nl> | 2017-11-23 16:38:39 +0100 |
commit | 35f5912db57a5102377d9687c69c6c7b0753979e (patch) | |
tree | b0fe2b8fcb4cc69e25aa3376d912eac7f3148a9c /pkgs/development/interpreters | |
parent | 6ad79678d49826e5bcac705949a4cd2241727172 (diff) | |
parent | 59d82d889577bfbdeeb47912eb245846f33e0ae2 (diff) | |
download | nixlib-35f5912db57a5102377d9687c69c6c7b0753979e.tar nixlib-35f5912db57a5102377d9687c69c6c7b0753979e.tar.gz nixlib-35f5912db57a5102377d9687c69c6c7b0753979e.tar.bz2 nixlib-35f5912db57a5102377d9687c69c6c7b0753979e.tar.lz nixlib-35f5912db57a5102377d9687c69c6c7b0753979e.tar.xz nixlib-35f5912db57a5102377d9687c69c6c7b0753979e.tar.zst nixlib-35f5912db57a5102377d9687c69c6c7b0753979e.zip |
Merge remote-tracking branch 'upstream/python-unstable' into HEAD
Diffstat (limited to 'pkgs/development/interpreters')
8 files changed, 37 insertions, 30 deletions
diff --git a/pkgs/development/interpreters/python/build-python-package.nix b/pkgs/development/interpreters/python/build-python-package.nix index b26bf1539cd5..982542c1fc3e 100644 --- a/pkgs/development/interpreters/python/build-python-package.nix +++ b/pkgs/development/interpreters/python/build-python-package.nix @@ -1,11 +1,14 @@ -/* This function provides a generic Python package builder. It is - intended to work with packages that use `distutils/setuptools' - (http://pypi.python.org/pypi/setuptools/), which represents a large - number of Python packages nowadays. */ +# This function provides a generic Python package builder, +# and can build packages that use distutils, setuptools or flit. { lib , python -, mkPythonDerivation +, wrapPython +, setuptools +, unzip +, ensureNewerSourcesHook +, pythonModule +, namePrefix , bootstrapped-pip , flit }: @@ -15,6 +18,9 @@ let flit-specific = import ./build-python-package-flit.nix { inherit python flit; }; 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; + }; in { diff --git a/pkgs/development/interpreters/python/cpython/2.7/default.nix b/pkgs/development/interpreters/python/cpython/2.7/default.nix index eb2a46cb3b79..c7483a815297 100644 --- a/pkgs/development/interpreters/python/cpython/2.7/default.nix +++ b/pkgs/development/interpreters/python/cpython/2.7/default.nix @@ -201,7 +201,7 @@ in stdenv.mkDerivation { in rec { inherit libPrefix sitePackages x11Support hasDistutilsCxxPatch; executable = libPrefix; - buildEnv = callPackage ../../wrapper.nix { python = self; }; + buildEnv = callPackage ../../wrapper.nix { python = self; inherit (pythonPackages) requiredPythonModules; }; withPackages = import ../../with-packages.nix { inherit buildEnv pythonPackages;}; pkgs = pythonPackages; isPy2 = true; diff --git a/pkgs/development/interpreters/python/cpython/3.4/default.nix b/pkgs/development/interpreters/python/cpython/3.4/default.nix index a924b543fe38..5c13035be1b1 100644 --- a/pkgs/development/interpreters/python/cpython/3.4/default.nix +++ b/pkgs/development/interpreters/python/cpython/3.4/default.nix @@ -160,7 +160,7 @@ in stdenv.mkDerivation { in rec { inherit libPrefix sitePackages x11Support; executable = "${libPrefix}m"; - buildEnv = callPackage ../../wrapper.nix { python = self; }; + buildEnv = callPackage ../../wrapper.nix { python = self; inherit (pythonPackages) requiredPythonModules; }; withPackages = import ../../with-packages.nix { inherit buildEnv pythonPackages;}; pkgs = pythonPackages; isPy3 = true; diff --git a/pkgs/development/interpreters/python/cpython/3.5/default.nix b/pkgs/development/interpreters/python/cpython/3.5/default.nix index abe220e0a3e5..951cb367528f 100644 --- a/pkgs/development/interpreters/python/cpython/3.5/default.nix +++ b/pkgs/development/interpreters/python/cpython/3.5/default.nix @@ -154,7 +154,7 @@ in stdenv.mkDerivation { in rec { inherit libPrefix sitePackages x11Support; executable = "${libPrefix}m"; - buildEnv = callPackage ../../wrapper.nix { python = self; }; + buildEnv = callPackage ../../wrapper.nix { python = self; inherit (pythonPackages) requiredPythonModules; }; withPackages = import ../../with-packages.nix { inherit buildEnv pythonPackages;}; pkgs = pythonPackages; isPy3 = true; diff --git a/pkgs/development/interpreters/python/cpython/3.6/default.nix b/pkgs/development/interpreters/python/cpython/3.6/default.nix index 1614159a7ef0..b44e167b9f00 100644 --- a/pkgs/development/interpreters/python/cpython/3.6/default.nix +++ b/pkgs/development/interpreters/python/cpython/3.6/default.nix @@ -153,7 +153,7 @@ in stdenv.mkDerivation { in rec { inherit libPrefix sitePackages x11Support; executable = "${libPrefix}m"; - buildEnv = callPackage ../../wrapper.nix { python = self; }; + buildEnv = callPackage ../../wrapper.nix { python = self; inherit (pythonPackages) requiredPythonModules; }; withPackages = import ../../with-packages.nix { inherit buildEnv pythonPackages;}; pkgs = pythonPackages; isPy3 = true; diff --git a/pkgs/development/interpreters/python/mk-python-derivation.nix b/pkgs/development/interpreters/python/mk-python-derivation.nix index 098ab0b1719f..a0cac7d1ddda 100644 --- a/pkgs/development/interpreters/python/mk-python-derivation.nix +++ b/pkgs/development/interpreters/python/mk-python-derivation.nix @@ -1,4 +1,4 @@ -/* Generic builder for Python packages that come without a setup.py. */ +# Generic builder. { lib , python @@ -6,13 +6,13 @@ , setuptools , unzip , ensureNewerSourcesHook +# Whether the derivation provides a Python module or not. +, pythonModule +, namePrefix }: { name ? "${attrs.pname}-${attrs.version}" -# by default prefix `name` e.g. "python3.3-${name}" -, namePrefix ? python.libPrefix + "-" - # Dependencies for building the package , buildInputs ? [] @@ -54,18 +54,21 @@ if disabled then throw "${name} not supported for interpreter ${python.executable}" else -python.stdenv.mkDerivation (builtins.removeAttrs attrs ["disabled" "checkInputs"] // { +python.stdenv.mkDerivation (builtins.removeAttrs attrs [ + "disabled" "checkInputs" "doCheck" "doInstallCheck" "dontWrapPythonPrograms" "catchConflicts" + ] // { name = namePrefix + name; - inherit pythonPath; - - buildInputs = [ wrapPython ] ++ buildInputs ++ pythonPath - ++ [ (ensureNewerSourcesHook { year = "1980"; }) ] + buildInputs = ([ wrapPython (ensureNewerSourcesHook { year = "1980"; }) ] ++ (lib.optional (lib.hasSuffix "zip" attrs.src.name or "") unzip) - ++ lib.optionals doCheck checkInputs; + ++ lib.optionals doCheck checkInputs + ++ lib.optional catchConflicts setuptools # If we nog longer propagate setuptools + ++ buildInputs + ++ pythonPath + ); - # propagate python/setuptools to active setup-hook in nix-shell + # Propagate python and setuptools. We should stop propagating setuptools. propagatedBuildInputs = propagatedBuildInputs ++ [ python setuptools ]; # Python packages don't have a checkPhase, only an installCheckPhase @@ -83,15 +86,12 @@ python.stdenv.mkDerivation (builtins.removeAttrs attrs ["disabled" "checkInputs" passthru = { inherit python; # The python interpreter + inherit pythonModule; } // passthru; - meta = with lib.maintainers; { + meta = { # default to python's platforms platforms = python.meta.platforms; - } // meta // { - # add extra maintainer(s) to every package - maintainers = (meta.maintainers or []) ++ [ chaoflow ]; - # a marker for release utilities to discover python packages isBuildPythonPackage = python.meta.platforms; - }; + } // meta; }) diff --git a/pkgs/development/interpreters/python/pypy/2.7/default.nix b/pkgs/development/interpreters/python/pypy/2.7/default.nix index f5ee13cfc121..aea389d160fe 100644 --- a/pkgs/development/interpreters/python/pypy/2.7/default.nix +++ b/pkgs/development/interpreters/python/pypy/2.7/default.nix @@ -137,7 +137,7 @@ in stdenv.mkDerivation rec { inherit zlibSupport libPrefix sitePackages; executable = "pypy"; isPypy = true; - buildEnv = callPackage ../../wrapper.nix { python = self; }; + buildEnv = callPackage ../../wrapper.nix { python = self; inherit (pythonPackages) requiredPythonModules; }; interpreter = "${self}/bin/${executable}"; withPackages = import ../../with-packages.nix { inherit buildEnv pythonPackages;}; pkgs = pythonPackages; diff --git a/pkgs/development/interpreters/python/wrapper.nix b/pkgs/development/interpreters/python/wrapper.nix index f42caf92c170..fc521828ffc4 100644 --- a/pkgs/development/interpreters/python/wrapper.nix +++ b/pkgs/development/interpreters/python/wrapper.nix @@ -2,13 +2,14 @@ , extraLibs ? [] , extraOutputsToInstall ? [] , postBuild ? "" -, ignoreCollisions ? false }: +, ignoreCollisions ? false +, requiredPythonModules +, }: # Create a python executable that knows about additional packages. let - recursivePthLoader = import ../../python-modules/recursive-pth-loader/default.nix { stdenv = stdenv; python = python; }; env = let - paths = stdenv.lib.closePropagation (extraLibs ++ [ python recursivePthLoader ] ) ; + paths = requiredPythonModules (extraLibs ++ [ python ] ) ; in buildEnv { name = "${python.name}-env"; |