diff options
Diffstat (limited to 'pkgs/development/python2-modules/bootstrapped-pip/default.nix')
-rw-r--r-- | pkgs/development/python2-modules/bootstrapped-pip/default.nix | 66 |
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; + }; +} |