| ... | ... | @@ -3,32 +3,38 @@ |
| 3 | 3 | set -x |
| 4 | 4 | set -e |
| 5 | 5 | |
| 6 | # This parameters we wait at most 2mins, it should be enough to sort out any |
| 7 | # transient error. |
| 8 | CMD_MAX_RETRY=12 |
| 9 | CMD_WAIT_TIME=10s |
| 10 | |
| 11 | # Execute the given command and, in case of failure, try to execute it again |
| 12 | # after sleeping for CMD_WAIT_TIME. |
| 13 | # We give up after retrying CMD_MAX_RETRY times. |
| 14 | retry() { |
| 15 | for i in $(seq 1 "$CMD_MAX_RETRY"); do |
| 16 | "$@" && return |
| 17 | echo "command \"$@\" failed, retrying..." |
| 18 | sleep ${CMD_WAIT_TIME} |
| 19 | done |
| 20 | |
| 21 | echo "command \"$@\" failed, giving up..." |
| 22 | exit 1 |
| 23 | } |
| 24 | |
| 6 | 25 | BUILDDIR="$(pwd)" |
| 7 | 26 | |
| 8 | 27 | sudo sh -c 'echo "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-11 main" >> /etc/apt/sources.list' |
| 9 | | wget -O - http://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add - |
| 10 | | sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test |
| 28 | retry 'wget -O - http://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add -' |
| 29 | retry sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test |
| 11 | 30 | |
| 12 | 31 | sudo apt-get remove -y llvm-* |
| 13 | 32 | sudo rm -rf /usr/local/* |
| 14 | 33 | |
| 15 | | # Some APT mirrors can be flaky, retry the download instead of failing right |
| 16 | | # away. |
| 17 | | APT_MAX_RETRY=3 |
| 18 | | |
| 19 | | for i in $(seq 1 "$APT_MAX_RETRY"); do |
| 20 | | sudo apt-get update -q |
| 21 | | sudo apt-get install -y \ |
| 34 | retry sudo apt-get update -q |
| 35 | retry sudo apt-get install -y \ |
| 22 | 36 | libxml2-dev libclang-11-dev llvm-11 llvm-11-dev liblld-11-dev cmake s3cmd \ |
| 23 | 37 | gcc-7 g++-7 ninja-build tidy \ |
| 24 | | && break |
| 25 | | if [ "$i" -eq "$APT_MAX_RETRY" ]; then |
| 26 | | echo 'apt-get failed, giving up...' |
| 27 | | exit 1 |
| 28 | | fi |
| 29 | | echo 'apt-get failed, retrying...' |
| 30 | | sleep 5s |
| 31 | | done |
| 32 | 38 | |
| 33 | 39 | QEMUBASE="qemu-linux-x86_64-5.1.0" |
| 34 | 40 | wget https://ziglang.org/deps/$QEMUBASE.tar.xz |