summary refs log tree commit diff
diff options
context:
space:
mode:
authorJonathan Ringer <jonringer117@gmail.com>2020-03-02 09:37:05 -0800
committerFrederik Rietdijk <freddyrietdijk@fridh.nl>2020-03-03 20:01:00 +0100
commit3973a3c79c255db358a82f1ffc88dc2cda0f03d6 (patch)
treef4841d3a18e878505b58c3a43a07a4059814f2d4
parentfe898d5f76131477e6fe5bdeda90d07bac682751 (diff)
downloadnixpkgs-3973a3c79c255db358a82f1ffc88dc2cda0f03d6.tar
nixpkgs-3973a3c79c255db358a82f1ffc88dc2cda0f03d6.tar.gz
nixpkgs-3973a3c79c255db358a82f1ffc88dc2cda0f03d6.tar.bz2
nixpkgs-3973a3c79c255db358a82f1ffc88dc2cda0f03d6.tar.lz
nixpkgs-3973a3c79c255db358a82f1ffc88dc2cda0f03d6.tar.xz
nixpkgs-3973a3c79c255db358a82f1ffc88dc2cda0f03d6.tar.zst
nixpkgs-3973a3c79c255db358a82f1ffc88dc2cda0f03d6.zip
python: add pythonRemoveTestsDirHook
This will automatically remove a top-level "tests"
directory from being installed.
-rw-r--r--pkgs/development/interpreters/python/hooks/default.nix8
-rw-r--r--pkgs/development/interpreters/python/hooks/python-remove-tests-dir-hook.sh15
-rw-r--r--pkgs/development/interpreters/python/mk-python-derivation.nix2
-rw-r--r--pkgs/top-level/python-packages.nix2
4 files changed, 26 insertions, 1 deletions
diff --git a/pkgs/development/interpreters/python/hooks/default.nix b/pkgs/development/interpreters/python/hooks/default.nix
index 159637ae9d5..47690320e81 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 00000000000..83bea786db6
--- /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 020298cc8e9..180bc63857c 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 1ce9b7627a9..d260567f1c6 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