From 86ab83260fa002c3a0bab81d5965b6edff376759 Mon Sep 17 00:00:00 2001 From: Frederik Rietdijk Date: Tue, 20 Sep 2022 09:49:55 +0200 Subject: [PATCH] Revert "Revert "buildPython*: store dist (wheel/sdist) in dist output"" Most packages were fixed on python-unstable. This reverts commit 0a4898c21a04336bf9919da3ec95050890e77e5b. --- .../development/interpreters/python/hooks/default.nix | 5 +++++ .../python/hooks/python-output-dist-hook.sh | 10 ++++++++++ .../interpreters/python/mk-python-derivation.nix | 11 ++++++++++- pkgs/top-level/python-packages.nix | 1 + 4 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/interpreters/python/hooks/python-output-dist-hook.sh diff --git a/pkgs/development/interpreters/python/hooks/default.nix b/pkgs/development/interpreters/python/hooks/default.nix index 903ad0215cdf..63e94b567035 100644 --- a/pkgs/development/interpreters/python/hooks/default.nix +++ b/pkgs/development/interpreters/python/hooks/default.nix @@ -114,6 +114,11 @@ in rec { }; } ./python-namespaces-hook.sh) {}; + pythonOutputDistHook = callPackage ({ }: + makeSetupHook { + name = "python-output-dist-hook"; + } ./python-output-dist-hook.sh ) {}; + pythonRecompileBytecodeHook = callPackage ({ }: makeSetupHook { name = "python-recompile-bytecode-hook"; diff --git a/pkgs/development/interpreters/python/hooks/python-output-dist-hook.sh b/pkgs/development/interpreters/python/hooks/python-output-dist-hook.sh new file mode 100644 index 000000000000..e73e45cd597a --- /dev/null +++ b/pkgs/development/interpreters/python/hooks/python-output-dist-hook.sh @@ -0,0 +1,10 @@ +# Setup hook for storing dist folder (wheels/sdists) in a separate output +echo "Sourcing python-catch-conflicts-hook.sh" + +pythonOutputDistPhase() { + echo "Executing pythonOutputDistPhase" + mv "dist" "$dist" + echo "Finished executing pythonOutputDistPhase" +} + +preFixupPhases+=" pythonOutputDistPhase" diff --git a/pkgs/development/interpreters/python/mk-python-derivation.nix b/pkgs/development/interpreters/python/mk-python-derivation.nix index a032c08d2a82..abb1ceb7879e 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; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 392d6a57c3d5..ec4353e1985c 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -119,6 +119,7 @@ in { pythonCatchConflictsHook pythonImportsCheckHook pythonNamespacesHook + pythonOutputDistHook pythonRecompileBytecodeHook pythonRelaxDepsHook pythonRemoveBinBytecodeHook