From 4beb2b294186f069b5c16cb4164dc4b17f01100b Mon Sep 17 00:00:00 2001 From: Daiderd Jordan Date: Tue, 24 Nov 2020 19:26:50 +0100 Subject: [PATCH 1/3] always include setuptools in buildInputs When cross compiling setuptools isn't available in the build environment but needed for eg. python setup.py egg_info. --- mk-poetry-dep.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mk-poetry-dep.nix b/mk-poetry-dep.nix index e765165..360f901 100644 --- a/mk-poetry-dep.nix +++ b/mk-poetry-dep.nix @@ -27,6 +27,7 @@ pythonPackages.callPackage , ... }@args: let + inherit (pkgs) stdenv; inherit (poetryLib) isCompatible getManyLinuxDeps fetchFromPypi moduleName; inherit (import ./pep425.nix { @@ -113,9 +114,10 @@ pythonPackages.callPackage buildInputs = ( baseBuildInputs + ++ lib.optional (stdenv.buildPlatform != stdenv.hostPlatform) pythonPackages.setuptools ++ lib.optional (!isSource) (getManyLinuxDeps fileInfo.name).pkg ++ lib.optional isLocal buildSystemPkgs - ++ lib.optional (!__isBootstrap) [ pythonPackages.poetry ] + ++ lib.optional (!__isBootstrap) pythonPackages.poetry ); propagatedBuildInputs = From a16e8aa76034dfa7b32029b5e534a6e0e113a7e4 Mon Sep 17 00:00:00 2001 From: Daiderd Jordan Date: Tue, 24 Nov 2020 19:28:40 +0100 Subject: [PATCH 2/3] various cross override fixes --- overrides.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/overrides.nix b/overrides.nix index 15ff4d8..660e51b 100644 --- a/overrides.nix +++ b/overrides.nix @@ -120,6 +120,8 @@ self: super: cryptography = super.cryptography.overridePythonAttrs ( old: { + nativeBuildInputs = old.nativeBuildInputs or [] + ++ stdenv.lib.optional (stdenv.buildPlatform != stdenv.hostPlatform) self.python.pythonForBuild.pkgs.cffi; buildInputs = old.buildInputs ++ [ pkgs.openssl ]; } ); @@ -620,8 +622,8 @@ self: super: withMysql = old.passthru.withMysql or false; in { - buildInputs = old.buildInputs ++ [ self.cython pkgs.sqlite ]; - propagatedBuildInputs = old.propagatedBuildInputs + buildInputs = old.buildInputs or [] ++ [ pkgs.sqlite ]; + propagatedBuildInputs = old.propagatedBuildInputs or [] ++ lib.optional withPostgres self.psycopg2 ++ lib.optional withMysql self.mysql-connector; } From 11d33aced2df33de9695dbf04c1976843727f86a Mon Sep 17 00:00:00 2001 From: Daiderd Jordan Date: Tue, 24 Nov 2020 19:31:05 +0100 Subject: [PATCH 3/3] exclude build python from poetry dependencies While building PYTHONPATH includes pythonForBuild which can only be used during the build. Just tracking propagated inputs here should be enough. --- overrides.nix | 4 ++-- pkgs/poetry/default.nix | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/overrides.nix b/overrides.nix index 660e51b..00c63ad 100644 --- a/overrides.nix +++ b/overrides.nix @@ -640,8 +640,8 @@ self: super: # "Vendor" dependencies (for build-system support) postPatch = '' echo "import sys" >> poetry/__init__.py - for path in ''${PYTHONPATH//:/ }; do echo $path; done | uniq | while read path; do - echo "sys.path.insert(0, \"$path\")" >> poetry/__init__.py + for path in $propagatedBuildInputs; do + echo "sys.path.insert(0, \"$path\")" >> poetry/__init__.py done ''; diff --git a/pkgs/poetry/default.nix b/pkgs/poetry/default.nix index f93eb11..70470ba 100644 --- a/pkgs/poetry/default.nix +++ b/pkgs/poetry/default.nix @@ -15,8 +15,8 @@ poetry2nix.mkPoetryApplication { # "Vendor" dependencies (for build-system support) postPatch = '' echo "import sys" >> poetry/__init__.py - for path in ''${PYTHONPATH//:/ }; do echo $path; done | uniq | while read path; do - echo "sys.path.insert(0, \"$path\")" >> poetry/__init__.py + for path in $propagatedBuildInputs; do + echo "sys.path.insert(0, \"$path\")" >> poetry/__init__.py done '';