python3Packages.pip: allow setting reproducible temporary directory via NIX_PIP_INSTALL_TMPDIR

This commit is contained in:
misuzu 2020-06-22 10:58:26 +03:00 committed by Frederik Rietdijk
parent ae1584dc98
commit aedbade43e
3 changed files with 20 additions and 1 deletions

View file

@ -11,7 +11,9 @@ pipInstallPhase() {
export PYTHONPATH="$out/@pythonSitePackages@:$PYTHONPATH"
pushd dist || return 1
@pythonInterpreter@ -m pip install ./*.whl --no-index --prefix="$out" --no-cache $pipInstallFlags --build tmpbuild
mkdir tmpbuild
NIX_PIP_INSTALL_TMPDIR=tmpbuild @pythonInterpreter@ -m pip install ./*.whl --no-index --prefix="$out" --no-cache $pipInstallFlags
rm -rf tmpbuild
popd || return 1
runHook postInstall

View file

@ -25,6 +25,10 @@ buildPythonPackage rec {
name = "${pname}-${version}-source";
};
# Remove when solved https://github.com/NixOS/nixpkgs/issues/81441
# Also update pkgs/development/interpreters/python/hooks/pip-install-hook.sh accordingly
patches = [ ./reproducible.patch ];
nativeBuildInputs = [ bootstrapped-pip ];
# pip detects that we already have bootstrapped_pip "installed", so we need

View file

@ -0,0 +1,13 @@
diff --git a/src/pip/_internal/operations/install/wheel.py b/src/pip/_internal/operations/install/wheel.py
index e7315ee4..4e36b03d 100644
--- a/src/pip/_internal/operations/install/wheel.py
+++ b/src/pip/_internal/operations/install/wheel.py
@@ -615,6 +615,8 @@ def install_wheel(
direct_url=None, # type: Optional[DirectUrl]
):
# type: (...) -> None
+ _temp_dir_for_testing = (
+ _temp_dir_for_testing or os.environ.get("NIX_PIP_INSTALL_TMPDIR"))
with TempDirectory(
path=_temp_dir_for_testing, kind="unpacked-wheel"
) as unpacked_dir, ZipFile(wheel_path, allowZip64=True) as z: