python: Use makeScopeWithSplicing
Now non-`buildInputs` that are python packages should be resolved correctly.
This commit is contained in:
parent
330d468002
commit
b57c5d4456
5 changed files with 95 additions and 19 deletions
|
@ -19,6 +19,10 @@
|
|||
# For the Python package set
|
||||
, packageOverrides ? (self: super: {})
|
||||
, buildPackages
|
||||
, pkgsBuildBuild
|
||||
, pkgsBuildTarget
|
||||
, pkgsHostHost
|
||||
, pkgsTargetTarget
|
||||
, sourceVersion
|
||||
, sha256
|
||||
, passthruFun
|
||||
|
@ -35,7 +39,8 @@ with stdenv.lib;
|
|||
|
||||
let
|
||||
|
||||
pythonForBuild = buildPackages.${"python${sourceVersion.major}${sourceVersion.minor}"};
|
||||
pythonAttr = "python${sourceVersion.major}${sourceVersion.minor}";
|
||||
pythonForBuild = buildPackages.${pythonAttr};
|
||||
|
||||
passthru = passthruFun rec {
|
||||
inherit self sourceVersion packageOverrides;
|
||||
|
@ -45,6 +50,10 @@ let
|
|||
pythonVersion = with sourceVersion; "${major}.${minor}";
|
||||
sitePackages = "lib/${libPrefix}/site-packages";
|
||||
inherit hasDistutilsCxxPatch pythonForBuild;
|
||||
pythonPackagesBuildBuild = pkgsBuildBuild.${pythonAttr};
|
||||
pythonPackagesBuildTarget = pkgsBuildTarget.${pythonAttr};
|
||||
pythonPackagesHostHost = pkgsHostHost.${pythonAttr};
|
||||
pythonPackagesTargetTarget = pkgsTargetTarget.${pythonAttr} or {};
|
||||
} // {
|
||||
inherit ucsEncoding;
|
||||
};
|
||||
|
|
|
@ -20,7 +20,11 @@
|
|||
# For the Python package set
|
||||
, packageOverrides ? (self: super: {})
|
||||
, buildPackages
|
||||
, pythonForBuild ? buildPackages.${"python${sourceVersion.major}${sourceVersion.minor}"}
|
||||
, pkgsBuildBuild
|
||||
, pkgsBuildTarget
|
||||
, pkgsHostHost
|
||||
, pkgsTargetTarget
|
||||
, pythonForBuild ? buildPackages.${pythonAttr}
|
||||
, sourceVersion
|
||||
, sha256
|
||||
, passthruFun
|
||||
|
@ -36,6 +40,7 @@
|
|||
# Not using optimizations on Darwin
|
||||
# configure: error: llvm-profdata is required for a --enable-optimizations build but could not be found.
|
||||
, enableOptimizations ? (!stdenv.isDarwin)
|
||||
, pythonAttr ? "python${sourceVersion.major}${sourceVersion.minor}"
|
||||
}:
|
||||
|
||||
# Note: this package is used for bootstrapping fetchurl, and thus
|
||||
|
@ -54,6 +59,7 @@ with stdenv.lib;
|
|||
|
||||
let
|
||||
|
||||
|
||||
passthru = passthruFun rec {
|
||||
inherit self sourceVersion packageOverrides;
|
||||
implementation = "cpython";
|
||||
|
@ -62,6 +68,10 @@ let
|
|||
pythonVersion = with sourceVersion; "${major}.${minor}";
|
||||
sitePackages = "lib/${libPrefix}/site-packages";
|
||||
inherit hasDistutilsCxxPatch pythonForBuild;
|
||||
pythonPackagesBuildBuild = pkgsBuildBuild.${pythonAttr};
|
||||
pythonPackagesBuildTarget = pkgsBuildTarget.${pythonAttr};
|
||||
pythonPackagesHostHost = pkgsHostHost.${pythonAttr};
|
||||
pythonPackagesTargetTarget = pkgsTargetTarget.${pythonAttr} or {};
|
||||
};
|
||||
|
||||
version = with sourceVersion; "${major}.${minor}.${patch}${suffix}";
|
||||
|
|
|
@ -14,13 +14,70 @@ with pkgs;
|
|||
, packageOverrides
|
||||
, sitePackages
|
||||
, hasDistutilsCxxPatch
|
||||
, pythonForBuild
|
||||
, self
|
||||
, pythonPackagesBuildBuild
|
||||
, pythonForBuild # provides pythonPackagesBuildHost
|
||||
, pythonPackagesBuildTarget
|
||||
, pythonPackagesHostHost
|
||||
, self # is pythonPackagesHostTarget
|
||||
, pythonPackagesTargetTarget
|
||||
}: let
|
||||
pythonPackages = callPackage ../../../top-level/python-packages.nix {
|
||||
python = self;
|
||||
overrides = packageOverrides;
|
||||
};
|
||||
pythonPackages = callPackage
|
||||
({ pkgs, stdenv, python, overrides }: let
|
||||
pythonPackagesFun = import ../../../top-level/python-packages.nix {
|
||||
inherit stdenv pkgs;
|
||||
python = self;
|
||||
};
|
||||
otherSplices = {
|
||||
selfBuildBuild = pythonPackagesBuildBuild;
|
||||
selfBuildHost = pythonForBuild.pkgs;
|
||||
selfBuildTarget = pythonPackagesBuildTarget;
|
||||
selfHostHost = pythonPackagesHostHost;
|
||||
selfTargetTarget = pythonPackagesTargetTarget;
|
||||
};
|
||||
keep = self: {
|
||||
# TODO maybe only define these here so nothing is needed to be kept in sync.
|
||||
inherit (self)
|
||||
isPy27 isPy35 isPy36 isPy37 isPy38 isPy39 isPy3k isPyPy pythonAtLeast pythonOlder
|
||||
python bootstrapped-pip buildPythonPackage buildPythonApplication
|
||||
fetchPypi
|
||||
hasPythonModule requiredPythonModules makePythonPath disabledIf
|
||||
toPythonModule toPythonApplication
|
||||
buildSetupcfg
|
||||
|
||||
eggUnpackHook
|
||||
eggBuildHook
|
||||
eggInstallHook
|
||||
flitBuildHook
|
||||
pipBuildHook
|
||||
pipInstallHook
|
||||
pytestCheckHook
|
||||
pythonCatchConflictsHook
|
||||
pythonImportsCheckHook
|
||||
pythonNamespacesHook
|
||||
pythonRecompileBytecodeHook
|
||||
pythonRemoveBinBytecodeHook
|
||||
pythonRemoveTestsDirHook
|
||||
setuptoolsBuildHook
|
||||
setuptoolsCheckHook
|
||||
venvShellHook
|
||||
wheelUnpackHook
|
||||
|
||||
wrapPython
|
||||
|
||||
pythonPackages
|
||||
|
||||
recursivePthLoader
|
||||
;
|
||||
};
|
||||
in lib.makeScopeWithSplicing
|
||||
pkgs.splicePackages
|
||||
pkgs.newScope
|
||||
otherSplices
|
||||
keep
|
||||
(lib.extends overrides pythonPackagesFun))
|
||||
{
|
||||
overrides = packageOverrides;
|
||||
};
|
||||
in rec {
|
||||
isPy27 = pythonVersion == "2.7";
|
||||
isPy35 = pythonVersion == "3.5";
|
||||
|
@ -48,7 +105,6 @@ with pkgs;
|
|||
python = self;
|
||||
};
|
||||
};
|
||||
|
||||
in {
|
||||
|
||||
python27 = callPackage ./cpython/2.7 {
|
||||
|
|
|
@ -22,9 +22,15 @@ let
|
|||
implementation = "pypy";
|
||||
libPrefix = "pypy${pythonVersion}";
|
||||
executable = "pypy${if isPy3k then "3" else ""}";
|
||||
pythonForBuild = self; # No cross-compiling for now.
|
||||
sitePackages = "site-packages";
|
||||
hasDistutilsCxxPatch = false;
|
||||
|
||||
# No cross-compiling for now.
|
||||
pythonForBuild = self;
|
||||
pythonPackagesBuildBuild = {};
|
||||
pythonPackagesBuildTarget = {};
|
||||
pythonPackagesHostHost = {};
|
||||
pythonPackagesTargetTarget = {};
|
||||
};
|
||||
pname = passthru.executable;
|
||||
version = with sourceVersion; "${major}.${minor}.${patch}";
|
||||
|
|
|
@ -9,19 +9,16 @@
|
|||
{ pkgs
|
||||
, stdenv
|
||||
, python
|
||||
, overrides ? (self: super: {})
|
||||
}:
|
||||
|
||||
with pkgs.lib;
|
||||
|
||||
let
|
||||
packages = ( self:
|
||||
self:
|
||||
|
||||
let
|
||||
inherit (self) callPackage;
|
||||
inherit (python.passthru) isPy27 isPy35 isPy36 isPy37 isPy38 isPy39 isPy3k isPyPy pythonAtLeast pythonOlder;
|
||||
|
||||
callPackage = pkgs.newScope self;
|
||||
|
||||
namePrefix = python.libPrefix + "-";
|
||||
|
||||
bootstrapped-pip = callPackage ../development/python-modules/bootstrapped-pip { };
|
||||
|
@ -102,7 +99,7 @@ in {
|
|||
|
||||
inherit (python.passthru) isPy27 isPy35 isPy36 isPy37 isPy38 isPy39 isPy3k isPyPy pythonAtLeast pythonOlder;
|
||||
inherit python bootstrapped-pip buildPythonPackage buildPythonApplication;
|
||||
inherit fetchPypi callPackage;
|
||||
inherit fetchPypi;
|
||||
inherit hasPythonModule requiredPythonModules makePythonPath disabledIf;
|
||||
inherit toPythonModule toPythonApplication;
|
||||
inherit buildSetupcfg;
|
||||
|
@ -7960,6 +7957,4 @@ in {
|
|||
|
||||
zxcvbn = callPackage ../development/python-modules/zxcvbn { };
|
||||
|
||||
});
|
||||
|
||||
in fix' (extends overrides packages)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue