2021-11-12 09:22:34 +00:00
|
|
|
{
|
|
|
|
lib,
|
|
|
|
stdenv,
|
|
|
|
python,
|
|
|
|
makeWrapper,
|
|
|
|
unzip,
|
2021-03-23 09:40:02 +00:00
|
|
|
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 ];
|
|
|
|
|
2021-07-17 21:38:46 +00:00
|
|
|
dontBuild = true;
|
2021-03-23 09:40:02 +00:00
|
|
|
|
2021-07-29 12:15:12 +00:00
|
|
|
installPhase =
|
|
|
|
lib.optionalString (!stdenv.hostPlatform.isWindows) ''
|
2021-03-23 09:40:02 +00:00
|
|
|
export SETUPTOOLS_INSTALL_WINDOWS_SPECIFIC_FILES=0
|
|
|
|
''
|
|
|
|
+ ''
|
|
|
|
# Give folders a known name
|
|
|
|
mv pip* pip
|
|
|
|
mv setuptools* setuptools
|
|
|
|
mv wheel* wheel
|
2023-02-21 21:21:41 +00:00
|
|
|
# Set up PYTHONPATH:
|
|
|
|
# - pip and setuptools need to be in PYTHONPATH to install setuptools, wheel, and pip.
|
|
|
|
# - $out is where we are installing to and takes precedence, and is where wheel will end so we can install pip.
|
|
|
|
export PYTHONPATH="$out/${python.sitePackages}:$(pwd)/pip/src:$(pwd)/setuptools:$(pwd)/setuptools/pkg_resources:$PYTHONPATH"
|
2021-03-23 09:40:02 +00:00
|
|
|
|
|
|
|
echo "Building setuptools wheel..."
|
|
|
|
pushd setuptools
|
2023-11-06 01:38:24 +00:00
|
|
|
${python.pythonOnBuildForHost.interpreter} -m pip install --no-build-isolation --no-index --prefix=$out --ignore-installed --no-dependencies --no-cache .
|
2021-03-23 09:40:02 +00:00
|
|
|
popd
|
|
|
|
|
|
|
|
echo "Building wheel wheel..."
|
|
|
|
pushd wheel
|
2023-11-06 01:38:24 +00:00
|
|
|
${python.pythonOnBuildForHost.interpreter} -m pip install --no-build-isolation --no-index --prefix=$out --ignore-installed --no-dependencies --no-cache .
|
2021-03-23 09:40:02 +00:00
|
|
|
popd
|
|
|
|
|
|
|
|
echo "Building pip wheel..."
|
|
|
|
pushd pip
|
2023-11-06 01:38:24 +00:00
|
|
|
${python.pythonOnBuildForHost.interpreter} -m pip install --no-build-isolation --no-index --prefix=$out --ignore-installed --no-dependencies --no-cache .
|
2021-03-23 09:40:02 +00:00
|
|
|
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;
|
|
|
|
};
|
|
|
|
}
|