Merge remote-tracking branch 'upstream/python-unstable' into HEAD
This commit is contained in:
@@ -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
|
||||
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
})
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user