fetchurl: don’t run ‘postFetch’ on hashed-mirrors

hashed-mirrors are content addressed. So if $outputHash is in the
hashed-mirror, changes from ‘postFetch’ would already be made. So,
running postFetch will end up applying the change /again/, which we
don’t want.
This commit is contained in:
Matthew Bauer 2020-04-16 16:32:35 -05:00
parent 8262ecd369
commit 6367a55312

View file

@ -47,13 +47,18 @@ tryDownload() {
finish() {
local skipPostFetch="$1"
set +o noglob
if [[ $executable == "1" ]]; then
chmod +x $downloadedFile
fi
runHook postFetch
if [ -z "$skipPostFetch" ]; then
runHook postFetch
fi
exit 0
}
@ -69,7 +74,13 @@ tryHashedMirrors() {
--fail --silent --show-error --head "$url" \
--write-out "%{http_code}" --output /dev/null > code 2> log; then
tryDownload "$url"
if test -n "$success"; then finish; fi
# We skip postFetch here, because hashed-mirrors are
# already content addressed. So if $outputHash is in the
# hashed-mirror, changes from postFetch would already be
# made. So, running postFetch will end up applying the
# change /again/, which we dont want.
if test -n "$success"; then finish skipPostFetch; fi
else
# Be quiet about 404 errors, which we interpret as the file
# not being present on this particular mirror.