From 661a80fcc0f5faaa3b9469e4508e74fd2df2ba47 Mon Sep 17 00:00:00 2001 From: Maxim Kuvyrkov Date: Fri, 9 Feb 2018 13:18:52 +0000 Subject: tcwg-llvmbot: Simple cleanup -- run.sh and start.sh are no longer templates. Change-Id: I6181f9a0ba651280cc794556e5a728fc296b10a6 --- tcwg-base/tcwg-llvmbot/start.sh | 77 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100755 tcwg-base/tcwg-llvmbot/start.sh (limited to 'tcwg-base/tcwg-llvmbot/start.sh') 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 < + 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" -- cgit v1.2.3