aboutsummaryrefslogtreecommitdiff
path: root/infra/base-images/base-clang
diff options
context:
space:
mode:
authorMax Moroz <dor3s1@gmail.com>2018-07-27 14:19:32 -0700
committerGitHub <noreply@github.com>2018-07-27 14:19:32 -0700
commit815727b0b3740736e5640d27c49042db7bbd0b2d (patch)
treedd55d29453b03f831acb0cc8ec6e3146d9b475ed /infra/base-images/base-clang
parentdbe2731d93f8de04969543e45338af26a6dc3773 (diff)
downloadoss-fuzz-815727b0b3740736e5640d27c49042db7bbd0b2d.tar.gz
[infra] Add retry wrapper to LLVM checkout commands. (#1668)
* [infra] Add retry wrapper to LLVM checkout commands. * Fix a typo. * Clean up the retry wrapper as per discussion with Abhishek. * Fix disabling / enabling exit-on-error mode, bash is hard! * Fix a comment.
Diffstat (limited to 'infra/base-images/base-clang')
-rwxr-xr-xinfra/base-images/base-clang/checkout_build_install_llvm.sh31
1 files changed, 26 insertions, 5 deletions
diff --git a/infra/base-images/base-clang/checkout_build_install_llvm.sh b/infra/base-images/base-clang/checkout_build_install_llvm.sh
index 3293923a5..77374216e 100755
--- a/infra/base-images/base-clang/checkout_build_install_llvm.sh
+++ b/infra/base-images/base-clang/checkout_build_install_llvm.sh
@@ -19,6 +19,27 @@ LLVM_DEP_PACKAGES="build-essential make cmake ninja-build git subversion python2
apt-get install -y $LLVM_DEP_PACKAGES
# Checkout
+CHECKOUT_RETRIES=10
+function checkout_with_retries {
+ REPOSITORY=$1
+ LOCAL_PATH=$2
+ CHECKOUT_RETURN_CODE=1
+
+ # Disable exit on error since we might encounter some failures while retrying.
+ set +e
+ for i in $(seq 1 $CHECKOUT_RETRIES); do
+ rm -rf $LOCAL_PATH
+ svn co $REPOSITORY $LOCAL_PATH
+ CHECKOUT_RETURN_CODE=$?
+ if [ $CHECKOUT_RETURN_CODE -eq 0 ]; then
+ break
+ fi
+ done
+
+ # Re-enable exit on error. If checkout failed, script will exit.
+ set -e
+ return $CHECKOUT_RETURN_CODE
+}
# Use chromium's clang revision
mkdir $SRC/chromium_tools
@@ -36,11 +57,11 @@ fi
echo "Using LLVM revision: $LLVM_REVISION"
-cd $SRC && svn co https://llvm.org/svn/llvm-project/llvm/trunk@$LLVM_REVISION llvm
-cd $SRC/llvm/tools && svn co https://llvm.org/svn/llvm-project/cfe/trunk@$LLVM_REVISION clang
-cd $SRC/llvm/projects && svn co https://llvm.org/svn/llvm-project/compiler-rt/trunk@$LLVM_REVISION compiler-rt
-cd $SRC/llvm/projects && svn co https://llvm.org/svn/llvm-project/libcxx/trunk@$LLVM_REVISION libcxx
-cd $SRC/llvm/projects && svn co https://llvm.org/svn/llvm-project/libcxxabi/trunk@$LLVM_REVISION libcxxabi
+cd $SRC && checkout_with_retries https://llvm.org/svn/llvm-project/llvm/trunk@$LLVM_REVISION llvm
+cd $SRC/llvm/tools && checkout_with_retries https://llvm.org/svn/llvm-project/cfe/trunk@$LLVM_REVISION clang
+cd $SRC/llvm/projects && checkout_with_retries https://llvm.org/svn/llvm-project/compiler-rt/trunk@$LLVM_REVISION compiler-rt
+cd $SRC/llvm/projects && checkout_with_retries https://llvm.org/svn/llvm-project/libcxx/trunk@$LLVM_REVISION libcxx
+cd $SRC/llvm/projects && checkout_with_retries https://llvm.org/svn/llvm-project/libcxxabi/trunk@$LLVM_REVISION libcxxabi
# Build & install
mkdir -p $WORK/llvm