Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / development / python2-modules / bootstrapped-pip / default.nix
blob846c76b677b3b3fb1fc41826b305d355a2410106
1 { lib, stdenv, python, makeWrapper, unzip
2 , pipInstallHook
3 , setuptoolsBuildHook
4 , wheel, pip, setuptools
5 }:
7 stdenv.mkDerivation rec {
8   pname = "pip";
9   inherit (pip) version;
10   name = "${python.libPrefix}-bootstrapped-${pname}-${version}";
12   srcs = [ wheel.src pip.src setuptools.src ];
13   sourceRoot = ".";
15   dontUseSetuptoolsBuild = true;
16   dontUsePipInstall = true;
18   # Should be propagatedNativeBuildInputs
19   propagatedBuildInputs = [
20     # Override to remove dependencies to prevent infinite recursion.
21     (pipInstallHook.override{pip=null;})
22     (setuptoolsBuildHook.override{setuptools=null; wheel=null;})
23   ];
25   postPatch = ''
26     mkdir -p $out/bin
27   '';
29   nativeBuildInputs = [ makeWrapper unzip ];
30   buildInputs = [ python ];
32   dontBuild = true;
34   installPhase = lib.optionalString (!stdenv.hostPlatform.isWindows) ''
35     export SETUPTOOLS_INSTALL_WINDOWS_SPECIFIC_FILES=0
36   '' + ''
37     # Give folders a known name
38     mv pip* pip
39     mv setuptools* setuptools
40     mv wheel* wheel
41     # Set up PYTHONPATH:
42     # - pip and setuptools need to be in PYTHONPATH to install setuptools, wheel, and pip.
43     # - $out is where we are installing to and takes precedence, and is where wheel will end so we can install pip.
44     export PYTHONPATH="$out/${python.sitePackages}:$(pwd)/pip/src:$(pwd)/setuptools:$(pwd)/setuptools/pkg_resources:$PYTHONPATH"
46     echo "Building setuptools wheel..."
47     pushd setuptools
48     ${python.pythonOnBuildForHost.interpreter} -m pip install --no-build-isolation --no-index --prefix=$out  --ignore-installed --no-dependencies --no-cache .
49     popd
51     echo "Building wheel wheel..."
52     pushd wheel
53     ${python.pythonOnBuildForHost.interpreter} -m pip install --no-build-isolation --no-index --prefix=$out  --ignore-installed --no-dependencies --no-cache .
54     popd
56     echo "Building pip wheel..."
57     pushd pip
58     ${python.pythonOnBuildForHost.interpreter} -m pip install --no-build-isolation --no-index --prefix=$out  --ignore-installed --no-dependencies --no-cache .
59     popd
60   '';
62   meta = {
63     description = "Version of pip used for bootstrapping";
64     license = lib.unique (pip.meta.license ++ setuptools.meta.license ++ wheel.meta.license);
65     homepage = pip.meta.homepage;
66   };