diff options
Diffstat (limited to 'pkgs/development/tools/poetry2nix/poetry2nix/mk-poetry-dep.nix')
-rw-r--r-- | pkgs/development/tools/poetry2nix/poetry2nix/mk-poetry-dep.nix | 36 |
1 files changed, 29 insertions, 7 deletions
diff --git a/pkgs/development/tools/poetry2nix/poetry2nix/mk-poetry-dep.nix b/pkgs/development/tools/poetry2nix/poetry2nix/mk-poetry-dep.nix index cbfa3dafa75..5ae35dfed49 100644 --- a/pkgs/development/tools/poetry2nix/poetry2nix/mk-poetry-dep.nix +++ b/pkgs/development/tools/poetry2nix/poetry2nix/mk-poetry-dep.nix @@ -83,7 +83,13 @@ pythonPackages.callPackage ( else (builtins.elemAt (lib.strings.splitString "-" name) 2); }; - baseBuildInputs = lib.optional (name != "setuptools_scm" && name != "setuptools-scm") pythonPackages.setuptools-scm; + # Prevent infinite recursion + skipSetupToolsSCM = [ + "setuptools_scm" + "setuptools-scm" + "toml" # Toml is an extra for setuptools-scm + ]; + baseBuildInputs = lib.optional (! lib.elem name skipSetupToolsSCM) pythonPackages.setuptools-scm; format = if isLocal then "pyproject" else if isGit then "setuptools" else fileInfo.format; @@ -100,21 +106,37 @@ pythonPackages.callPackage ( # Stripping pre-built wheels lead to `ELF load command address/offset not properly aligned` dontStrip = format == "wheel"; - nativeBuildInputs = if (!isSource && (getManyLinuxDeps fileInfo.name).str != null) then [ autoPatchelfHook ] else []; + nativeBuildInputs = [ + pythonPackages.poetry2nixFixupHook + ] + ++ lib.optional (!isSource && (getManyLinuxDeps fileInfo.name).str != null) autoPatchelfHook + ++ lib.optional (format == "pyproject") pythonPackages.removePathDependenciesHook + ; + buildInputs = ( baseBuildInputs ++ lib.optional (!isSource) (getManyLinuxDeps fileInfo.name).pkg ++ lib.optional isLocal buildSystemPkgs ); - propagatedBuildInputs = - # Some dependencies like django get the attribute name django - # but dependencies try to access Django - builtins.map (n: pythonPackages.${lib.toLower n}) (builtins.attrNames dependencies); + propagatedBuildInputs = let + compat = isCompatible python.pythonVersion; + deps = lib.filterAttrs (n: v: v) ( + lib.mapAttrs ( + n: v: let + constraints = v.python or ""; + in + compat constraints + ) dependencies + ); + depAttrs = lib.attrNames deps; + in + builtins.map (n: pythonPackages.${lib.toLower n}) depAttrs; meta = { broken = ! isCompatible python.pythonVersion python-versions; license = []; + inherit (python.meta) platforms; }; passthru = { @@ -129,7 +151,7 @@ pythonPackages.callPackage ( inherit (source) url; rev = source.reference; } - ) else if isLocal then (localDepPath) else fetchFromPypi { + ) else if isLocal then (poetryLib.cleanPythonSources { src = localDepPath; }) else fetchFromPypi { pname = name; inherit (fileInfo) file hash kind; }; |