
The previous attempt wasn't covering all of the bases. It relied on invoking that pip-install-hook, and didn't apply to pip itself. The core issue is that the generated .pyc files embed some of the temporary paths, which are randomly generated. See https://r13y.com/diff/bf8c3ca3148ebff9ecf41f294cc60b9f209c006d49699e356969ff32d736f1c6-8806a7cca91fdd300e48736bfcd57c4d0b54c1cc2fd61609f35143170862b59c.html In this new attempt, the approach is to patch the TempFile implementation directly, so that it creates stable temporary directories. We also assume that if SOURCE_DATE_EPOCH is set, we are in a scenario where reproducible builds are desirable and enter that branch. See also https://github.com/pypa/pip/issues/7808
27 lines
670 B
Bash
27 lines
670 B
Bash
# Setup hook for pip.
|
|
echo "Sourcing pip-install-hook"
|
|
|
|
declare -a pipInstallFlags
|
|
|
|
pipInstallPhase() {
|
|
echo "Executing pipInstallPhase"
|
|
runHook preInstall
|
|
|
|
mkdir -p "$out/@pythonSitePackages@"
|
|
export PYTHONPATH="$out/@pythonSitePackages@:$PYTHONPATH"
|
|
|
|
pushd dist || return 1
|
|
mkdir tmpbuild
|
|
@pythonInterpreter@ -m pip install ./*.whl --no-index --prefix="$out" --no-cache $pipInstallFlags
|
|
rm -rf tmpbuild
|
|
popd || return 1
|
|
|
|
runHook postInstall
|
|
echo "Finished executing pipInstallPhase"
|
|
}
|
|
|
|
if [ -z "${dontUsePipInstall-}" ] && [ -z "${installPhase-}" ]; then
|
|
echo "Using pipInstallPhase"
|
|
installPhase=pipInstallPhase
|
|
fi
|