Make repo downloads more persistent
diff --git a/scripts/download.sh b/scripts/download.sh
index 61e351c..68f77ad 100755
--- a/scripts/download.sh
+++ b/scripts/download.sh
@@ -27,6 +27,17 @@
# the form on github where the filename is spelled out as ".tar.gz" and
# not ".tgz")
+function GIT() {
+ set -Eeuo pipefail
+ RETRIES_NO=5
+ RETRY_DELAY=3
+ for i in $(seq 1 $RETRIES_NO); do
+ git $@ && break
+ sleep ${RETRY_DELAY}
+ [[ $i -eq $RETRIES_NO ]] && echo "Failed to execute git cmd after $RETRIES_NO retries" && exit 1
+ done
+}
+
set -e
if [ "${1: -3}" == ".gz" ] ; then
@@ -36,11 +47,11 @@
DL_CMD=
if type "wget" > /dev/null; then
- DL_CMD="wget -qO"
+ DL_CMD="wget --tries=5 -qO"
fi
if type "curl" > /dev/null; then
- DL_CMD="curl -sLo"
+ DL_CMD="curl --retry 5 --retry-all-errors -sLo"
fi
if [ "$DL_CMD" = "" ]; then
@@ -70,18 +81,18 @@
if type "git" > /dev/null; then
echo "Cloning $1 to $2"
- if [ $# -gt 2 ]; then
- if [ "$3" == "unknown" ]; then
- git clone --depth 1 $1 $2
- else
- # git clone $1 $2
- # git checkout $3
- { git clone --branch $3 --single-branch $1 $2; } || \
- { git clone $1 $2 && git -C $2 checkout $3; }
- fi
- else
- git clone --depth 1 $1 $2
- fi
+ if [ $# -gt 2 ]; then
+ if [ "$3" == "unknown" ]; then
+ GIT clone --depth 1 $1 $2
+ else
+ # git clone $1 $2
+ # git checkout $3
+ { GIT clone --branch $3 --single-branch $1 $2; } || \
+ { GIT clone $1 $2 && GIT -C $2 checkout $3; }
+ fi
+ else
+ GIT clone --depth 1 $1 $2
+ fi
else
echo "ERROR: \"git\" is required to automatically install tools."
@@ -90,4 +101,3 @@
fi
exit 0
-