From 5ec75406238c6f7f102c461bbd93b23851e35b0e Mon Sep 17 00:00:00 2001
From: Tamara Vazquez Schroeder <tamara.vazquez.schroeder@cern.ch>
Date: Mon, 30 Oct 2017 19:20:32 +0000
Subject: [PATCH] Merge branch 'checkout-retry-ATLINFR-1817-21.X' into '21.0'

Retry mechanism in checkout_atlasexternals.sh and checkout_Gaudi.sh (ATLINFR-1817) -> 21.X branches

See merge request !5537

Former-commit-id: 8f304501d35ec3bc2359ebc5b9b4777d7e307b57
---
 Build/AtlasBuildScripts/checkout_Gaudi.sh     | 22 ++++++++++++++++---
 .../checkout_atlasexternals.sh                | 22 ++++++++++++++++---
 2 files changed, 38 insertions(+), 6 deletions(-)

diff --git a/Build/AtlasBuildScripts/checkout_Gaudi.sh b/Build/AtlasBuildScripts/checkout_Gaudi.sh
index 15851ec1313f..80dce55c1339 100755
--- a/Build/AtlasBuildScripts/checkout_Gaudi.sh
+++ b/Build/AtlasBuildScripts/checkout_Gaudi.sh
@@ -27,6 +27,22 @@ usage() {
 	echo "  in the source directory is left untouched."
 }
 
+_max_retry_=5
+
+_retry_ () {
+    local cmd="$*"
+    local n=0
+    while ! $cmd ; do
+        if test $n -eq $_max_retry_ ; then
+            echo "ERROR: $cmd FAILED $_max_retry_ times. EXIT(1)" >&2
+            exit 1
+        fi
+        echo "WARNING: $cmd FAILED, retry in 30 sec ... "
+        sleep 30s
+        n=`expr $n + 1`
+    done
+}
+
 # Parse the command line arguments:
 TAGBRANCH=""
 SOURCEDIR=""
@@ -86,12 +102,12 @@ echo "   from: $GAUDIURL"
 
 if [ ! -d "${SOURCEDIR}" ]; then
     # Clone the repository:
-    git clone ${GAUDIURL} ${SOURCEDIR}
+    _retry_ git clone ${GAUDIURL} ${SOURCEDIR}
 else
     echo "${SOURCEDIR} already exists -> assume previous checkout"
 fi
 
 # Get the appropriate version of it:
 cd ${SOURCEDIR}
-git fetch --prune origin
-git checkout -f ${TAGBRANCH}
+_retry_ git fetch --prune origin
+_retry_ git checkout -f ${TAGBRANCH}
diff --git a/Build/AtlasBuildScripts/checkout_atlasexternals.sh b/Build/AtlasBuildScripts/checkout_atlasexternals.sh
index e5a750d9539c..bdc803eba192 100755
--- a/Build/AtlasBuildScripts/checkout_atlasexternals.sh
+++ b/Build/AtlasBuildScripts/checkout_atlasexternals.sh
@@ -27,6 +27,22 @@ usage() {
 	echo "  in the source directory is left untouched."
 }
 
+_max_retry_=5
+
+_retry_ () {
+    local cmd="$*"
+    local n=0
+    while ! $cmd ; do
+        if test $n -eq $_max_retry_ ; then
+            echo "ERROR: $cmd FAILED $_max_retry_ times. EXIT(1)" >&2
+            exit 1
+        fi
+        echo "WARNING: $cmd FAILED, retry in 30 sec ... "
+        sleep 30s
+        n=`expr $n + 1`
+    done
+}
+
 # Parse the command line arguments:
 TAGBRANCH=""
 SOURCEDIR=""
@@ -86,12 +102,12 @@ echo "   from: $EXTERNALSURL"
 
 if [ ! -d "${SOURCEDIR}" ]; then
     # Clone the repository:
-    git clone ${EXTERNALSURL} ${SOURCEDIR}
+    _retry_ git clone ${EXTERNALSURL} ${SOURCEDIR}
 else
     echo "${SOURCEDIR} already exists -> assume previous checkout"
 fi
 
 # Get the appropriate version of it:
 cd ${SOURCEDIR}
-git fetch --prune origin
-git checkout -f ${TAGBRANCH}
+_retry_ git fetch --prune origin
+_retry_ git checkout -f ${TAGBRANCH}
-- 
GitLab