| ... | @@ -3,40 +3,46 @@ | ... | @@ -3,40 +3,46 @@ |
| 3 | set -x | 3 | set -x |
| 4 | set -e | 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 | eval "$@" && 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 | BUILDDIR="$(pwd)" | 25 | BUILDDIR="$(pwd)" |
| 7 | | 26 | |
| 8 | sudo sh -c 'echo "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-11 main" >> /etc/apt/sources.list' | 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 - | 28 | retry '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 | 29 | retry sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test |
| 11 | | 30 | |
| 12 | sudo apt-get remove -y llvm-* | 31 | sudo apt-get remove -y llvm-* |
| 13 | sudo rm -rf /usr/local/* | 32 | sudo rm -rf /usr/local/* |
| 14 | | 33 | |
| 15 | # Some APT mirrors can be flaky, retry the download instead of failing right | 34 | retry sudo apt-get update -q |
| 16 | # away. | 35 | retry sudo apt-get install -y \ |
| 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 \ | | |
| 22 | libxml2-dev libclang-11-dev llvm-11 llvm-11-dev liblld-11-dev cmake s3cmd \ | 36 | libxml2-dev libclang-11-dev llvm-11 llvm-11-dev liblld-11-dev cmake s3cmd \ |
| 23 | gcc-7 g++-7 ninja-build tidy \ | 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 | QEMUBASE="qemu-linux-x86_64-5.1.0" | 39 | QEMUBASE="qemu-linux-x86_64-5.1.0" |
| 34 | wget https://ziglang.org/deps/$QEMUBASE.tar.xz | 40 | wget -nv https://ziglang.org/deps/$QEMUBASE.tar.xz |
| 35 | tar xf $QEMUBASE.tar.xz | 41 | tar xf $QEMUBASE.tar.xz |
| 36 | PATH=$PWD/$QEMUBASE/bin:$PATH | 42 | PATH=$PWD/$QEMUBASE/bin:$PATH |
| 37 | | 43 | |
| 38 | WASMTIME="wasmtime-v0.20.0-x86_64-linux" | 44 | WASMTIME="wasmtime-v0.20.0-x86_64-linux" |
| 39 | wget https://github.com/bytecodealliance/wasmtime/releases/download/v0.20.0/$WASMTIME.tar.xz | 45 | wget -nv https://github.com/bytecodealliance/wasmtime/releases/download/v0.20.0/$WASMTIME.tar.xz |
| 40 | tar xf $WASMTIME.tar.xz | 46 | tar xf $WASMTIME.tar.xz |
| 41 | PATH=$PWD/$WASMTIME:$PATH | 47 | PATH=$PWD/$WASMTIME:$PATH |
| 42 | | 48 | |