[libcxx] r347244 - Add docker configurations used by the buildbots.
Eric Fiselier
eric at efcs.ca
Mon Nov 19 10:43:32 PST 2018
Author: ericwf
Date: Mon Nov 19 10:43:31 2018
New Revision: 347244
URL: http://llvm.org/viewvc/llvm-project?rev=347244&view=rev
Log:
Add docker configurations used by the buildbots.
These are the scripts I use to create the docker images for
the build bots and run them.
Added:
libcxx/trunk/utils/docker/
libcxx/trunk/utils/docker/build_docker_image.sh (with props)
libcxx/trunk/utils/docker/debian9/
libcxx/trunk/utils/docker/debian9/Dockerfile
libcxx/trunk/utils/docker/scripts/
libcxx/trunk/utils/docker/scripts/build_gcc.sh (with props)
libcxx/trunk/utils/docker/scripts/build_install_llvm.sh (with props)
libcxx/trunk/utils/docker/scripts/checkout_git.sh (with props)
libcxx/trunk/utils/docker/scripts/install_clang_packages.sh (with props)
libcxx/trunk/utils/docker/scripts/run_buildbot.sh (with props)
Added: libcxx/trunk/utils/docker/build_docker_image.sh
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/utils/docker/build_docker_image.sh?rev=347244&view=auto
==============================================================================
--- libcxx/trunk/utils/docker/build_docker_image.sh (added)
+++ libcxx/trunk/utils/docker/build_docker_image.sh Mon Nov 19 10:43:31 2018
@@ -0,0 +1,109 @@
+#!/bin/bash
+#===- libcxx/utils/docker/build_docker_image.sh ----------------------------===//
+#
+# The LLVM Compiler Infrastructure
+#
+# This file is distributed under the University of Illinois Open Source
+# License. See LICENSE.TXT for details.
+#
+#===----------------------------------------------------------------------===//
+set -e
+
+IMAGE_SOURCE=""
+DOCKER_REPOSITORY=""
+DOCKER_TAG=""
+
+function show_usage() {
+ cat << EOF
+Usage: build_docker_image.sh [options] [-- [cmake_args]...]
+
+Available options:
+ General:
+ -h|--help show this help message
+ Docker-specific:
+ -s|--source image source dir (i.e. debian8, nvidia-cuda, etc)
+ -d|--docker-repository docker repository for the image
+ -t|--docker-tag docker tag for the image
+
+Required options: --source and --docker-repository.
+
+For example, running:
+$ build_docker_image.sh -s debian9 -d mydocker/debian9-clang -t latest
+will produce two docker images:
+ mydocker/debian9-clang-build:latest - an intermediate image used to compile
+ clang.
+ mydocker/clang-debian9:latest - a small image with preinstalled clang.
+Please note that this example produces a not very useful installation, since it
+doesn't override CMake defaults, which produces a Debug and non-boostrapped
+version of clang.
+EOF
+}
+
+while [[ $# -gt 0 ]]; do
+ case "$1" in
+ -h|--help)
+ show_usage
+ exit 0
+ ;;
+ -s|--source)
+ shift
+ IMAGE_SOURCE="$1"
+ shift
+ ;;
+ -d|--docker-repository)
+ shift
+ DOCKER_REPOSITORY="$1"
+ shift
+ ;;
+ -t|--docker-tag)
+ shift
+ DOCKER_TAG="$1"
+ shift
+ ;;
+ *)
+ echo "Unknown argument $1"
+ exit 1
+ ;;
+ esac
+done
+
+
+command -v docker >/dev/null ||
+ {
+ echo "Docker binary cannot be found. Please install Docker to use this script."
+ exit 1
+ }
+
+if [ "$IMAGE_SOURCE" == "" ]; then
+ echo "Required argument missing: --source"
+ exit 1
+fi
+
+if [ "$DOCKER_REPOSITORY" == "" ]; then
+ echo "Required argument missing: --docker-repository"
+ exit 1
+fi
+
+SOURCE_DIR=$(dirname $0)
+if [ ! -d "$SOURCE_DIR/$IMAGE_SOURCE" ]; then
+ echo "No sources for '$IMAGE_SOURCE' were found in $SOURCE_DIR"
+ exit 1
+fi
+
+BUILD_DIR=$(mktemp -d)
+trap "rm -rf $BUILD_DIR" EXIT
+echo "Using a temporary directory for the build: $BUILD_DIR"
+
+cp -r "$SOURCE_DIR/$IMAGE_SOURCE" "$BUILD_DIR/$IMAGE_SOURCE"
+cp -r "$SOURCE_DIR/scripts" "$BUILD_DIR/scripts"
+
+
+if [ "$DOCKER_TAG" != "" ]; then
+ DOCKER_TAG=":$DOCKER_TAG"
+fi
+
+echo "Building ${DOCKER_REPOSITORY}${DOCKER_TAG} from $IMAGE_SOURCE"
+docker build -t "${DOCKER_REPOSITORY}${DOCKER_TAG}" \
+ -f "$BUILD_DIR/$IMAGE_SOURCE/Dockerfile" \
+ "$BUILD_DIR"
+echo "Done"
Propchange: libcxx/trunk/utils/docker/build_docker_image.sh
------------------------------------------------------------------------------
svn:executable = *
Added: libcxx/trunk/utils/docker/debian9/Dockerfile
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/utils/docker/debian9/Dockerfile?rev=347244&view=auto
==============================================================================
--- libcxx/trunk/utils/docker/debian9/Dockerfile (added)
+++ libcxx/trunk/utils/docker/debian9/Dockerfile Mon Nov 19 10:43:31 2018
@@ -0,0 +1,113 @@
+#===- libcxx/utils/docker/debian9/Dockerfile -------------------------===//
+#
+# The LLVM Compiler Infrastructure
+#
+# This file is distributed under the University of Illinois Open Source
+# License. See LICENSE.TXT for details.
+#
+#===----------------------------------------------------------------------===//
+
+# Setup the base builder image with the packages we'll need to build GCC and Clang from source.
+FROM launcher.gcr.io/google/debian9:latest as builder-base
+LABEL maintainer "libc++ Developers"
+
+RUN apt-get update && \
+ apt-get install -y --no-install-recommends \
+ ca-certificates \
+ gnupg \
+ build-essential \
+ wget \
+ subversion \
+ unzip \
+ automake \
+ python \
+ cmake \
+ ninja-build \
+ curl \
+ git \
+ gcc-multilib \
+ g++-multilib \
+ libc6-dev \
+ bison \
+ flex \
+ libtool \
+ autoconf \
+ binutils-dev \
+ binutils-gold \
+ software-properties-common && \
+ update-alternatives --install "/usr/bin/ld" "ld" "/usr/bin/ld.gold" 20 && \
+ update-alternatives --install "/usr/bin/ld" "ld" "/usr/bin/ld.bfd" 10
+
+# Build GCC 4.9 for testing our C++11 against
+FROM builder-base as gcc-49-builder
+LABEL maintainer "libc++ Developers"
+
+ADD scripts/build_gcc.sh /tmp/build_gcc.sh
+
+RUN git clone --depth=1 --branch gcc-4_9_4-release git://gcc.gnu.org/git/gcc.git /tmp/gcc-4.9.4
+RUN cd /tmp/gcc-4.9.4/ && ./contrib/download_prerequisites
+RUN /tmp/build_gcc.sh --source /tmp/gcc-4.9.4 --to /opt/gcc-4.9.4
+
+# Build GCC ToT for testing in all dialects.
+FROM builder-base as gcc-tot-builder
+LABEL maintainer "libc++ Developers"
+
+ADD scripts/build_gcc.sh /tmp/build_gcc.sh
+
+RUN git clone --depth=1 git://gcc.gnu.org/git/gcc.git /tmp/gcc-tot
+RUN cd /tmp/gcc-tot && ./contrib/download_prerequisites
+RUN /tmp/build_gcc.sh --source /tmp/gcc-tot --to /opt/gcc-tot
+
+# Build LLVM 4.0 which is used to test against a "legacy" compiler.
+FROM builder-base as llvm-4-builder
+LABEL maintainer "libc++ Developers"
+
+ADD scripts/checkout_git.sh /tmp/checkout_git.sh
+ADD scripts/build_install_llvm.sh /tmp/build_install_llvm.sh
+
+RUN /tmp/checkout_git.sh --to /tmp/llvm-4.0 -p clang -p compiler-rt --branch release_40
+RUN /tmp/build_install_llvm.sh \
+ --install /opt/llvm-4.0 \
+ --source /tmp/llvm-4.0 \
+ --build /tmp/build-llvm-4.0 \
+ -i install-clang -i install-clang-headers \
+ -i install-compiler-rt \
+ -- \
+ -DCMAKE_BUILD_TYPE=RELEASE \
+ -DLLVM_ENABLE_ASSERTIONS=ON
+
+# Stage 2. Produce a minimal release image with build results.
+FROM launcher.gcr.io/google/debian9:latest
+LABEL maintainer "libc++ Developers"
+
+# Copy over the GCC and Clang installations
+COPY --from=gcc-49-builder /opt/gcc-4.9.4 /opt/gcc-4.9.4
+COPY --from=gcc-tot-builder /opt/gcc-tot /opt/gcc-tot
+COPY --from=llvm-4-builder /opt/llvm-4.0 /opt/llvm-4.0
+
+RUN ln -s /opt/gcc-4.9.4/bin/gcc /usr/local/bin/gcc-4.9 && \
+ ln -s /opt/gcc-4.9.4/bin/g++ /usr/local/bin/g++-4.9
+
+RUN apt-get update && \
+ apt-get install -y \
+ ca-certificates \
+ gnupg \
+ build-essential \
+ apt-transport-https \
+ curl \
+ software-properties-common
+
+RUN apt-get install -y --no-install-recommends \
+ systemd \
+ sysvinit-utils \
+ cmake \
+ subversion \
+ git \
+ ninja-build \
+ gcc-multilib \
+ g++-multilib \
+ python \
+ buildbot-slave
+
+ADD scripts /libcxx-scripts/
+RUN /libcxx-scripts/install_clang_packages.sh
Added: libcxx/trunk/utils/docker/scripts/build_gcc.sh
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/utils/docker/scripts/build_gcc.sh?rev=347244&view=auto
==============================================================================
--- libcxx/trunk/utils/docker/scripts/build_gcc.sh (added)
+++ libcxx/trunk/utils/docker/scripts/build_gcc.sh Mon Nov 19 10:43:31 2018
@@ -0,0 +1,91 @@
+#!/usr/bin/env bash
+#===- libcxx/utils/docker/scripts/build-gcc.sh ----------------------------===//
+#
+# The LLVM Compiler Infrastructure
+#
+# This file is distributed under the University of Illinois Open Source
+# License. See LICENSE.TXT for details.
+#
+#===-----------------------------------------------------------------------===//
+
+set -e
+
+
+function show_usage() {
+ cat << EOF
+Usage: build-gcc.sh [options]
+
+Run autoconf with the specified arguments. Used inside docker container.
+
+Available options:
+ -h|--help show this help message
+ --source the source path from which to run the configuration.
+ --to destination directory where to install the targets.
+Required options: --to, at least one --install-target.
+
+All options after '--' are passed to CMake invocation.
+EOF
+}
+
+GCC_INSTALL_DIR=""
+GCC_SOURCE_DIR=""
+
+while [[ $# -gt 0 ]]; do
+ case "$1" in
+ --to)
+ shift
+ GCC_INSTALL_DIR="$1"
+ shift
+ ;;
+ --source)
+ shift
+ GCC_SOURCE_DIR="$1"
+ shift
+ ;;
+ -h|--help)
+ show_usage
+ exit 0
+ ;;
+ *)
+ echo "Unknown option: $1"
+ exit 1
+ esac
+done
+
+if [ "$GCC_INSTALL_DIR" == "" ]; then
+ echo "No install directory. Please specify the --to argument."
+ exit 1
+fi
+
+if [ "$GCC_SOURCE_DIR" == "" ]; then
+ echo "No source directory. Please specify the --source argument."
+ exit 1
+fi
+
+GCC_NAME=`basename $GCC_SOURCE_DIR`
+GCC_BUILD_DIR="/tmp/gcc-build-root/build-$GCC_NAME"
+
+mkdir -p "$GCC_INSTALL_DIR"
+mkdir -p "$GCC_BUILD_DIR"
+pushd "$GCC_BUILD_DIR"
+
+# Run the build as specified in the build arguments.
+echo "Running configuration"
+$GCC_SOURCE_DIR/configure --prefix=$GCC_INSTALL_DIR \
+ --disable-bootstrap --disable-libgomp --disable-libitm \
+ --disable-libvtv --disable-libcilkrts --disable-libmpx \
+ --disable-liboffloadmic --disable-libcc1 --enable-languages=c,c++
+
+NPROC=`nproc`
+echo "Running build with $NPROC threads"
+make -j$NPROC
+
+echo "Installing to $GCC_INSTALL_DIR"
+make install -j$NPROC
+
+popd
+
+# Cleanup.
+rm -rf "$GCC_BUILD_DIR"
+
+echo "Done"
\ No newline at end of file
Propchange: libcxx/trunk/utils/docker/scripts/build_gcc.sh
------------------------------------------------------------------------------
svn:executable = *
Added: libcxx/trunk/utils/docker/scripts/build_install_llvm.sh
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/utils/docker/scripts/build_install_llvm.sh?rev=347244&view=auto
==============================================================================
--- libcxx/trunk/utils/docker/scripts/build_install_llvm.sh (added)
+++ libcxx/trunk/utils/docker/scripts/build_install_llvm.sh Mon Nov 19 10:43:31 2018
@@ -0,0 +1,114 @@
+#!/usr/bin/env bash
+#===- llvm/utils/docker/scripts/build_install_llvm.sh ---------------------===//
+#
+# The LLVM Compiler Infrastructure
+#
+# This file is distributed under the University of Illinois Open Source
+# License. See LICENSE.TXT for details.
+#
+#===-----------------------------------------------------------------------===//
+
+set -e
+
+function show_usage() {
+ cat << EOF
+Usage: build_install_llvm.sh [options] -- [cmake-args]
+
+Run cmake with the specified arguments. Used inside docker container.
+Passes additional -DCMAKE_INSTALL_PREFIX and puts the build results into
+the directory specified by --to option.
+
+Available options:
+ -h|--help show this help message
+ -i|--install-target name of a cmake install target to build and include in
+ the resulting archive. Can be specified multiple times.
+ --install destination directory where to install the targets.
+ --source location of the source tree.
+ --build location to use as the build directory.
+Required options: --to, --source, --build, and at least one --install-target.
+
+All options after '--' are passed to CMake invocation.
+EOF
+}
+
+CMAKE_ARGS=""
+CMAKE_INSTALL_TARGETS=""
+CLANG_INSTALL_DIR=""
+CLANG_SOURCE_DIR=""
+CLANG_BUILD_DIR=""
+
+while [[ $# -gt 0 ]]; do
+ case "$1" in
+ -i|--install-target)
+ shift
+ CMAKE_INSTALL_TARGETS="$CMAKE_INSTALL_TARGETS $1"
+ shift
+ ;;
+ --source)
+ shift
+ CLANG_SOURCE_DIR="$1"
+ shift
+ ;;
+ --build)
+ shift
+ CLANG_BUILD_DIR="$1"
+ shift
+ ;;
+ --install)
+ shift
+ CLANG_INSTALL_DIR="$1"
+ shift
+ ;;
+ --)
+ shift
+ CMAKE_ARGS="$*"
+ shift $#
+ ;;
+ -h|--help)
+ show_usage
+ exit 0
+ ;;
+ *)
+ echo "Unknown option: $1"
+ exit 1
+ esac
+done
+
+if [ "$CLANG_SOURCE_DIR" == "" ]; then
+ echo "No source directory. Please pass --source."
+ exit 1
+fi
+
+if [ "$CLANG_BUILD_DIR" == "" ]; then
+ echo "No build directory. Please pass --build"
+ exit 1
+fi
+
+if [ "$CMAKE_INSTALL_TARGETS" == "" ]; then
+ echo "No install targets. Please pass one or more --install-target."
+ exit 1
+fi
+
+if [ "$CLANG_INSTALL_DIR" == "" ]; then
+ echo "No install directory. Please specify the --to argument."
+ exit 1
+fi
+
+echo "Building in $CLANG_BUILD_DIR"
+mkdir -p "$CLANG_BUILD_DIR"
+pushd "$CLANG_BUILD_DIR"
+
+# Run the build as specified in the build arguments.
+echo "Running build"
+cmake -GNinja \
+ -DCMAKE_INSTALL_PREFIX="$CLANG_INSTALL_DIR" \
+ $CMAKE_ARGS \
+ "$CLANG_SOURCE_DIR"
+ninja $CMAKE_INSTALL_TARGETS
+
+popd
+
+# Cleanup.
+rm -rf "$CLANG_BUILD_DIR"
+
+echo "Done"
Propchange: libcxx/trunk/utils/docker/scripts/build_install_llvm.sh
------------------------------------------------------------------------------
svn:executable = *
Added: libcxx/trunk/utils/docker/scripts/checkout_git.sh
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/utils/docker/scripts/checkout_git.sh?rev=347244&view=auto
==============================================================================
--- libcxx/trunk/utils/docker/scripts/checkout_git.sh (added)
+++ libcxx/trunk/utils/docker/scripts/checkout_git.sh Mon Nov 19 10:43:31 2018
@@ -0,0 +1,130 @@
+#!/usr/bin/env bash
+#===- llvm/utils/docker/scripts/checkout.sh ---------------------===//
+#
+# The LLVM Compiler Infrastructure
+#
+# This file is distributed under the University of Illinois Open Source
+# License. See LICENSE.TXT for details.
+#
+#===-----------------------------------------------------------------------===//
+
+set -e
+
+function show_usage() {
+ cat << EOF
+Usage: checkout.sh [options]
+
+Checkout svn sources into /tmp/clang-build/src. Used inside a docker container.
+
+Available options:
+ -h|--help show this help message
+ -b|--branch svn branch to checkout, i.e. 'trunk',
+ 'branches/release_40'
+ (default: 'trunk')
+ -p|--llvm-project name of an svn project to checkout.
+ For clang, please use 'clang', not 'cfe'.
+ Project 'llvm' is always included and ignored, if
+ specified.
+ Can be specified multiple times.
+EOF
+}
+
+LLVM_BRANCH=""
+# We always checkout llvm
+LLVM_PROJECTS="llvm"
+SOURCE_DIR=""
+
+function contains_project() {
+ local TARGET_PROJ="$1"
+ local PROJ
+ for PROJ in $LLVM_PROJECTS; do
+ if [ "$PROJ" == "$TARGET_PROJ" ]; then
+ return 0
+ fi
+ done
+ return 1
+}
+
+while [[ $# -gt 0 ]]; do
+ case "$1" in
+ --to)
+ shift
+ SOURCE_DIR="$1"
+ shift
+ ;;
+ -b|--branch)
+ shift
+ LLVM_BRANCH="$1"
+ shift
+ ;;
+ -p|--llvm-project)
+ shift
+ PROJ="$1"
+ shift
+
+ if [ "$PROJ" == "cfe" ]; then
+ PROJ="clang"
+ fi
+
+ if ! contains_project "$PROJ" ; then
+ if [ "$PROJ" == "clang-tools-extra" ] && [ ! contains_project "clang" ]; then
+ echo "Project 'clang-tools-extra' specified before 'clang'. Adding 'clang' to a list of projects first."
+ LLVM_PROJECTS="$LLVM_PROJECTS clang"
+ fi
+ LLVM_PROJECTS="$LLVM_PROJECTS $PROJ"
+ else
+ echo "Project '$PROJ' is already enabled, ignoring extra occurrences."
+ fi
+ ;;
+ -h|--help)
+ show_usage
+ exit 0
+ ;;
+ *)
+ echo "Unknown option: $1"
+ exit 1
+ esac
+done
+
+if [ "$SOURCE_DIR" == "" ]; then
+ echo "Must specify checkout directory using --to"
+ exit 1
+fi
+
+if [ "$LLVM_BRANCH" == "" ]; then
+ GIT_BRANCH_ARG=""
+else
+ GIT_BRANCH_ARG="--branch $LLVM_BRANCH"
+fi
+
+if [ "$LLVM_SVN_REV" != "" ]; then
+ SVN_REV_ARG="-r$LLVM_SVN_REV"
+ echo "Checking out svn revision r$LLVM_SVN_REV."
+else
+ SVN_REV_ARG=""
+ echo "Checking out latest svn revision."
+fi
+
+# Get the sources from svn.
+echo "Checking out sources from git"
+
+for LLVM_PROJECT in $LLVM_PROJECTS; do
+ if [ "$LLVM_PROJECT" == "llvm" ]; then
+ CHECKOUT_DIR="$SOURCE_DIR"
+ elif [ "$LLVM_PROJECT" == "libcxx" ] || [ "$LLVM_PROJECT" == "libcxxabi" ] || [ "$LLVM_PROJECT" == "compiler-rt" ]; then
+ CHECKOUT_DIR="$SOURCE_DIR/projects/$LLVM_PROJECT"
+ elif [ "$LLVM_PROJECT" == "clang" ]; then
+ CHECKOUT_DIR="$SOURCE_DIR/tools/clang"
+ elif [ "$LLVM_PROJECT" == "clang-tools-extra" ]; then
+ CHECKOUT_DIR="$SOURCE_DIR/tools/clang/tools/extra"
+ else
+ CHECKOUT_DIR="$SOURCE_DIR/$LLVM_PROJECT"
+ fi
+
+ echo "Checking out https://git.llvm.org/git/$LLVM_PROJECT to $CHECKOUT_DIR"
+ git clone --depth=1 $GIT_BRANCH_ARG \
+ "https://git.llvm.org/git/$LLVM_PROJECT.git" \
+ "$CHECKOUT_DIR"
+done
+
+echo "Done"
Propchange: libcxx/trunk/utils/docker/scripts/checkout_git.sh
------------------------------------------------------------------------------
svn:executable = *
Added: libcxx/trunk/utils/docker/scripts/install_clang_packages.sh
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/utils/docker/scripts/install_clang_packages.sh?rev=347244&view=auto
==============================================================================
--- libcxx/trunk/utils/docker/scripts/install_clang_packages.sh (added)
+++ libcxx/trunk/utils/docker/scripts/install_clang_packages.sh Mon Nov 19 10:43:31 2018
@@ -0,0 +1,64 @@
+#!/usr/bin/env bash
+#===- libcxx/utils/docker/scripts/install_clang_package.sh -----------------===//
+#
+# The LLVM Compiler Infrastructure
+#
+# This file is distributed under the University of Illinois Open Source
+# License. See LICENSE.TXT for details.
+#
+#===-----------------------------------------------------------------------===//
+
+set -e
+
+function show_usage() {
+ cat << EOF
+Usage: install_clang_package.sh [options]
+
+Install
+Available options:
+ -h|--help show this help message
+ --version the numeric version of the package to use.
+EOF
+}
+
+VERSION=""
+
+while [[ $# -gt 0 ]]; do
+ case "$1" in
+ --version)
+ shift
+ VERSION="$1"
+ shift
+ ;;
+ -h|--help)
+ show_usage
+ exit 0
+ ;;
+ *)
+ echo "Unknown option: $1"
+ exit 1
+ esac
+done
+
+
+
+curl -fsSL https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -
+add-apt-repository -s "deb http://apt.llvm.org/$(lsb_release -cs)/ llvm-toolchain-$(lsb_release -cs) main"
+apt-get update
+apt-get install -y --no-install-recommends clang
+
+echo "Testing clang version..."
+clang --version
+
+echo "Testing clang++ version..."
+clang++ --version
+
+# Figure out the libc++ and libc++abi package versions that we want.
+if [ "$VERSION" == "" ]; then
+ VERSION="$(apt-cache search 'libc\+\+-[0-9]-dev' | awk '{print $1}' | awk -F- '{print $2}')"
+ echo "Installing version '$VERSION'"
+fi
+
+apt-get install -y --no-install-recommends "libc++-$VERSION-dev" "libc++abi-$VERSION-dev"
+
+echo "Done"
Propchange: libcxx/trunk/utils/docker/scripts/install_clang_packages.sh
------------------------------------------------------------------------------
svn:executable = *
Added: libcxx/trunk/utils/docker/scripts/run_buildbot.sh
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/utils/docker/scripts/run_buildbot.sh?rev=347244&view=auto
==============================================================================
--- libcxx/trunk/utils/docker/scripts/run_buildbot.sh (added)
+++ libcxx/trunk/utils/docker/scripts/run_buildbot.sh Mon Nov 19 10:43:31 2018
@@ -0,0 +1,55 @@
+#!/usr/bin/env bash
+set -x
+
+BOT_DIR=/b
+BOT_NAME=$1
+BOT_PASS=$2
+
+mkdir -p $BOT_DIR
+
+#curl "https://repo.stackdriver.com/stack-install.sh" | bash -s -- --write-gcm
+
+apt-get update -y
+apt-get upgrade -y
+
+systemctl set-property buildslave.service TasksMax=100000
+
+buildslave stop $BOT_DIR
+
+chown buildbot:buildbot $BOT_DIR
+
+echo "Connecting as $BOT_NAME"
+buildslave create-slave --allow-shutdown=signal $BOT_DIR lab.llvm.org:9990 $BOT_NAME $BOT_PASS
+
+echo "Eric Fiselier <ericwf at google.com>" > $BOT_DIR/info/admin
+
+{
+ uname -a | head -n1
+ cmake --version | head -n1
+ g++ --version | head -n1
+ ld --version | head -n1
+ date
+ lscpu
+} > $BOT_DIR/info/host
+
+echo "SLAVE_RUNNER=/usr/bin/buildslave
+SLAVE_ENABLED[1]=\"1\"
+SLAVE_NAME[1]=\"buildslave1\"
+SLAVE_USER[1]=\"buildbot\"
+SLAVE_BASEDIR[1]=\"$BOT_DIR\"
+SLAVE_OPTIONS[1]=\"\"
+SLAVE_PREFIXCMD[1]=\"\"" > /etc/default/buildslave
+
+chown -R buildbot:buildbot $BOT_DIR
+systemctl daemon-reload
+service buildslave restart
+
+sleep 30
+cat $BOT_DIR/twistd.log
+grep "slave is ready" $BOT_DIR/twistd.log || shutdown now
+
+# GCE can restart instance after 24h in the middle of the build.
+# Gracefully restart before that happen.
+sleep 72000
+while pkill -SIGHUP buildslave; do sleep 5; done;
+shutdown now
\ No newline at end of file
Propchange: libcxx/trunk/utils/docker/scripts/run_buildbot.sh
------------------------------------------------------------------------------
svn:executable = *
More information about the libcxx-commits
mailing list