diff options
-rw-r--r-- | tools/depends/download-files.include | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/tools/depends/download-files.include b/tools/depends/download-files.include index de5bf438bb..9b09fc574e 100644 --- a/tools/depends/download-files.include +++ b/tools/depends/download-files.include @@ -18,6 +18,12 @@ ifeq ($(NATIVE_OS), osx) SED_FLAG = -i '' endif +# non-depends builds might not set this, use defaults +ifeq ($(HASH_TOOL),) + HASH_TOOL = sha512sum + HASH_TOOL_FLAGS = -c --status +endif + HASH_SUM = $($(shell echo $(HASH_TYPE) | tr '[:lower:]' '[:upper:]')) .PHONY: $(TARBALLS_LOCATION)/$(ARCHIVE).$(HASH_TYPE) @@ -34,6 +40,18 @@ ifeq ($(HASH_FOUND),no) endif ifeq ($(HASH_FOUND),yes) # we really need 2 spaces between sha hash and file name! +# if the hash sum doesn't match we retry up to 3 times @cd $(TARBALLS_LOCATION); echo "$(HASH_SUM) $(ARCHIVE)" > $(ARCHIVE).$(HASH_TYPE) && $(HASH_TOOL) $(HASH_TOOL_FLAGS) $(ARCHIVE).$(HASH_TYPE) \ - || { echo "Error: failed to verify hash sum of $(ARCHIVE), expected type: $(HASH_TYPE) value $(HASH_SUM)"; exit 3; } + || {\ + echo "Error: failed to verify hash sum of $(ARCHIVE), expected type: $(HASH_TYPE) value $(HASH_SUM), retrying.." ;\ + tries=1 ;\ + while [ $$tries -le 3 ]; do \ + echo "download $(ARCHIVE) retry $$tries" ;\ + rm $(TARBALLS_LOCATION)/$(ARCHIVE) ;\ + sleep 3 ;\ + $(RETRIEVE_TOOL) $(RETRIEVE_TOOL_FLAGS) $(BASE_URL)/$(ARCHIVE) ;\ + $(HASH_TOOL) $(HASH_TOOL_FLAGS) $(ARCHIVE).$(HASH_TYPE) && exit 0 || tries=$$((tries + 1)) ;\ + done ;\ + exit 1 ;\ + } endif |