diff options
author | Gaël PORTAY <gael.portay@savoirfairelinux.com> | 2017-11-05 19:46:50 -0500 |
---|---|---|
committer | Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> | 2018-04-01 15:02:53 +0200 |
commit | cf9bf7d28b8a6c55e639b17c90f35ea11cae88ac (patch) | |
tree | 480bcddd18a8da2d24e2d6516e2c72bd34a727f6 /support | |
parent | 29b7cc88f401dcc69a085be5af067851f896da58 (diff) | |
download | buildroot-cf9bf7d28b8a6c55e639b17c90f35ea11cae88ac.tar.gz buildroot-cf9bf7d28b8a6c55e639b17c90f35ea11cae88ac.zip |
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>
Diffstat (limited to 'support')
-rwxr-xr-x | support/download/dl-wrapper | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/support/download/dl-wrapper b/support/download/dl-wrapper index f944b71db5..b018819833 100755 --- a/support/download/dl-wrapper +++ b/support/download/dl-wrapper @@ -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() { |