summary refs log tree commit diff
path: root/pkgs/development/interpreters
diff options
context:
space:
mode:
authoradisbladis <adisbladis@gmail.com>2020-01-08 13:29:03 +0000
committeradisbladis <adisbladis@gmail.com>2020-01-08 13:59:04 +0000
commit2d6f1ff4dd2ce208fce624466b4eeae54eafd61f (patch)
tree4c10fda6b6e45505f9845ceb80725c63a3ebbd26 /pkgs/development/interpreters
parent380220c237d479b81182884afec76e77685e9a36 (diff)
downloadnixpkgs-2d6f1ff4dd2ce208fce624466b4eeae54eafd61f.tar
nixpkgs-2d6f1ff4dd2ce208fce624466b4eeae54eafd61f.tar.gz
nixpkgs-2d6f1ff4dd2ce208fce624466b4eeae54eafd61f.tar.bz2
nixpkgs-2d6f1ff4dd2ce208fce624466b4eeae54eafd61f.tar.lz
nixpkgs-2d6f1ff4dd2ce208fce624466b4eeae54eafd61f.tar.xz
nixpkgs-2d6f1ff4dd2ce208fce624466b4eeae54eafd61f.tar.zst
nixpkgs-2d6f1ff4dd2ce208fce624466b4eeae54eafd61f.zip
python: Add support for installing Python eggs
Diffstat (limited to 'pkgs/development/interpreters')
-rw-r--r--pkgs/development/interpreters/python/hooks/default.nix21
-rw-r--r--pkgs/development/interpreters/python/hooks/egg-build-hook.sh15
-rw-r--r--pkgs/development/interpreters/python/hooks/egg-install-hook.sh21
-rw-r--r--pkgs/development/interpreters/python/hooks/egg-unpack-hook.sh17
-rw-r--r--pkgs/development/interpreters/python/mk-python-derivation.nix5
5 files changed, 79 insertions, 0 deletions
diff --git a/pkgs/development/interpreters/python/hooks/default.nix b/pkgs/development/interpreters/python/hooks/default.nix
index 861cb38c060..f05b3b1eec6 100644
--- a/pkgs/development/interpreters/python/hooks/default.nix
+++ b/pkgs/development/interpreters/python/hooks/default.nix
@@ -11,6 +11,27 @@ let
   setuppy = ../run_setup.py;
 in rec {
 
+  eggBuildHook = callPackage ({ }:
+    makeSetupHook {
+      name = "egg-build-hook.sh";
+      deps = [ ];
+    } ./egg-build-hook.sh) {};
+
+  eggInstallHook = callPackage ({ setuptools }:
+    makeSetupHook {
+      name = "egg-install-hook.sh";
+      deps = [ setuptools ];
+      substitutions = {
+        inherit pythonInterpreter pythonSitePackages;
+      };
+    } ./egg-install-hook.sh) {};
+
+  eggUnpackHook = callPackage ({ }:
+    makeSetupHook {
+      name = "egg-unpack-hook.sh";
+      deps = [ ];
+    } ./egg-unpack-hook.sh) {};
+
   flitBuildHook = callPackage ({ flit }:
     makeSetupHook {
       name = "flit-build-hook";
diff --git a/pkgs/development/interpreters/python/hooks/egg-build-hook.sh b/pkgs/development/interpreters/python/hooks/egg-build-hook.sh
new file mode 100644
index 00000000000..d5abc8d55e5
--- /dev/null
+++ b/pkgs/development/interpreters/python/hooks/egg-build-hook.sh
@@ -0,0 +1,15 @@
+# Setup hook to use for eggs
+echo "Sourcing egg-build-hook"
+
+eggBuildPhase() {
+    echo "Executing eggBuildPhase"
+    runHook preBuild
+
+    runHook postBuild
+    echo "Finished executing eggBuildPhase"
+}
+
+if [ -z "${dontUseEggBuild-}" ] && [ -z "${buildPhase-}" ]; then
+    echo "Using eggBuildPhase"
+    buildPhase=eggBuildPhase
+fi
diff --git a/pkgs/development/interpreters/python/hooks/egg-install-hook.sh b/pkgs/development/interpreters/python/hooks/egg-install-hook.sh
new file mode 100644
index 00000000000..ae894fb1bde
--- /dev/null
+++ b/pkgs/development/interpreters/python/hooks/egg-install-hook.sh
@@ -0,0 +1,21 @@
+# Setup hook for eggs
+echo "Sourcing egg-install-hook"
+
+eggInstallPhase() {
+    echo "Executing eggInstallPhase"
+    runHook preInstall
+
+    mkdir -p "$out/@pythonSitePackages@"
+    export PYTHONPATH="$out/@pythonSitePackages@:$PYTHONPATH"
+
+    find
+    @pythonInterpreter@ -m easy_install --prefix="$out" *.egg
+
+    runHook postInstall
+    echo "Finished executing eggInstallPhase"
+}
+
+if [ -z "${dontUseEggInstall-}" ] && [ -z "${installPhase-}" ]; then
+    echo "Using eggInstallPhase"
+    installPhase=eggInstallPhase
+fi
diff --git a/pkgs/development/interpreters/python/hooks/egg-unpack-hook.sh b/pkgs/development/interpreters/python/hooks/egg-unpack-hook.sh
new file mode 100644
index 00000000000..c8ed3dee83b
--- /dev/null
+++ b/pkgs/development/interpreters/python/hooks/egg-unpack-hook.sh
@@ -0,0 +1,17 @@
+# Setup hook to use in case an egg is fetched
+echo "Sourcing egg setup hook"
+
+eggUnpackPhase(){
+    echo "Executing eggUnpackPhase"
+    runHook preUnpack
+
+    cp "$src" "$(stripHash "$src")"
+
+#     runHook postUnpack # Calls find...?
+    echo "Finished executing eggUnpackPhase"
+}
+
+if [ -z "${dontUseEggUnpack-}" ] && [ -z "${unpackPhase-}" ]; then
+    echo "Using eggUnpackPhase"
+    unpackPhase=eggUnpackPhase
+fi
diff --git a/pkgs/development/interpreters/python/mk-python-derivation.nix b/pkgs/development/interpreters/python/mk-python-derivation.nix
index 700894eda6d..020298cc8e9 100644
--- a/pkgs/development/interpreters/python/mk-python-derivation.nix
+++ b/pkgs/development/interpreters/python/mk-python-derivation.nix
@@ -20,6 +20,9 @@
 , setuptoolsBuildHook
 , setuptoolsCheckHook
 , wheelUnpackHook
+, eggUnpackHook
+, eggBuildHook
+, eggInstallHook
 }:
 
 { name ? "${attrs.pname}-${attrs.version}"
@@ -119,6 +122,8 @@ let
     pipBuildHook
   ] ++ lib.optionals (format == "wheel") [
     wheelUnpackHook
+  ] ++ lib.optionals (format == "egg") [
+    eggUnpackHook eggBuildHook eggInstallHook
   ] ++ lib.optionals (!(format == "other") || dontUsePipInstall) [
     pipInstallHook
   ] ++ lib.optionals (stdenv.buildPlatform == stdenv.hostPlatform) [