aboutsummaryrefslogtreecommitdiff
path: root/tcwg-base/tcwg-llvmbot/start.sh
diff options
context:
space:
mode:
authorMaxim Kuvyrkov <maxim.kuvyrkov@linaro.org>2018-02-09 13:18:52 +0000
committerMaxim Kuvyrkov <maxim.kuvyrkov@linaro.org>2018-02-09 13:18:52 +0000
commit661a80fcc0f5faaa3b9469e4508e74fd2df2ba47 (patch)
treebbfcdf7917251d56f0d3a33e59a7ebaf0d196e88 /tcwg-base/tcwg-llvmbot/start.sh
parent13528a528bd10af3a35cfe0241b9b418d4fa5bd8 (diff)
tcwg-llvmbot: Simple cleanup -- run.sh and start.sh are no longer templates.
Change-Id: I6181f9a0ba651280cc794556e5a728fc296b10a6
Diffstat (limited to 'tcwg-base/tcwg-llvmbot/start.sh')
-rwxr-xr-xtcwg-base/tcwg-llvmbot/start.sh77
1 files changed, 77 insertions, 0 deletions
diff --git a/tcwg-base/tcwg-llvmbot/start.sh b/tcwg-base/tcwg-llvmbot/start.sh
new file mode 100755
index 00000000..5c620ee4
--- /dev/null
+++ b/tcwg-base/tcwg-llvmbot/start.sh
@@ -0,0 +1,77 @@
+#!/bin/bash
+
+set -ex
+
+image="$1"
+buildmaster="$2"
+slavename="$3"
+password="$4"
+
+usage ()
+{
+ echo "$@"
+ cat <<EOF
+Usage: $0 <buildmaster> <buildslave> <password>
+ E.g., $0 lab.llvm.org:9994 linaro-apm-05 PASSWORD
+EOF
+ exit 1
+}
+
+if groups 2>/dev/null | grep -q docker; then
+ # Run docker straight up if $USER is in "docker" group.
+ DOCKER="docker"
+else
+ # Fallback to sudo otherwise.
+ DOCKER="sudo docker"
+fi
+
+case "$buildmaster" in
+ "normal")
+ mastername="normal"
+ masterurl="lab.llvm.org:9990"
+ ;;
+ "silent")
+ mastername="silent"
+ masterurl="lab.llvm.org:9994"
+ ;;
+ *)
+ mastername="custom"
+ masterurl="$buildmaster"
+esac
+
+# CXX, LLD and LNT bots need additional configuration, and
+# are not supported yet.
+case "$mastername:$slavename:$(hostname):$image" in
+ # No restrictions for custom masters:
+ custom:*:*:*) ;;
+ # Almost no restrictions for the silent master:
+ silent:*:linaro-armv8-*:*) ;;
+ silent:*:r*-a*:*) ;;
+ # Restrictions for the normal master:
+ normal:*:linaro-armv8-*:*) ;;
+ normal:*:r*-a*:*-arm64-*) ;;
+ *)
+ usage "ERROR: Wrong mastername:slavename:hostname:image combination: $mastername:$slavename:$(hostname):$image"
+ ;;
+esac
+
+case "$slavename" in
+ linaro-armv8-*)
+ # Use 64G out of 128G.
+ memlimit="64"
+ ;;
+ *)
+ # Use at most 30G or 90% of all RAM.
+ memlimit=$(($(free -g | awk '/^Mem/ { print $2 }') * 9 / 10))
+ if [ "$memlimit" -gt "30" ]; then
+ memlimit="30"
+ fi
+ ;;
+esac
+
+# IPC_LOCK is required for some implementations of ssh-agent (e.g., MATE's).
+# SYS_PTRACE is required for debugger work.
+# seccomp:unconfined is required to disable ASLR for sanitizer tests.
+caps="--cap-add=IPC_LOCK --cap-add=SYS_PTRACE --security-opt seccomp:unconfined"
+
+$DOCKER run --name=$mastername-$slavename --hostname=$mastername-$slavename --restart=unless-stopped -dt -p 22 --memory=${memlimit}G --pids-limit=5000 $caps "$image" "$masterurl" "$slavename" "$password"