From 3973a3c79c255db358a82f1ffc88dc2cda0f03d6 Mon Sep 17 00:00:00 2001 From: Jonathan Ringer Date: Mon, 2 Mar 2020 09:37:05 -0800 Subject: [PATCH] python: add pythonRemoveTestsDirHook This will automatically remove a top-level "tests" directory from being installed. --- .../interpreters/python/hooks/default.nix | 8 ++++++++ .../python/hooks/python-remove-tests-dir-hook.sh | 15 +++++++++++++++ .../interpreters/python/mk-python-derivation.nix | 2 ++ pkgs/top-level/python-packages.nix | 2 +- 4 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/interpreters/python/hooks/python-remove-tests-dir-hook.sh diff --git a/pkgs/development/interpreters/python/hooks/default.nix b/pkgs/development/interpreters/python/hooks/default.nix index 159637ae9d5f..47690320e81e 100644 --- a/pkgs/development/interpreters/python/hooks/default.nix +++ b/pkgs/development/interpreters/python/hooks/default.nix @@ -94,6 +94,14 @@ in rec { name = "python-remove-bin-bytecode-hook"; } ./python-remove-bin-bytecode-hook.sh) {}; + pythonRemoveTestsDirHook = callPackage ({ }: + makeSetupHook { + name = "python-remove-tests-dir-hook"; + substitutions = { + inherit pythonSitePackages; + }; + } ./python-remove-tests-dir-hook.sh) {}; + setuptoolsBuildHook = callPackage ({ setuptools, wheel }: makeSetupHook { name = "setuptools-setup-hook"; diff --git a/pkgs/development/interpreters/python/hooks/python-remove-tests-dir-hook.sh b/pkgs/development/interpreters/python/hooks/python-remove-tests-dir-hook.sh new file mode 100644 index 000000000000..83bea786db6d --- /dev/null +++ b/pkgs/development/interpreters/python/hooks/python-remove-tests-dir-hook.sh @@ -0,0 +1,15 @@ +# Clean up top-level tests directory in site-package installation. +echo "Sourcing python-remove-tests-dir-hook" + +pythonRemoveTestsDir() { + echo "Executing pythonRemoveTestsDir" + + rm -rf $out/@pythonSitePackages@/tests + + echo "Finished executing pythonRemoveTestsDir" +} + +if [ -z "${dontUsePythonRemoveTestsDir-}" ]; then + postFixupHooks+=(pythonRemoveTestsDir) +fi + diff --git a/pkgs/development/interpreters/python/mk-python-derivation.nix b/pkgs/development/interpreters/python/mk-python-derivation.nix index 020298cc8e9f..180bc63857c2 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 , pythonRemoveBinBytecodeHook +, pythonRemoveTestsDirHook , setuptoolsBuildHook , setuptoolsCheckHook , wheelUnpackHook @@ -108,6 +109,7 @@ let python wrapPython ensureNewerSourcesForZipFilesHook # move to wheel installer (pip) or builder (setuptools, flit, ...)? + pythonRemoveTestsDirHook ] ++ lib.optionals catchConflicts [ setuptools pythonCatchConflictsHook ] ++ lib.optionals removeBinBytecode [ diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 1ce9b7627a93..d260567f1c6c 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -108,7 +108,7 @@ in { inherit buildSetupcfg; inherit (callPackage ../development/interpreters/python/hooks { }) - eggUnpackHook eggBuildHook eggInstallHook flitBuildHook pipBuildHook pipInstallHook pytestCheckHook pythonCatchConflictsHook pythonImportsCheckHook pythonRemoveBinBytecodeHook setuptoolsBuildHook setuptoolsCheckHook venvShellHook wheelUnpackHook; + eggUnpackHook eggBuildHook eggInstallHook flitBuildHook pipBuildHook pipInstallHook pytestCheckHook pythonCatchConflictsHook pythonImportsCheckHook pythonRemoveBinBytecodeHook pythonRemoveTestsDirHook setuptoolsBuildHook setuptoolsCheckHook venvShellHook wheelUnpackHook; # helpers