support/download: keep files downloaded without hash

In the situation where the hash is missing from the hash file, the
dl-wrapper downloads the file again and again until the developer
specifies the hash to complete the download step.

To avoid this situation, the freshly-downloaded file is not removed
anymore after a successful download.

After this change, the behaviour is as follows:

- Hash file doesn't exist, or file is in BR_NO_CHECK_HASH_FOR
  => always succeeds.

- Hash file exists, but file is not present
  => file is NOT removed, build is terminated immediately (i.e.
     secondary site is not tried).

- Hash file exists, file is present, but hash mismatch
  => file is removed, secondary site is tried.
  => If all primary/secondary site downloads or hash checks fail, the
     build is terminated.

Signed-off-by: Gaël PORTAY <gael.portay@savoirfairelinux.com>
[Arnout: extend commit log]
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
This commit is contained in:
Gaël PORTAY 2017-11-05 19:46:50 -05:00 committed by Arnout Vandecappelle (Essensium/Mind)
parent 29b7cc88f4
commit cf9bf7d28b

View File

@ -21,7 +21,7 @@ set -e
main() {
local OPT OPTARG
local backend output hfile recurse quiet
local backend output hfile recurse quiet rc
# Parse our options; anything after '--' is for the backend
while getopts :hb:o:H:rq OPT; do
@ -93,9 +93,16 @@ main() {
# Check if the downloaded file is sane, and matches the stored hashes
# for that file
if ! support/download/check-hash ${quiet} "${hfile}" "${tmpf}" "${output##*/}"; then
rm -rf "${tmpd}"
exit 1
if support/download/check-hash ${quiet} "${hfile}" "${tmpf}" "${output##*/}"; then
rc=0
else
if [ ${?} -ne 3 ]; then
rm -rf "${tmpd}"
exit 1
fi
# the hash file exists and there was no hash to check the file against
rc=1
fi
# tmp_output is in the same directory as the final output, so we can
@ -141,6 +148,8 @@ main() {
rm -f "${tmp_output}"
exit 1
fi
return ${rc}
}
help() {