about summary refs log tree commit diff
path: root/pkgs/development/python2-modules/bootstrapped-pip
diff options
context:
space:
mode:
authorFrederik Rietdijk <fridh@fridh.nl>2022-01-16 07:34:26 +0100
committerFrederik Rietdijk <freddyrietdijk@fridh.nl>2022-01-16 10:00:16 +0100
commitae18d68b6b117528e6cd72325ead36b48562d43f (patch)
tree9f9d765a7208d5d436184dc3656b164fd0581f7f /pkgs/development/python2-modules/bootstrapped-pip
parent2027fb600d891379c53c4762463e65d040359682 (diff)
python2.pkgs: move expressions into python2-modules/ folder
Another step in further separating python2 from python3.
Diffstat (limited to 'pkgs/development/python2-modules/bootstrapped-pip')
-rw-r--r--pkgs/development/python2-modules/bootstrapped-pip/default.nix66
1 files changed, 66 insertions, 0 deletions
diff --git a/pkgs/development/python2-modules/bootstrapped-pip/default.nix b/pkgs/development/python2-modules/bootstrapped-pip/default.nix
new file mode 100644
index 0000000000000..2fc8b8b8d4b79
--- /dev/null
+++ b/pkgs/development/python2-modules/bootstrapped-pip/default.nix
@@ -0,0 +1,66 @@
+{ lib, stdenv, python, makeWrapper, unzip
+, pipInstallHook
+, setuptoolsBuildHook
+, wheel, pip, setuptools
+}:
+
+stdenv.mkDerivation rec {
+  pname = "pip";
+  inherit (pip) version;
+  name = "${python.libPrefix}-bootstrapped-${pname}-${version}";
+
+  srcs = [ wheel.src pip.src setuptools.src ];
+  sourceRoot = ".";
+
+  dontUseSetuptoolsBuild = true;
+  dontUsePipInstall = true;
+
+  # Should be propagatedNativeBuildInputs
+  propagatedBuildInputs = [
+    # Override to remove dependencies to prevent infinite recursion.
+    (pipInstallHook.override{pip=null;})
+    (setuptoolsBuildHook.override{setuptools=null; wheel=null;})
+  ];
+
+  postPatch = ''
+    mkdir -p $out/bin
+  '';
+
+  nativeBuildInputs = [ makeWrapper unzip ];
+  buildInputs = [ python ];
+
+  dontBuild = true;
+
+  installPhase = lib.optionalString (!stdenv.hostPlatform.isWindows) ''
+    export SETUPTOOLS_INSTALL_WINDOWS_SPECIFIC_FILES=0
+  '' + ''
+    # Give folders a known name
+    mv pip* pip
+    mv setuptools* setuptools
+    mv wheel* wheel
+    # Set up PYTHONPATH. The above folders need to be on PYTHONPATH
+    # $out is where we are installing to and takes precedence
+    export PYTHONPATH="$out/${python.sitePackages}:$(pwd)/pip/src:$(pwd)/setuptools:$(pwd)/setuptools/pkg_resources:$(pwd)/wheel:$PYTHONPATH"
+
+    echo "Building setuptools wheel..."
+    pushd setuptools
+    ${python.pythonForBuild.interpreter} -m pip install --no-build-isolation --no-index --prefix=$out  --ignore-installed --no-dependencies --no-cache .
+    popd
+
+    echo "Building wheel wheel..."
+    pushd wheel
+    ${python.pythonForBuild.interpreter} -m pip install --no-build-isolation --no-index --prefix=$out  --ignore-installed --no-dependencies --no-cache .
+    popd
+
+    echo "Building pip wheel..."
+    pushd pip
+    ${python.pythonForBuild.interpreter} -m pip install --no-build-isolation --no-index --prefix=$out  --ignore-installed --no-dependencies --no-cache .
+    popd
+  '';
+
+  meta = {
+    description = "Version of pip used for bootstrapping";
+    license = lib.unique (pip.meta.license ++ setuptools.meta.license ++ wheel.meta.license);
+    homepage = pip.meta.homepage;
+  };
+}