From adbc59c9d3b6be2cdb1c29b84afa8b30d9cc7593 Mon Sep 17 00:00:00 2001 From: Frederik Rietdijk Date: Fri, 9 Sep 2022 13:36:31 +0200 Subject: buildPython*: store dist (wheel/sdist) in dist output Store the intermediate artifacts. In time, we should build, install and test in separate derivations as that reduces circular dependencies, avoids rebuilds when fixing tests, and makes it possible to use the wheels for creating say virtualenv's. --- pkgs/development/interpreters/python/mk-python-derivation.nix | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'pkgs/development/interpreters/python/mk-python-derivation.nix') diff --git a/pkgs/development/interpreters/python/mk-python-derivation.nix b/pkgs/development/interpreters/python/mk-python-derivation.nix index f37ad592cb4..f82611554a2 100644 --- a/pkgs/development/interpreters/python/mk-python-derivation.nix +++ b/pkgs/development/interpreters/python/mk-python-derivation.nix @@ -17,6 +17,7 @@ , pythonCatchConflictsHook , pythonImportsCheckHook , pythonNamespacesHook +, pythonOutputDistHook , pythonRemoveBinBytecodeHook , pythonRemoveTestsDirHook , setuptoolsBuildHook @@ -49,6 +50,8 @@ # Enabled to detect some (native)BuildInputs mistakes , strictDeps ? true +, outputs ? [ "out" ] + # used to disable derivation, useful for specific python versions , disabled ? false @@ -106,11 +109,13 @@ else let inherit (python) stdenv; + withDistOutput = lib.elem format ["pyproject" "setuptools" "flit"]; + name_ = name; self = toPythonModule (stdenv.mkDerivation ((builtins.removeAttrs attrs [ "disabled" "checkPhase" "checkInputs" "doCheck" "doInstallCheck" "dontWrapPythonPrograms" "catchConflicts" "format" - "disabledTestPaths" + "disabledTestPaths" "outputs" ]) // { name = namePrefix + name_; @@ -144,6 +149,8 @@ let ] ++ lib.optionals (python.pythonAtLeast "3.3") [ # Optionally enforce PEP420 for python3 pythonNamespacesHook + ] ++ lib.optionals withDistOutput [ + pythonOutputDistHook ] ++ nativeBuildInputs; buildInputs = buildInputs ++ pythonPath; @@ -177,6 +184,8 @@ let # Python packages built through cross-compilation are always for the host platform. disallowedReferences = lib.optionals (python.stdenv.hostPlatform != python.stdenv.buildPlatform) [ python.pythonForBuild ]; + outputs = outputs ++ lib.optional withDistOutput "dist"; + meta = { # default to python's platforms platforms = python.meta.platforms; -- cgit 1.4.1