aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README32
-rw-r--r--bionic-amd64-tcwg-base/Dockerfile149
-rw-r--r--bionic-amd64-tcwg-base/bionic-amd64-tcwg-build/Dockerfile24
l---------bionic-amd64-tcwg-base/bionic-amd64-tcwg-build/build.sh1
l---------bionic-amd64-tcwg-base/bionic-amd64-tcwg-build/gerrit-branches1
-rw-r--r--bionic-amd64-tcwg-base/bionic-amd64-tcwg-dev/Dockerfile34
-rw-r--r--bionic-amd64-tcwg-base/bionic-amd64-tcwg-dev/bionic-amd64-tcwg-x2go/Dockerfile (renamed from xenial-amd64-tcwg-base/xenial-amd64-tcwg-dev/xenial-amd64-tcwg-x2go/Dockerfile)9
l---------bionic-amd64-tcwg-base/bionic-amd64-tcwg-dev/bionic-amd64-tcwg-x2go/build.sh (renamed from xenial-amd64-tcwg-base/xenial-amd64-tcwg-dev/xenial-amd64-tcwg-x2go/build.sh)0
l---------bionic-amd64-tcwg-base/bionic-amd64-tcwg-dev/bionic-amd64-tcwg-x2go/gerrit-branches (renamed from xenial-amd64-tcwg-base/xenial-amd64-tcwg-dev/xenial-amd64-tcwg-x2go/gerrit-branches)0
l---------bionic-amd64-tcwg-base/bionic-amd64-tcwg-dev/build.sh1
l---------bionic-amd64-tcwg-base/bionic-amd64-tcwg-dev/gerrit-branches1
l---------bionic-amd64-tcwg-base/build.sh1
l---------bionic-amd64-tcwg-base/gerrit-branches1
-rw-r--r--bionic-arm64-tcwg-base/Dockerfile134
-rw-r--r--bionic-arm64-tcwg-base/bionic-arm64-tcwg-dev/Dockerfile34
l---------bionic-arm64-tcwg-base/bionic-arm64-tcwg-dev/build.sh1
l---------bionic-arm64-tcwg-base/bionic-arm64-tcwg-dev/gerrit-branches1
l---------bionic-arm64-tcwg-base/build.sh1
l---------bionic-arm64-tcwg-base/gerrit-branches1
-rw-r--r--ci-amd64-llp-alpine/Dockerfile13
-rwxr-xr-xci-amd64-llp-alpine/test_run.sh8
-rw-r--r--jessie-amd64-jenkins-master/Dockerfile6
-rw-r--r--jessie-amd64-jenkins-master/plugins.txt72
-rw-r--r--jessie-amd64/Dockerfile1
-rwxr-xr-xlava/dispatcher/build.sh44
-rwxr-xr-xlava/dispatcher/entrypoint.sh (renamed from lava/dispatcher/production/stretch-amd64/entrypoint.sh)18
-rw-r--r--lava/dispatcher/production/stretch-amd64/Dockerfile8
-rwxr-xr-xlava/dispatcher/production/stretch-amd64/build.sh19
-rw-r--r--lava/dispatcher/staging/stretch-amd64/Dockerfile46
-rw-r--r--stretch-amd64-obsworker/Dockerfile1
-rw-r--r--stretch-amd64-ota/Dockerfile19
-rwxr-xr-xstretch-amd64-ota/build.sh21
-rw-r--r--stretch-arm64-obsworker/Dockerfile1
-rw-r--r--stretch-arm64-testdef/Dockerfile18
-rwxr-xr-xstretch-arm64-testdef/build.sh21
-rw-r--r--stretch-armhf-obsworker/Dockerfile31
-rwxr-xr-xstretch-armhf-obsworker/build.sh (renamed from trusty-amd64-art/build.sh)2
-rwxr-xr-xstretch-armhf-obsworker/start-obsworker16
-rw-r--r--stretch-armhf-testdef/Dockerfile18
-rwxr-xr-xstretch-armhf-testdef/build.sh21
-rw-r--r--tcwg-base/Dockerfile.in48
-rwxr-xr-xtcwg-base/build.sh4
-rw-r--r--tcwg-base/gerrit-branches3
-rw-r--r--tcwg-base/home-data/alex.bennee/.ssh/authorized_keys3
-rw-r--r--tcwg-base/home-data/alex.bennee/bootstrap.sh78
-rw-r--r--tcwg-base/home-data/christophe.lyon/.ssh/authorized_keys1
-rw-r--r--tcwg-base/home-data/diana.picus/.ssh/authorized_keys1
-rw-r--r--tcwg-base/home-data/group3
-rw-r--r--tcwg-base/home-data/kugan.vivekanandarajah/.ssh/authorized_keys2
-rw-r--r--tcwg-base/home-data/maxim.kuvyrkov/.ssh/authorized_keys1
l---------tcwg-base/home-data/maxim.kuvyrkov/.ssh/config1
l---------tcwg-base/home-data/maxim.kuvyrkov/.ssh/known_hosts1
l---------tcwg-base/home-data/maxim.kuvyrkov/.ssh/ssh-tcwglab-nc.sh1
-rw-r--r--tcwg-base/home-data/omair.javaid/.ssh/authorized_keys1
-rw-r--r--tcwg-base/home-data/passwd12
-rw-r--r--tcwg-base/home-data/peter.smith/.ssh/authorized_keys1
-rw-r--r--tcwg-base/home-data/prathamesh.kulkarni/.ssh/authorized_keys1
-rw-r--r--tcwg-base/home-data/richard.henderson/.gitconfig7
-rw-r--r--tcwg-base/home-data/richard.henderson/.ssh/authorized_keys1
-rw-r--r--tcwg-base/home-data/tcwg-benchmark/.gitconfig (renamed from tcwg-base/tcwg-build/tcwg-benchmark/.gitconfig)0
-rw-r--r--tcwg-base/home-data/tcwg-benchmark/.ssh/authorized_keys (renamed from tcwg-base/tcwg-build/tcwg-benchmark/.ssh/authorized_keys)0
l---------tcwg-base/home-data/tcwg-benchmark/.ssh/config1
l---------tcwg-base/home-data/tcwg-benchmark/.ssh/known_hosts1
l---------tcwg-base/home-data/tcwg-benchmark/.ssh/ssh-tcwglab-nc.sh1
-rw-r--r--tcwg-base/home-data/tcwg-buildslave/.gitconfig (renamed from tcwg-base/tcwg-build/tcwg-buildslave/.gitconfig)0
-rw-r--r--tcwg-base/home-data/tcwg-buildslave/.mailrc (renamed from tcwg-base/tcwg-build/tcwg-buildslave/.mailrc)0
-rw-r--r--tcwg-base/home-data/tcwg-buildslave/.ssh/authorized_keys (renamed from tcwg-base/tcwg-build/tcwg-buildslave/.ssh/authorized_keys)0
-rw-r--r--tcwg-base/home-data/tcwg-buildslave/.ssh/config (renamed from tcwg-base/tcwg-build/tcwg-benchmark/.ssh/config)42
-rw-r--r--tcwg-base/home-data/tcwg-buildslave/.ssh/known_hosts (renamed from tcwg-base/tcwg-build/tcwg-benchmark/.ssh/known_hosts)6
-rwxr-xr-xtcwg-base/home-data/tcwg-buildslave/.ssh/ssh-tcwglab-nc.sh9
-rw-r--r--tcwg-base/home-data/yvan.roux/.ssh/authorized_keys1
-rw-r--r--tcwg-base/home-data/yvan.roux/.tmux.conf10
-rwxr-xr-xtcwg-base/new-user.sh112
-rw-r--r--tcwg-base/tcwg-build/Dockerfile.in27
-rwxr-xr-xtcwg-base/tcwg-build/build.sh6
-rwxr-xr-xtcwg-base/tcwg-build/new-user.sh55
-rw-r--r--tcwg-base/tcwg-build/tcwg-buildslave/.ssh/config60
-rw-r--r--tcwg-base/tcwg-build/tcwg-buildslave/.ssh/known_hosts30
-rw-r--r--tcwg-base/tcwg-dev/Dockerfile.in23
-rwxr-xr-xtcwg-base/tcwg-dev/run.sh25
-rwxr-xr-xtcwg-base/tcwg-dev/start.sh79
-rw-r--r--tcwg-base/tcwg-dev/tcwg-x2go/Dockerfile.in5
-rw-r--r--tcwg-base/tcwg-host/Dockerfile.in13
-rwxr-xr-xtcwg-base/tcwg-host/build.sh28
-rwxr-xr-xtcwg-base/tcwg-host/docker-stats3
-rwxr-xr-xtcwg-base/tcwg-host/docker-wrapper2
l---------tcwg-base/tcwg-host/gerrit-branches1
-rwxr-xr-xtcwg-base/tcwg-host/run.sh36
-rwxr-xr-xtcwg-base/tcwg-host/start.sh82
-rw-r--r--tcwg-base/tcwg-llvmbot/Dockerfile.in12
-rw-r--r--tcwg-base/tcwg-llvmbot/gerrit-branches1
-rwxr-xr-xtcwg-base/tcwg-llvmbot/run.sh161
-rwxr-xr-xtcwg-base/tcwg-llvmbot/start.sh62
-rw-r--r--trusty-amd64-art/Dockerfile63
-rw-r--r--trusty-amd64-tcwg-base/Dockerfile31
-rw-r--r--trusty-amd64-tcwg-base/trusty-amd64-tcwg-build/Dockerfile23
-rw-r--r--trusty-amd64-tcwg-base/trusty-amd64-tcwg-dev/Dockerfile25
-rw-r--r--trusty-arm64-tcwg-base/Dockerfile28
-rw-r--r--trusty-arm64-tcwg-base/trusty-arm64-tcwg-build/Dockerfile25
-rw-r--r--trusty-arm64-tcwg-base/trusty-arm64-tcwg-dev/Dockerfile25
-rw-r--r--trusty-armhf-tcwg-base/Dockerfile28
-rw-r--r--trusty-armhf-tcwg-base/trusty-armhf-tcwg-build/Dockerfile25
-rw-r--r--trusty-armhf-tcwg-base/trusty-armhf-tcwg-dev/Dockerfile25
-rw-r--r--trusty-i386-tcwg-base/Dockerfile31
-rw-r--r--trusty-i386-tcwg-base/trusty-i386-tcwg-build/Dockerfile23
-rw-r--r--utopic-amd64-art/Dockerfile7
-rw-r--r--xenial-amd64-tcwg-base/Dockerfile29
-rw-r--r--xenial-amd64-tcwg-base/xenial-amd64-tcwg-build/Dockerfile23
-rw-r--r--xenial-amd64-tcwg-base/xenial-amd64-tcwg-dev/Dockerfile25
-rw-r--r--xenial-amd64-tcwg-base/xenial-amd64-tcwg-host/Dockerfile11
l---------xenial-amd64-tcwg-base/xenial-amd64-tcwg-host/build.sh1
l---------xenial-amd64-tcwg-base/xenial-amd64-tcwg-host/gerrit-branches1
-rw-r--r--xenial-arm64-tcwg-base/Dockerfile26
-rw-r--r--xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/Dockerfile25
-rw-r--r--xenial-arm64-tcwg-base/xenial-arm64-tcwg-dev/Dockerfile25
-rw-r--r--xenial-arm64-tcwg-base/xenial-arm64-tcwg-host/Dockerfile11
l---------xenial-arm64-tcwg-base/xenial-arm64-tcwg-host/build.sh1
l---------xenial-arm64-tcwg-base/xenial-arm64-tcwg-host/gerrit-branches1
-rw-r--r--xenial-arm64-tcwg-base/xenial-arm64-tcwg-llvmbot/Dockerfile18
-rw-r--r--xenial-armhf-tcwg-base/Dockerfile26
-rw-r--r--xenial-armhf-tcwg-base/xenial-armhf-tcwg-build/Dockerfile25
-rw-r--r--xenial-armhf-tcwg-base/xenial-armhf-tcwg-dev/Dockerfile25
-rw-r--r--xenial-armhf-tcwg-base/xenial-armhf-tcwg-host/Dockerfile11
l---------xenial-armhf-tcwg-base/xenial-armhf-tcwg-host/build.sh1
l---------xenial-armhf-tcwg-base/xenial-armhf-tcwg-host/gerrit-branches1
-rw-r--r--xenial-armhf-tcwg-base/xenial-armhf-tcwg-llvmbot/Dockerfile18
-rw-r--r--xenial-i386-tcwg-base/Dockerfile29
-rw-r--r--xenial-i386-tcwg-base/xenial-i386-tcwg-build/Dockerfile23
-rw-r--r--xenial-i386-tcwg-base/xenial-i386-tcwg-dev/Dockerfile25
129 files changed, 1806 insertions, 828 deletions
diff --git a/README b/README
index e1e5a6b7..ba2119c5 100644
--- a/README
+++ b/README
@@ -9,6 +9,38 @@ Contributing
If you want to contribute changes, you can send Gerrit merge requests at
https://review.linaro.org/#/q/project:ci/dockerfiles
+TCWG images
+-----------
+
+Docker images used by the TCWG team are generated slightly differently
+from the other ones. The source files describing the images contents
+are stored under tcwg-base, in nested directories where nesting shows
+images dependencies. For instance, tcwg-build type of images depend on
+tcwg-base.
+
+If you want to (re)build locally a TCWG image after updating its
+Dockerfile.in or its build.sh, go to the directory whose name fully
+describes the image. For instance
+xenial-arm64-tcwg-base/xenial-arm64-tcwg-build, and run ./build.sh
+from there to rebuild the xenial-arm64-tcwg-build image.
+
+TCWG's Dockerfiles in DISTRO-ARCH-tcwg-base/* directories are generated
+from Dockerfile.in templates in respective tcwg-base/* directories. Run
+tcwg-base/generate-dockerfiles.sh (without parameters) whenever you
+change any of Dockerfile.in templates -- this will update all affected
+Dockerfiles.
+
+Once Dockerfiles are regenerated, you should test your change locally
+by building the image. For this go to image's directory and run
+"./build.sh". "./build.sh" script uses name of current directory to
+determine distro version and other parameters, so it's important
+to run "./build.sh" from its own directory.
+
+Note that "./build.sh" will first re-build all images that current image
+is derived from. E.g., *-tcwg-dev image will first re-build respective
+*-tcwg-base image -- this can take a lot of time for the first run,
+but, once cache is populated, re-builds are very quick.
+
Maintainer(s)
-------------
diff --git a/bionic-amd64-tcwg-base/Dockerfile b/bionic-amd64-tcwg-base/Dockerfile
new file mode 100644
index 00000000..1e639a57
--- /dev/null
+++ b/bionic-amd64-tcwg-base/Dockerfile
@@ -0,0 +1,149 @@
+# Auto generated from tcwg-base/Dockerfile.in. Do not edit.
+FROM ubuntu:bionic
+
+# Unminimize Ubuntu Bionic to install contrib files of git (after package
+# update, otherwise unminimize's "apt upgrade" might fail).
+RUN true \
+ && apt-get update \
+ && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \
+ && echo y | unminimize \
+ && DEBIAN_FRONTEND=noninteractive apt-get install -y devscripts \
+ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
+ alien \
+ autoconf \
+ autogen \
+ automake \
+ bc \
+ bind9-host \
+ bison \
+ binutils-aarch64-linux-gnu \
+ binutils-arm-linux-gnueabihf \
+ bsd-mailx \
+ build-essential \
+ byacc \
+ ccache \
+ ccrypt \
+ chrpath \
+ clang \
+ cmake \
+ debhelper \
+ dejagnu \
+ dh-autoreconf \
+ dh-translations \
+ distro-info-data \
+ emacs \
+ fakeroot \
+ flex \
+ gawk \
+ gdb \
+ gdbserver \
+ git \
+ git-review \
+ groff \
+ less \
+ libexpat1-dev \
+ libglib2.0-dev \
+ libgmp-dev \
+ liblzma-dev \
+ libmpc-dev \
+ libmpfr-dev \
+ libncurses5-dev \
+ libpixman-1-dev \
+ libpython2.7-dev \
+ libreadline-dev \
+ libssl-dev \
+ libtcnative-1 \
+ libtool \
+ linux-tools-generic \
+ linux-tools-4.18.0-13-generic \
+ lzop \
+ make \
+ mingw-w64 \
+ net-tools \
+ netcat \
+ nfs-kernel-server \
+ ninja-build \
+ openjdk-8-jdk \
+ openssh-server \
+ pkg-config \
+ python-dev \
+ postfix \
+ psmisc \
+ pxz \
+ qemu-system-arm \
+ qemu-user \
+ rsync \
+ subversion \
+ sudo \
+ tclsh \
+ texinfo \
+ texlive-fonts-recommended \
+ texlive-latex-recommended \
+ time \
+ unifdef \
+ valgrind \
+ vim \
+ virtualenv \
+ wget \
+ xz-utils \
+ zip \
+ zlib1g-dev \
+ && apt-get clean \
+ && rm -rf \
+ /var/lib/apt/lists/* \
+ /tmp/* \
+ /var/tmp/*
+
+RUN install -D -p -m0755 /usr/share/doc/git/contrib/workdir/git-new-workdir /usr/local/bin/git-new-workdir \
+ && sed -i -e 's:^session *required *pam_loginuid.so:# session required pam_loginuid.so:' /etc/pam.d/sshd \
+ && mkdir -p /var/run/sshd \
+ && sed -i \
+ -e "/.*MaxStartups.*/d" \
+ -e "/.*MaxSessions.*/d" /etc/ssh/sshd_config \
+ && echo "MaxStartups 256" >> /etc/ssh/sshd_config \
+ && echo "MaxSessions 256" >> /etc/ssh/sshd_config
+
+COPY postfix-main.cf.in /etc/postfix/main.cf
+COPY postfix-sasl_password.in /etc/postfix/sasl_password
+
+RUN chown root:root /etc/postfix/sasl_password \
+ && chmod 600 /etc/postfix/sasl_password
+
+# Add ninja with support for memory-threshold job limitation.
+# It's installed with ".bin" extension and containers then
+# make wrappers around it in /usr/local/bin/ninja as needed.
+RUN git clone -b master https://github.com/maxim-kuvyrkov/ninja.git \
+ && cd ninja \
+ && ./configure.py --bootstrap && ./ninja all && ./ninja_test \
+ && mv ninja /usr/local/bin/ninja.bin \
+ && cd .. \
+ && rm -rf ninja
+
+RUN mkdir /tmp/docker-install-qemu.$$ \
+ && cd /tmp/docker-install-qemu.$$ \
+ && qemu_ver=3.1.0 && wget --progress=dot:giga http://download.qemu-project.org/qemu-${qemu_ver}.tar.xz \
+ && tar xf qemu-${qemu_ver}.tar.xz \
+ && mkdir build && cd build \
+ && ../qemu-${qemu_ver}/configure --prefix=/usr/local --target-list=armeb-linux-user \
+ && make all install -j $(nproc --all) \
+ && cd && rm -rf /tmp/docker-install-qemu.$$
+
+
+COPY home-data/ /home-data/
+COPY new-user.sh /usr/local/bin/
+
+RUN \
+ while read line; do \
+ new-user.sh --group $(echo "$line" | cut -d: -f 1,3); \
+ done </home-data/group
+
+# We use ssh multiplexing, which creates sockets in /tmp. Overlayfs,
+# which docker is using, can't host sockets, so we use a scratch mount
+# for /tmp. This requires that we add --rm option to "docker run"
+# invocations (e.g., mark "Remove volumes" checkbox in docker plugin) to
+# cleanup host directories used for the scratch mounts.
+VOLUME /tmp
+
+EXPOSE 22
+CMD ["/usr/sbin/sshd", "-D"]
+# checksum: af1326e7c8496d13d3b9983562697055
diff --git a/bionic-amd64-tcwg-base/bionic-amd64-tcwg-build/Dockerfile b/bionic-amd64-tcwg-base/bionic-amd64-tcwg-build/Dockerfile
new file mode 100644
index 00000000..2805cc4b
--- /dev/null
+++ b/bionic-amd64-tcwg-base/bionic-amd64-tcwg-build/Dockerfile
@@ -0,0 +1,24 @@
+# Auto generated from tcwg-base/tcwg-build/Dockerfile.in. Do not edit.
+FROM linaro/ci-amd64-tcwg-base-ubuntu:bionic
+
+RUN while read line; do \
+ if [ x"$(echo "$line" | cut -d: -f 4)" != x"9000" ]; then \
+ continue; \
+ fi; \
+ new-user.sh --passwd "$line"; \
+ user=$(echo "$line" | cut -d: -f 1); \
+ sudo -i -u $user ccache --print-config; \
+ done </home-data/passwd
+
+# Install wine. On amd64 arch we need to enable i386, otherwise wine
+# won't meet dependencies (this is the case at least for trusty and xenial).
+RUN \
+ apt-get update \
+ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
+ wine-stable \
+ && apt-get clean \
+ && rm -rf \
+ /var/lib/apt/lists/* \
+ /tmp/* \
+ /var/tmp/*
+# checksum: edf5a5242fe46cab578b914fe031b6d0
diff --git a/bionic-amd64-tcwg-base/bionic-amd64-tcwg-build/build.sh b/bionic-amd64-tcwg-base/bionic-amd64-tcwg-build/build.sh
new file mode 120000
index 00000000..50162e02
--- /dev/null
+++ b/bionic-amd64-tcwg-base/bionic-amd64-tcwg-build/build.sh
@@ -0,0 +1 @@
+../../tcwg-base/tcwg-build/build.sh \ No newline at end of file
diff --git a/bionic-amd64-tcwg-base/bionic-amd64-tcwg-build/gerrit-branches b/bionic-amd64-tcwg-base/bionic-amd64-tcwg-build/gerrit-branches
new file mode 120000
index 00000000..628350a5
--- /dev/null
+++ b/bionic-amd64-tcwg-base/bionic-amd64-tcwg-build/gerrit-branches
@@ -0,0 +1 @@
+../../tcwg-base/tcwg-build/gerrit-branches \ No newline at end of file
diff --git a/bionic-amd64-tcwg-base/bionic-amd64-tcwg-dev/Dockerfile b/bionic-amd64-tcwg-base/bionic-amd64-tcwg-dev/Dockerfile
new file mode 100644
index 00000000..bc19c8c3
--- /dev/null
+++ b/bionic-amd64-tcwg-base/bionic-amd64-tcwg-dev/Dockerfile
@@ -0,0 +1,34 @@
+# Auto generated from tcwg-base/tcwg-dev/Dockerfile.in. Do not edit.
+FROM linaro/ci-amd64-tcwg-base-ubuntu:bionic
+
+RUN apt-get update \
+ && DEBIAN_FRONTEND=noninteractive apt-get install -y \
+ apt-file \
+ git-gui \
+ git-svn \
+ gnat-5 \
+ less \
+ locales \
+ mc \
+ screen \
+ software-properties-common \
+ stgit \
+ tmux \
+ && apt-get clean \
+ && rm -rf \
+ /var/lib/apt/lists/* \
+ /tmp/* \
+ /var/tmp/*
+
+RUN locale-gen en_US.UTF-8 && update-locale LANG=en_US.UTF-8 \
+ && apt-file update
+
+# Create directories required for X11.
+RUN mkdir -p /tmp/.X11-unix /tmp/.ICE-unix \
+ && chmod 1777 /tmp/.X11-unix /tmp/.ICE-unix
+
+COPY run.sh start.sh /
+
+ENTRYPOINT ["/run.sh"]
+CMD ["start.sh"]
+# checksum: e0acd069d02b7a2424ac723f3a7bf358
diff --git a/xenial-amd64-tcwg-base/xenial-amd64-tcwg-dev/xenial-amd64-tcwg-x2go/Dockerfile b/bionic-amd64-tcwg-base/bionic-amd64-tcwg-dev/bionic-amd64-tcwg-x2go/Dockerfile
index a7909d59..631ee616 100644
--- a/xenial-amd64-tcwg-base/xenial-amd64-tcwg-dev/xenial-amd64-tcwg-x2go/Dockerfile
+++ b/bionic-amd64-tcwg-base/bionic-amd64-tcwg-dev/bionic-amd64-tcwg-x2go/Dockerfile
@@ -1,5 +1,5 @@
# Auto generated from tcwg-base/tcwg-dev/tcwg-x2go/Dockerfile.in. Do not edit.
-FROM linaro/ci-amd64-tcwg-dev-ubuntu:xenial
+FROM linaro/ci-amd64-tcwg-dev-ubuntu:bionic
COPY start.sh .
@@ -12,13 +12,10 @@ RUN apt-get update \
/tmp/* \
/var/tmp/*
-RUN add-apt-repository ppa:x2go/stable \
- && apt-get update \
+RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y \
duplicity \
mate-desktop-environment \
- x2godesktopsharing \
- x2gomatebindings \
x2goserver \
x2goserver-xsession \
&& apt-get clean \
@@ -35,4 +32,4 @@ RUN apt-get update \
/var/lib/apt/lists/* \
/tmp/* \
/var/tmp/*
-# checksum: 3e1c139ac1715b1096130c6e90c55fc9
+# checksum: a30214ab5fb77eefe535dc3b2edc9d44
diff --git a/xenial-amd64-tcwg-base/xenial-amd64-tcwg-dev/xenial-amd64-tcwg-x2go/build.sh b/bionic-amd64-tcwg-base/bionic-amd64-tcwg-dev/bionic-amd64-tcwg-x2go/build.sh
index 6e52e4e6..6e52e4e6 120000
--- a/xenial-amd64-tcwg-base/xenial-amd64-tcwg-dev/xenial-amd64-tcwg-x2go/build.sh
+++ b/bionic-amd64-tcwg-base/bionic-amd64-tcwg-dev/bionic-amd64-tcwg-x2go/build.sh
diff --git a/xenial-amd64-tcwg-base/xenial-amd64-tcwg-dev/xenial-amd64-tcwg-x2go/gerrit-branches b/bionic-amd64-tcwg-base/bionic-amd64-tcwg-dev/bionic-amd64-tcwg-x2go/gerrit-branches
index 748350c7..748350c7 120000
--- a/xenial-amd64-tcwg-base/xenial-amd64-tcwg-dev/xenial-amd64-tcwg-x2go/gerrit-branches
+++ b/bionic-amd64-tcwg-base/bionic-amd64-tcwg-dev/bionic-amd64-tcwg-x2go/gerrit-branches
diff --git a/bionic-amd64-tcwg-base/bionic-amd64-tcwg-dev/build.sh b/bionic-amd64-tcwg-base/bionic-amd64-tcwg-dev/build.sh
new file mode 120000
index 00000000..e8571a37
--- /dev/null
+++ b/bionic-amd64-tcwg-base/bionic-amd64-tcwg-dev/build.sh
@@ -0,0 +1 @@
+../../tcwg-base/tcwg-dev/build.sh \ No newline at end of file
diff --git a/bionic-amd64-tcwg-base/bionic-amd64-tcwg-dev/gerrit-branches b/bionic-amd64-tcwg-base/bionic-amd64-tcwg-dev/gerrit-branches
new file mode 120000
index 00000000..cd148228
--- /dev/null
+++ b/bionic-amd64-tcwg-base/bionic-amd64-tcwg-dev/gerrit-branches
@@ -0,0 +1 @@
+../../tcwg-base/tcwg-dev/gerrit-branches \ No newline at end of file
diff --git a/bionic-amd64-tcwg-base/build.sh b/bionic-amd64-tcwg-base/build.sh
new file mode 120000
index 00000000..67d8934e
--- /dev/null
+++ b/bionic-amd64-tcwg-base/build.sh
@@ -0,0 +1 @@
+../tcwg-base/build.sh \ No newline at end of file
diff --git a/bionic-amd64-tcwg-base/gerrit-branches b/bionic-amd64-tcwg-base/gerrit-branches
new file mode 120000
index 00000000..3cbaca1d
--- /dev/null
+++ b/bionic-amd64-tcwg-base/gerrit-branches
@@ -0,0 +1 @@
+../tcwg-base/gerrit-branches \ No newline at end of file
diff --git a/bionic-arm64-tcwg-base/Dockerfile b/bionic-arm64-tcwg-base/Dockerfile
new file mode 100644
index 00000000..3c995343
--- /dev/null
+++ b/bionic-arm64-tcwg-base/Dockerfile
@@ -0,0 +1,134 @@
+# Auto generated from tcwg-base/Dockerfile.in. Do not edit.
+FROM ubuntu:bionic
+
+# Unminimize Ubuntu Bionic to install contrib files of git (after package
+# update, otherwise unminimize's "apt upgrade" might fail).
+RUN true \
+ && apt-get update \
+ && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \
+ && echo y | unminimize \
+ && DEBIAN_FRONTEND=noninteractive apt-get install -y devscripts \
+ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
+ alien \
+ autoconf \
+ autogen \
+ automake \
+ bc \
+ bind9-host \
+ bison \
+ bsd-mailx \
+ build-essential \
+ byacc \
+ ccache \
+ ccrypt \
+ chrpath \
+ clang \
+ cmake \
+ debhelper \
+ dejagnu \
+ dh-autoreconf \
+ dh-translations \
+ distro-info-data \
+ emacs \
+ fakeroot \
+ flex \
+ gawk \
+ gdb \
+ gdbserver \
+ git \
+ git-review \
+ groff \
+ less \
+ libexpat1-dev \
+ libgmp-dev \
+ liblzma-dev \
+ libmpc-dev \
+ libmpfr-dev \
+ libncurses5-dev \
+ libpython2.7-dev \
+ libreadline-dev \
+ libssl-dev \
+ libtcnative-1 \
+ libtool \
+ linux-tools-generic \
+ linux-tools-4.18.0-13-generic \
+ lzop \
+ make \
+ net-tools \
+ netcat \
+ nfs-kernel-server \
+ ninja-build \
+ openjdk-8-jdk \
+ openssh-server \
+ python-dev \
+ postfix \
+ psmisc \
+ pxz \
+ qemu-system-arm \
+ qemu-user \
+ rsync \
+ subversion \
+ sudo \
+ tclsh \
+ texinfo \
+ texlive-fonts-recommended \
+ texlive-latex-recommended \
+ time \
+ unifdef \
+ valgrind \
+ vim \
+ virtualenv \
+ wget \
+ xz-utils \
+ zip \
+ zlib1g-dev \
+ && apt-get clean \
+ && rm -rf \
+ /var/lib/apt/lists/* \
+ /tmp/* \
+ /var/tmp/*
+
+RUN install -D -p -m0755 /usr/share/doc/git/contrib/workdir/git-new-workdir /usr/local/bin/git-new-workdir \
+ && sed -i -e 's:^session *required *pam_loginuid.so:# session required pam_loginuid.so:' /etc/pam.d/sshd \
+ && mkdir -p /var/run/sshd \
+ && sed -i \
+ -e "/.*MaxStartups.*/d" \
+ -e "/.*MaxSessions.*/d" /etc/ssh/sshd_config \
+ && echo "MaxStartups 256" >> /etc/ssh/sshd_config \
+ && echo "MaxSessions 256" >> /etc/ssh/sshd_config
+
+COPY postfix-main.cf.in /etc/postfix/main.cf
+COPY postfix-sasl_password.in /etc/postfix/sasl_password
+
+RUN chown root:root /etc/postfix/sasl_password \
+ && chmod 600 /etc/postfix/sasl_password
+
+# Add ninja with support for memory-threshold job limitation.
+# It's installed with ".bin" extension and containers then
+# make wrappers around it in /usr/local/bin/ninja as needed.
+RUN git clone -b master https://github.com/maxim-kuvyrkov/ninja.git \
+ && cd ninja \
+ && ./configure.py --bootstrap && ./ninja all && ./ninja_test \
+ && mv ninja /usr/local/bin/ninja.bin \
+ && cd .. \
+ && rm -rf ninja
+
+
+COPY home-data/ /home-data/
+COPY new-user.sh /usr/local/bin/
+
+RUN \
+ while read line; do \
+ new-user.sh --group $(echo "$line" | cut -d: -f 1,3); \
+ done </home-data/group
+
+# We use ssh multiplexing, which creates sockets in /tmp. Overlayfs,
+# which docker is using, can't host sockets, so we use a scratch mount
+# for /tmp. This requires that we add --rm option to "docker run"
+# invocations (e.g., mark "Remove volumes" checkbox in docker plugin) to
+# cleanup host directories used for the scratch mounts.
+VOLUME /tmp
+
+EXPOSE 22
+CMD ["/usr/sbin/sshd", "-D"]
+# checksum: 50a99c601dd50c455613a9aa28c5c136
diff --git a/bionic-arm64-tcwg-base/bionic-arm64-tcwg-dev/Dockerfile b/bionic-arm64-tcwg-base/bionic-arm64-tcwg-dev/Dockerfile
new file mode 100644
index 00000000..78fde257
--- /dev/null
+++ b/bionic-arm64-tcwg-base/bionic-arm64-tcwg-dev/Dockerfile
@@ -0,0 +1,34 @@
+# Auto generated from tcwg-base/tcwg-dev/Dockerfile.in. Do not edit.
+FROM linaro/ci-arm64-tcwg-base-ubuntu:bionic
+
+RUN apt-get update \
+ && DEBIAN_FRONTEND=noninteractive apt-get install -y \
+ apt-file \
+ git-gui \
+ git-svn \
+ gnat-5 \
+ less \
+ locales \
+ mc \
+ screen \
+ software-properties-common \
+ stgit \
+ tmux \
+ && apt-get clean \
+ && rm -rf \
+ /var/lib/apt/lists/* \
+ /tmp/* \
+ /var/tmp/*
+
+RUN locale-gen en_US.UTF-8 && update-locale LANG=en_US.UTF-8 \
+ && apt-file update
+
+# Create directories required for X11.
+RUN mkdir -p /tmp/.X11-unix /tmp/.ICE-unix \
+ && chmod 1777 /tmp/.X11-unix /tmp/.ICE-unix
+
+COPY run.sh start.sh /
+
+ENTRYPOINT ["/run.sh"]
+CMD ["start.sh"]
+# checksum: e1d4f2e78ee4ff7ae86f1e22953e476d
diff --git a/bionic-arm64-tcwg-base/bionic-arm64-tcwg-dev/build.sh b/bionic-arm64-tcwg-base/bionic-arm64-tcwg-dev/build.sh
new file mode 120000
index 00000000..e8571a37
--- /dev/null
+++ b/bionic-arm64-tcwg-base/bionic-arm64-tcwg-dev/build.sh
@@ -0,0 +1 @@
+../../tcwg-base/tcwg-dev/build.sh \ No newline at end of file
diff --git a/bionic-arm64-tcwg-base/bionic-arm64-tcwg-dev/gerrit-branches b/bionic-arm64-tcwg-base/bionic-arm64-tcwg-dev/gerrit-branches
new file mode 120000
index 00000000..cd148228
--- /dev/null
+++ b/bionic-arm64-tcwg-base/bionic-arm64-tcwg-dev/gerrit-branches
@@ -0,0 +1 @@
+../../tcwg-base/tcwg-dev/gerrit-branches \ No newline at end of file
diff --git a/bionic-arm64-tcwg-base/build.sh b/bionic-arm64-tcwg-base/build.sh
new file mode 120000
index 00000000..67d8934e
--- /dev/null
+++ b/bionic-arm64-tcwg-base/build.sh
@@ -0,0 +1 @@
+../tcwg-base/build.sh \ No newline at end of file
diff --git a/bionic-arm64-tcwg-base/gerrit-branches b/bionic-arm64-tcwg-base/gerrit-branches
new file mode 120000
index 00000000..3cbaca1d
--- /dev/null
+++ b/bionic-arm64-tcwg-base/gerrit-branches
@@ -0,0 +1 @@
+../tcwg-base/gerrit-branches \ No newline at end of file
diff --git a/ci-amd64-llp-alpine/Dockerfile b/ci-amd64-llp-alpine/Dockerfile
index ee804cdf..0a5e28af 100644
--- a/ci-amd64-llp-alpine/Dockerfile
+++ b/ci-amd64-llp-alpine/Dockerfile
@@ -12,12 +12,13 @@ RUN mkdir -p $APPDIR
WORKDIR $APPDIR
-RUN apk --update --no-cache add python2 py2-pip mysql-client git py-gunicorn sqlite && \
- apk --no-cache add gcc g++ python2-dev musl-dev libffi-dev postgresql-dev && \
- git clone https://git.linaro.org/infrastructure/linaro-license-protection.git/ $APPDIR && \
- pip2 install --upgrade pip setuptools six && \
- pip2 install -U -r $APPDIR/requirements.txt && \
- apk del gcc g++ python3-dev musl-dev libffi-dev
+RUN apk update && \
+ apk --no-cache add python2 py2-pip mysql-client git py-gunicorn sqlite && \
+ apk --no-cache add gcc g++ python2-dev musl-dev libffi-dev postgresql-dev && \
+ git clone https://git.linaro.org/infrastructure/linaro-license-protection.git/ $APPDIR && \
+ pip2 install --upgrade pip setuptools six && \
+ pip2 install -U -r $APPDIR/requirements.txt && \
+ apk del gcc g++ python3-dev musl-dev libffi-dev
EXPOSE $PORT
diff --git a/ci-amd64-llp-alpine/test_run.sh b/ci-amd64-llp-alpine/test_run.sh
new file mode 100755
index 00000000..fd2767d7
--- /dev/null
+++ b/ci-amd64-llp-alpine/test_run.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+REPO=/tmp/test-llp-root
+
+mkdir -p $REPO/test-llp.linaro.org
+test \! -d $REPO/linaro-license-protection && (cd $REPO; git clone https://git.linaro.org/infrastructure/linaro-license-protection.git)
+
+docker run --name test-llp --rm -p 8080:8080 -v $REPO/test-llp.linaro.org:/srv -v $REPO/linaro-license-protection:/srv/linaro-license-protection linaro/ci-amd64-llp-alpine
diff --git a/jessie-amd64-jenkins-master/Dockerfile b/jessie-amd64-jenkins-master/Dockerfile
index dd51062e..84a52d2c 100644
--- a/jessie-amd64-jenkins-master/Dockerfile
+++ b/jessie-amd64-jenkins-master/Dockerfile
@@ -1,8 +1,8 @@
-FROM jenkins/jenkins:2.107.3
+FROM jenkins/jenkins:2.150.2
ENV JENKINS_JAVA_PARAMETERS="-server -XX:+AlwaysPreTouch -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/jenkins/heapdump.log -verbose:gc -Xloggc:/var/log/jenkins/gc-%t.log -XX:NumberOfGCLogFiles=2 -XX:+UseGCLogFileRotation -XX:GCLogFileSize=100m -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintGCCause -XX:+PrintTenuringDistribution -XX:+PrintReferenceGC -XX:+PrintAdaptiveSizePolicy -XX:+UseG1GC -XX:+UseStringDeduplication -XX:+ParallelRefProcEnabled -XX:+ExplicitGCInvokesConcurrent -XX:+UnlockDiagnosticVMOptions -XX:G1SummarizeRSetStatsPeriod=1 -XX:MaxMetaspaceExpansion=64M -Djenkins.model.Jenkins.logStartupPerformance=true"
ENV JAVA_OPTS="-Xms4g -Xmx8g $JENKINS_JAVA_PARAMETERS -Djava.awt.headless=true -Dhudson.slaves.WorkspaceList='_' -Dhudson.model.ParametersAction.keepUndefinedParameters=true -Dorg.jenkinsci.plugins.gitclient.Git.timeOut=30 -Dorg.eclipse.jetty.server.Request.maxFormContentSize=1000000"
-ENV JENKINS_OPTS="--sessionTimeout=1440"
+ENV JENKINS_OPTS="--sessionTimeout=1440 --sessionEviction=1440"
# Install jenkins job builder
# Create plugins directory, symlinked on host machine
@@ -10,7 +10,7 @@ USER root
RUN wget -q https://bootstrap.pypa.io/get-pip.py -O /tmp/get-pip.py \
&& python /tmp/get-pip.py \
&& rm -f /tmp/get-pip.py \
- && pip install jenkins-job-builder==2.0.5 pyyaml==3.12 jinja2==2.9.6 python-jenkins==0.4.15 \
+ && pip install jenkins-job-builder==2.5.0 pyyaml==3.12 jinja2==2.9.6 python-jenkins==0.4.15 \
&& git clone --depth 1 https://git.linaro.org/infrastructure/jjb-linaro-plugin.git \
&& cd jjb-linaro-plugin && python setup.py install \
&& cd .. && rm -rf jjb-linaro-plugin \
diff --git a/jessie-amd64-jenkins-master/plugins.txt b/jessie-amd64-jenkins-master/plugins.txt
index a435645d..be8dffd0 100644
--- a/jessie-amd64-jenkins-master/plugins.txt
+++ b/jessie-amd64-jenkins-master/plugins.txt
@@ -1,69 +1,71 @@
-ansicolor:0.5.2
-ant:1.8
+ansicolor:0.6.1
+ant:1.9
antisamy-markup-formatter:1.5
-apache-httpcomponents-client-4-api:4.5.5-2.0
-bouncycastle-api:2.16.2
-build-blocker:1.7.3
-build-monitor-plugin:1.12+build.201708172343
+apache-httpcomponents-client-4-api:4.5.5-3.0
+bouncycastle-api:2.17
+build-blocker-plugin:1.7.3
+build-monitor-plugin:1.12+build.201809061734
build-name-setter:1.6.9
build-timeout:1.19
command-launcher:1.2
+copyartifact:1.41
copy-to-slave:1.4.4
-copyartifact:1.39.1
-coverity:1.11.0
-crowd2:1.8
+coverity:1.11.3
+crowd2:2.0.1
cvs:2.14
docker-build-publish:1.3.2
-docker-plugin:1.0.0
docker-slaves:1.0.7
dropdown-viewstabbar-plugin:1.7
dynamic-axis:1.0.3
-ec2:1.39
-email-ext:2.62
+ec2:1.41
+email-ext:2.63
embeddable-build-status:1.9
+extended-choice-parameter:0.76
extended-read-permission:2.0
external-monitor-job:1.7
-ghprb:1.40.0
-gerrit-trigger:2.27.5
+ghprb:1.42.0
+gerrit-trigger:2.28.0
github-organization-folder:1.6
greenballs:1.15
-groovy-postbuild:2.4.1
+groovy-postbuild:2.4.3
heavy-job:1.1
-htmlpublisher:1.16
+htmlpublisher:1.17
ircbot:2.30
-jira:2.5.2
-jenkins-multijob-plugin:1.30
-jobConfigHistory:2.18
+jdk-tool:1.2
+jira:3.0.5
+jenkins-multijob-plugin:1.31
+jobConfigHistory:2.19
ldap:1.20
leastload:2.0.1
log-parser:2.0
-matrix-auth:2.2
+matrix-auth:2.3
matrix-combinations-parameter:1.3.0
matrixtieparent:1.2
mercurial:1.61
-metrics:3.1.2.11
-monitoring:1.72.0
+metrics:4.0.2.2
+monitoring:1.75.0
multiple-scms:0.6
naginator:1.17.2
nodelabelparameter:1.7.2
-pam-auth:1.3
-pipeline-utility-steps:2.1.0
+pam-auth:1.4
+postbuildscript:2.8.1
+pipeline-utility-steps:2.2.0
plot:1.11
PrioritySorter:3.6.0
-publish-over-ssh:1.19.1
-rebuild:1.28
+publish-over-ssh:1.20.1
+rebuild:1.29
repo:1.10.7
-simple-theme-plugin:0.4
-ssh-agent:1.15
-subversion:2.10.5
+simple-theme-plugin:0.5.1
+ssh-agent:1.17
+subversion:2.12.1
tap:2.2.1
throttle-concurrents:2.0.1
timestamper:1.8.10
translation:1.16
-urltrigger:0.41
-warnings:4.66
-windows-slaves:1.3.1
-workflow-aggregator:2.5
-ws-cleanup:0.34
+urltrigger:0.44
+warnings:5.0.0
+windows-slaves:1.4
+workflow-aggregator:2.6
+ws-cleanup:0.37
xvfb:1.1.3
-yet-another-docker-plugin:0.1.0-rc47
+yet-another-docker-plugin:0.1.0-rc50
diff --git a/jessie-amd64/Dockerfile b/jessie-amd64/Dockerfile
index 76e5d106..22ee77fc 100644
--- a/jessie-amd64/Dockerfile
+++ b/jessie-amd64/Dockerfile
@@ -70,3 +70,4 @@ VOLUME ["/var/lib/libvirt"]
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
+
diff --git a/lava/dispatcher/build.sh b/lava/dispatcher/build.sh
new file mode 100755
index 00000000..50cab78e
--- /dev/null
+++ b/lava/dispatcher/build.sh
@@ -0,0 +1,44 @@
+#!/bin/sh
+
+# An example invocation of this script would be:
+#
+# ./build.sh -r production -d stretch -a amd64
+
+set -e
+
+export LANG=C
+
+while getopts "r:d:a:" opt; do
+ case $opt in
+ r)
+ REPO="$OPTARG"
+ ;;
+ d)
+ DISTRIBUTION="$OPTARG"
+ ;;
+ a)
+ ARCH="$OPTARG"
+ ;;
+ ?)
+ echo "Usage:"
+ echo "-r - repository such as production or staging"
+ echo "-d - distribution such as stretch"
+ echo "-a - architecture such as amd64"
+ exit 1
+ ;;
+ esac
+done
+
+if [ "$REPO" = staging ]; then
+ VERSION="latest"
+else
+ # Get version by parsing Packages file from respective repo.
+ VERSION=$(wget -qO - http://images.validation.linaro.org/${REPO}-repo/dists/${DISTRIBUTION}-backports/main/binary-${ARCH}/Packages \
+ | grep -A5 '^Package: lava-dispatcher' | grep '^Version: ' \
+ | awk '{ print $2 }' \
+ | sed 's/[~|+].*//')
+fi
+
+image=linaro/lava-dispatcher-${REPO}-${DISTRIBUTION}-${ARCH}:${VERSION}
+docker build --no-cache --pull --tag=$image -f ${REPO}/${DISTRIBUTION}-${ARCH}/Dockerfile .
+echo $image > .docker-tag
diff --git a/lava/dispatcher/production/stretch-amd64/entrypoint.sh b/lava/dispatcher/entrypoint.sh
index 74bc9c7e..490f236e 100755
--- a/lava/dispatcher/production/stretch-amd64/entrypoint.sh
+++ b/lava/dispatcher/entrypoint.sh
@@ -23,9 +23,6 @@
# LOG_LEVEL Log level (DEBUG, ERROR, INFO, WARN); default to INFO
# Example: LOG_LEVEL='DEBUG'
#
-# TIMEOUT Socket connection timeout in seconds; default to 5
-# Example: TIMEOUT=10
-#
# IPV6 Enable IPv6
# Example: IPV6=True
#
@@ -69,11 +66,6 @@ then
LOG_LEVEL='INFO'
fi
-if [ -z "${TIMEOUT}" ]
-then
- TIMEOUT=5
-fi
-
if [ -z "${ENCRYPT}" ]
then
ENCRYPT=''
@@ -104,12 +96,10 @@ fi
echo "Starting lava-slave with the following command:"
-echo "/usr/bin/python /usr/bin/lava-slave --hostname ${HOSTNAME} \
+echo "/usr/bin/python3 /usr/bin/lava-slave --hostname ${HOSTNAME} \
--master ${MASTER} --socket-addr ${SOCKET_ADDR} ${LOG_FILE} \
---level ${LOG_LEVEL} --timeout ${TIMEOUT} ${ENCRYPT} ${IPV6} \
-${MASTER_CERT} ${SLAVE_CERT}"
+--level ${LOG_LEVEL} ${ENCRYPT} ${IPV6} ${MASTER_CERT} ${SLAVE_CERT}"
-/usr/bin/python /usr/bin/lava-slave --hostname ${HOSTNAME} \
+/usr/bin/python3 /usr/bin/lava-slave --hostname ${HOSTNAME} \
--master ${MASTER} --socket-addr ${SOCKET_ADDR} ${LOG_FILE} \
---level ${LOG_LEVEL} --timeout ${TIMEOUT} ${ENCRYPT} ${IPV6} \
-${MASTER_CERT} ${SLAVE_CERT}
+--level ${LOG_LEVEL} ${ENCRYPT} ${IPV6} ${MASTER_CERT} ${SLAVE_CERT}
diff --git a/lava/dispatcher/production/stretch-amd64/Dockerfile b/lava/dispatcher/production/stretch-amd64/Dockerfile
index c555a9b8..a9291f5c 100644
--- a/lava/dispatcher/production/stretch-amd64/Dockerfile
+++ b/lava/dispatcher/production/stretch-amd64/Dockerfile
@@ -2,7 +2,7 @@ FROM debian:stretch
# Docker image for LAVA dispatcher with production release.
-MAINTAINER Senthil Kumaran S <senthil.kumaran@linaro.org>
+LABEL maintainer="senthil.kumaran@linaro.org"
# Install the required dependencies
RUN echo 'locales locales/locales_to_be_generated multiselect C.UTF-8 UTF-8, en_US.UTF-8 UTF-8 ' | debconf-set-selections && \
@@ -14,7 +14,7 @@ RUN echo 'locales locales/locales_to_be_generated multiselect C.UTF-8 UTF-8, en_
qemu-system-x86 qemu-system-arm qemu-user-static libguestfs-tools \
nfs-kernel-server rpcbind u-boot-tools unzip xz-utils debootstrap \
bridge-utils dfu-util img2simg emacs-nox vim gnupg2 sed expect grep wget \
- openssh-server
+ openssh-server adb fastboot simg2img img2simg
# Add LAVA stretch-backports production repo
RUN wget -qO - http://images.validation.linaro.org/production-repo/production-repo.key.asc | apt-key add - && \
@@ -25,7 +25,7 @@ RUN echo 'locales locales/locales_to_be_generated multiselect C.UTF-8 UTF-8, en_
export DEBIAN_FRONTEND=noninteractive && \
apt-get update && \
apt-get -y upgrade && \
- apt-get -y -t stretch-backports install lava-dispatcher \
+ apt-get -y -t stretch-backports install lava-common lava-dispatcher \
lava-lxc-mocker && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
@@ -34,7 +34,7 @@ RUN echo 'locales locales/locales_to_be_generated multiselect C.UTF-8 UTF-8, en_
EXPOSE 22
# Set entrypoint script
-COPY entrypoint.sh /entrypoint.sh
+COPY ./entrypoint.sh /entrypoint.sh
ENTRYPOINT [ "/entrypoint.sh" ]
# Following is a sample docker run command to use this image
diff --git a/lava/dispatcher/production/stretch-amd64/build.sh b/lava/dispatcher/production/stretch-amd64/build.sh
deleted file mode 100755
index d7f69b33..00000000
--- a/lava/dispatcher/production/stretch-amd64/build.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/sh
-
-set -e
-
-export LANG=C
-
-DISTRIBUTION=$(basename ${PWD} | cut -f1 -d '-')
-ARCHITECTURE=$(basename ${PWD} | cut -f2 -d '-')
-REPO=$(basename $(dirname ${PWD}))
-
-# Get version by parsing Packages file from respective repo.
-VERSION=$(wget -qO - http://images.validation.linaro.org/${REPO}-repo/dists/${DISTRIBUTION}-backports/main/binary-${ARCHITECTURE}/Packages \
- | grep -A5 '^Package: lava-dispatcher' | grep '^Version: ' \
- | awk '{ print $2 }' \
- | sed 's/[~|+].*//')
-
-image=linaro/lava-dispatcher-debian-${DISTRIBUTION}-${ARCHITECTURE}:${VERSION}
-docker build --no-cache --pull --tag=$image .
-echo $image > .docker-tag
diff --git a/lava/dispatcher/staging/stretch-amd64/Dockerfile b/lava/dispatcher/staging/stretch-amd64/Dockerfile
new file mode 100644
index 00000000..f6a21d26
--- /dev/null
+++ b/lava/dispatcher/staging/stretch-amd64/Dockerfile
@@ -0,0 +1,46 @@
+FROM debian:stretch
+
+# Docker image for LAVA dispatcher with master branch, built daily.
+
+LABEL maintainer="senthil.kumaran@linaro.org"
+
+# Install the required dependencies
+RUN echo 'locales locales/locales_to_be_generated multiselect C.UTF-8 UTF-8, en_US.UTF-8 UTF-8 ' | debconf-set-selections && \
+ echo 'locales locales/default_environment_locale select en_US.UTF-8' | debconf-set-selections && \
+ export DEBIAN_FRONTEND=noninteractive && \
+ apt-get update && \
+ apt-get -y upgrade && \
+ apt-get -y install ntp git tftpd-hpa openbsd-inetd ser2net qemu-kvm \
+ qemu-system-x86 qemu-system-arm qemu-user-static libguestfs-tools \
+ nfs-kernel-server rpcbind u-boot-tools unzip xz-utils debootstrap \
+ bridge-utils dfu-util img2simg emacs-nox vim gnupg2 sed expect grep wget \
+ openssh-server adb fastboot simg2img img2simg
+
+# Add LAVA stretch-backports staging repo
+RUN wget -qO - http://images.validation.linaro.org/staging-repo/staging-repo.key.asc | apt-key add - && \
+ echo "deb http://images.validation.linaro.org/staging-repo stretch-backports main" >/etc/apt/sources.list.d/linaro.list
+
+RUN echo 'locales locales/locales_to_be_generated multiselect C.UTF-8 UTF-8, en_US.UTF-8 UTF-8 ' | debconf-set-selections && \
+ echo 'locales locales/default_environment_locale select en_US.UTF-8' | debconf-set-selections && \
+ export DEBIAN_FRONTEND=noninteractive && \
+ apt-get update && \
+ apt-get -y upgrade && \
+ apt-get -y -t stretch-backports install lava-common lava-dispatcher \
+ lava-lxc-mocker && \
+ apt-get clean && \
+ rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
+
+# Expose services ports
+EXPOSE 22
+
+# Set entrypoint script
+COPY ./entrypoint.sh /entrypoint.sh
+ENTRYPOINT [ "/entrypoint.sh" ]
+
+# Following is a sample docker run command to use this image
+#
+# sudo docker run -v /boot:/boot -v /lib/modules:/lib/modules \
+# -v /var/run/docker.sock:/var/run/docker.sock -itd -e HOSTNAME='worker-1' \
+# -e MASTER='tcp://192.168.1.2:5556' -e SOCKET_ADDR='tcp://192.168.1.2:5555' \
+# -e LOG_LEVEL='DEBUG' -p 2222:22 --privileged \
+# --name ld-2017.12 stylesen/lava-dispatcher:2017.12
diff --git a/stretch-amd64-obsworker/Dockerfile b/stretch-amd64-obsworker/Dockerfile
index 5ed36dd9..4cae6c58 100644
--- a/stretch-amd64-obsworker/Dockerfile
+++ b/stretch-amd64-obsworker/Dockerfile
@@ -25,6 +25,7 @@ RUN apt-get update \
/tmp/* \
/var/tmp/*
+
COPY start-obsworker /
CMD ["/start-obsworker"]
diff --git a/stretch-amd64-ota/Dockerfile b/stretch-amd64-ota/Dockerfile
new file mode 100644
index 00000000..0fe58092
--- /dev/null
+++ b/stretch-amd64-ota/Dockerfile
@@ -0,0 +1,19 @@
+FROM opensourcefoundries/aktualizr:0.23
+
+RUN apt-get update \
+ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
+ sudo \
+ openssh-server \
+ && apt-get clean \
+ && rm -rf \
+ /var/lib/apt/lists/* \
+ /tmp/* \
+ /var/tmp/*
+
+RUN useradd -m buildslave \
+ && echo 'buildslave ALL = NOPASSWD: ALL' > /etc/sudoers.d/jenkins \
+ && chmod 440 /etc/sudoers.d/jenkins \
+ && mkdir -p /var/run/sshd
+
+EXPOSE 22
+CMD ["/usr/sbin/sshd", "-D"]
diff --git a/stretch-amd64-ota/build.sh b/stretch-amd64-ota/build.sh
new file mode 100755
index 00000000..a03d97ac
--- /dev/null
+++ b/stretch-amd64-ota/build.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+set -e
+
+trap cleanup_exit INT TERM EXIT
+
+cleanup_exit()
+{
+ rm -f *.list *.key
+}
+
+export LANG=C
+
+DISTRIBUTION=$(basename ${PWD} | cut -f1 -d '-')
+ARCHITECTURE=$(basename ${PWD} | cut -f2 -d '-')
+
+cp -a ../linaro-overlay-obs.list ../linaro-overlay-obs.key .
+
+image=linaro/ci-${ARCHITECTURE}-debian-ota:${DISTRIBUTION}
+docker build --pull --tag=$image .
+echo $image > .docker-tag
diff --git a/stretch-arm64-obsworker/Dockerfile b/stretch-arm64-obsworker/Dockerfile
index 5ed36dd9..4cae6c58 100644
--- a/stretch-arm64-obsworker/Dockerfile
+++ b/stretch-arm64-obsworker/Dockerfile
@@ -25,6 +25,7 @@ RUN apt-get update \
/tmp/* \
/var/tmp/*
+
COPY start-obsworker /
CMD ["/start-obsworker"]
diff --git a/stretch-arm64-testdef/Dockerfile b/stretch-arm64-testdef/Dockerfile
new file mode 100644
index 00000000..cd20f093
--- /dev/null
+++ b/stretch-arm64-testdef/Dockerfile
@@ -0,0 +1,18 @@
+FROM linaro/ci-arm64-debian:stretch
+
+RUN apt-get update \
+ && DEBIAN_FRONTEND=noninteractive apt-get install -y \
+ python-pip \
+ && git clone http://git.linaro.org/qa/test-definitions.git \
+ && cd test-definitions \
+ && git checkout master \
+ && pip install -r automated/utils/requirements.txt \
+ && apt-get clean \
+ && rm -rf \
+ /tmp/* \
+ /var/tmp/*
+
+ENV REPO_PATH=/test-definitions \
+ PATH="/test-definitions/automated/bin:${PATH}"
+
+WORKDIR /test-definitions
diff --git a/stretch-arm64-testdef/build.sh b/stretch-arm64-testdef/build.sh
new file mode 100755
index 00000000..df1b8212
--- /dev/null
+++ b/stretch-arm64-testdef/build.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+set -e
+
+export LANG=C
+
+if [ -z "$1" ]; then
+ echo "Usage: ./build.sh <git_tag>"
+ tag="$(git ls-remote https://git.linaro.org/qa/test-definitions.git refs/heads/master | cut -c1-7)"
+ echo "Warning: git tag not specified, latest commit (${tag}) on master branch is used."
+else
+ tag="$1"
+ sed -i "s/git checkout master/git checkout ${tag} -b ${tag}/" Dockerfile
+fi
+
+DISTRIBUTION="$(basename "${PWD}" | cut -f1 -d '-')"
+ARCHITECTURE="$(basename "${PWD}" | cut -f2 -d '-')"
+
+image=linaro/testdef-${ARCHITECTURE}-debian-${DISTRIBUTION}:${tag}
+docker build --pull --tag="$image" .
+echo "$image" > .docker-tag
diff --git a/stretch-armhf-obsworker/Dockerfile b/stretch-armhf-obsworker/Dockerfile
new file mode 100644
index 00000000..4cae6c58
--- /dev/null
+++ b/stretch-armhf-obsworker/Dockerfile
@@ -0,0 +1,31 @@
+FROM debian:stretch
+
+RUN apt-get update \
+ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
+ apt-utils \
+ binutils \
+ bsdtar \
+ cpio \
+ curl \
+ debootstrap \
+ libcompress-raw-zlib-perl \
+ libtimedate-perl \
+ libxml-parser-perl \
+ libxml-simple-perl \
+ lsb-base \
+ lvm2 \
+ lzma \
+ psmisc \
+ rpm \
+ util-linux \
+ xz-utils \
+ && apt-get clean \
+ && rm -rf \
+ /var/lib/apt/lists/* \
+ /tmp/* \
+ /var/tmp/*
+
+
+COPY start-obsworker /
+
+CMD ["/start-obsworker"]
diff --git a/trusty-amd64-art/build.sh b/stretch-armhf-obsworker/build.sh
index 14167821..5d3614ac 100755
--- a/trusty-amd64-art/build.sh
+++ b/stretch-armhf-obsworker/build.sh
@@ -7,6 +7,6 @@ export LANG=C
DISTRIBUTION=$(basename ${PWD} | cut -f1 -d '-')
ARCHITECTURE=$(basename ${PWD} | cut -f2 -d '-')
-image=linaro/ci-${ARCHITECTURE}-art-ubuntu:${DISTRIBUTION}
+image=linaro/ci-${ARCHITECTURE}-obsworker
docker build --pull --tag=$image .
echo $image > .docker-tag
diff --git a/stretch-armhf-obsworker/start-obsworker b/stretch-armhf-obsworker/start-obsworker
new file mode 100755
index 00000000..3788a0aa
--- /dev/null
+++ b/stretch-armhf-obsworker/start-obsworker
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+rm -rf /srv/obs
+mkdir -p /srv/obs/worker/root_1
+mkdir -p /srv/obs/run/worker/{boot,1}
+cd /srv/obs/run/worker/boot
+echo $OBS_IP $OBS_SERVER >> /etc/hosts
+curl -s "http://$OBS_SERVER:5252/getworkercode" | cpio --quiet --extract
+ln -s . XML
+
+if [ ! -z $OBS_TMPFS ]
+then
+ extra_args="--vmdisk-rootsize $OBS_TMPFS --tmpfs"
+fi
+
+exec /usr/bin/perl -w ./bs_worker --hardstatus --port $OBS_PORT --root /srv/obs/worker/root_1 --statedir /srv/obs/run/worker/1 --id `hostname`:1 --reposerver http://$OBS_SERVER:5252 --jobs $OBS_JOBS $extra_args
diff --git a/stretch-armhf-testdef/Dockerfile b/stretch-armhf-testdef/Dockerfile
new file mode 100644
index 00000000..59417e34
--- /dev/null
+++ b/stretch-armhf-testdef/Dockerfile
@@ -0,0 +1,18 @@
+FROM linaro/ci-armhf-debian:stretch
+
+RUN apt-get update \
+ && DEBIAN_FRONTEND=noninteractive apt-get install -y \
+ python-pip \
+ && git clone http://git.linaro.org/qa/test-definitions.git \
+ && cd test-definitions \
+ && git checkout master \
+ && pip install -r automated/utils/requirements.txt \
+ && apt-get clean \
+ && rm -rf \
+ /tmp/* \
+ /var/tmp/*
+
+ENV REPO_PATH=/test-definitions \
+ PATH="/test-definitions/automated/bin:${PATH}"
+
+WORKDIR /test-definitions
diff --git a/stretch-armhf-testdef/build.sh b/stretch-armhf-testdef/build.sh
new file mode 100755
index 00000000..df1b8212
--- /dev/null
+++ b/stretch-armhf-testdef/build.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+set -e
+
+export LANG=C
+
+if [ -z "$1" ]; then
+ echo "Usage: ./build.sh <git_tag>"
+ tag="$(git ls-remote https://git.linaro.org/qa/test-definitions.git refs/heads/master | cut -c1-7)"
+ echo "Warning: git tag not specified, latest commit (${tag}) on master branch is used."
+else
+ tag="$1"
+ sed -i "s/git checkout master/git checkout ${tag} -b ${tag}/" Dockerfile
+fi
+
+DISTRIBUTION="$(basename "${PWD}" | cut -f1 -d '-')"
+ARCHITECTURE="$(basename "${PWD}" | cut -f2 -d '-')"
+
+image=linaro/testdef-${ARCHITECTURE}-debian-${DISTRIBUTION}:${tag}
+docker build --pull --tag="$image" .
+echo "$image" > .docker-tag
diff --git a/tcwg-base/Dockerfile.in b/tcwg-base/Dockerfile.in
index 6abf52dd..16cedea6 100644
--- a/tcwg-base/Dockerfile.in
+++ b/tcwg-base/Dockerfile.in
@@ -1,4 +1,4 @@
-#if ARCH_amd64
+#if ARCH_amd64 || DISTRO_bionic
FROM ubuntu:#{DISTRO}
#elif DISTRO_zesty
FROM snapcraft/zesty-#{ARCH}:latest
@@ -6,6 +6,7 @@ FROM snapcraft/zesty-#{ARCH}:latest
FROM linaro/base-#{ARCH}-ubuntu:#{DISTRO}
#endif
+#if !DISTRO_bionic
#if ARCH_amd64 || ARCH_i386
RUN (url="http://archive.ubuntu.com/ubuntu/"; \
#else
@@ -18,8 +19,16 @@ RUN (url="http://ports.ubuntu.com/ubuntu-ports/"; \
done; \
echo; \
done) > /etc/apt/sources.list \
+#else
+# Unminimize Ubuntu Bionic to install contrib files of git (after package
+# update, otherwise unminimize's "apt upgrade" might fail).
+RUN true \
+#endif
&& apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \
+#if DISTRO_bionic
+ && echo y | unminimize \
+#endif
#if ARCH_i386
&& dpkg-divert --local --rename --add /sbin/initctl \
&& ln -s /bin/true /sbin/initctl \
@@ -64,14 +73,23 @@ RUN (url="http://ports.ubuntu.com/ubuntu-ports/"; \
#if ARCH_amd64 || ARCH_i386
libglib2.0-dev \
#endif
+ libgmp-dev \
liblzma-dev \
+ libmpc-dev \
+ libmpfr-dev \
libncurses5-dev \
+#if ARCH_amd64 || ARCH_i386
+ libpixman-1-dev \
+#endif
libpython2.7-dev \
libreadline-dev \
libssl-dev \
libtcnative-1 \
libtool \
linux-tools-generic \
+#if DISTRO_bionic
+ linux-tools-4.18.0-13-generic \
+#endif
lzop \
make \
#if ARCH_amd64 || ARCH_i386
@@ -96,10 +114,8 @@ RUN (url="http://ports.ubuntu.com/ubuntu-ports/"; \
pkg-config \
#endif
python-dev \
-#if DISTRO_trusty
- python-virtualenv \
-#endif
postfix \
+ psmisc \
pxz \
qemu-system-arm \
qemu-user \
@@ -111,10 +127,13 @@ RUN (url="http://ports.ubuntu.com/ubuntu-ports/"; \
texlive-fonts-recommended \
texlive-latex-recommended \
time \
+ unifdef \
valgrind \
vim \
#if !DISTRO_trusty
virtualenv \
+#else
+ python-virtualenv \
#endif
wget \
xz-utils \
@@ -141,10 +160,20 @@ COPY postfix-sasl_password.in /etc/postfix/sasl_password
RUN chown root:root /etc/postfix/sasl_password \
&& chmod 600 /etc/postfix/sasl_password
+# Add ninja with support for memory-threshold job limitation.
+# It's installed with ".bin" extension and containers then
+# make wrappers around it in /usr/local/bin/ninja as needed.
+RUN git clone -b master https://github.com/maxim-kuvyrkov/ninja.git \
+ && cd ninja \
+ && ./configure.py --bootstrap && ./ninja all && ./ninja_test \
+ && mv ninja /usr/local/bin/ninja.bin \
+ && cd .. \
+ && rm -rf ninja
+
#if ARCH_amd64 || ARCH_i386
RUN mkdir /tmp/docker-install-qemu.$$ \
&& cd /tmp/docker-install-qemu.$$ \
- && qemu_ver=2.8.0 && wget --progress=dot:giga http://download.qemu-project.org/qemu-${qemu_ver}.tar.xz \
+ && qemu_ver=3.1.0 && wget --progress=dot:giga http://download.qemu-project.org/qemu-${qemu_ver}.tar.xz \
&& tar xf qemu-${qemu_ver}.tar.xz \
&& mkdir build && cd build \
&& ../qemu-${qemu_ver}/configure --prefix=/usr/local --target-list=armeb-linux-user \
@@ -152,6 +181,15 @@ RUN mkdir /tmp/docker-install-qemu.$$ \
&& cd && rm -rf /tmp/docker-install-qemu.$$
#endif
+
+COPY home-data/ /home-data/
+COPY new-user.sh /usr/local/bin/
+
+RUN \
+ while read line; do \
+ new-user.sh --group $(echo "$line" | cut -d: -f 1,3); \
+ done </home-data/group
+
# We use ssh multiplexing, which creates sockets in /tmp. Overlayfs,
# which docker is using, can't host sockets, so we use a scratch mount
# for /tmp. This requires that we add --rm option to "docker run"
diff --git a/tcwg-base/build.sh b/tcwg-base/build.sh
index 24ede180..f12ee09b 100755
--- a/tcwg-base/build.sh
+++ b/tcwg-base/build.sh
@@ -6,7 +6,7 @@ trap cleanup_exit INT TERM EXIT
cleanup_exit()
{
- rm -rf postfix*.in
+ rm -rf home-data/ new-user.sh postfix*.in
}
export LANG=C
@@ -17,6 +17,8 @@ name=$(basename ${PWD} | cut -f3- -d '-')
image=linaro/ci-${arch}-${name}-ubuntu:${distro}
baseimage=$(grep "^FROM" Dockerfile | head -n 1 | cut -d" " -f 2)
+rsync -aL $top/tcwg-base/home-data/ ./home-data/
+cp $top/tcwg-base/new-user.sh ./
cp $top/tcwg-base/postfix*.in .
"$top"/tcwg-base/validate-dockerfile.sh Dockerfile
diff --git a/tcwg-base/gerrit-branches b/tcwg-base/gerrit-branches
index 2afcbc2d..12600c6c 100644
--- a/tcwg-base/gerrit-branches
+++ b/tcwg-base/gerrit-branches
@@ -1,3 +1,4 @@
master
-tcwg-staging
tcwg-tested
+tcwg-staging
+
diff --git a/tcwg-base/home-data/alex.bennee/.ssh/authorized_keys b/tcwg-base/home-data/alex.bennee/.ssh/authorized_keys
new file mode 100644
index 00000000..f51ceb2e
--- /dev/null
+++ b/tcwg-base/home-data/alex.bennee/.ssh/authorized_keys
@@ -0,0 +1,3 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCyVywkk+VvhgT/FIeeW0RMv2L+VjklgDZawWqwnRKibbgXO7cNx9gAM+vLZd1lwUsAs6b3pecyJKuPGPLTQwQ/8RcWE0/rIqLyaqRYJGjlPYLtPgRm12d4eEvXDK7hQs/KGmc+rVQCk4cu9SBvdqJtvPuE68o2xV5SEKv0JUwSnXxQhScqa3/Zf+bKiVxWxBfaOfsZtdb6qECG4hhL5w9Z9Skviz5Hw7RWDqnXrKeCAiCCpZRhE10++6NhHpdLQtFWbGhyJ9Xmuq6OaDWofHkC2YfUSQ/VL8dKQoo1oltnH4FHlDmtvfqHzslJMpwXu0iHREu4T93tnZcpi89xcw6P alex@zen
+ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEArnlSBm0os7ulw7YhTU84c+wMCoNmxaoabxUFx6vDq4VXNla6ZPGsKQmSOAUAmAeYenQnAk5eWlgxOt6QSUVCZcKXct+TLjWojKwXZ75jlCjFsIkv4f1ff9bEjvoqhvVLlKXteM2l4KVAB1/xjWrrl95WUpMzkrVrLR7y+HMImxRz+q6upAy9PUVfjdKoGI/xUPQ+8ob1aNY1OuxVraaZt1nbYb2CbHGuPfuq41EKHBDUhEfb1z2qaRfq4lqa3CQTtAUr7PGmMbGDRPvejhIQw3VTn28zRoGaDPH1TYw0cVF2BHjHtnwaorAemxRxo2X619qxcMd1Dx3U+KM0AQH2iw== alex@danny
+ssh-dss AAAAB3NzaC1kc3MAAACBAPR7IFQ+tr0WmHSoZf4hhBcBsUPr5X/oRP7/AtNEOhzzMGDpZjv43FNom98KnEwo/CFOpIb4AOZmaWJfxvtIHuq2501riATSWPTDAiPJVuWfCwasxrWuTYd74Ft14q2WrNWOQRfq8QVzX/DmKZFjlBTQ5pnczESK51H89vLQDCtNAAAAFQDNfFYgHqtSwp3kF6sRDsLKSxM15QAAAIEAkV716nHegoRqYlPemvIIUfcyuoAL2zkQaq4NMd481owzNLVmxXQloDT1x49bR43jd8V10DYLZPaU8p50M2FdI/SzAha7JoRmHTeiATeWoB9M6PkeNllTAP3qtKq5w5Tdl6HGVuRScXNzMEC/SIKFaj7bZD6WqZxraYpsfHtD68QAAACBANDzYWx7U489zikATO7gpyKnOP1Gxuuc3cBKJx0sMGIg0kiipf5G6azsptRPSyu4e/iST4JtaH2tnPx50zsPm0XGpAjHw4cUgYtUnruSTP/G7Di2dig2MOelxX/SKprdblZob573eMd64OMmeaJfMM0OAHVvzBqCXs16qKdBZCUZ alex@danny
diff --git a/tcwg-base/home-data/alex.bennee/bootstrap.sh b/tcwg-base/home-data/alex.bennee/bootstrap.sh
new file mode 100644
index 00000000..e5de885a
--- /dev/null
+++ b/tcwg-base/home-data/alex.bennee/bootstrap.sh
@@ -0,0 +1,78 @@
+#!/bin/bash
+#
+# Bootstrap a new system
+# wget -O - https://raw.githubusercontent.com/stsquad/dotfiles/master/bootstrap.sh | bash
+# curl -s https://raw.githubusercontent.com/stsquad/dotfiles/master/bootstrap.sh | bash
+#
+set -e
+
+if [ -n "$SSH_AUTH_SOCK" ] && [ -S "$SSH_AUTH_SOCK" ] && [ "ssh-add -l > /dev/null" ]; then
+ SSH_CONFIG=${HOME}/.ssh
+ mkdir -p ${SSH_CONFIG}
+ # You kinda have to take it on trust that these are the github finger-prints
+ cat > ${SSH_CONFIG}/known_hosts <<EOF
+|1|clnLL0mD6yeybmELLpJW0Z3hSUU=|GYO6eB1F0D+HVTeLlP7edbabPiA= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==
+|1|Ckc80vuVSIfn10uM74pb4jfDBS8=|lSc7LGFPlKVXCpmJF7EcHTVUlsg= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==
+EOF
+ MYGITHUB=git@github.com:stsquad
+else
+ MYGITHUB=https://github.com/stsquad
+fi
+
+GIT=`which git`
+if [[ ! -f ${GIT} ]]; then
+ # Are we on an dpkg/apt based system?
+ DPKG=`which dpkg-query`
+ if [[ ! -f ${DPKG} ]]; then
+ if [[ ! `dpkg-query --status git` ]]; then
+ echo "Fetching git"
+ if [ `id -u` = 0 ] ; then
+ apt-get update
+ apt-get install -y git
+ else
+ sudo apt-get update
+ sudo apt-get install -y git
+ fi
+ fi
+ else
+ echo "Don't know how to install git on this system"
+ exit 1
+ fi
+else
+ echo "Already have git, good"
+fi
+
+# keep my stff here
+MYSRC=${HOME}/mysrc
+mkdir -p ${MYSRC}
+cd ${MYSRC}
+
+# Clone dotfiles and elisp
+if [ ! -d dotfiles.git ]; then
+ echo "Fetching dotfiles"
+ git clone ${MYGITHUB}/dotfiles.git dotfiles.git
+ cd dotfiles.git
+ ./setup_dotfiles.sh
+ cd -
+fi
+
+if [ ! -d elisp.git ]; then
+ echo "Fetching elisp"
+ git clone ${MYGITHUB}/my-emacs-stuff.git elisp.git
+ cd elisp.git
+ ./setup_emacs.sh
+ cd -
+fi
+
+cd $HOME
+
+# Account for running under sudo
+if [ ! -z "${SUDO_USER}" ]; then
+ echo "Fixing up ${HOME} permissions to ${SUDO_USER}:${SUDO_GID}"
+ chown -R ${SUDO_USER}:${SUDO_GID} ${HOME}
+fi
+
+# Done (for now)
+echo "Done!"
+
+
diff --git a/tcwg-base/home-data/christophe.lyon/.ssh/authorized_keys b/tcwg-base/home-data/christophe.lyon/.ssh/authorized_keys
new file mode 100644
index 00000000..2784fa89
--- /dev/null
+++ b/tcwg-base/home-data/christophe.lyon/.ssh/authorized_keys
@@ -0,0 +1 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDH+cTuP929qfreLhscv8F2Ot3NjaT1YVtyq6/gOqpCNIXPvPUIa/H9vacBHL7XxbtZoZhI6Ma/rlokjfriupldtzh9UQ4asEVRIpFTw6g8gGJx1RE00PUp2uCT1FZpMNFkuJQ1teI3o+ttMMLTKLdMbqzrzijH2Ev+RRGxveE91G/giRyGuyPdPO07XjNqfKXM8yWFUQg/P+rmSbNlomJ8JKxrg9xifnXBYXLKIiM3EfXwbOiqAxQvFp7KAMka2RrHb1RuZ3D94T8tqVNWPkSc09MX0BB6IAUxGdUYYQ5UTGukGL9OqsaOYlrJusrWW2eZ3lamUZfhGB1VFGPaXv+z lyon@gnx2504
diff --git a/tcwg-base/home-data/diana.picus/.ssh/authorized_keys b/tcwg-base/home-data/diana.picus/.ssh/authorized_keys
new file mode 100644
index 00000000..dcec2466
--- /dev/null
+++ b/tcwg-base/home-data/diana.picus/.ssh/authorized_keys
@@ -0,0 +1 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCUPyyKwGTn6TwizPOErps0mgMNwLNDbYyEr8m2KwvkGQfLwesaTuOwHtFg3zr4u2Nqk8zmUn2/jZekru+gVXGKEQQDzSJKK7llNQCKkBJUPO8wTkkGoIzT3Bt1ftKC/OUUDVVckdQ0LCNctsLcFa9D11fk2hCUkg2V06QJu87e8T5xyhyA6H0WKyfA2JkRwgnmZyM/uJo5ga/XUSTvA49k+Keu0GLCrODtUXA/jqw6niLrG+lH/ce49B+MxUu6pF4vUu6lba/jh35bSvDKMZj6vT3IUxQ7rdWO687yNrkRw6osmJhv0PRruqxeP+IYcHHqRTog0Hv2Y9C780TW9ect diana@Gjallarhorn
diff --git a/tcwg-base/home-data/group b/tcwg-base/home-data/group
new file mode 100644
index 00000000..29de913d
--- /dev/null
+++ b/tcwg-base/home-data/group
@@ -0,0 +1,3 @@
+tcwg-infra:x:9000:tcwg-buildslave,tcwg-benchmark
+tcwg-users:x:10000:maxim.kuvyrkov,alex.bennee,christophe.lyon,peter.smith,richard.henderson,prathamesh.kulkarni,omair.javaid,kugan.vivekanandarajah,diana.picus,yvan.roux
+tcwg-llvm:x:9001:maxim.kuvyrkov,peter.smith,omair.javaid,diana.picus,yvan.roux,prathamesh.kulkarni
diff --git a/tcwg-base/home-data/kugan.vivekanandarajah/.ssh/authorized_keys b/tcwg-base/home-data/kugan.vivekanandarajah/.ssh/authorized_keys
new file mode 100644
index 00000000..40ffb8c8
--- /dev/null
+++ b/tcwg-base/home-data/kugan.vivekanandarajah/.ssh/authorized_keys
@@ -0,0 +1,2 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDDOYEfDePDvheSVenZ3ulL2ZlxRdCat0Yr38dHXrcEMkvLVbHabDJoI1hQ9bG93ycmKVvSvRylx1Wb5WIXyV4BR1rp4JZwwVMEE/R+N9rNEkAB2nZ+0bbEO07vP29036XvXOnQETz6g2K+DHjWhrUzS67s354EOqW9K4y8ADi0grCkt7BzHiO77naL4k82UZnfvVn05/sAtSmd2c90D3K0HG24hcNvtkYkFlfF1f7Nc0mYPuoiDZl5qPlBcV+q0uvGCRM7ep/6U1ed7+4cpzNxgU/mrILNtLhgFH9YgeboVhgOfw4otLMFw8DHpH7O8dwVuMZAxoZKvFsIXypx482H kugan@kugan-Satellite-L850
+ssh-dss AAAAB3NzaC1kc3MAAACBAI9K4Pb/JiWcbe3Mj5YAzcGtGV8hDaXXzi7348aqqHsbVH3vuub8QvPBEQ5/Z/ZoHoaBLqKqYDzkj5OZbaJwYqmvbYzcnz5REzmwu9LuwR7SK9MWFBIP9vCmpPRat45H/71Nl4xty4rkngzzYqesQMHR3eVtI+J26KbpOVCx3B7DAAAAFQDgWEoC2laItuCf6cF2TqLlFRgTyQAAAIAY+jUXsbIgg2gW6WtCSyLu82EZbMdaj9dSib6iOPLwJSrSFRny91+BiW4FOlFsQzsuESQhylIbphOE+QtWOsd5aWBpw+dvq6TC1hchmnQTQi6K/j+LecIY+Gcm0UnqB9BSaiviHLLgCILXPKjoIJGWqFPHXTHZ/LE5cXubKdGt9AAAAIEAhhPkBB+KWrsESq1zfhZOJDke/NdtQLOWAK8CUnx9zjxUyqtMstBP8brdS+nc/jin+OjkKytWZLVrWT7xXT0cdFUbHA1a5YWXCEET3NmH07pusEtAacFIXJgGC+ADyv4wmtuvDWQJdMXq/pPva2Yu+qA6b/qyRriu9/phpuXCChw= kugan@kugan-T430u
diff --git a/tcwg-base/home-data/maxim.kuvyrkov/.ssh/authorized_keys b/tcwg-base/home-data/maxim.kuvyrkov/.ssh/authorized_keys
new file mode 100644
index 00000000..fa17c380
--- /dev/null
+++ b/tcwg-base/home-data/maxim.kuvyrkov/.ssh/authorized_keys
@@ -0,0 +1 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDR1x3iMEd7BSXx6QE3NtfVF8kYUUVoWUKCCC0jxOiLYCY3wf1i7bfQD7YMITEwXMvwQe6thGefBMLRPWr7WdoiUvxdaLYbSB72T4zN5tK/oQhFOHR8cqG68oSZIY89lUzFaGJRMGzSxUvYUWkwUhOIsjOBKFm+/yT4CD4SmUuFwQAadC6/t+jwc1LinYRMqphgfssUk8uzrvB0cqj2UsYrDF0jTVALfyTwWKHBokuZPnUER92v5e70/vAyOzJv13YdsQcwQBa1tBLrJJPpz8uX65bMLXJ6k+9U6bYSeVtRzYtmdDj5BYvdkJTR8diChLRS75roJclYpLEv0U9foCjd maxim.kuvyrkov@linaro.org-20150420
diff --git a/tcwg-base/home-data/maxim.kuvyrkov/.ssh/config b/tcwg-base/home-data/maxim.kuvyrkov/.ssh/config
new file mode 120000
index 00000000..5f9d8251
--- /dev/null
+++ b/tcwg-base/home-data/maxim.kuvyrkov/.ssh/config
@@ -0,0 +1 @@
+../../tcwg-buildslave/.ssh/config \ No newline at end of file
diff --git a/tcwg-base/home-data/maxim.kuvyrkov/.ssh/known_hosts b/tcwg-base/home-data/maxim.kuvyrkov/.ssh/known_hosts
new file mode 120000
index 00000000..936136a2
--- /dev/null
+++ b/tcwg-base/home-data/maxim.kuvyrkov/.ssh/known_hosts
@@ -0,0 +1 @@
+../../tcwg-buildslave/.ssh/known_hosts \ No newline at end of file
diff --git a/tcwg-base/home-data/maxim.kuvyrkov/.ssh/ssh-tcwglab-nc.sh b/tcwg-base/home-data/maxim.kuvyrkov/.ssh/ssh-tcwglab-nc.sh
new file mode 120000
index 00000000..6eddeb50
--- /dev/null
+++ b/tcwg-base/home-data/maxim.kuvyrkov/.ssh/ssh-tcwglab-nc.sh
@@ -0,0 +1 @@
+../../tcwg-buildslave/.ssh/ssh-tcwglab-nc.sh \ No newline at end of file
diff --git a/tcwg-base/home-data/omair.javaid/.ssh/authorized_keys b/tcwg-base/home-data/omair.javaid/.ssh/authorized_keys
new file mode 100644
index 00000000..4f91f11f
--- /dev/null
+++ b/tcwg-base/home-data/omair.javaid/.ssh/authorized_keys
@@ -0,0 +1 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCoBhUsmuHUwZtRdaZ2Fm8IOTlrCKdz/wxoczhhWufb3Oy9/pNftVcWlrvn3glg+PfCpVFeXvp/7jbFyeJTbrxdli+N0NyZCH5CXHiYTsIHnJngveoxvHe9kGCbqEDtGk+xXsCglyNhGz255sO99e+z0yBGRpZDC1nk4fileaAqm1SoaUbd64swijGFLOyd6KmQnNH4AmQRSBzZJe4vJl2P3kLJ/I5aSZZWWqoeX5bY3LaeNoTGBIfCLwIT4whzkV/V46SpIu0UyS4NSRxXX4cmh3J4cPnPD0zbbWKPCrz3PCBkoo0tnip1Ytw3S7UDCglnCBY+cLKu2AFORTiEzflp9oe3Q/UQQBcxLGibhH+06yw3EZgxejamG4wQ363xiFrRbJDqzdZJAW+WlmCkl+uLD6DaU9gR4iA+OIl5EBlKucnnzPEIybMPVQJ3YTbL+YCisxJ3Qmr8UdIrbtwGsYNMVC1OuM0dP3VznDJ9JzD94/7H3uLI61zSqJdk/B6S0NnsGjtJ++aMyVLjb9swWWBeK7pWZSGmVE+sQYLkf9aitzjJaDaakWoj1pRKSEHSzgJHPq7Hibh/1rxiWxftwP6fE5wy/kfSxfV0Z54PbtrnD6SK92Rtkbfjq2J0klsyo4sWGI5ta9VvqF19PiFfClKgbmef6VucLkvxhQD885qcsw== omair.javaid@linaro.org
diff --git a/tcwg-base/home-data/passwd b/tcwg-base/home-data/passwd
new file mode 100644
index 00000000..f596805f
--- /dev/null
+++ b/tcwg-base/home-data/passwd
@@ -0,0 +1,12 @@
+tcwg-buildslave:x:11827:9000:TCWG Buildslave::/bin/bash
+tcwg-benchmark:x:12326:9000:TCWG Benchmark::/bin/bash
+alex.bennee:x:10583:10000:Alex Bennée::/bin/bash
+christophe.lyon:x:10033:10000:Christophe Lyon::/bin/bash
+maxim.kuvyrkov:x:10967:10000:Maxim Kuvyrkov::/bin/bash
+peter.smith:x:12314:10000:Peter Smith::/bin/bash
+richard.henderson:x:13410:10000:Richard Henderson::/bin/bash
+prathamesh.kulkarni:x:11537:10000:Prathamesh Kulkarni::/bin/bash
+omair.javaid:x:10174:10000:Omair Javaid::/bin/bash
+kugan.vivekanandarajah:x:10179:10000:Kugan Vivekanandarajah::/bin/bash
+diana.picus:x:12361:10000:Diana Picus::/bin/bash
+yvan.roux:x:10168:10000:Yvan Roux::/bin/bash
diff --git a/tcwg-base/home-data/peter.smith/.ssh/authorized_keys b/tcwg-base/home-data/peter.smith/.ssh/authorized_keys
new file mode 100644
index 00000000..3e5efed6
--- /dev/null
+++ b/tcwg-base/home-data/peter.smith/.ssh/authorized_keys
@@ -0,0 +1 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDk77ZpUDiOq71/kkCS0oPkXILsKBBzxUxrDWydwgn2uicozIQbamisJ5EwogSpaDnmacxuRHg81yRKifBt21cgUHcUBJC4lsr0IXnuqAREUunT8QB6wWCjzUd/AMl9tuu+sPus3wAXQE4ek0yl7jZTBXifqJsUTUomp/+wbcVzLeO5NcK/VymCYSPOCu6opRCXLnzld+wBpHSo4c76QLNmd7t3yzWEwBWcwDgAILSBKFc1Eq6Jlz1/ocazUUU2VDa2zMCVL+3oKWxv1OJhOcPBa0wS8eTkjcuwNLG1eOGwQcwCE2EarlE/DIXR7yMSeJQCERWFb1erscb+H/jE6/Rz psmith@E104452-LINA
diff --git a/tcwg-base/home-data/prathamesh.kulkarni/.ssh/authorized_keys b/tcwg-base/home-data/prathamesh.kulkarni/.ssh/authorized_keys
new file mode 100644
index 00000000..54c313c4
--- /dev/null
+++ b/tcwg-base/home-data/prathamesh.kulkarni/.ssh/authorized_keys
@@ -0,0 +1 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/wwXYCngpNiJRzeyaiiHdX8p5n3jB5ZbW3IghR/LVH+sSUSjFeUQfwqNNvL363iAcEKNnr67CBTda2no1/wAKNHaFsEzPpcDRNtAwmOWcvoiq475ntLTw53ysqJEYy3MoO0H4fF5lOYmHfbbccjGyPs5SEUFe3+bJKZCOEu1jHXcOPhDcYWD0AiT0kQVleaiieXdS8lNQNTXiNHrQ7+ZFcRj0McreeKEx5jeF7Ck5eObgIffNXsMXXtGj6TC4F5Bg4QX/gtUmv4K/w+KWXJ25zwkit4toTm8q6BDv3XOuIiaguWln5b8erqNLZbGJbp9pYqiA7FKNBbnhUr4ZR0sj bilbo@bilbo-Ideapad-Z560
diff --git a/tcwg-base/home-data/richard.henderson/.gitconfig b/tcwg-base/home-data/richard.henderson/.gitconfig
new file mode 100644
index 00000000..71aec4f6
--- /dev/null
+++ b/tcwg-base/home-data/richard.henderson/.gitconfig
@@ -0,0 +1,7 @@
+[user]
+ email = richard.henderson@linaro.org
+[push]
+ default = simple
+[diff]
+ renames = true
+ algorithm = histogram
diff --git a/tcwg-base/home-data/richard.henderson/.ssh/authorized_keys b/tcwg-base/home-data/richard.henderson/.ssh/authorized_keys
new file mode 100644
index 00000000..fa804c95
--- /dev/null
+++ b/tcwg-base/home-data/richard.henderson/.ssh/authorized_keys
@@ -0,0 +1 @@
+ssh-dss AAAAB3NzaC1kc3MAAACBAJEOzwysCMZtF04TdGQ54HrGqtahlznDG8oiBlX9GpISY0mRSUB1i6B2KXF3pfCvtr3VWdEO7YO6hQ7Rg+wxXns0qB7lVOoMbGvnFB7ygR439NILPuNntDfzBqAxxMP2JQusZeIPHTYDrJqRo9YxFe+Uk+PjTUVm9AvfbFMAcMz3AAAAFQCq5wr83MxfnZ+DeU9YvPyilFcpIQAAAIAFEnXMZyq4cqgO7/zXosZonRu8eGgzECQcXUVn4aBWxEolhQxtHmJWe8c0kTbY1Neo6VZ7CD5oSlFQ/d0O78oY+625f1VVGwtebSq4fThZJEm0XMuxj5V/0jhyP5TcTE1AvSHfV03ZpGDP7IbNMuVYp42lxJMs+MTjp82AUDMxGwAAAIA6pWdbmPjFwkWWtsY3VDVpZTPkD5Q3qpGMWCcpUsBT9eQh/CjmqU7ei3GaiDogwxy/Q41orfTmlZfjaSyDDyWgXCSdMF3WoekFAcsIRRRRJ5Nnek+Lhd60EueitdSQKgtbSwCXd9sXDE1eYiTozLfXIeFIZ0hhrQEW2I5NuaNX5A== rth@are.twiddle.net
diff --git a/tcwg-base/tcwg-build/tcwg-benchmark/.gitconfig b/tcwg-base/home-data/tcwg-benchmark/.gitconfig
index d0ea2be3..d0ea2be3 100644
--- a/tcwg-base/tcwg-build/tcwg-benchmark/.gitconfig
+++ b/tcwg-base/home-data/tcwg-benchmark/.gitconfig
diff --git a/tcwg-base/tcwg-build/tcwg-benchmark/.ssh/authorized_keys b/tcwg-base/home-data/tcwg-benchmark/.ssh/authorized_keys
index 536483eb..536483eb 100644
--- a/tcwg-base/tcwg-build/tcwg-benchmark/.ssh/authorized_keys
+++ b/tcwg-base/home-data/tcwg-benchmark/.ssh/authorized_keys
diff --git a/tcwg-base/home-data/tcwg-benchmark/.ssh/config b/tcwg-base/home-data/tcwg-benchmark/.ssh/config
new file mode 120000
index 00000000..5f9d8251
--- /dev/null
+++ b/tcwg-base/home-data/tcwg-benchmark/.ssh/config
@@ -0,0 +1 @@
+../../tcwg-buildslave/.ssh/config \ No newline at end of file
diff --git a/tcwg-base/home-data/tcwg-benchmark/.ssh/known_hosts b/tcwg-base/home-data/tcwg-benchmark/.ssh/known_hosts
new file mode 120000
index 00000000..936136a2
--- /dev/null
+++ b/tcwg-base/home-data/tcwg-benchmark/.ssh/known_hosts
@@ -0,0 +1 @@
+../../tcwg-buildslave/.ssh/known_hosts \ No newline at end of file
diff --git a/tcwg-base/home-data/tcwg-benchmark/.ssh/ssh-tcwglab-nc.sh b/tcwg-base/home-data/tcwg-benchmark/.ssh/ssh-tcwglab-nc.sh
new file mode 120000
index 00000000..6eddeb50
--- /dev/null
+++ b/tcwg-base/home-data/tcwg-benchmark/.ssh/ssh-tcwglab-nc.sh
@@ -0,0 +1 @@
+../../tcwg-buildslave/.ssh/ssh-tcwglab-nc.sh \ No newline at end of file
diff --git a/tcwg-base/tcwg-build/tcwg-buildslave/.gitconfig b/tcwg-base/home-data/tcwg-buildslave/.gitconfig
index d91df92c..d91df92c 100644
--- a/tcwg-base/tcwg-build/tcwg-buildslave/.gitconfig
+++ b/tcwg-base/home-data/tcwg-buildslave/.gitconfig
diff --git a/tcwg-base/tcwg-build/tcwg-buildslave/.mailrc b/tcwg-base/home-data/tcwg-buildslave/.mailrc
index cae73d9b..cae73d9b 100644
--- a/tcwg-base/tcwg-build/tcwg-buildslave/.mailrc
+++ b/tcwg-base/home-data/tcwg-buildslave/.mailrc
diff --git a/tcwg-base/tcwg-build/tcwg-buildslave/.ssh/authorized_keys b/tcwg-base/home-data/tcwg-buildslave/.ssh/authorized_keys
index bb7e338b..bb7e338b 100644
--- a/tcwg-base/tcwg-build/tcwg-buildslave/.ssh/authorized_keys
+++ b/tcwg-base/home-data/tcwg-buildslave/.ssh/authorized_keys
diff --git a/tcwg-base/tcwg-build/tcwg-benchmark/.ssh/config b/tcwg-base/home-data/tcwg-buildslave/.ssh/config
index 47e5dbf0..b5086896 100644
--- a/tcwg-base/tcwg-build/tcwg-benchmark/.ssh/config
+++ b/tcwg-base/home-data/tcwg-buildslave/.ssh/config
@@ -6,7 +6,7 @@
# !!! IMPORTANT NOTE. AS PENANCE, YOU WILL READ THIS NOTE OUT LOUD. !!!
#
-Host *.tcwglab *.aus-colo people.linaro.org aus-colo.linaro.org lab.validation.linaro.org
+Host *.tcwglab people.linaro.org lab.validation.linaro.org
#User @LDAP_USER@
#IdentityFile ~/.ssh/id_rsa
@@ -16,15 +16,15 @@ Host *.tcwglab *.aus-colo people.linaro.org aus-colo.linaro.org lab.validation.l
Host *proxy.*
ProxyCommand ssh $(echo %h | sed -e "s/proxy\.//") nc -q0 localhost %p
-# Access to Austin Colo. E.g., "ssh r1-a7.aus-colo"
-Host *.aus-colo
- ProxyCommand ssh aus-colo.linaro.org nc -q0 %h %p
+# Access to Cambridge Lab. E.g., ssh dev-01.tcwglab
+Host *.tcwglab
+ ProxyCommand ~/.ssh/ssh-tcwglab-nc.sh -q0 %h %p
# Access to LAVA Lab. E.g., "ssh root@10.7.0.18.lab"
Host *.lab
ProxyCommand ssh lab.validation.linaro.org nc -q0 $(basename %h .lab) %p
-Host *.tcwglab *.aus-colo *.lab
+Host *.tcwglab *.lab tcwg-d05-01 libgomp-d05 tcwg-thx1-01
# Enable automatic multiplexing.
ControlMaster auto
# Soften up potential problems with killing master connection by using
@@ -35,13 +35,8 @@ Host *.tcwglab *.aus-colo *.lab
# Put the ssh socket on /tmp. Note that overlayfs can't host sockets,
# so we always arrange /tmp to be on a ext4 or equivalent FS.
ControlPath /tmp/ssh-%u-%r@%h:%p
- # There is little point in forwarding X11 to machines outside of local network.
- ForwardX11 no
# Forward authentication agent and keep private keys in one place.
ForwardAgent yes
- # Ping server every 5min to avoid routers dropping connection.
- # This matches -o BatchMode=yes setting used in cross-testing (see ABE)
- ServerAliveInterval 300
# Disable checking of host keys for boards behind gateways.
# !!! BE BECAREFUL TO ONLY DO THIS FOR MACHINES BEHIND SSH GATEWAY OR VPN !!!
StrictHostKeyChecking no
@@ -50,11 +45,28 @@ Host *.tcwglab *.aus-colo *.lab
# Don't warn about "adding" host keys to /dev/null
LogLevel FATAL
-# Make sure we can connect to localhost (e.g., to a container running
-# on localhost) with the settings for *.tcwglab
-Host localhost.tcwglab
- Hostname localhost
+Host ci.linaro.org
+ Port 2020
-Host git.linaro.org dev-private-git.linaro.org
+Host git*.linaro.org dev-private-git.linaro.org
User git
+
+Host tcwg-d05-01 libgomp-d05 tcwg-thx1-01 tcwg-sq-*.tcwglab
+ Port 2022
+
+Host tcwg-d05-01 libgomp-d05
+ Hostname 147.75.106.138
+
+Host tcwg-thx1-01
+ Hostname 147.75.77.198
+
+Host tcwg-ex40-01 ex40-01
+ Hostname ex40-01.tcwglab.linaro.org
+
+Host *
+ # There is little point in forwarding X11 to machines outside of local network.
+ ForwardX11 no
+ # Ping server every 5min to avoid routers dropping connection.
+ # This matches -o BatchMode=yes setting used in cross-testing (see ABE)
+ ServerAliveInterval 300
# === END: TCWG SSH configuration ===
diff --git a/tcwg-base/tcwg-build/tcwg-benchmark/.ssh/known_hosts b/tcwg-base/home-data/tcwg-buildslave/.ssh/known_hosts
index b649d65f..910daa41 100644
--- a/tcwg-base/tcwg-build/tcwg-benchmark/.ssh/known_hosts
+++ b/tcwg-base/home-data/tcwg-buildslave/.ssh/known_hosts
@@ -1,9 +1,13 @@
aus-colo.linaro.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBP8apVdw/JC+4rOiq/eG2LgjwJPCqKIlG/RwPVDe1VNOdtrmR6VnTQ5oQYkwt00h2rdI6dVzdW8Q9za7PGW6Sls=
aus-colo.linaro.org ssh-dss AAAAB3NzaC1kc3MAAACBALdjDe/FnDjKDz+QzKWD/J1jIVVjied+1EFcxZ/uyGw9uZwVjReHP6ehGQCtQEM+SDklOXc6bz9UeBjG6+gDGXWBmldbS2yXvvxFmmbOf40h/rVFKq0CW/tJxyONoaf75Qj+aOyo3iUXMl+jJowb+LR5j0zbdTrSkM2qEsP8o0b3AAAAFQDfNOi88rFXdks5xpzmiKs0fzyYGQAAAIEAnzYTZ0dDAua6FHgqfoNVZHS4CV/le6G5FFCc4Kp4lB9ijRMjrDZNey5BkCooetqOBuPF8mYYAgZ28NemIUvvTenddfHFzWQTPl0meAdUhBW4EJMq0HWEV+kUKANUah2QlXWx8/g1x3cOhBzABTMOEBUFnlMx9d5A71JZypEN5UQAAACACiH996M1x/DjYmMp6BLwglYMDjQPrfI7QhNwa/8/wukDHlB6puB/HdPyxYZp/IVShHze6C3YpmV+dXxc85/vMNoVRx02ICC2gTkm2MoSFgaW1nO95tRPtyJ4AXa4ev4D22hNPF5SxgXfn2lT4uH8bWxvTrzgHs7JhAzD0oRbOh4=
aus-colo.linaro.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCg5vMfuBLRroqEb6+CFLQikh1Wq6UD++SODY7bSdPDfN1wmurdp60AdVU+22nOXgK78mwYPJ0PEcTBMSE+OmryfZFDZm/+aPbALid/vFs8NuvFmEQ8vecEBPDGxJ3RpVxkNG5BrWMTJjWMJTCFdIh9my5vhBPEloAuDRthRNaRwvgqRw3GJAbSG2Cg4ZgOQi7Lv3ogQ/M3nXzy8KMp4KD7AtncylguPoVwDxNwjl+YoEujZDvpM4UiZDnh+Gxeru3EnEIgDvwbMizlrKL8Tm+2gA+j3cWkgIjCVJM+PW8V0aobp681ChqlbDlzK0oVmwUafdVv3dxzOSrjQH2rkaOn
+[ci.linaro.org]:2020 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBJW1L7ZeT7dC/otESvOQl8KZ/VlV08z0rmUPwwVJvDbuAlh6Qpn5LVPRe7IFEU/qePQQEKzn1Kw7x6Ces3e5mck=
+[ci.linaro.org]:2020 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCzIJCEw5MSW713q3I95jORM6fkdx22Z+eeanVvAy8fGssvh0QHZtG8kpesQLWmtaOxkkRwURK+ui4OnoO/FCaRGWX0SUpnHxPF23OcwejLGXX9uAhtFY8s2hyvdrWDyB4vGjNjqT8NhnciETy3WNV0D0tKCfwEy6WkjIM0B9acrDxhYYDLqSXWUBAdJ7J8Mgg/L1nAPWM8DC0H+5SmzYvfxxnzprq/EvLDL950262WN10nzx2KsFD0zCW4eggp2Qcqa5XX6Ou/gHfIW8J8gncOjfpR4c6DN9NS7rX71F7BsLhkMwu1GwKhf09qvtGT3LdR2ilNOG36Uvq7WksiBofr
+[ci.linaro.org]:2222 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCAxH/zCl/clVrd2Q8Tai5wea0homs6uPPf57qemRP/MFHOz4cIYKEbEczLD87b8u2dK+qfjKsr33jSmW8NbJbvJZ6bFhVUcpXl2BxAYbFQVZJq5YDsDEmRFbvkjzEjiRGHMKCl8ouh1c5lTLkLAKZMu2cKc7X0sIMqwrwOPn/RE8cCrDYkhxTZy2IJ8O8MrJoXmwjiT5mJpe5y7kGVzzESvHBbhtknLa5HuYuyzU88Zyi8m6LjJc9OOTxPBuXiO1c7Oblq7q2Sjk7X+iDld1+m+uUkI2Bro5P2oxneapx2As6R9IUc3zd+YGWcjSiI1CnCb1EykIBzS+yKDfoPg+M7
dev-private-git.linaro.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOvq8E5HPzrBlxmckzsE3rz9LAx9c0faEfofALaO+UGC4HAst9fMaZcHaCqu+b8SVY/2VcBvMYMwO1ZPgOn0rXs=
dev-private-git.linaro.org ssh-dss AAAAB3NzaC1kc3MAAACBAK10xjDXtqiW6S02TFvIQUmjTyu+tpiT0IVTp5dlZX5rT1EDi4DtRgtoO/R4WncAs0GE8FqaI/IqljuYlJbHOrFCxU3OWKB+z2Ue3oXs3kouoFP3coF4exBZLEBX4JQ/HI5Ii88fnE/U70/+wN/mMAtcOrsgGWGXOv8yFZEQaKJJAAAAFQCfVbaD5KdaABTLwQ8CXRuZ+PAeHwAAAIBmppcf9sx9M4KAgiOQRGW+7/eImJHFRazQSe8Qbiqo0H7OQhIRcLIm6+PAtKgxxSaQErAo4z/xM7d2lhqOyydK5GDpILgV3qHUFAgQ9vajL+ga5/VeRTqg6R91kYgIKnEl3y8/iW6eRcJF/jzYfDcaFG0Z3gsOtHzjTsCuV8KMLwAAAIBupI2LDTsUYa64hSKvGhEVPMj8VKx5RX4NWQU/dlNNhlFRTzV42giujZ146vH5SGqagR3daX+o6Xm++GDJ+AedzJ8zBc9dAwU7ao4fd23bsyURvNxC7K5DKJnlCDS6xk+6wv6Hz9VdbaIEE5TPxSGqZEOK1V+pbgv+cMUGACy43Q==
dev-private-git.linaro.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC34bjTOKJIq8MVSeC5gddQlbR0hyvvTZbrpW7KXgCzkLTFZxa05wbz8VC1l7ruPotQBgrICgLYmrbjrASqcY//9OPLDa1Pf/MUIu2F2lA1W/5E3psGYmyC9GTvmjKgu39Rad5ujXMeMLjuzVPCmo+WhewgugDSV4Fcggd6B6YXHGtoE15ctSw4moerUq1+2BXVgFxUyMoGcpSCeLnbvWpmi6xWoGQOSnrQ4Z/VmZ5WZ87vQsiiWEAsqmMOHHacunnSph7uzQXJlHNajdeGnr2NF+EgcmQ0N6vivZDRLmRYuSmizjCOHSRZxSm/0UJC/ewVzp9BwRepiNKWsjb4gTMb
+[dev-private-review.linaro.org]:29418 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBDZ6AQ2WyZSO43657/fFpxGgVY73kUwh1R1eXpZp27T6lAI5XFQ7YS8HjQ2O7e4edGSpJHHrqVuZphKpqu11Lz8=
[dev-private-review.linaro.org]:29418 ssh-dss AAAAB3NzaC1kc3MAAACBAM596jW8Kbsh/ApdoP3r7UvrSOzhnoG1ZHYngER+Dd9e0iGJY1Wbpth7ngngpALl3PQQ99R5xUt8wvcOcICq+vF34FR/Gym+7VjaMLI7DxF48OrUAJnx6zINNlpXbMAI0nptWcKoL/xdmC7AoBOjH1Q+jGTiKISmXTE1w5iK8qp3AAAAFQDwzizM3qhYdknasNV/vp84o19FWQAAAIEAqLjr9vNsgr1snOdyKOhRuyidqf/zThaxuJaUktxLDKU0DDip+FGqLYiS2VzNuSWMaKjkBjITBi0sXktmUhhbPvBHhyzLy3Hz6BOdXpUAoq70QMOcocE9IsEfmqtkOsx/BZ1uCV6W051Gsci4PxK16q9zolpAEp4/3wEWGH+ueJIAAACAERdZ+vCZl6iDzq6XpYFKZ1r6i/CjX5KIBWKCzoN/Z8fo96rZqFA23G5tXM8+YMYnLdwb/qvNSCz6dWpH2FMS4yj7zo2l3GjguC8JOfar0Rt8fihJyaynX+rD/aP3b+h5ot1b/645qrfvpfmeh3gZt3c1kjy5fyopujyGNTUtq6c=
[dev-private-review.linaro.org]:29418 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCofUDWYYwzE4YWotCffwCxLoRuVCMb6DP+eObwbTPHMe5asK94Y1jPNeK1yUVJIuIAUO8aA6pIq3uLKlusyGLZe1YBpM+7YX3HMOBfCOeOemHFxETlj/HC7islYLYT7Sm/DweiN1kxgP8Q/PhPIA5czCZGHS/+T/VLbMApyyzdTmswaqfgJejyK9juHAcmxT3Tupj2SGOuOamyKfhfsPxGwIchivy/mt7xBTk5cNiSDeLAfMn2rHsilfLjb+IoeE6EvtqG3+rTh+ttulHp2vSeZkK79tuyVWt+XOZjD4RDfk1taW9JjaafkyOW0VCF4gqOMfJU24u88xTCgqkgT1bN
dev-private-review.linaro.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOvq8E5HPzrBlxmckzsE3rz9LAx9c0faEfofALaO+UGC4HAst9fMaZcHaCqu+b8SVY/2VcBvMYMwO1ZPgOn0rXs=
@@ -18,11 +22,11 @@ git-us.linaro.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdH
git-us.linaro.org ssh-dss AAAAB3NzaC1kc3MAAACBAJbwbYgvbS+8vnlhJLe1AwgvbBqu0kBw7pBjQgF47lXRKqZbzwQc+hHmMbczJOfIoo1PX39Ifhz142u+yN7PQgUlU+jzI2Q9cjSqfrS02rV0cU2TQRKvgTQH89qMk2M0jOimcz1UCZkCgS2wj6hb1HU9pkhzpH7d+1/M/31Xc5uPAAAAFQC82/+3qHmNd8G8mrPJz9LfdUpsmwAAAIASypGV3LlIOE3bDlZwgr3rZ+44MPq7c16SbpjnjqbsOzPAyllD8MeY0eynuDqtGtT4RtC8uRgmgw7MW1HtYnTSlYt0up66LT19LCRKme8CVtggqjwLTUEKWmrdbe+PSvczKjeszOD0R5qGasSvOOKMJ5jLMnJ9jMhHhItc53eM5AAAAIBXWdudBBziVVk9VE+z1kvOYsCGYosLglqzJMsFfVQh948Ci9PowKx8xognWEtdaZW7+2oEIwL8QR+zPtzNY447i6iRuJy1TaDZfJU8nTfr07KoXB4B7rhADByXl4x9Uk25m9n9XjF/ctjIzyspvcRpqZXMHBUuZalID6E39YJqnA==
git-us.linaro.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC8Q8j887I9mBD2va9C7gWl4Cr8agHWxuFHfDUWaqiygI9jA4w2YC7mo5oJMqwUk2DsvPDLuU5Z6yyKSA7Cko+L0MnKfNMzQ8e00ZXGDBq8bh1tRKstFselAFmmg+5DhM9q9HPjpKYzbAxU6rxmdFbSc+ktE0rhtmciThVT3YW3bMs3g+D+6sf6ER9UkSpbdZ7skKFXBHw2t1BWaPrvW4L8GMFAokgXUKOE8e1WZkQuCcseIz8J9Hz1p/liyiiTPVQnjGyleUnUY0pZA3ViB6pS317BH5Kvd8aX8x0vSwCIs30rpkmBam9C0b2uj2jWk3GrmHYjVHebMAW376VSLTZV
lab.validation.linaro.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFZDLd4f9cph9A64+kXUpGvuRmInB3HAtHU9T6wVIsp4HkYLLZD59I4lF/u2VLfM7j10XMNPO7ybOJMM+1zIZlM=
-lab.validation.linaro.org ssh-dss AAAAB3NzaC1kc3MAAACBAK75t/OG68cN0mtVNrliCi8/7tajozJQDGvxgnpben1F84IzWNJpBdtEgaXeo3zD0cQl1nM5IftBjSKMkomdsaDh7u6A57juaANU9NKIXW2BGmaICZxllFAb/Cmnq4mDnZJ33G5UyGPVA49bUEKw8DLe8FLVlO/wcghJhjoy7prZAAAAFQD8zrwLDwd4M4vKKWu9nju7fI3oywAAAIBVE6ykor/q56qYTYqaAvcRkq7331jdYHTqiAVcO9KyrdOS7yCgtb2Dw+O0rq5ftLSF73ad5ACbw+XbzQVJAeKDaDs5mLf3eYF0+3YODFRHYDsbbihO0uZcGHFPvGDD9odBZhWFIZaFSdboodSuyzxIgLu0EZAsHoSP2wjTGdiXFwAAAIAkPcANYxo0jm8BuCEYR+SXXS4aj83dUGbPP54UU7M+jrrfG1M+JVFh3kEsXr9zptZajY+NrqlnXqPp4HZyORUUEN+Szkjbd2p8CCCQvv1PODGJtXFzwpatUP27I2ik/lZG9OXxBQkO+QxjuJ+pcjXPdBRz6DwWoUM63+QFXBLpsw==
lab.validation.linaro.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDtto5bsPJ3NuXsWtwMR8bsAzLvkBstmF1QP+eC6jUBsCDHMtBW/zAWJYNPDr30vRkV7J8D64Pd91rgjbqF8mOPDlyVlln03dYtOV3hzVuXLZfxodslJsw4lB+ZhxLfcZAKqqFURJEhrJNJmtFBprxFRbdS1iQHJHJohg3zS9zlLFvUpZGWooLFEM2z2NdUfSiR12ePvdW1YsEimJR/b3h1it/Wot0uEB6VONZGyMrrWvsntJV1NdQFxJR8waTz1sBvQQBJGX+SgEXY1CB3AUiF4yIy5WZ/4YCOk0kO9qABvV0Ks357OU5uY5GMgalAy2RJyvceNf6erlR4vwmpdnDH
people.linaro.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKKtlH9IGVw1wE3daicRzyOdIM9MzWfUH1tUB8R/md36RDTSqG8VGYrn1E5pJcs7rsk05ZCUQIaglefMytoOvQ8=
people.linaro.org ssh-dss AAAAB3NzaC1kc3MAAACBAOnQwFbvISNteLPMb/Srm2xwFDrxDql+kxtlZyohrSZ72K9GDg+dqb4W7/QiVrOMhfRzaL93Hj/FLCxKqUXdnTQqekqGosRQK7fLNJvh6DNizoJ+aWzKp1EL3kF2GgKP33ZPtRJYrBdxnc+DDc0yP/He3cyrzbg1nsWSedc1MMVpAAAAFQCm3xIrM1iR9ozuyjKRGwhnrKo9GQAAAIBkdN4dNB298m+2aXqMmLOj1Ry9/S6CTiMn5c9T/luYpWFRnsyuHlBIcZFjyOMtU3bc8b7KwqP8t3XTQbolbqtYOWqPeiaIH/VAk7w9o1tePRwtbTadksYw+UJGtn9c+52uQfGZdjfyjsKs7hEWgE72gTeIb9g1QZ+WCoVfSzNacgAAAIA9T2ONJcRFX3heeDcl6gho8Wj264GDhS5/iqdMCClO3wKUY04hPSpXKRhRm/zzFGb9537Qj6LluDAcg+m/D0FnoQkILLXnfiMnrlyoCCA/jZWrVZw8aQdDHM5LlDdDZKZV7djkbjF0nVvWRTrvc20yQeDLLImaTDOfYjmJ75L1vQ==
people.linaro.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC8OveP3mffvlzMEGuZQzol8zoDwCdAzrNiBfX9rv6lDGr86Sl4MVKs/6cYdjbtrUJD7ls5gc8cfjH5EXPh/HuoBj7Bi+UNfyyGSqrZgTFPpyLx50QJDeogcUN54NL+N/X6HtQtyvGwEXgb26S9ec7LFfyxqT8Yy370XH/y7qAtJgS3UTkf8kzIWgZQvU5MU3FqhOn9mzI+KqsBMRKt0JpW7H2VRYiaHqpshwpuNHRDEQBMnRVHDpo8SZRq21pwRjdTzuzGJv2enCW018jWC/HMmTaaDWzX6SO+JQs9NFVUpM6hg+ysa5piDXnCNQ8Ry6l0nlAjgUt92NEe4OeANrt9
+[review.linaro.org]:29418 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPzkmW4axU/BXRtRkR42I8FVvWjGhB4CUtTC3cSkhu6L0Oo9i+ija/hahkPT0DC+S0k/vEL7s4mC5SrdNCeJO/0=
[review.linaro.org]:29418 ssh-dss AAAAB3NzaC1kc3MAAACBAPB0SE19HQ0dEtm3Unp7+JiNeHlIWNs4j9yN+2Q/fxmBT2ZZ0a5I4gg63b5rM/1Li/6k0f/CtSYBH/mhmjKaEKIQV/c/lmuZivUAfTPT0ld3voXHwRhgpWI/WOiRdsTRZZW2yUHx/troO53mx4eIISKfab+t+vCU5Af+sgTBF6InAAAAFQDGR2ccfQSWVuSyzgvK8f7FT8olTQAAAIBHZqySRfjEnnx9h0aS6i2H21dmZxUllwIJpdpS6XWzvMzVwBb1DKx8bO0WwZeTnxxs1BKVAjmSDkDGYJWHxyU8kQ8aFsBo0KwbNEKXozaK3Gf2YF289xQsigbtPUWYXDz1PNEXtIS9AXdCRq4i09ujO3ayxq4lX2n0LIQ4IhM+RgAAAIB2SvnzVadjW14AN9F9ZEfnK0JRpBTKjz+kQSS1TJiRI/dSHG6CwwXjD1G9YW8mfGhPOPYHIE2MF2n7d7DfqBdeeee0PnwBQ0YBc5qfhQ9Gpi+hqXSem1YaD2YRG40que5bu/Rd6NksnSLg/93Z3L3fN+qTeApRqHQWRrfswGgi+A==
[review.linaro.org]:29418 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMfTLkTmsbtahAiVJTKXRFbR9MQ/vDH/JPj4QN3XPHJuubxLhUf8WObEBtML7J11uvVM1oDTwM5YG5yjyBnc+85OaQaB9tMPDheGhfMG40F4vxdSnQL29ihyrls0hrFTY9UZ4Y2FmJwYL0rOnGU7iPyNuExQwfg2bkdw67aH9nEGjSd2eXYl2bI4DHujy5GJiV3dR9TlUF0iaSeHVSIX5t9I/BXK+AiSqHTrvwdGGi9XvL6xEWYMOZOpJnCH8Q4OSibsFfQXnCMgIFeO7J/ZMGXqltXOtztgQMr8VvRRD3S+Lcp8yKb5aUjWwoCxb4YzEUbQE04SRVeAGjsfNJcXgT
review.linaro.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBONeIVl09BaG0iDOqF/qZjDun8fktYdD0Zl2fRAkSGT6Q7ULAXWJZA7IwstvcSs5w9SRV6x/lNc3CqlHwMFaABc=
diff --git a/tcwg-base/home-data/tcwg-buildslave/.ssh/ssh-tcwglab-nc.sh b/tcwg-base/home-data/tcwg-buildslave/.ssh/ssh-tcwglab-nc.sh
new file mode 100755
index 00000000..d088179f
--- /dev/null
+++ b/tcwg-base/home-data/tcwg-buildslave/.ssh/ssh-tcwglab-nc.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+if grep -q "nameserver 192.168.16.3" /etc/resolv.conf; then
+ # If we are in one of TCWG Cambridge subnetworks, then use straight nc.
+ exec nc "$@"
+else
+ # Otherwise jump from ci.linaro.org
+ exec ssh -Snone ci.linaro.org nc "$@"
+fi
diff --git a/tcwg-base/home-data/yvan.roux/.ssh/authorized_keys b/tcwg-base/home-data/yvan.roux/.ssh/authorized_keys
new file mode 100644
index 00000000..05661935
--- /dev/null
+++ b/tcwg-base/home-data/yvan.roux/.ssh/authorized_keys
@@ -0,0 +1 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDh/oEDJ6J0ye3Mi86OnfG/agqZbNc7qYX5CLl8QVz2YInzSfRTKhqpNSVGBV+wjzzRRJNfXo7OISkE1Rut4tD8TZoeqz/ZeDBtcgbSb84F9iMXnXBSh+75/JjlmOaxkMkwSEpbtH+9WabVW21mX5Fl4WLj8O6DKl3guF6B6nuxX793uDdSD1sRH0qrRYKOSM1AdrTJgNvG/pQCPVcTYNWq7DeeWGo+9pi2vb+jNS2OaKhl/j29Vjdj+hO29AHCQTjFsWpYY+KWvqsFYO2tB67s6kWQaJRuI/lg4OhNUFYBlReSTYYF+1Gnyx6SoM/UV1HGBIOgMRgK0PuQR2P/rZerLleTOjEtc2zf9eSD3NTyzormuSlNrtiGXk4Mum29JeudB1qEGCsYrddi3igopX+2TMHtgmMKN6RobE/tvZQtBl4jXboKkCTx/Otsc8pPIrxmyUbDLMvsS8WMXZIYP5rdL9tJRb269k3lvga0h1K6ZA89MlAphjBSYNiOL4doMQukJN44RwSwoty6vtNELzVbfZjicWzzi55xjhpqvAqEIQAKN2CsPuisULk+18iELa3RBfUgYDuwwOTqYp+VvGV3TGJpAcwiBVMUtpjMGXG6Rr41fF77dulfqrs93tubYHuc1F/xXNsUwb7uFbSI5GwO74WCN2kAPkn5XPRsm353Aw== yvan.roux@linaro.org
diff --git a/tcwg-base/home-data/yvan.roux/.tmux.conf b/tcwg-base/home-data/yvan.roux/.tmux.conf
new file mode 100644
index 00000000..2a041028
--- /dev/null
+++ b/tcwg-base/home-data/yvan.roux/.tmux.conf
@@ -0,0 +1,10 @@
+set -g default-terminal "screen-256color"
+set-option -g prefix `
+bind-key ` send-prefix
+set -g mouse on
+set-window-option -g mode-keys vi
+set -g status-bg "colour0"
+set -g status-left "#[fg=colour9][#H] "
+set -g status-right '#[fg=colour33,bg=default] %l:%M%p'
+setw -g window-status-current-format "#[fg=colour1,bg=colour234,nobold,nounderscore,noitalics]#[fg=colour41,bg=default,bold] #I:#W #[fg=colour231,bg=default,nobold,nounderscore,noitalics]"
+setw -g window-status-format "#[fg=colour31,bg=default,nobold,nounderscore,noitalics] #I:#W #[fg=colour234,bg=default,nobold,nounderscore,noitalics]"
diff --git a/tcwg-base/new-user.sh b/tcwg-base/new-user.sh
new file mode 100755
index 00000000..10463880
--- /dev/null
+++ b/tcwg-base/new-user.sh
@@ -0,0 +1,112 @@
+#!/bin/bash
+
+set -euf -o pipefail
+
+usage ()
+{
+ exit 1
+}
+
+passwd_ent=""
+group=""
+home_data="default"
+update=false
+user=""
+verbose=false
+
+while [ $# -gt 0 ]; do
+ case "$1" in
+ --passwd) passwd_ent="$2" ;;
+ --group) group="$2" ;;
+ --home-data) home_data="$2" ;;
+ --update) update="$2" ;;
+ --user) user="$2" ;;
+ --verbose) verbose="$2" ;;
+ *) echo "ERROR: Wrong option: $1"; usage ;;
+ esac
+ shift 2
+done
+
+if $verbose; then set -x; fi
+
+if [ x"$home_data" = x"default" ]; then
+ home_data=""
+ if [ -d /home-data/ ]; then
+ home_data="/home-data"
+ fi
+fi
+
+if [ x"$passwd_ent" = x"" -a x"$home_data" != x"" -a x"$user" != x"" ]; then
+ passwd_ent=$(grep "^${user%%:*}:" "$home_data/passwd")
+fi
+
+if [ x"$group" != x"" ]; then
+ gid=$(echo "$group" | cut -s -d: -f 2)
+ group=$(echo "$group" | cut -d: -f 1)
+
+ if [ x"$gid" != x"" ]; then
+ action="add"
+ if $update && getent group $group >/dev/null; then
+ action="mod"
+ fi
+ group${action} -g $gid $group
+ fi
+
+ group_opt="-g $group"
+elif [ x"$passwd_ent" != x"" ]; then
+ gid=$(echo "$passwd_ent" | cut -d: -f 4)
+ group_opt="-g $gid"
+else
+ group_opt=""
+ gid=""
+fi
+
+if [ x"$user" = x"" ]; then
+ user=$(echo "$passwd_ent" | cut -s -d: -f 1,3)
+fi
+
+uid=$(echo "$user" | cut -s -d: -f 2)
+user=$(echo "$user" | cut -d: -f 1)
+
+if [ x"$uid" = x"" -a x"$passwd_ent" != x"" ]; then
+ uid=$(echo "$passwd_ent" | cut -d: -f 3)
+fi
+
+if [ x"$user" != x"" ]; then
+ if [ x"$passwd_ent" != x"" ]; then
+ comment=$(echo "$passwd_ent" | cut -d: -f 5)
+ shell=$(echo "$passwd_ent" | cut -d: -f 7)
+ fi
+
+ aux_groups="kvm"
+ if [ x"$home_data" != x"" ]; then
+ for g in $(grep "$user" "$home_data/group" | cut -d: -f 1); do
+ if [ x"$g" = x"$group" ]; then
+ continue
+ fi
+ aux_groups="$aux_groups,$g"
+ done
+ fi
+
+ action="add"
+ if $update && getent passwd $user >/dev/null; then
+ action="mod"
+ fi
+ user${action} $group_opt -G $aux_groups \
+ -m -d /home/$user \
+ ${uid:+-u $uid} \
+ ${comment:+-c "$comment"} \
+ ${shell:+-s "$shell"} \
+ $user
+
+ sudoers_file=/etc/sudoers.d/$(echo $user | tr "." "-")
+ echo "$user ALL = NOPASSWD: ALL" > $sudoers_file
+ chmod 0440 $sudoers_file
+
+ if [ x"$home_data" != x"" ]; then
+ chown -R $user${gid:+:$gid} $home_data/$user/
+ chmod -R go-w $home_data/$user/
+ chmod -R go-rwx $home_data/$user/.ssh/
+ rsync -a $home_data/$user/ /home/$user/
+ fi
+fi
diff --git a/tcwg-base/tcwg-build/Dockerfile.in b/tcwg-base/tcwg-build/Dockerfile.in
index 39ef4f39..9033a56b 100644
--- a/tcwg-base/tcwg-build/Dockerfile.in
+++ b/tcwg-base/tcwg-build/Dockerfile.in
@@ -1,29 +1,28 @@
FROM linaro/ci-#{ARCH}-tcwg-base-ubuntu:#{DISTRO}
-COPY new-user.sh /usr/local/bin/
-
-RUN new-user.sh --user tcwg-buildslave:11827 --group tcwg-infra:9000 \
- && new-user.sh --user tcwg-benchmark:12326 --group tcwg-infra \
- && mkdir -p /home/tcwg-buildslave/workspace
-
-COPY tcwg-buildslave /home/tcwg-buildslave
-COPY tcwg-benchmark /home/tcwg-benchmark
-
-RUN chown -R tcwg-buildslave:tcwg-infra /home/tcwg-buildslave/ \
- && chown -R tcwg-benchmark:tcwg-infra /home/tcwg-benchmark/ \
- && chmod 0700 /home/tcwg-buildslave/.ssh/ /home/tcwg-benchmark/.ssh/ \
- && chmod 0600 /home/tcwg-buildslave/.ssh/* /home/tcwg-benchmark/.ssh/*
+RUN while read line; do \
+ if [ x"$(echo "$line" | cut -d: -f 4)" != x"9000" ]; then \
+ continue; \
+ fi; \
+ new-user.sh --passwd "$line"; \
+ user=$(echo "$line" | cut -d: -f 1); \
+ sudo -i -u $user ccache --print-config; \
+ done </home-data/passwd
#if ARCH_amd64 || ARCH_i386
# Install wine. On amd64 arch we need to enable i386, otherwise wine
# won't meet dependencies (this is the case at least for trusty and xenial).
RUN \
-#if ARCH_amd64
+#if ARCH_amd64 && (DISTRO_trusty || DISTRO_xenial)
dpkg --add-architecture i386 && \
#endif
apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
+#if DISTRO_trusty || DISTRO_xenial
wine \
+#else
+ wine-stable \
+#endif
&& apt-get clean \
&& rm -rf \
/var/lib/apt/lists/* \
diff --git a/tcwg-base/tcwg-build/build.sh b/tcwg-base/tcwg-build/build.sh
index 99795026..929a5761 100755
--- a/tcwg-base/tcwg-build/build.sh
+++ b/tcwg-base/tcwg-build/build.sh
@@ -6,7 +6,7 @@ trap cleanup_exit INT TERM EXIT
cleanup_exit()
{
- rm -rf new-user.sh tcwg-buildslave tcwg-benchmark
+ :
}
export LANG=C
@@ -16,10 +16,6 @@ name=$(basename ${PWD} | cut -f3- -d '-')
image=linaro/ci-${arch}-${name}-ubuntu:${distro}
top=$(git rev-parse --show-toplevel)
-cp $top/tcwg-base/tcwg-build/new-user.sh ./
-rsync -a $top/tcwg-base/tcwg-build/tcwg-buildslave/ ./tcwg-buildslave/
-rsync -a $top/tcwg-base/tcwg-build/tcwg-benchmark/ ./tcwg-benchmark/
-
(cd ..; ./build.sh)
"$top"/tcwg-base/validate-dockerfile.sh Dockerfile
docker pull $image 2>/dev/null || true
diff --git a/tcwg-base/tcwg-build/new-user.sh b/tcwg-base/tcwg-build/new-user.sh
deleted file mode 100755
index d1b18953..00000000
--- a/tcwg-base/tcwg-build/new-user.sh
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/bin/bash
-
-set -euf -o pipefail
-
-usage ()
-{
- exit 1
-}
-
-group=""
-key=""
-user=""
-verbose=false
-
-while [ $# -gt 0 ]; do
- case "$1" in
- --group) group="$2" ;;
- --key) key="$2" ;;
- --user) user="$2" ;;
- --verbose) verbose="$2"; shift ;;
- *) echo "ERROR: Wrong option: $1"; usage ;;
- esac
- shift 2
-done
-
-if $verbose; then set -x; fi
-
-if [ x"$group" != x"" ]; then
- gid=$(echo "$group" | cut -s -d: -f 2)
- group=$(echo "$group" | cut -d: -f 1)
-
- if [ x"$gid" != x"" ]; then
- groupadd -g $gid $group
- fi
-
- group_opt="-g $group"
-else
- group_opt=""
-fi
-
-uid=$(echo "$user" | cut -s -d: -f 2)
-user=$(echo "$user" | cut -d: -f 1)
-
-useradd -m $group_opt -G kvm ${uid:+-u $uid} $user
-
-sudoers_file=/etc/sudoers.d/$(echo $user | tr "." "-")
-echo "$user ALL = NOPASSWD: ALL" > $sudoers_file
-chmod 0440 $sudoers_file
-
-if [ x"$key" != x"" ] ; then
- sudo -i -u $user mkdir -p /home/$user/.ssh
- sudo -i -u $user chmod 0700 /home/$user/.ssh
- cat "$key" | sudo -i -u $user tee /home/$user/.ssh/authorized_keys > /dev/null
- sudo -i -u $user chmod 0600 /home/$user/.ssh/authorized_keys
-fi
diff --git a/tcwg-base/tcwg-build/tcwg-buildslave/.ssh/config b/tcwg-base/tcwg-build/tcwg-buildslave/.ssh/config
deleted file mode 100644
index 47e5dbf0..00000000
--- a/tcwg-base/tcwg-build/tcwg-buildslave/.ssh/config
+++ /dev/null
@@ -1,60 +0,0 @@
-# === BEGIN: TCWG SSH configuration ===
-#
-# !!! THIS MUST BE COPIED TO THE START OF YOUR ~/.SSH/CONFIG FILE. !!!
-# !!! IF YOU REPORT A PROBLEM WITH SSH, AND THIS CONFIGURATION IS NOT !!!
-# !!! AT THE START OF YOUR FILE -- YOU HAVE OBVIOUSLY MISSED THIS VERY !!!
-# !!! IMPORTANT NOTE. AS PENANCE, YOU WILL READ THIS NOTE OUT LOUD. !!!
-#
-
-Host *.tcwglab *.aus-colo people.linaro.org aus-colo.linaro.org lab.validation.linaro.org
- #User @LDAP_USER@
- #IdentityFile ~/.ssh/id_rsa
-
-# Proxy connections to custom ssh servers (inside containers) on firewalled
-# hosts through "main" ssh server on that host.
-# E.g., "ssh -p32768 proxy.dev-01.tcwglab"
-Host *proxy.*
- ProxyCommand ssh $(echo %h | sed -e "s/proxy\.//") nc -q0 localhost %p
-
-# Access to Austin Colo. E.g., "ssh r1-a7.aus-colo"
-Host *.aus-colo
- ProxyCommand ssh aus-colo.linaro.org nc -q0 %h %p
-
-# Access to LAVA Lab. E.g., "ssh root@10.7.0.18.lab"
-Host *.lab
- ProxyCommand ssh lab.validation.linaro.org nc -q0 $(basename %h .lab) %p
-
-Host *.tcwglab *.aus-colo *.lab
- # Enable automatic multiplexing.
- ControlMaster auto
- # Soften up potential problems with killing master connection by using
- # ControlPersist (which puts the master connection in background).
- # Also ControlPersist has an undocumented feature that it will clean-up
- # and replace stale ssh socket from a zombie connection.
- ControlPersist 5m
- # Put the ssh socket on /tmp. Note that overlayfs can't host sockets,
- # so we always arrange /tmp to be on a ext4 or equivalent FS.
- ControlPath /tmp/ssh-%u-%r@%h:%p
- # There is little point in forwarding X11 to machines outside of local network.
- ForwardX11 no
- # Forward authentication agent and keep private keys in one place.
- ForwardAgent yes
- # Ping server every 5min to avoid routers dropping connection.
- # This matches -o BatchMode=yes setting used in cross-testing (see ABE)
- ServerAliveInterval 300
- # Disable checking of host keys for boards behind gateways.
- # !!! BE BECAREFUL TO ONLY DO THIS FOR MACHINES BEHIND SSH GATEWAY OR VPN !!!
- StrictHostKeyChecking no
- # Don't store host keys for one-time containers
- UserKnownHostsFile /dev/null
- # Don't warn about "adding" host keys to /dev/null
- LogLevel FATAL
-
-# Make sure we can connect to localhost (e.g., to a container running
-# on localhost) with the settings for *.tcwglab
-Host localhost.tcwglab
- Hostname localhost
-
-Host git.linaro.org dev-private-git.linaro.org
- User git
-# === END: TCWG SSH configuration ===
diff --git a/tcwg-base/tcwg-build/tcwg-buildslave/.ssh/known_hosts b/tcwg-base/tcwg-build/tcwg-buildslave/.ssh/known_hosts
deleted file mode 100644
index b649d65f..00000000
--- a/tcwg-base/tcwg-build/tcwg-buildslave/.ssh/known_hosts
+++ /dev/null
@@ -1,30 +0,0 @@
-aus-colo.linaro.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBP8apVdw/JC+4rOiq/eG2LgjwJPCqKIlG/RwPVDe1VNOdtrmR6VnTQ5oQYkwt00h2rdI6dVzdW8Q9za7PGW6Sls=
-aus-colo.linaro.org ssh-dss AAAAB3NzaC1kc3MAAACBALdjDe/FnDjKDz+QzKWD/J1jIVVjied+1EFcxZ/uyGw9uZwVjReHP6ehGQCtQEM+SDklOXc6bz9UeBjG6+gDGXWBmldbS2yXvvxFmmbOf40h/rVFKq0CW/tJxyONoaf75Qj+aOyo3iUXMl+jJowb+LR5j0zbdTrSkM2qEsP8o0b3AAAAFQDfNOi88rFXdks5xpzmiKs0fzyYGQAAAIEAnzYTZ0dDAua6FHgqfoNVZHS4CV/le6G5FFCc4Kp4lB9ijRMjrDZNey5BkCooetqOBuPF8mYYAgZ28NemIUvvTenddfHFzWQTPl0meAdUhBW4EJMq0HWEV+kUKANUah2QlXWx8/g1x3cOhBzABTMOEBUFnlMx9d5A71JZypEN5UQAAACACiH996M1x/DjYmMp6BLwglYMDjQPrfI7QhNwa/8/wukDHlB6puB/HdPyxYZp/IVShHze6C3YpmV+dXxc85/vMNoVRx02ICC2gTkm2MoSFgaW1nO95tRPtyJ4AXa4ev4D22hNPF5SxgXfn2lT4uH8bWxvTrzgHs7JhAzD0oRbOh4=
-aus-colo.linaro.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCg5vMfuBLRroqEb6+CFLQikh1Wq6UD++SODY7bSdPDfN1wmurdp60AdVU+22nOXgK78mwYPJ0PEcTBMSE+OmryfZFDZm/+aPbALid/vFs8NuvFmEQ8vecEBPDGxJ3RpVxkNG5BrWMTJjWMJTCFdIh9my5vhBPEloAuDRthRNaRwvgqRw3GJAbSG2Cg4ZgOQi7Lv3ogQ/M3nXzy8KMp4KD7AtncylguPoVwDxNwjl+YoEujZDvpM4UiZDnh+Gxeru3EnEIgDvwbMizlrKL8Tm+2gA+j3cWkgIjCVJM+PW8V0aobp681ChqlbDlzK0oVmwUafdVv3dxzOSrjQH2rkaOn
-dev-private-git.linaro.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOvq8E5HPzrBlxmckzsE3rz9LAx9c0faEfofALaO+UGC4HAst9fMaZcHaCqu+b8SVY/2VcBvMYMwO1ZPgOn0rXs=
-dev-private-git.linaro.org ssh-dss AAAAB3NzaC1kc3MAAACBAK10xjDXtqiW6S02TFvIQUmjTyu+tpiT0IVTp5dlZX5rT1EDi4DtRgtoO/R4WncAs0GE8FqaI/IqljuYlJbHOrFCxU3OWKB+z2Ue3oXs3kouoFP3coF4exBZLEBX4JQ/HI5Ii88fnE/U70/+wN/mMAtcOrsgGWGXOv8yFZEQaKJJAAAAFQCfVbaD5KdaABTLwQ8CXRuZ+PAeHwAAAIBmppcf9sx9M4KAgiOQRGW+7/eImJHFRazQSe8Qbiqo0H7OQhIRcLIm6+PAtKgxxSaQErAo4z/xM7d2lhqOyydK5GDpILgV3qHUFAgQ9vajL+ga5/VeRTqg6R91kYgIKnEl3y8/iW6eRcJF/jzYfDcaFG0Z3gsOtHzjTsCuV8KMLwAAAIBupI2LDTsUYa64hSKvGhEVPMj8VKx5RX4NWQU/dlNNhlFRTzV42giujZ146vH5SGqagR3daX+o6Xm++GDJ+AedzJ8zBc9dAwU7ao4fd23bsyURvNxC7K5DKJnlCDS6xk+6wv6Hz9VdbaIEE5TPxSGqZEOK1V+pbgv+cMUGACy43Q==
-dev-private-git.linaro.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC34bjTOKJIq8MVSeC5gddQlbR0hyvvTZbrpW7KXgCzkLTFZxa05wbz8VC1l7ruPotQBgrICgLYmrbjrASqcY//9OPLDa1Pf/MUIu2F2lA1W/5E3psGYmyC9GTvmjKgu39Rad5ujXMeMLjuzVPCmo+WhewgugDSV4Fcggd6B6YXHGtoE15ctSw4moerUq1+2BXVgFxUyMoGcpSCeLnbvWpmi6xWoGQOSnrQ4Z/VmZ5WZ87vQsiiWEAsqmMOHHacunnSph7uzQXJlHNajdeGnr2NF+EgcmQ0N6vivZDRLmRYuSmizjCOHSRZxSm/0UJC/ewVzp9BwRepiNKWsjb4gTMb
-[dev-private-review.linaro.org]:29418 ssh-dss AAAAB3NzaC1kc3MAAACBAM596jW8Kbsh/ApdoP3r7UvrSOzhnoG1ZHYngER+Dd9e0iGJY1Wbpth7ngngpALl3PQQ99R5xUt8wvcOcICq+vF34FR/Gym+7VjaMLI7DxF48OrUAJnx6zINNlpXbMAI0nptWcKoL/xdmC7AoBOjH1Q+jGTiKISmXTE1w5iK8qp3AAAAFQDwzizM3qhYdknasNV/vp84o19FWQAAAIEAqLjr9vNsgr1snOdyKOhRuyidqf/zThaxuJaUktxLDKU0DDip+FGqLYiS2VzNuSWMaKjkBjITBi0sXktmUhhbPvBHhyzLy3Hz6BOdXpUAoq70QMOcocE9IsEfmqtkOsx/BZ1uCV6W051Gsci4PxK16q9zolpAEp4/3wEWGH+ueJIAAACAERdZ+vCZl6iDzq6XpYFKZ1r6i/CjX5KIBWKCzoN/Z8fo96rZqFA23G5tXM8+YMYnLdwb/qvNSCz6dWpH2FMS4yj7zo2l3GjguC8JOfar0Rt8fihJyaynX+rD/aP3b+h5ot1b/645qrfvpfmeh3gZt3c1kjy5fyopujyGNTUtq6c=
-[dev-private-review.linaro.org]:29418 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCofUDWYYwzE4YWotCffwCxLoRuVCMb6DP+eObwbTPHMe5asK94Y1jPNeK1yUVJIuIAUO8aA6pIq3uLKlusyGLZe1YBpM+7YX3HMOBfCOeOemHFxETlj/HC7islYLYT7Sm/DweiN1kxgP8Q/PhPIA5czCZGHS/+T/VLbMApyyzdTmswaqfgJejyK9juHAcmxT3Tupj2SGOuOamyKfhfsPxGwIchivy/mt7xBTk5cNiSDeLAfMn2rHsilfLjb+IoeE6EvtqG3+rTh+ttulHp2vSeZkK79tuyVWt+XOZjD4RDfk1taW9JjaafkyOW0VCF4gqOMfJU24u88xTCgqkgT1bN
-dev-private-review.linaro.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOvq8E5HPzrBlxmckzsE3rz9LAx9c0faEfofALaO+UGC4HAst9fMaZcHaCqu+b8SVY/2VcBvMYMwO1ZPgOn0rXs=
-dev-private-review.linaro.org ssh-dss AAAAB3NzaC1kc3MAAACBAK10xjDXtqiW6S02TFvIQUmjTyu+tpiT0IVTp5dlZX5rT1EDi4DtRgtoO/R4WncAs0GE8FqaI/IqljuYlJbHOrFCxU3OWKB+z2Ue3oXs3kouoFP3coF4exBZLEBX4JQ/HI5Ii88fnE/U70/+wN/mMAtcOrsgGWGXOv8yFZEQaKJJAAAAFQCfVbaD5KdaABTLwQ8CXRuZ+PAeHwAAAIBmppcf9sx9M4KAgiOQRGW+7/eImJHFRazQSe8Qbiqo0H7OQhIRcLIm6+PAtKgxxSaQErAo4z/xM7d2lhqOyydK5GDpILgV3qHUFAgQ9vajL+ga5/VeRTqg6R91kYgIKnEl3y8/iW6eRcJF/jzYfDcaFG0Z3gsOtHzjTsCuV8KMLwAAAIBupI2LDTsUYa64hSKvGhEVPMj8VKx5RX4NWQU/dlNNhlFRTzV42giujZ146vH5SGqagR3daX+o6Xm++GDJ+AedzJ8zBc9dAwU7ao4fd23bsyURvNxC7K5DKJnlCDS6xk+6wv6Hz9VdbaIEE5TPxSGqZEOK1V+pbgv+cMUGACy43Q==
-dev-private-review.linaro.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC34bjTOKJIq8MVSeC5gddQlbR0hyvvTZbrpW7KXgCzkLTFZxa05wbz8VC1l7ruPotQBgrICgLYmrbjrASqcY//9OPLDa1Pf/MUIu2F2lA1W/5E3psGYmyC9GTvmjKgu39Rad5ujXMeMLjuzVPCmo+WhewgugDSV4Fcggd6B6YXHGtoE15ctSw4moerUq1+2BXVgFxUyMoGcpSCeLnbvWpmi6xWoGQOSnrQ4Z/VmZ5WZ87vQsiiWEAsqmMOHHacunnSph7uzQXJlHNajdeGnr2NF+EgcmQ0N6vivZDRLmRYuSmizjCOHSRZxSm/0UJC/ewVzp9BwRepiNKWsjb4gTMb
-ex40-01.tcwglab.linaro.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBBblrQ+VuEY6mQDq10+GgOPYJIsTfaHXYZi0O0mPr+ev1xNodJ0w45hiWWlmsLEiXiGsvvIiOgZcZsryCkGscDI=
-ex40-01.tcwglab.linaro.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC37ZZKNZpSxQnWcu/5eNpFpEjIzL5eZyKUbn8ghkmk4jVS7fIbty/6s1ZH94UPwQDb07F4QF89esoH5k2ajAizLMNoLxeHU8ZCcqMFaNcmVWjTxKbiXLwRqcrgLUrNMQIGesV8l+xH+yozG2HKOBAnMVaea9+wCFvJWXgO4u54eEup2JcE3UroWIRA/mOL4KhBbyVVe47NbydYbP5G0mqpJjpLv5TuJwRT/aP/0nRH6cPrzuqGbic7cVR7Bu3f6ipttMAsPQRAoFBVYb5yRAt/RcDBu39r7hLHyhitjw0vBhGGV0B5CEzAqCE3ZyU0H+vmQ2GeN8aEtUWDSK9W7uzJ
-git.linaro.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBONeIVl09BaG0iDOqF/qZjDun8fktYdD0Zl2fRAkSGT6Q7ULAXWJZA7IwstvcSs5w9SRV6x/lNc3CqlHwMFaABc=
-git.linaro.org ssh-dss AAAAB3NzaC1kc3MAAACBAJbwbYgvbS+8vnlhJLe1AwgvbBqu0kBw7pBjQgF47lXRKqZbzwQc+hHmMbczJOfIoo1PX39Ifhz142u+yN7PQgUlU+jzI2Q9cjSqfrS02rV0cU2TQRKvgTQH89qMk2M0jOimcz1UCZkCgS2wj6hb1HU9pkhzpH7d+1/M/31Xc5uPAAAAFQC82/+3qHmNd8G8mrPJz9LfdUpsmwAAAIASypGV3LlIOE3bDlZwgr3rZ+44MPq7c16SbpjnjqbsOzPAyllD8MeY0eynuDqtGtT4RtC8uRgmgw7MW1HtYnTSlYt0up66LT19LCRKme8CVtggqjwLTUEKWmrdbe+PSvczKjeszOD0R5qGasSvOOKMJ5jLMnJ9jMhHhItc53eM5AAAAIBXWdudBBziVVk9VE+z1kvOYsCGYosLglqzJMsFfVQh948Ci9PowKx8xognWEtdaZW7+2oEIwL8QR+zPtzNY447i6iRuJy1TaDZfJU8nTfr07KoXB4B7rhADByXl4x9Uk25m9n9XjF/ctjIzyspvcRpqZXMHBUuZalID6E39YJqnA==
-git.linaro.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC8Q8j887I9mBD2va9C7gWl4Cr8agHWxuFHfDUWaqiygI9jA4w2YC7mo5oJMqwUk2DsvPDLuU5Z6yyKSA7Cko+L0MnKfNMzQ8e00ZXGDBq8bh1tRKstFselAFmmg+5DhM9q9HPjpKYzbAxU6rxmdFbSc+ktE0rhtmciThVT3YW3bMs3g+D+6sf6ER9UkSpbdZ7skKFXBHw2t1BWaPrvW4L8GMFAokgXUKOE8e1WZkQuCcseIz8J9Hz1p/liyiiTPVQnjGyleUnUY0pZA3ViB6pS317BH5Kvd8aX8x0vSwCIs30rpkmBam9C0b2uj2jWk3GrmHYjVHebMAW376VSLTZV
-git-us.linaro.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBONeIVl09BaG0iDOqF/qZjDun8fktYdD0Zl2fRAkSGT6Q7ULAXWJZA7IwstvcSs5w9SRV6x/lNc3CqlHwMFaABc=
-git-us.linaro.org ssh-dss AAAAB3NzaC1kc3MAAACBAJbwbYgvbS+8vnlhJLe1AwgvbBqu0kBw7pBjQgF47lXRKqZbzwQc+hHmMbczJOfIoo1PX39Ifhz142u+yN7PQgUlU+jzI2Q9cjSqfrS02rV0cU2TQRKvgTQH89qMk2M0jOimcz1UCZkCgS2wj6hb1HU9pkhzpH7d+1/M/31Xc5uPAAAAFQC82/+3qHmNd8G8mrPJz9LfdUpsmwAAAIASypGV3LlIOE3bDlZwgr3rZ+44MPq7c16SbpjnjqbsOzPAyllD8MeY0eynuDqtGtT4RtC8uRgmgw7MW1HtYnTSlYt0up66LT19LCRKme8CVtggqjwLTUEKWmrdbe+PSvczKjeszOD0R5qGasSvOOKMJ5jLMnJ9jMhHhItc53eM5AAAAIBXWdudBBziVVk9VE+z1kvOYsCGYosLglqzJMsFfVQh948Ci9PowKx8xognWEtdaZW7+2oEIwL8QR+zPtzNY447i6iRuJy1TaDZfJU8nTfr07KoXB4B7rhADByXl4x9Uk25m9n9XjF/ctjIzyspvcRpqZXMHBUuZalID6E39YJqnA==
-git-us.linaro.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC8Q8j887I9mBD2va9C7gWl4Cr8agHWxuFHfDUWaqiygI9jA4w2YC7mo5oJMqwUk2DsvPDLuU5Z6yyKSA7Cko+L0MnKfNMzQ8e00ZXGDBq8bh1tRKstFselAFmmg+5DhM9q9HPjpKYzbAxU6rxmdFbSc+ktE0rhtmciThVT3YW3bMs3g+D+6sf6ER9UkSpbdZ7skKFXBHw2t1BWaPrvW4L8GMFAokgXUKOE8e1WZkQuCcseIz8J9Hz1p/liyiiTPVQnjGyleUnUY0pZA3ViB6pS317BH5Kvd8aX8x0vSwCIs30rpkmBam9C0b2uj2jWk3GrmHYjVHebMAW376VSLTZV
-lab.validation.linaro.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFZDLd4f9cph9A64+kXUpGvuRmInB3HAtHU9T6wVIsp4HkYLLZD59I4lF/u2VLfM7j10XMNPO7ybOJMM+1zIZlM=
-lab.validation.linaro.org ssh-dss AAAAB3NzaC1kc3MAAACBAK75t/OG68cN0mtVNrliCi8/7tajozJQDGvxgnpben1F84IzWNJpBdtEgaXeo3zD0cQl1nM5IftBjSKMkomdsaDh7u6A57juaANU9NKIXW2BGmaICZxllFAb/Cmnq4mDnZJ33G5UyGPVA49bUEKw8DLe8FLVlO/wcghJhjoy7prZAAAAFQD8zrwLDwd4M4vKKWu9nju7fI3oywAAAIBVE6ykor/q56qYTYqaAvcRkq7331jdYHTqiAVcO9KyrdOS7yCgtb2Dw+O0rq5ftLSF73ad5ACbw+XbzQVJAeKDaDs5mLf3eYF0+3YODFRHYDsbbihO0uZcGHFPvGDD9odBZhWFIZaFSdboodSuyzxIgLu0EZAsHoSP2wjTGdiXFwAAAIAkPcANYxo0jm8BuCEYR+SXXS4aj83dUGbPP54UU7M+jrrfG1M+JVFh3kEsXr9zptZajY+NrqlnXqPp4HZyORUUEN+Szkjbd2p8CCCQvv1PODGJtXFzwpatUP27I2ik/lZG9OXxBQkO+QxjuJ+pcjXPdBRz6DwWoUM63+QFXBLpsw==
-lab.validation.linaro.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDtto5bsPJ3NuXsWtwMR8bsAzLvkBstmF1QP+eC6jUBsCDHMtBW/zAWJYNPDr30vRkV7J8D64Pd91rgjbqF8mOPDlyVlln03dYtOV3hzVuXLZfxodslJsw4lB+ZhxLfcZAKqqFURJEhrJNJmtFBprxFRbdS1iQHJHJohg3zS9zlLFvUpZGWooLFEM2z2NdUfSiR12ePvdW1YsEimJR/b3h1it/Wot0uEB6VONZGyMrrWvsntJV1NdQFxJR8waTz1sBvQQBJGX+SgEXY1CB3AUiF4yIy5WZ/4YCOk0kO9qABvV0Ks357OU5uY5GMgalAy2RJyvceNf6erlR4vwmpdnDH
-people.linaro.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKKtlH9IGVw1wE3daicRzyOdIM9MzWfUH1tUB8R/md36RDTSqG8VGYrn1E5pJcs7rsk05ZCUQIaglefMytoOvQ8=
-people.linaro.org ssh-dss AAAAB3NzaC1kc3MAAACBAOnQwFbvISNteLPMb/Srm2xwFDrxDql+kxtlZyohrSZ72K9GDg+dqb4W7/QiVrOMhfRzaL93Hj/FLCxKqUXdnTQqekqGosRQK7fLNJvh6DNizoJ+aWzKp1EL3kF2GgKP33ZPtRJYrBdxnc+DDc0yP/He3cyrzbg1nsWSedc1MMVpAAAAFQCm3xIrM1iR9ozuyjKRGwhnrKo9GQAAAIBkdN4dNB298m+2aXqMmLOj1Ry9/S6CTiMn5c9T/luYpWFRnsyuHlBIcZFjyOMtU3bc8b7KwqP8t3XTQbolbqtYOWqPeiaIH/VAk7w9o1tePRwtbTadksYw+UJGtn9c+52uQfGZdjfyjsKs7hEWgE72gTeIb9g1QZ+WCoVfSzNacgAAAIA9T2ONJcRFX3heeDcl6gho8Wj264GDhS5/iqdMCClO3wKUY04hPSpXKRhRm/zzFGb9537Qj6LluDAcg+m/D0FnoQkILLXnfiMnrlyoCCA/jZWrVZw8aQdDHM5LlDdDZKZV7djkbjF0nVvWRTrvc20yQeDLLImaTDOfYjmJ75L1vQ==
-people.linaro.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC8OveP3mffvlzMEGuZQzol8zoDwCdAzrNiBfX9rv6lDGr86Sl4MVKs/6cYdjbtrUJD7ls5gc8cfjH5EXPh/HuoBj7Bi+UNfyyGSqrZgTFPpyLx50QJDeogcUN54NL+N/X6HtQtyvGwEXgb26S9ec7LFfyxqT8Yy370XH/y7qAtJgS3UTkf8kzIWgZQvU5MU3FqhOn9mzI+KqsBMRKt0JpW7H2VRYiaHqpshwpuNHRDEQBMnRVHDpo8SZRq21pwRjdTzuzGJv2enCW018jWC/HMmTaaDWzX6SO+JQs9NFVUpM6hg+ysa5piDXnCNQ8Ry6l0nlAjgUt92NEe4OeANrt9
-[review.linaro.org]:29418 ssh-dss AAAAB3NzaC1kc3MAAACBAPB0SE19HQ0dEtm3Unp7+JiNeHlIWNs4j9yN+2Q/fxmBT2ZZ0a5I4gg63b5rM/1Li/6k0f/CtSYBH/mhmjKaEKIQV/c/lmuZivUAfTPT0ld3voXHwRhgpWI/WOiRdsTRZZW2yUHx/troO53mx4eIISKfab+t+vCU5Af+sgTBF6InAAAAFQDGR2ccfQSWVuSyzgvK8f7FT8olTQAAAIBHZqySRfjEnnx9h0aS6i2H21dmZxUllwIJpdpS6XWzvMzVwBb1DKx8bO0WwZeTnxxs1BKVAjmSDkDGYJWHxyU8kQ8aFsBo0KwbNEKXozaK3Gf2YF289xQsigbtPUWYXDz1PNEXtIS9AXdCRq4i09ujO3ayxq4lX2n0LIQ4IhM+RgAAAIB2SvnzVadjW14AN9F9ZEfnK0JRpBTKjz+kQSS1TJiRI/dSHG6CwwXjD1G9YW8mfGhPOPYHIE2MF2n7d7DfqBdeeee0PnwBQ0YBc5qfhQ9Gpi+hqXSem1YaD2YRG40que5bu/Rd6NksnSLg/93Z3L3fN+qTeApRqHQWRrfswGgi+A==
-[review.linaro.org]:29418 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMfTLkTmsbtahAiVJTKXRFbR9MQ/vDH/JPj4QN3XPHJuubxLhUf8WObEBtML7J11uvVM1oDTwM5YG5yjyBnc+85OaQaB9tMPDheGhfMG40F4vxdSnQL29ihyrls0hrFTY9UZ4Y2FmJwYL0rOnGU7iPyNuExQwfg2bkdw67aH9nEGjSd2eXYl2bI4DHujy5GJiV3dR9TlUF0iaSeHVSIX5t9I/BXK+AiSqHTrvwdGGi9XvL6xEWYMOZOpJnCH8Q4OSibsFfQXnCMgIFeO7J/ZMGXqltXOtztgQMr8VvRRD3S+Lcp8yKb5aUjWwoCxb4YzEUbQE04SRVeAGjsfNJcXgT
-review.linaro.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBONeIVl09BaG0iDOqF/qZjDun8fktYdD0Zl2fRAkSGT6Q7ULAXWJZA7IwstvcSs5w9SRV6x/lNc3CqlHwMFaABc=
-review.linaro.org ssh-dss AAAAB3NzaC1kc3MAAACBAJbwbYgvbS+8vnlhJLe1AwgvbBqu0kBw7pBjQgF47lXRKqZbzwQc+hHmMbczJOfIoo1PX39Ifhz142u+yN7PQgUlU+jzI2Q9cjSqfrS02rV0cU2TQRKvgTQH89qMk2M0jOimcz1UCZkCgS2wj6hb1HU9pkhzpH7d+1/M/31Xc5uPAAAAFQC82/+3qHmNd8G8mrPJz9LfdUpsmwAAAIASypGV3LlIOE3bDlZwgr3rZ+44MPq7c16SbpjnjqbsOzPAyllD8MeY0eynuDqtGtT4RtC8uRgmgw7MW1HtYnTSlYt0up66LT19LCRKme8CVtggqjwLTUEKWmrdbe+PSvczKjeszOD0R5qGasSvOOKMJ5jLMnJ9jMhHhItc53eM5AAAAIBXWdudBBziVVk9VE+z1kvOYsCGYosLglqzJMsFfVQh948Ci9PowKx8xognWEtdaZW7+2oEIwL8QR+zPtzNY447i6iRuJy1TaDZfJU8nTfr07KoXB4B7rhADByXl4x9Uk25m9n9XjF/ctjIzyspvcRpqZXMHBUuZalID6E39YJqnA==
-review.linaro.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC8Q8j887I9mBD2va9C7gWl4Cr8agHWxuFHfDUWaqiygI9jA4w2YC7mo5oJMqwUk2DsvPDLuU5Z6yyKSA7Cko+L0MnKfNMzQ8e00ZXGDBq8bh1tRKstFselAFmmg+5DhM9q9HPjpKYzbAxU6rxmdFbSc+ktE0rhtmciThVT3YW3bMs3g+D+6sf6ER9UkSpbdZ7skKFXBHw2t1BWaPrvW4L8GMFAokgXUKOE8e1WZkQuCcseIz8J9Hz1p/liyiiTPVQnjGyleUnUY0pZA3ViB6pS317BH5Kvd8aX8x0vSwCIs30rpkmBam9C0b2uj2jWk3GrmHYjVHebMAW376VSLTZV
diff --git a/tcwg-base/tcwg-dev/Dockerfile.in b/tcwg-base/tcwg-dev/Dockerfile.in
index ecc23f29..4aed65d8 100644
--- a/tcwg-base/tcwg-dev/Dockerfile.in
+++ b/tcwg-base/tcwg-dev/Dockerfile.in
@@ -1,17 +1,5 @@
FROM linaro/ci-#{ARCH}-tcwg-base-ubuntu:#{DISTRO}
-COPY run.sh .
-COPY start.sh .
-
-RUN apt-get update \
- && DEBIAN_FRONTEND=noninteractive apt-get install -y \
- software-properties-common \
- && apt-get clean \
- && rm -rf \
- /var/lib/apt/lists/* \
- /tmp/* \
- /var/tmp/*
-
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y \
apt-file \
@@ -26,29 +14,26 @@ RUN apt-get update \
#endif
less \
locales \
- libgmp-dev \
- libmpc-dev \
- libmpfr-dev \
mc \
screen \
+ software-properties-common \
stgit \
tmux \
- unifdef \
&& apt-get clean \
&& rm -rf \
/var/lib/apt/lists/* \
/tmp/* \
/var/tmp/*
-RUN sed -i -e '/.*AuthorizedKeysFile/ d' /etc/ssh/sshd_config \
- && echo "AuthorizedKeysFile %h/.ssh/authorized_keys.docker" >> /etc/ssh/sshd_config \
- && locale-gen en_US.UTF-8 && update-locale LANG=en_US.UTF-8 \
+RUN locale-gen en_US.UTF-8 && update-locale LANG=en_US.UTF-8 \
&& apt-file update
# Create directories required for X11.
RUN mkdir -p /tmp/.X11-unix /tmp/.ICE-unix \
&& chmod 1777 /tmp/.X11-unix /tmp/.ICE-unix
+COPY run.sh start.sh /
+
#if ARCH_amd64 || ARCH_arm64
ENTRYPOINT ["/run.sh"]
#else
diff --git a/tcwg-base/tcwg-dev/run.sh b/tcwg-base/tcwg-dev/run.sh
index 8029a32f..a0c9ce6b 100755
--- a/tcwg-base/tcwg-dev/run.sh
+++ b/tcwg-base/tcwg-dev/run.sh
@@ -7,29 +7,6 @@ if [ x"$1" = x"start.sh" ]; then
exit 0
fi
-if ! [ -f /etc/sudoers.d/user ]; then
- passwd_ent="$1"
- groupname="$2"
- pubkey="$3"
-
- username="$(echo $passwd_ent | cut -d: -f 1)"
- uid="$(echo $passwd_ent | cut -d: -f 3)"
- gid="$(echo $passwd_ent | cut -d: -f 4)"
- comment="$(echo $passwd_ent | cut -d: -f 5)"
- home="$(echo $passwd_ent | cut -d: -f 6)"
- shell="$(echo $passwd_ent | cut -d: -f 7)"
-
- groupadd -g "$gid" "$groupname"
- useradd -m -u "$uid" -g "$groupname" -G kvm -c "$comment" -s "$shell" "$username"
-
- if ! [ -f /home/$username/.ssh/authorized_keys.docker ] \
- && [ x"$pubkey" != x"" ]; then
- sudo -u $username mkdir -p /home/$username/.ssh/
- echo "$pubkey" | sudo -u $username tee /home/$username/.ssh/authorized_keys.docker > /dev/null
- fi
-
- echo "$username ALL = NOPASSWD: ALL" > /etc/sudoers.d/user
- chmod 440 /etc/sudoers.d/user
-fi
+new-user.sh --update true "$@"
exec /usr/sbin/sshd -D
diff --git a/tcwg-base/tcwg-dev/start.sh b/tcwg-base/tcwg-dev/start.sh
index b06c8bba..c22f008f 100755
--- a/tcwg-base/tcwg-dev/start.sh
+++ b/tcwg-base/tcwg-dev/start.sh
@@ -5,21 +5,15 @@ set -e
usage ()
{
cat <<EOF
-$0 [OPTIONS] -- IMAGE
+$0 [OPTIONS] -- IMAGE [NEW_USER_PARAMS]
Options:
- --getent DATA
- User data from "getent passwd"
-
- --group NAME
- Primary group name
+ --home volume/bind
+ How to mount /home; default is volume home-$user
--name CONTAINER_NAME
Name of the container
- --pubkey KEY
- SSH public key to install inside container
-
--user USER
Username to create inside the container
@@ -29,19 +23,15 @@ EOF
exit 1
}
-getent="default"
-group="default"
+home="volume"
name="default"
-pubkey="ldap"
user="$USER"
verbose=false
while [ $# -gt 0 ]; do
case $1 in
- --getent) getent="$2"; shift ;;
- --group) group="$2"; shift ;;
+ --home) home="$2"; shift ;;
--name) name="$2"; shift ;;
- --pubkey) pubkey="$2"; shift ;;
--user) user="$2"; shift ;;
--verbose) verbose="$2"; shift ;;
--) shift; break ;;
@@ -51,6 +41,7 @@ while [ $# -gt 0 ]; do
done
image="$1"
+shift
if $verbose; then
set -x
@@ -78,47 +69,55 @@ if [ x"$name" = x"default" ]; then
fi
mounts=""
-if [ -d "/home/$user" ]; then
- # Bind-mount $HOME
- mounts="$mounts -v /home/$user:/home/$user"
-else
- # Create/re-use docker volume and mount it as user's home
- mounts="$mounts -v home-$user:/home"
+
+docker_host=false
+if [ -f "/.dockerenv" ] && mount | grep -q "/run/docker.sock "; then
+ docker_host=true
fi
-if [ -d "/home/tcwg-buildslave" ]; then
+home_top="/home"
+if $docker_host; then
+ # If inside "host" container (with proxied docker and /home from host-home
+ # volume), convert paths to refer to volume's path on bare-metal.
+ home_top=/var/lib/docker/volumes/host-home/_data
+fi
+
+if $docker_host || [ -d "$home_top/tcwg-buildslave" ]; then
# Bind-mount /home/tcwg-buildslave read-only to get access to
# /home/tcwg-buildslave/snapshots-ref/
- mounts="$mounts -v /home/tcwg-buildslave:/home/tcwg-buildslave:ro"
+ mounts="$mounts -v $home_top/tcwg-buildslave:/home/tcwg-buildslave:ro"
fi
+case "$home" in
+ bind)
+ # Bind-mount $HOME
+ mounts="$mounts -v $home_top/$user:/home/$user"
+ ;;
+ volume)
+ # Create/re-use docker volume and mount it as user's home
+ mounts="$mounts -v home-$user:/home"
+ ;;
+esac
+
# Use at most half of all available RAM.
-memlimit=$(($(free -g | awk '/^Mem/ { print $2 }') / 2))G
+memlimit=$(free -m | awk '/^Mem/ { print $2 }')
+memlimit=$(($memlimit / 2))m
+
# IPC_LOCK is required for some implementations of ssh-agent (e.g., MATE's).
# SYS_PTRACE is required for debugger work.
-caps="--cap-add=IPC_LOCK --cap-add=SYS_PTRACE"
-
-if [ x"$getent" = x"default" ]; then
- getent=$(getent passwd $user)
-fi
-
-if [ x"$group" = x"default" ]; then
- group=$(id -gn $user)
-fi
-
-if [ x"$pubkey" = x"ldap" ]; then
- # Fetch ssh public key from LDAP.
- pubkey=$(/etc/ssh/ssh_keys.py $user 2>/dev/null || sss_ssh_authorizedkeys $user 2>/dev/null)
-fi
+# seccomp=unconfined to allow disabling of ASLR for sanitizer regression tests.
+caps="--cap-add=IPC_LOCK --cap-add=SYS_PTRACE --security-opt seccomp:unconfined"
-$DOCKER run --name=$name -dt -p 22 $mounts --memory=$memlimit --pids-limit=5000 $caps $image "$getent" "$group" "$pubkey"
+$DOCKER run --name=$name --hostname=$(hostname)-dev --restart=unless-stopped -dt -p 22 $mounts --memory=$memlimit --pids-limit=5000 $caps $image --user $user "$@"
port=$($DOCKER port $name 22 | cut -d: -f 2)
+hostname=$(echo ${SSH_CONNECTION} | { read client_ip client_port server_ip server_port; echo $server_ip; })
set +x
cat <<EOF
NOTE: the warning about kernel not supporting swap memory limit is expected
-To connect to container run "ssh -p $port localhost"
+To connect to the container run "ssh -p $port $user@$hostname" from your local
+machine.
To stop container run "docker stop $name"
To restart container run "docker start $name"
To remove container run "docker rm -fv $name"
diff --git a/tcwg-base/tcwg-dev/tcwg-x2go/Dockerfile.in b/tcwg-base/tcwg-dev/tcwg-x2go/Dockerfile.in
index 888e48b8..35853ad5 100644
--- a/tcwg-base/tcwg-dev/tcwg-x2go/Dockerfile.in
+++ b/tcwg-base/tcwg-dev/tcwg-x2go/Dockerfile.in
@@ -11,13 +11,10 @@ RUN apt-get update \
/tmp/* \
/var/tmp/*
-RUN add-apt-repository ppa:x2go/stable \
- && apt-get update \
+RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y \
duplicity \
mate-desktop-environment \
- x2godesktopsharing \
- x2gomatebindings \
x2goserver \
x2goserver-xsession \
&& apt-get clean \
diff --git a/tcwg-base/tcwg-host/Dockerfile.in b/tcwg-base/tcwg-host/Dockerfile.in
new file mode 100644
index 00000000..cb6e235e
--- /dev/null
+++ b/tcwg-base/tcwg-host/Dockerfile.in
@@ -0,0 +1,13 @@
+FROM linaro/ci-#{ARCH}-tcwg-base-ubuntu:#{DISTRO}
+
+COPY docker-wrapper /usr/local/bin/docker
+COPY docker-stats /usr/local/bin/
+
+COPY run.sh start.sh /
+
+#if ARCH_amd64 || ARCH_arm64
+ENTRYPOINT ["/run.sh"]
+#else
+ENTRYPOINT ["linux32", "/run.sh"]
+#endif
+CMD ["start.sh"]
diff --git a/tcwg-base/tcwg-host/build.sh b/tcwg-base/tcwg-host/build.sh
new file mode 100755
index 00000000..6205035d
--- /dev/null
+++ b/tcwg-base/tcwg-host/build.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+set -e
+
+trap cleanup_exit INT TERM EXIT
+
+cleanup_exit()
+{
+ rm -rf docker-stats docker-wrapper run.sh start.sh
+}
+
+export LANG=C
+distro=$(basename ${PWD} | cut -f1 -d '-')
+arch=$(basename ${PWD} | cut -f2 -d '-')
+name=$(basename ${PWD} | cut -f3- -d '-')
+image=linaro/ci-${arch}-${name}-ubuntu:${distro}
+top=$(git rev-parse --show-toplevel)
+
+cp $top/tcwg-base/tcwg-host/docker-stats \
+ $top/tcwg-base/tcwg-host/docker-wrapper \
+ $top/tcwg-base/tcwg-host/run.sh \
+ $top/tcwg-base/tcwg-host/start.sh ./
+
+(cd ..; ./build.sh)
+"$top"/tcwg-base/validate-dockerfile.sh Dockerfile
+docker pull $image 2>/dev/null || true
+docker build --tag=$image .
+echo $image > .docker-tag
diff --git a/tcwg-base/tcwg-host/docker-stats b/tcwg-base/tcwg-host/docker-stats
new file mode 100755
index 00000000..e981aa5a
--- /dev/null
+++ b/tcwg-base/tcwg-host/docker-stats
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+exec watch docker stats --no-stream --format "\"table {{.Name}}\\t{{.CPUPerc}}\\t{{.PIDs}}\\t{{.MemPerc}}\\t{{.MemUsage}}\""
diff --git a/tcwg-base/tcwg-host/docker-wrapper b/tcwg-base/tcwg-host/docker-wrapper
new file mode 100755
index 00000000..2cfea5c9
--- /dev/null
+++ b/tcwg-base/tcwg-host/docker-wrapper
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec sudo /usr/bin/docker "$@"
diff --git a/tcwg-base/tcwg-host/gerrit-branches b/tcwg-base/tcwg-host/gerrit-branches
new file mode 120000
index 00000000..11f6d349
--- /dev/null
+++ b/tcwg-base/tcwg-host/gerrit-branches
@@ -0,0 +1 @@
+../gerrit-branches \ No newline at end of file
diff --git a/tcwg-base/tcwg-host/run.sh b/tcwg-base/tcwg-host/run.sh
new file mode 100755
index 00000000..55a0b1b0
--- /dev/null
+++ b/tcwg-base/tcwg-host/run.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+set -e
+
+if [ x"$1" = x"start.sh" ]; then
+ cat /start.sh
+ exit 0
+fi
+
+group="$1"
+task="$2"
+
+if [ x"$group" = x"all" ]; then
+ group=".*"
+fi
+
+while read line; do
+ user=$(echo "$line" | cut -d: -f 1)
+ if grep "^$group:x:" /home-data/group | cut -d: -f 4 | grep -q "$user,\?"; then
+ new-user.sh --update true --passwd "$line" &
+ res=0; wait $! || res=$?
+ if [ x"$res" = x"0" ]; then
+ echo "WARNING: User configuration failed: $line"
+ fi
+ fi
+done </home-data/passwd
+
+port="2222"
+if [ x"$task" = x"jenkins" ]; then
+ port="2022"
+fi
+
+sed -i -e "/.*Port.*/d" /etc/ssh/sshd_config
+echo "Port $port" >> /etc/ssh/sshd_config
+
+exec /usr/sbin/sshd -D
diff --git a/tcwg-base/tcwg-host/start.sh b/tcwg-base/tcwg-host/start.sh
new file mode 100755
index 00000000..9a865db7
--- /dev/null
+++ b/tcwg-base/tcwg-host/start.sh
@@ -0,0 +1,82 @@
+#!/bin/bash
+
+set -e
+
+usage ()
+{
+ cat <<EOF
+$0 [OPTIONS] -- IMAGE GROUP
+
+Options:
+ --task host/jenkins
+ Task to serve: "host" is for all users, "jenkins" is for tcwg-infra
+
+ --verbose true/false
+ Whether to run in verbose mode
+EOF
+ exit 1
+}
+
+task="host"
+verbose=false
+
+while [ $# -gt 0 ]; do
+ case $1 in
+ --task) task="$2"; shift ;;
+ --verbose) verbose="$2"; shift ;;
+ --) shift; break ;;
+ *) echo "ERROR: Wrong option: $1"; usage ;;
+ esac
+ shift
+done
+
+image="$1"
+shift
+
+if $verbose; then
+ set -x
+fi
+
+if [ x"$image" = x"" ]; then
+ echo "ERROR: image name not provided"
+ usage
+fi
+
+if groups tcwg-buildslave 2>/dev/null | grep -q docker; then
+ # If tcwg-buildslave user is present, use it to start the container
+ # to have [sudo] log record of container startups.
+ DOCKER="sudo -u tcwg-buildslave docker"
+elif [ x"$(id -u)" = x"0" ] || groups 2>/dev/null | grep -q docker; then
+ # Run docker straight up if $USER is root or in "docker" group.
+ DOCKER="docker"
+else
+ # Fallback to sudo otherwise.
+ DOCKER="sudo docker"
+fi
+
+group="$1"
+case "$task" in
+ host)
+ ;;
+ jenkins)
+ if [ x"$group" != x"tcwg-infra" ]; then
+ echo "ERROR: group for task $task should be tcwg-infra"
+ exit 1
+ fi
+ ;;
+ *)
+ echo "ERROR: wrong task $task"
+ exit 1
+ ;;
+esac
+
+mounts=""
+mounts="$mounts -v host-home:/home"
+mounts="$mounts -v /var/run/docker.sock:/var/run/docker.sock"
+mounts="$mounts -v /usr/bin/docker:/usr/bin/docker"
+
+# Use at most half of all available RAM.
+memlimit=$(free -m | awk '/^Mem/ { print $2 }')
+memlimit=$(($memlimit / 2))m
+
+$DOCKER run -dt --name=$task --network host --restart=unless-stopped $mounts --memory=$memlimit --pids-limit=5000 $image "$group" "$task"
diff --git a/tcwg-base/tcwg-llvmbot/Dockerfile.in b/tcwg-base/tcwg-llvmbot/Dockerfile.in
index 24233ed9..5771509b 100644
--- a/tcwg-base/tcwg-llvmbot/Dockerfile.in
+++ b/tcwg-base/tcwg-llvmbot/Dockerfile.in
@@ -1,8 +1,12 @@
FROM linaro/ci-#{ARCH}-tcwg-base-ubuntu:#{DISTRO}
RUN apt-get update \
+ && DEBIAN_FRONTEND=noninteractive apt-get install -y software-properties-common \
+ && DEBIAN_FRONTEND=noninteractive add-apt-repository -y ppa:ubuntu-toolchain-r/test \
+ && apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y \
buildbot \
+ g++-7 \
&& apt-get clean \
&& rm -rf \
/var/lib/apt/lists/* \
@@ -21,14 +25,6 @@ RUN cd ./llvm-config-buildslave/ \
/var/tmp/* \
&& sudo -i -u buildslave mkdir /home/buildslave/buildslave
-# Add ninja with support for memory-threshold job limitation.
-RUN git clone -b master https://github.com/maxim-kuvyrkov/ninja.git \
- && cd ninja \
- && ./configure.py --bootstrap && ./ninja all && ./ninja_test \
- && mv ninja /usr/local/bin/ninja.bin \
- && cd .. \
- && rm -rf ninja
-
# Add current clang for libcxx bots.
RUN \
#if ARCH_arm64
diff --git a/tcwg-base/tcwg-llvmbot/gerrit-branches b/tcwg-base/tcwg-llvmbot/gerrit-branches
index fb49cdf8..dd2dd2e9 100644
--- a/tcwg-base/tcwg-llvmbot/gerrit-branches
+++ b/tcwg-base/tcwg-llvmbot/gerrit-branches
@@ -1,3 +1,4 @@
master
+tcwg-tested
tcwg-staging
tcwg-llvmprod
diff --git a/tcwg-base/tcwg-llvmbot/run.sh b/tcwg-base/tcwg-llvmbot/run.sh
index 3aa5cb2a..04bd6450 100755
--- a/tcwg-base/tcwg-llvmbot/run.sh
+++ b/tcwg-base/tcwg-llvmbot/run.sh
@@ -4,12 +4,58 @@ set -e
bare_metal_bot_p ()
{
+ if [ -f "/.dockerenv" ]; then
+ return 1
+ fi
+ return 0
+}
+
+use_clang_p ()
+{
+ # The LLD buildbot needs clang for -fuse-ld=lld in stage 2
+ # The libcxx bot needs a recent clang to compile tests that
+ # require new C++ standard support.
+ # Typically we've used clang when the default gcc has problems
+ # otherwise gcc is used.
case "$1" in
- "linaro-tk1-"*) return 0 ;;
- "linaro-apm-02"|"linaro-apm-05") return 1 ;;
- "linaro-apm-"*) return 0 ;;
- *) return 1 ;;
+ *-libcxx*|linaro-tk1-01) return 0 ;;
+ *-lld) return 0 ;;
+ *-arm-quick|linaro-tk1-06) return 0 ;;
+ *-arm-full-selfhost|linaro-tk1-05) return 0 ;;
+ *-arm-full|linaro-tk1-08) return 0 ;;
+ *-arm-global-isel|linaro-tk1-09) return 0 ;;
+ *) return 1 ;;
+ esac
+}
+
+# Use the oldest maintained clang release (latest - 1).
+setup_clang_release()
+{
+ local bot_name="$1"
+
+ # There is a 6.0.1 release but there aren't any AArch64 binaries available
+ # so we use 6.0.0 for now.
+ local release_num=6.0.0
+ case "$(uname -m)" in
+ aarch64)
+ local clang_ver=clang+llvm-${release_num}-aarch64-linux-gnu
+ ;;
+ *)
+ local clang_ver=clang+llvm-${release_num}-armv7a-linux-gnueabihf
+ ;;
esac
+
+ # Download and install clang+llvm into /usr/local
+ # Docker bots already have clang+llvm downloaded and installed in the image.
+ if bare_metal_bot_p $bot_name; then
+ (
+ cd /usr/local
+ wget -c --progress=dot:giga http://releases.llvm.org/${release_num}/$clang_ver.tar.xz
+ tar xf $clang_ver.tar.xz
+ )
+ fi
+ cc=/usr/local/$clang_ver/bin/clang
+ cxx=/usr/local/$clang_ver/bin/clang++
}
if [ x"$1" = x"start.sh" ]; then
@@ -23,62 +69,13 @@ if ! [ -f ~buildslave/buildslave/buildbot.tac ]; then
sudo -i -u buildslave buildslave create-slave --umask=022 ~buildslave/buildslave "$@"
fi
-case "$(uname -m)" in
- aarch64)
- clang_ver=clang+llvm-6.0.0-aarch64-linux-gnu
- ;;
- *)
- clang_ver=clang+llvm-6.0.0-armv7a-linux-gnueabihf
- ;;
-esac
-
-if bare_metal_bot_p "$2"; then
- # Download and install clang+llvm into /usr/local for bare-metal
- # bots.
- (
- cd /usr/local
- wget -c --progress=dot:giga http://releases.llvm.org/6.0.0/$clang_ver.tar.xz
- tar xf $clang_ver.tar.xz
- )
+if use_clang_p $2 ; then
+ setup_clang_release $2
+else
+ cc=gcc-7
+ cxx=g++-7
fi
-case "$2" in
- *-libcxx*|linaro-tk1-01|linaro-apm-03)
- # Libcxx bots need to be compiled with *recent* clang.
- cc=/usr/local/$clang_ver/bin/clang
- cxx=/usr/local/$clang_ver/bin/clang++
- ;;
- *-lld|linaro-apm-04)
- # LLD bots need to be compiled with clang.
- # ??? Adding testStage1=False to LLD bot might enable it to not depend on clang.
- cc=/usr/bin/clang
- cxx=/usr/bin/clang++
- ;;
- *-arm-quick|linaro-tk1-06)
- cc=/usr/bin/clang
- cxx=/usr/bin/clang++
- ;;
- *-arm-full-selfhost|linaro-tk1-05)
- # ??? *-arm-full-selfhost bot doesn't look like it depends on clang.
- cc=/usr/bin/clang
- cxx=/usr/bin/clang++
- ;;
- *-arm-full|linaro-tk1-08)
- # ??? For now we preserve host compiler configuration from non-docker bots.
- cc=/usr/bin/clang
- cxx=/usr/bin/clang++
- ;;
- *-arm-global-isel|linaro-tk1-09)
- # ??? For now we preserve host compiler configuration from non-docker bots.
- cc=/usr/bin/clang
- cxx=/usr/bin/clang++
- ;;
- *)
- cc=gcc
- cxx=g++
- ;;
-esac
-
# With default PATH /usr/local/bin/cc and /usr/local/bin/c++ are detected as
# system compilers. No danger in ccaching results of system compiler since
# we always start with a clean cache in a new container.
@@ -94,8 +91,9 @@ EOF
chmod +x /usr/local/bin/c++
case "$2" in
- *-lld|linaro-apm-04)
- # LLD buildbot needs to find ld.lld for stage1 build.
+ *-lld)
+ # LLD buildbot needs to find ld.lld for stage1 build. GCC does not
+ # support -fuse-ld=lld.
ln -f -s /usr/bin/ld.bfd /usr/local/bin/ld.lld
;;
*)
@@ -109,8 +107,8 @@ EOF
n_cores=$(nproc --all)
case "$2" in
- linaro-apm-*) hw="APM Mustang ${n_cores}-core X-Gene" ;;
linaro-armv8-*) hw="${n_cores}-core ARMv8 provided by Packet.net (Type 2A2)" ;;
+ linaro-thx1-*) hw="${n_cores}-core ThunderX1 provided by Packet.net (Type 2A)" ;;
linaro-tk1-*) hw="NVIDIA TK1 ${n_cores}-core Cortex-A15" ;;
esac
@@ -129,24 +127,39 @@ Linker: $(ld --version | head -n 1)
C Library: $(ldd --version | head -n 1)
EOF
-if bare_metal_bot_p "$2"; then
- # TK1s have CPU hot-plug, so ninja might detect smaller number of cores
- # available for parallelism. Explicitly set "default" parallelism.
- cat > /usr/local/bin/ninja <<EOF
+case "$2" in
+ linaro-tk1-*)
+ # TK1s have CPU hot-plug, so ninja might detect smaller number of cores
+ # available for parallelism. Explicitly set "default" parallelism.
+ cat > /usr/local/bin/ninja <<EOF
#!/bin/sh
exec /usr/bin/ninja -j$n_cores "\$@"
EOF
-else
- # Throttle ninja on system load, system memory and container memory limit.
- # When running with "-l 2*N_CORES -m 50 -M 50" ninja will not start new jobs
- # if system or container memory utilization is beyond 50% or when load is
- # above double the core count. Ninja will also stall up to 5 seconds (-D 5000)
- # before starting a new job to avoid rapid increase of resource usage.
- cat > /usr/local/bin/ninja <<EOF
+ ;;
+ *)
+ # Throttle ninja on system load, system memory and container memory
+ # limits.
+ case "$1" in
+ lab.llvm.org:9994)
+ # Run silent bots with single-threaded ninja when average load
+ # is beyond twice the number of cores.
+ avg_load_opt="-l $((2*$n_cores))"
+ ;;
+ *)
+ avg_load_opt=""
+ ;;
+ esac
+ # Make ninja run single-threaded if system or container memory
+ # utilization is beyond 50% (-m 50 -M 50).
+ # Make ninja stall for up to 5 seconds (-D 5000) before starting
+ # a new job when usage decreases under threshold (to avoid rapid
+ # increase of resource usage from N_CORES-1 new processes).
+ cat > /usr/local/bin/ninja <<EOF
#!/bin/sh
-exec /usr/local/bin/ninja.bin -j$n_cores -l $((2*$n_cores)) -m 50 -M 50 -D 5000 "\$@"
+exec /usr/local/bin/ninja.bin -j$n_cores $avg_load_opt -m 50 -M 50 -D 5000 "\$@"
EOF
-fi
+ ;;
+esac
chmod +x /usr/local/bin/ninja
sudo -i -u buildslave buildslave restart ~buildslave/buildslave
diff --git a/tcwg-base/tcwg-llvmbot/start.sh b/tcwg-base/tcwg-llvmbot/start.sh
index 18e5fa50..f337f967 100755
--- a/tcwg-base/tcwg-llvmbot/start.sh
+++ b/tcwg-base/tcwg-llvmbot/start.sh
@@ -25,6 +25,37 @@ else
DOCKER="sudo docker"
fi
+case "$slavename" in
+ linaro-armv8-01-aarch64-full) ;;
+ linaro-armv8-01-aarch64-global-isel) ;;
+ linaro-armv8-01-aarch64-libcxx) ;;
+ linaro-armv8-01-aarch64-libcxx-noeh) ;;
+ linaro-armv8-01-aarch64-lld) ;;
+ linaro-armv8-01-aarch64-quick) ;;
+ linaro-armv8-01-arm-full) ;;
+ linaro-armv8-01-arm-full-selfhost) ;;
+ linaro-armv8-01-arm-global-isel) ;;
+ linaro-armv8-01-arm-libcxx) ;;
+ linaro-armv8-01-arm-libcxx-noeh) ;;
+ linaro-armv8-01-arm-lld) ;;
+ linaro-armv8-01-arm-lnt) ;;
+ linaro-armv8-01-arm-quick) ;;
+ linaro-armv8-01-arm-selfhost-neon) ;;
+ linaro-tk1-*) ;;
+ *)
+ echo "WARNING: Unknown slavename $slavename"
+esac
+
+case "$slavename:$image" in
+ *-aarch64-*:*-arm64-*) ;;
+ *-arm-*:*-armhf-*) ;;
+ linaro-tk1-*:*-armhf-*) ;;
+ *)
+ echo "ERROR: $slavename should not run on $image."
+ echo "Make sure you're running an AArch64 bot on an arm64 image or an ARM bot on an armhf image."
+ exit 1
+esac
+
case "$buildmaster" in
"normal")
mastername="normal"
@@ -39,21 +70,6 @@ case "$buildmaster" in
masterurl="$buildmaster"
esac
-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-*-arm-*:linaro-armv8-*:*-armhf-*) ;;
- normal:linaro-armv8-*-aarch64-*:linaro-armv8-*:*-arm64-*) ;;
- normal:*:r*-a*:*-arm64-*) ;;
- *)
- usage "ERROR: Wrong mastername:slavename:hostname:image combination: $mastername:$slavename:$(hostname):$image"
- ;;
-esac
-
# Set relative CPU weight of containers running silent bots to 1/20th of
# normal containers. We want to run a full set of silent bots for
# troubleshooting purposes, but don't want to waste a lot of CPU cycles.
@@ -62,17 +78,15 @@ case "$mastername" in
*) cpu_shares=1000 ;;
esac
+memlimit=$(free -m | awk '/^Mem/ { print $2 }')
case "$slavename" in
- linaro-armv8-*)
- # Use 64G out of 128G.
- memlimit="64"
+ linaro-tk1-*)
+ # Use at most 90% of RAM on TK1s
+ memlimit=$(($memlimit * 9 / 10))m
;;
*)
- # 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
+ # Use at most half of all available RAM.
+ memlimit=$(($memlimit / 2))m
;;
esac
@@ -86,4 +100,4 @@ esac
# 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 --cpu-shares=$cpu_shares --memory=${memlimit}G --pids-limit=$pids_limit $caps "$image" "$masterurl" "$slavename" "$password"
+$DOCKER run --name=$mastername-$slavename --hostname=$mastername-$slavename --restart=unless-stopped -dt -p 22 --cpu-shares=$cpu_shares --memory=$memlimit --pids-limit=$pids_limit $caps "$image" "$masterurl" "$slavename" "$password"
diff --git a/trusty-amd64-art/Dockerfile b/trusty-amd64-art/Dockerfile
deleted file mode 100644
index 650c3054..00000000
--- a/trusty-amd64-art/Dockerfile
+++ /dev/null
@@ -1,63 +0,0 @@
-FROM ubuntu:trusty
-
-RUN dpkg --add-architecture i386 \
- && apt-get update \
- && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends software-properties-common \
- && add-apt-repository -y ppa:git-core/ppa \
- && add-apt-repository -y ppa:linaro-maintainers/tools \
- && apt-get update \
- && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \
- && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
- acpica-tools \
- android-tools-adb \
- bc \
- bison \
- ccache \
- clang \
- curl \
- default-jdk \
- gcc-4.6 \
- g++-multilib \
- genisoimage \
- git \
- gperf \
- lcov \
- less \
- lib32ncurses5 \
- libxml2-utils \
- make \
- openssh-client \
- openssh-server \
- python-mako \
- python-networkx \
- python-requests \
- rsync \
- scons \
- time \
- unzip \
- wget \
- xml-twig-tools \
- zip \
- zlib1g-dev:i386 \
- && wget -q \
- http://snapshot.debian.org/archive/debian/20160609T104519Z/pool/main/a/acpica-unix/acpica-tools_20160527-1_amd64.deb \
- http://de.archive.ubuntu.com/ubuntu/pool/main/m/make-dfsg/make_3.81-8.2ubuntu3_amd64.deb \
- http://mirrors.kernel.org/ubuntu/pool/universe/o/openjdk-8/openjdk-8-jre-headless_8u45-b14-1_amd64.deb \
- http://mirrors.kernel.org/ubuntu/pool/universe/o/openjdk-8/openjdk-8-jre_8u45-b14-1_amd64.deb \
- http://mirrors.kernel.org/ubuntu/pool/universe/o/openjdk-8/openjdk-8-jdk_8u45-b14-1_amd64.deb \
- && dpkg -i --force-all *.deb \
- && apt-mark hold make \
- && apt-get clean \
- && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* *.deb
-
-RUN useradd -m -G plugdev buildslave \
- && echo 'buildslave ALL = NOPASSWD: ALL' > /etc/sudoers.d/jenkins \
- && chmod 0440 /etc/sudoers.d/jenkins \
- && mkdir -p /var/run/sshd /home/buildslave/bin \
- && curl https://raw.githubusercontent.com/google/styleguide/gh-pages/cpplint/cpplint.py > /home/buildslave/bin/cpplint.py \
- && curl https://storage.googleapis.com/git-repo-downloads/repo > /home/buildslave/bin/repo \
- && chmod a+x /home/buildslave/bin/* \
- && chown -R buildslave:buildslave /home/buildslave/bin
-
-EXPOSE 22
-CMD ["/usr/sbin/sshd", "-D"]
diff --git a/trusty-amd64-tcwg-base/Dockerfile b/trusty-amd64-tcwg-base/Dockerfile
index f94d7e95..e31b6105 100644
--- a/trusty-amd64-tcwg-base/Dockerfile
+++ b/trusty-amd64-tcwg-base/Dockerfile
@@ -47,8 +47,12 @@ RUN (url="http://archive.ubuntu.com/ubuntu/"; \
less \
libexpat1-dev \
libglib2.0-dev \
+ libgmp-dev \
liblzma-dev \
+ libmpc-dev \
+ libmpfr-dev \
libncurses5-dev \
+ libpixman-1-dev \
libpython2.7-dev \
libreadline-dev \
libssl-dev \
@@ -67,8 +71,8 @@ RUN (url="http://archive.ubuntu.com/ubuntu/"; \
openssh-server \
pkg-config \
python-dev \
- python-virtualenv \
postfix \
+ psmisc \
pxz \
qemu-system-arm \
qemu-user \
@@ -80,8 +84,10 @@ RUN (url="http://archive.ubuntu.com/ubuntu/"; \
texlive-fonts-recommended \
texlive-latex-recommended \
time \
+ unifdef \
valgrind \
vim \
+ python-virtualenv \
wget \
xz-utils \
zip \
@@ -107,15 +113,34 @@ COPY postfix-sasl_password.in /etc/postfix/sasl_password
RUN chown root:root /etc/postfix/sasl_password \
&& chmod 600 /etc/postfix/sasl_password
+# Add ninja with support for memory-threshold job limitation.
+# It's installed with ".bin" extension and containers then
+# make wrappers around it in /usr/local/bin/ninja as needed.
+RUN git clone -b master https://github.com/maxim-kuvyrkov/ninja.git \
+ && cd ninja \
+ && ./configure.py --bootstrap && ./ninja all && ./ninja_test \
+ && mv ninja /usr/local/bin/ninja.bin \
+ && cd .. \
+ && rm -rf ninja
+
RUN mkdir /tmp/docker-install-qemu.$$ \
&& cd /tmp/docker-install-qemu.$$ \
- && qemu_ver=2.8.0 && wget --progress=dot:giga http://download.qemu-project.org/qemu-${qemu_ver}.tar.xz \
+ && qemu_ver=3.1.0 && wget --progress=dot:giga http://download.qemu-project.org/qemu-${qemu_ver}.tar.xz \
&& tar xf qemu-${qemu_ver}.tar.xz \
&& mkdir build && cd build \
&& ../qemu-${qemu_ver}/configure --prefix=/usr/local --target-list=armeb-linux-user \
&& make all install -j $(nproc --all) \
&& cd && rm -rf /tmp/docker-install-qemu.$$
+
+COPY home-data/ /home-data/
+COPY new-user.sh /usr/local/bin/
+
+RUN \
+ while read line; do \
+ new-user.sh --group $(echo "$line" | cut -d: -f 1,3); \
+ done </home-data/group
+
# We use ssh multiplexing, which creates sockets in /tmp. Overlayfs,
# which docker is using, can't host sockets, so we use a scratch mount
# for /tmp. This requires that we add --rm option to "docker run"
@@ -125,4 +150,4 @@ VOLUME /tmp
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
-# checksum: 59a3af373c3253df2b6690a0c202f412
+# checksum: af4fa2fbc82a8ade63491e2a489bb96b
diff --git a/trusty-amd64-tcwg-base/trusty-amd64-tcwg-build/Dockerfile b/trusty-amd64-tcwg-base/trusty-amd64-tcwg-build/Dockerfile
index 280e8c91..088e35a3 100644
--- a/trusty-amd64-tcwg-base/trusty-amd64-tcwg-build/Dockerfile
+++ b/trusty-amd64-tcwg-base/trusty-amd64-tcwg-build/Dockerfile
@@ -1,19 +1,14 @@
# Auto generated from tcwg-base/tcwg-build/Dockerfile.in. Do not edit.
FROM linaro/ci-amd64-tcwg-base-ubuntu:trusty
-COPY new-user.sh /usr/local/bin/
-
-RUN new-user.sh --user tcwg-buildslave:11827 --group tcwg-infra:9000 \
- && new-user.sh --user tcwg-benchmark:12326 --group tcwg-infra \
- && mkdir -p /home/tcwg-buildslave/workspace
-
-COPY tcwg-buildslave /home/tcwg-buildslave
-COPY tcwg-benchmark /home/tcwg-benchmark
-
-RUN chown -R tcwg-buildslave:tcwg-infra /home/tcwg-buildslave/ \
- && chown -R tcwg-benchmark:tcwg-infra /home/tcwg-benchmark/ \
- && chmod 0700 /home/tcwg-buildslave/.ssh/ /home/tcwg-benchmark/.ssh/ \
- && chmod 0600 /home/tcwg-buildslave/.ssh/* /home/tcwg-benchmark/.ssh/*
+RUN while read line; do \
+ if [ x"$(echo "$line" | cut -d: -f 4)" != x"9000" ]; then \
+ continue; \
+ fi; \
+ new-user.sh --passwd "$line"; \
+ user=$(echo "$line" | cut -d: -f 1); \
+ sudo -i -u $user ccache --print-config; \
+ done </home-data/passwd
# Install wine. On amd64 arch we need to enable i386, otherwise wine
# won't meet dependencies (this is the case at least for trusty and xenial).
@@ -27,4 +22,4 @@ RUN \
/var/lib/apt/lists/* \
/tmp/* \
/var/tmp/*
-# checksum: 847950907becd4d2e0bb2246eed17943
+# checksum: 8cf045e109118559e5638f49e6b22120
diff --git a/trusty-amd64-tcwg-base/trusty-amd64-tcwg-dev/Dockerfile b/trusty-amd64-tcwg-base/trusty-amd64-tcwg-dev/Dockerfile
index 2294e57b..c1e25ee6 100644
--- a/trusty-amd64-tcwg-base/trusty-amd64-tcwg-dev/Dockerfile
+++ b/trusty-amd64-tcwg-base/trusty-amd64-tcwg-dev/Dockerfile
@@ -1,18 +1,6 @@
# Auto generated from tcwg-base/tcwg-dev/Dockerfile.in. Do not edit.
FROM linaro/ci-amd64-tcwg-base-ubuntu:trusty
-COPY run.sh .
-COPY start.sh .
-
-RUN apt-get update \
- && DEBIAN_FRONTEND=noninteractive apt-get install -y \
- software-properties-common \
- && apt-get clean \
- && rm -rf \
- /var/lib/apt/lists/* \
- /tmp/* \
- /var/tmp/*
-
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y \
apt-file \
@@ -21,29 +9,26 @@ RUN apt-get update \
gnat \
less \
locales \
- libgmp-dev \
- libmpc-dev \
- libmpfr-dev \
mc \
screen \
+ software-properties-common \
stgit \
tmux \
- unifdef \
&& apt-get clean \
&& rm -rf \
/var/lib/apt/lists/* \
/tmp/* \
/var/tmp/*
-RUN sed -i -e '/.*AuthorizedKeysFile/ d' /etc/ssh/sshd_config \
- && echo "AuthorizedKeysFile %h/.ssh/authorized_keys.docker" >> /etc/ssh/sshd_config \
- && locale-gen en_US.UTF-8 && update-locale LANG=en_US.UTF-8 \
+RUN locale-gen en_US.UTF-8 && update-locale LANG=en_US.UTF-8 \
&& apt-file update
# Create directories required for X11.
RUN mkdir -p /tmp/.X11-unix /tmp/.ICE-unix \
&& chmod 1777 /tmp/.X11-unix /tmp/.ICE-unix
+COPY run.sh start.sh /
+
ENTRYPOINT ["/run.sh"]
CMD ["start.sh"]
-# checksum: 6ebcfe89f577b9b89996da9aace4394f
+# checksum: 4b050cb9917e9068a64dccf1f6d4f57a
diff --git a/trusty-arm64-tcwg-base/Dockerfile b/trusty-arm64-tcwg-base/Dockerfile
index 69366269..2d20e996 100644
--- a/trusty-arm64-tcwg-base/Dockerfile
+++ b/trusty-arm64-tcwg-base/Dockerfile
@@ -44,7 +44,10 @@ RUN (url="http://ports.ubuntu.com/ubuntu-ports/"; \
groff \
less \
libexpat1-dev \
+ libgmp-dev \
liblzma-dev \
+ libmpc-dev \
+ libmpfr-dev \
libncurses5-dev \
libpython2.7-dev \
libreadline-dev \
@@ -60,8 +63,8 @@ RUN (url="http://ports.ubuntu.com/ubuntu-ports/"; \
openjdk-7-jdk \
openssh-server \
python-dev \
- python-virtualenv \
postfix \
+ psmisc \
pxz \
qemu-system-arm \
qemu-user \
@@ -73,8 +76,10 @@ RUN (url="http://ports.ubuntu.com/ubuntu-ports/"; \
texlive-fonts-recommended \
texlive-latex-recommended \
time \
+ unifdef \
valgrind \
vim \
+ python-virtualenv \
wget \
xz-utils \
zip \
@@ -100,6 +105,25 @@ COPY postfix-sasl_password.in /etc/postfix/sasl_password
RUN chown root:root /etc/postfix/sasl_password \
&& chmod 600 /etc/postfix/sasl_password
+# Add ninja with support for memory-threshold job limitation.
+# It's installed with ".bin" extension and containers then
+# make wrappers around it in /usr/local/bin/ninja as needed.
+RUN git clone -b master https://github.com/maxim-kuvyrkov/ninja.git \
+ && cd ninja \
+ && ./configure.py --bootstrap && ./ninja all && ./ninja_test \
+ && mv ninja /usr/local/bin/ninja.bin \
+ && cd .. \
+ && rm -rf ninja
+
+
+COPY home-data/ /home-data/
+COPY new-user.sh /usr/local/bin/
+
+RUN \
+ while read line; do \
+ new-user.sh --group $(echo "$line" | cut -d: -f 1,3); \
+ done </home-data/group
+
# We use ssh multiplexing, which creates sockets in /tmp. Overlayfs,
# which docker is using, can't host sockets, so we use a scratch mount
# for /tmp. This requires that we add --rm option to "docker run"
@@ -109,4 +133,4 @@ VOLUME /tmp
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
-# checksum: b553e4f699f9eb1c2496451be411f503
+# checksum: 9a5ebe95dcd5b6352f12f31a90067e8e
diff --git a/trusty-arm64-tcwg-base/trusty-arm64-tcwg-build/Dockerfile b/trusty-arm64-tcwg-base/trusty-arm64-tcwg-build/Dockerfile
index 91ca9969..403cd1fd 100644
--- a/trusty-arm64-tcwg-base/trusty-arm64-tcwg-build/Dockerfile
+++ b/trusty-arm64-tcwg-base/trusty-arm64-tcwg-build/Dockerfile
@@ -1,18 +1,13 @@
# Auto generated from tcwg-base/tcwg-build/Dockerfile.in. Do not edit.
FROM linaro/ci-arm64-tcwg-base-ubuntu:trusty
-COPY new-user.sh /usr/local/bin/
-
-RUN new-user.sh --user tcwg-buildslave:11827 --group tcwg-infra:9000 \
- && new-user.sh --user tcwg-benchmark:12326 --group tcwg-infra \
- && mkdir -p /home/tcwg-buildslave/workspace
-
-COPY tcwg-buildslave /home/tcwg-buildslave
-COPY tcwg-benchmark /home/tcwg-benchmark
-
-RUN chown -R tcwg-buildslave:tcwg-infra /home/tcwg-buildslave/ \
- && chown -R tcwg-benchmark:tcwg-infra /home/tcwg-benchmark/ \
- && chmod 0700 /home/tcwg-buildslave/.ssh/ /home/tcwg-benchmark/.ssh/ \
- && chmod 0600 /home/tcwg-buildslave/.ssh/* /home/tcwg-benchmark/.ssh/*
-
-# checksum: d46dab616715909f84717ae49d7542b9
+RUN while read line; do \
+ if [ x"$(echo "$line" | cut -d: -f 4)" != x"9000" ]; then \
+ continue; \
+ fi; \
+ new-user.sh --passwd "$line"; \
+ user=$(echo "$line" | cut -d: -f 1); \
+ sudo -i -u $user ccache --print-config; \
+ done </home-data/passwd
+
+# checksum: b3846a54f517aff06c5447eb552dd15a
diff --git a/trusty-arm64-tcwg-base/trusty-arm64-tcwg-dev/Dockerfile b/trusty-arm64-tcwg-base/trusty-arm64-tcwg-dev/Dockerfile
index 1f2e2d0d..e26b4d27 100644
--- a/trusty-arm64-tcwg-base/trusty-arm64-tcwg-dev/Dockerfile
+++ b/trusty-arm64-tcwg-base/trusty-arm64-tcwg-dev/Dockerfile
@@ -1,18 +1,6 @@
# Auto generated from tcwg-base/tcwg-dev/Dockerfile.in. Do not edit.
FROM linaro/ci-arm64-tcwg-base-ubuntu:trusty
-COPY run.sh .
-COPY start.sh .
-
-RUN apt-get update \
- && DEBIAN_FRONTEND=noninteractive apt-get install -y \
- software-properties-common \
- && apt-get clean \
- && rm -rf \
- /var/lib/apt/lists/* \
- /tmp/* \
- /var/tmp/*
-
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y \
apt-file \
@@ -20,29 +8,26 @@ RUN apt-get update \
git-svn \
less \
locales \
- libgmp-dev \
- libmpc-dev \
- libmpfr-dev \
mc \
screen \
+ software-properties-common \
stgit \
tmux \
- unifdef \
&& apt-get clean \
&& rm -rf \
/var/lib/apt/lists/* \
/tmp/* \
/var/tmp/*
-RUN sed -i -e '/.*AuthorizedKeysFile/ d' /etc/ssh/sshd_config \
- && echo "AuthorizedKeysFile %h/.ssh/authorized_keys.docker" >> /etc/ssh/sshd_config \
- && locale-gen en_US.UTF-8 && update-locale LANG=en_US.UTF-8 \
+RUN locale-gen en_US.UTF-8 && update-locale LANG=en_US.UTF-8 \
&& apt-file update
# Create directories required for X11.
RUN mkdir -p /tmp/.X11-unix /tmp/.ICE-unix \
&& chmod 1777 /tmp/.X11-unix /tmp/.ICE-unix
+COPY run.sh start.sh /
+
ENTRYPOINT ["/run.sh"]
CMD ["start.sh"]
-# checksum: df2f7edfa6eb02b085cac309faf50ad3
+# checksum: dc6a18a98fea5a25a5193d4e57b5a59d
diff --git a/trusty-armhf-tcwg-base/Dockerfile b/trusty-armhf-tcwg-base/Dockerfile
index 4441771d..bb6b66c8 100644
--- a/trusty-armhf-tcwg-base/Dockerfile
+++ b/trusty-armhf-tcwg-base/Dockerfile
@@ -44,7 +44,10 @@ RUN (url="http://ports.ubuntu.com/ubuntu-ports/"; \
groff \
less \
libexpat1-dev \
+ libgmp-dev \
liblzma-dev \
+ libmpc-dev \
+ libmpfr-dev \
libncurses5-dev \
libpython2.7-dev \
libreadline-dev \
@@ -60,8 +63,8 @@ RUN (url="http://ports.ubuntu.com/ubuntu-ports/"; \
openjdk-7-jdk \
openssh-server \
python-dev \
- python-virtualenv \
postfix \
+ psmisc \
pxz \
qemu-system-arm \
qemu-user \
@@ -73,8 +76,10 @@ RUN (url="http://ports.ubuntu.com/ubuntu-ports/"; \
texlive-fonts-recommended \
texlive-latex-recommended \
time \
+ unifdef \
valgrind \
vim \
+ python-virtualenv \
wget \
xz-utils \
zip \
@@ -100,6 +105,25 @@ COPY postfix-sasl_password.in /etc/postfix/sasl_password
RUN chown root:root /etc/postfix/sasl_password \
&& chmod 600 /etc/postfix/sasl_password
+# Add ninja with support for memory-threshold job limitation.
+# It's installed with ".bin" extension and containers then
+# make wrappers around it in /usr/local/bin/ninja as needed.
+RUN git clone -b master https://github.com/maxim-kuvyrkov/ninja.git \
+ && cd ninja \
+ && ./configure.py --bootstrap && ./ninja all && ./ninja_test \
+ && mv ninja /usr/local/bin/ninja.bin \
+ && cd .. \
+ && rm -rf ninja
+
+
+COPY home-data/ /home-data/
+COPY new-user.sh /usr/local/bin/
+
+RUN \
+ while read line; do \
+ new-user.sh --group $(echo "$line" | cut -d: -f 1,3); \
+ done </home-data/group
+
# We use ssh multiplexing, which creates sockets in /tmp. Overlayfs,
# which docker is using, can't host sockets, so we use a scratch mount
# for /tmp. This requires that we add --rm option to "docker run"
@@ -109,4 +133,4 @@ VOLUME /tmp
EXPOSE 22
CMD ["linux32", "/usr/sbin/sshd", "-D"]
-# checksum: a86a75795b6252fa520a5d910dd3697f
+# checksum: 43dd94b79ec30383f8b930e4d0d36681
diff --git a/trusty-armhf-tcwg-base/trusty-armhf-tcwg-build/Dockerfile b/trusty-armhf-tcwg-base/trusty-armhf-tcwg-build/Dockerfile
index d1fbe12b..46ed9d64 100644
--- a/trusty-armhf-tcwg-base/trusty-armhf-tcwg-build/Dockerfile
+++ b/trusty-armhf-tcwg-base/trusty-armhf-tcwg-build/Dockerfile
@@ -1,18 +1,13 @@
# Auto generated from tcwg-base/tcwg-build/Dockerfile.in. Do not edit.
FROM linaro/ci-armhf-tcwg-base-ubuntu:trusty
-COPY new-user.sh /usr/local/bin/
-
-RUN new-user.sh --user tcwg-buildslave:11827 --group tcwg-infra:9000 \
- && new-user.sh --user tcwg-benchmark:12326 --group tcwg-infra \
- && mkdir -p /home/tcwg-buildslave/workspace
-
-COPY tcwg-buildslave /home/tcwg-buildslave
-COPY tcwg-benchmark /home/tcwg-benchmark
-
-RUN chown -R tcwg-buildslave:tcwg-infra /home/tcwg-buildslave/ \
- && chown -R tcwg-benchmark:tcwg-infra /home/tcwg-benchmark/ \
- && chmod 0700 /home/tcwg-buildslave/.ssh/ /home/tcwg-benchmark/.ssh/ \
- && chmod 0600 /home/tcwg-buildslave/.ssh/* /home/tcwg-benchmark/.ssh/*
-
-# checksum: 719915c4d53c3aaff4bfb874ca144542
+RUN while read line; do \
+ if [ x"$(echo "$line" | cut -d: -f 4)" != x"9000" ]; then \
+ continue; \
+ fi; \
+ new-user.sh --passwd "$line"; \
+ user=$(echo "$line" | cut -d: -f 1); \
+ sudo -i -u $user ccache --print-config; \
+ done </home-data/passwd
+
+# checksum: 65590c772b7855a6a5746503ff220e72
diff --git a/trusty-armhf-tcwg-base/trusty-armhf-tcwg-dev/Dockerfile b/trusty-armhf-tcwg-base/trusty-armhf-tcwg-dev/Dockerfile
index 6f5af073..6cddb9ac 100644
--- a/trusty-armhf-tcwg-base/trusty-armhf-tcwg-dev/Dockerfile
+++ b/trusty-armhf-tcwg-base/trusty-armhf-tcwg-dev/Dockerfile
@@ -1,18 +1,6 @@
# Auto generated from tcwg-base/tcwg-dev/Dockerfile.in. Do not edit.
FROM linaro/ci-armhf-tcwg-base-ubuntu:trusty
-COPY run.sh .
-COPY start.sh .
-
-RUN apt-get update \
- && DEBIAN_FRONTEND=noninteractive apt-get install -y \
- software-properties-common \
- && apt-get clean \
- && rm -rf \
- /var/lib/apt/lists/* \
- /tmp/* \
- /var/tmp/*
-
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y \
apt-file \
@@ -21,29 +9,26 @@ RUN apt-get update \
gnat \
less \
locales \
- libgmp-dev \
- libmpc-dev \
- libmpfr-dev \
mc \
screen \
+ software-properties-common \
stgit \
tmux \
- unifdef \
&& apt-get clean \
&& rm -rf \
/var/lib/apt/lists/* \
/tmp/* \
/var/tmp/*
-RUN sed -i -e '/.*AuthorizedKeysFile/ d' /etc/ssh/sshd_config \
- && echo "AuthorizedKeysFile %h/.ssh/authorized_keys.docker" >> /etc/ssh/sshd_config \
- && locale-gen en_US.UTF-8 && update-locale LANG=en_US.UTF-8 \
+RUN locale-gen en_US.UTF-8 && update-locale LANG=en_US.UTF-8 \
&& apt-file update
# Create directories required for X11.
RUN mkdir -p /tmp/.X11-unix /tmp/.ICE-unix \
&& chmod 1777 /tmp/.X11-unix /tmp/.ICE-unix
+COPY run.sh start.sh /
+
ENTRYPOINT ["linux32", "/run.sh"]
CMD ["start.sh"]
-# checksum: 3ebcf08c631348a6ee99ee7b0a574c23
+# checksum: 3da6f55017f367a840b7513fb3479177
diff --git a/trusty-i386-tcwg-base/Dockerfile b/trusty-i386-tcwg-base/Dockerfile
index a7e08128..c0a61ece 100644
--- a/trusty-i386-tcwg-base/Dockerfile
+++ b/trusty-i386-tcwg-base/Dockerfile
@@ -49,8 +49,12 @@ RUN (url="http://archive.ubuntu.com/ubuntu/"; \
less \
libexpat1-dev \
libglib2.0-dev \
+ libgmp-dev \
liblzma-dev \
+ libmpc-dev \
+ libmpfr-dev \
libncurses5-dev \
+ libpixman-1-dev \
libpython2.7-dev \
libreadline-dev \
libssl-dev \
@@ -68,8 +72,8 @@ RUN (url="http://archive.ubuntu.com/ubuntu/"; \
openssh-server \
pkg-config \
python-dev \
- python-virtualenv \
postfix \
+ psmisc \
pxz \
qemu-system-arm \
qemu-user \
@@ -81,8 +85,10 @@ RUN (url="http://archive.ubuntu.com/ubuntu/"; \
texlive-fonts-recommended \
texlive-latex-recommended \
time \
+ unifdef \
valgrind \
vim \
+ python-virtualenv \
wget \
xz-utils \
zip \
@@ -108,15 +114,34 @@ COPY postfix-sasl_password.in /etc/postfix/sasl_password
RUN chown root:root /etc/postfix/sasl_password \
&& chmod 600 /etc/postfix/sasl_password
+# Add ninja with support for memory-threshold job limitation.
+# It's installed with ".bin" extension and containers then
+# make wrappers around it in /usr/local/bin/ninja as needed.
+RUN git clone -b master https://github.com/maxim-kuvyrkov/ninja.git \
+ && cd ninja \
+ && ./configure.py --bootstrap && ./ninja all && ./ninja_test \
+ && mv ninja /usr/local/bin/ninja.bin \
+ && cd .. \
+ && rm -rf ninja
+
RUN mkdir /tmp/docker-install-qemu.$$ \
&& cd /tmp/docker-install-qemu.$$ \
- && qemu_ver=2.8.0 && wget --progress=dot:giga http://download.qemu-project.org/qemu-${qemu_ver}.tar.xz \
+ && qemu_ver=3.1.0 && wget --progress=dot:giga http://download.qemu-project.org/qemu-${qemu_ver}.tar.xz \
&& tar xf qemu-${qemu_ver}.tar.xz \
&& mkdir build && cd build \
&& ../qemu-${qemu_ver}/configure --prefix=/usr/local --target-list=armeb-linux-user \
&& make all install -j $(nproc --all) \
&& cd && rm -rf /tmp/docker-install-qemu.$$
+
+COPY home-data/ /home-data/
+COPY new-user.sh /usr/local/bin/
+
+RUN \
+ while read line; do \
+ new-user.sh --group $(echo "$line" | cut -d: -f 1,3); \
+ done </home-data/group
+
# We use ssh multiplexing, which creates sockets in /tmp. Overlayfs,
# which docker is using, can't host sockets, so we use a scratch mount
# for /tmp. This requires that we add --rm option to "docker run"
@@ -126,4 +151,4 @@ VOLUME /tmp
EXPOSE 22
CMD ["linux32", "/usr/sbin/sshd", "-D"]
-# checksum: b2adc55929fd7872882ce7c1ee55a26f
+# checksum: 28f82b9ce96b1387fbb2f487e16ab011
diff --git a/trusty-i386-tcwg-base/trusty-i386-tcwg-build/Dockerfile b/trusty-i386-tcwg-base/trusty-i386-tcwg-build/Dockerfile
index b559b08d..3f344b51 100644
--- a/trusty-i386-tcwg-base/trusty-i386-tcwg-build/Dockerfile
+++ b/trusty-i386-tcwg-base/trusty-i386-tcwg-build/Dockerfile
@@ -1,19 +1,14 @@
# Auto generated from tcwg-base/tcwg-build/Dockerfile.in. Do not edit.
FROM linaro/ci-i386-tcwg-base-ubuntu:trusty
-COPY new-user.sh /usr/local/bin/
-
-RUN new-user.sh --user tcwg-buildslave:11827 --group tcwg-infra:9000 \
- && new-user.sh --user tcwg-benchmark:12326 --group tcwg-infra \
- && mkdir -p /home/tcwg-buildslave/workspace
-
-COPY tcwg-buildslave /home/tcwg-buildslave
-COPY tcwg-benchmark /home/tcwg-benchmark
-
-RUN chown -R tcwg-buildslave:tcwg-infra /home/tcwg-buildslave/ \
- && chown -R tcwg-benchmark:tcwg-infra /home/tcwg-benchmark/ \
- && chmod 0700 /home/tcwg-buildslave/.ssh/ /home/tcwg-benchmark/.ssh/ \
- && chmod 0600 /home/tcwg-buildslave/.ssh/* /home/tcwg-benchmark/.ssh/*
+RUN while read line; do \
+ if [ x"$(echo "$line" | cut -d: -f 4)" != x"9000" ]; then \
+ continue; \
+ fi; \
+ new-user.sh --passwd "$line"; \
+ user=$(echo "$line" | cut -d: -f 1); \
+ sudo -i -u $user ccache --print-config; \
+ done </home-data/passwd
# Install wine. On amd64 arch we need to enable i386, otherwise wine
# won't meet dependencies (this is the case at least for trusty and xenial).
@@ -26,4 +21,4 @@ RUN \
/var/lib/apt/lists/* \
/tmp/* \
/var/tmp/*
-# checksum: ba06b8439f636dc78d7968329afbf02e
+# checksum: 00d6640fb2e9cd0c816c1186e0026634
diff --git a/utopic-amd64-art/Dockerfile b/utopic-amd64-art/Dockerfile
index 1e134b03..7d749ab7 100644
--- a/utopic-amd64-art/Dockerfile
+++ b/utopic-amd64-art/Dockerfile
@@ -36,6 +36,7 @@ RUN dpkg --add-architecture i386 \
openssh-client \
openssh-server \
patch \
+ parallel \
python-mako \
python-networkx \
python-requests \
@@ -50,9 +51,9 @@ RUN dpkg --add-architecture i386 \
&& wget -q \
http://snapshot.debian.org/archive/debian/20160609T104519Z/pool/main/a/acpica-unix/acpica-tools_20160527-1_amd64.deb \
http://de.archive.ubuntu.com/ubuntu/pool/main/m/make-dfsg/make_3.81-8.2ubuntu3_amd64.deb \
- http://mirrors.kernel.org/ubuntu/pool/universe/o/openjdk-8/openjdk-8-jre-headless_8u45-b14-1_amd64.deb \
- http://mirrors.kernel.org/ubuntu/pool/universe/o/openjdk-8/openjdk-8-jre_8u45-b14-1_amd64.deb \
- http://mirrors.kernel.org/ubuntu/pool/universe/o/openjdk-8/openjdk-8-jdk_8u45-b14-1_amd64.deb \
+ http://mirrors.edge.kernel.org/ubuntu/pool/universe/o/openjdk-8/openjdk-8-jre-headless_8u181-b13-1_amd64.deb \
+ http://mirrors.edge.kernel.org/ubuntu/pool/universe/o/openjdk-8/openjdk-8-jre_8u181-b13-1_amd64.deb \
+ http://mirrors.edge.kernel.org/ubuntu/pool/universe/o/openjdk-8/openjdk-8-jdk_8u181-b13-1_amd64.deb \
&& dpkg -i --force-all *.deb \
&& apt-mark hold make \
&& apt-get clean \
diff --git a/xenial-amd64-tcwg-base/Dockerfile b/xenial-amd64-tcwg-base/Dockerfile
index 665253db..4aadf6a4 100644
--- a/xenial-amd64-tcwg-base/Dockerfile
+++ b/xenial-amd64-tcwg-base/Dockerfile
@@ -47,8 +47,12 @@ RUN (url="http://archive.ubuntu.com/ubuntu/"; \
less \
libexpat1-dev \
libglib2.0-dev \
+ libgmp-dev \
liblzma-dev \
+ libmpc-dev \
+ libmpfr-dev \
libncurses5-dev \
+ libpixman-1-dev \
libpython2.7-dev \
libreadline-dev \
libssl-dev \
@@ -67,6 +71,7 @@ RUN (url="http://archive.ubuntu.com/ubuntu/"; \
pkg-config \
python-dev \
postfix \
+ psmisc \
pxz \
qemu-system-arm \
qemu-user \
@@ -78,6 +83,7 @@ RUN (url="http://archive.ubuntu.com/ubuntu/"; \
texlive-fonts-recommended \
texlive-latex-recommended \
time \
+ unifdef \
valgrind \
vim \
virtualenv \
@@ -106,15 +112,34 @@ COPY postfix-sasl_password.in /etc/postfix/sasl_password
RUN chown root:root /etc/postfix/sasl_password \
&& chmod 600 /etc/postfix/sasl_password
+# Add ninja with support for memory-threshold job limitation.
+# It's installed with ".bin" extension and containers then
+# make wrappers around it in /usr/local/bin/ninja as needed.
+RUN git clone -b master https://github.com/maxim-kuvyrkov/ninja.git \
+ && cd ninja \
+ && ./configure.py --bootstrap && ./ninja all && ./ninja_test \
+ && mv ninja /usr/local/bin/ninja.bin \
+ && cd .. \
+ && rm -rf ninja
+
RUN mkdir /tmp/docker-install-qemu.$$ \
&& cd /tmp/docker-install-qemu.$$ \
- && qemu_ver=2.8.0 && wget --progress=dot:giga http://download.qemu-project.org/qemu-${qemu_ver}.tar.xz \
+ && qemu_ver=3.1.0 && wget --progress=dot:giga http://download.qemu-project.org/qemu-${qemu_ver}.tar.xz \
&& tar xf qemu-${qemu_ver}.tar.xz \
&& mkdir build && cd build \
&& ../qemu-${qemu_ver}/configure --prefix=/usr/local --target-list=armeb-linux-user \
&& make all install -j $(nproc --all) \
&& cd && rm -rf /tmp/docker-install-qemu.$$
+
+COPY home-data/ /home-data/
+COPY new-user.sh /usr/local/bin/
+
+RUN \
+ while read line; do \
+ new-user.sh --group $(echo "$line" | cut -d: -f 1,3); \
+ done </home-data/group
+
# We use ssh multiplexing, which creates sockets in /tmp. Overlayfs,
# which docker is using, can't host sockets, so we use a scratch mount
# for /tmp. This requires that we add --rm option to "docker run"
@@ -124,4 +149,4 @@ VOLUME /tmp
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
-# checksum: 2c4f845b0ea5b96fda4b80ebee0c24f2
+# checksum: 45c951efede684cca687084277d49621
diff --git a/xenial-amd64-tcwg-base/xenial-amd64-tcwg-build/Dockerfile b/xenial-amd64-tcwg-base/xenial-amd64-tcwg-build/Dockerfile
index 58b1c170..65b4d824 100644
--- a/xenial-amd64-tcwg-base/xenial-amd64-tcwg-build/Dockerfile
+++ b/xenial-amd64-tcwg-base/xenial-amd64-tcwg-build/Dockerfile
@@ -1,19 +1,14 @@
# Auto generated from tcwg-base/tcwg-build/Dockerfile.in. Do not edit.
FROM linaro/ci-amd64-tcwg-base-ubuntu:xenial
-COPY new-user.sh /usr/local/bin/
-
-RUN new-user.sh --user tcwg-buildslave:11827 --group tcwg-infra:9000 \
- && new-user.sh --user tcwg-benchmark:12326 --group tcwg-infra \
- && mkdir -p /home/tcwg-buildslave/workspace
-
-COPY tcwg-buildslave /home/tcwg-buildslave
-COPY tcwg-benchmark /home/tcwg-benchmark
-
-RUN chown -R tcwg-buildslave:tcwg-infra /home/tcwg-buildslave/ \
- && chown -R tcwg-benchmark:tcwg-infra /home/tcwg-benchmark/ \
- && chmod 0700 /home/tcwg-buildslave/.ssh/ /home/tcwg-benchmark/.ssh/ \
- && chmod 0600 /home/tcwg-buildslave/.ssh/* /home/tcwg-benchmark/.ssh/*
+RUN while read line; do \
+ if [ x"$(echo "$line" | cut -d: -f 4)" != x"9000" ]; then \
+ continue; \
+ fi; \
+ new-user.sh --passwd "$line"; \
+ user=$(echo "$line" | cut -d: -f 1); \
+ sudo -i -u $user ccache --print-config; \
+ done </home-data/passwd
# Install wine. On amd64 arch we need to enable i386, otherwise wine
# won't meet dependencies (this is the case at least for trusty and xenial).
@@ -27,4 +22,4 @@ RUN \
/var/lib/apt/lists/* \
/tmp/* \
/var/tmp/*
-# checksum: c2cb73fc80affc8312b1959673d8767c
+# checksum: 55ac8c54cb4645138ac4fda8ed8586f5
diff --git a/xenial-amd64-tcwg-base/xenial-amd64-tcwg-dev/Dockerfile b/xenial-amd64-tcwg-base/xenial-amd64-tcwg-dev/Dockerfile
index 618500ac..3a589c73 100644
--- a/xenial-amd64-tcwg-base/xenial-amd64-tcwg-dev/Dockerfile
+++ b/xenial-amd64-tcwg-base/xenial-amd64-tcwg-dev/Dockerfile
@@ -1,18 +1,6 @@
# Auto generated from tcwg-base/tcwg-dev/Dockerfile.in. Do not edit.
FROM linaro/ci-amd64-tcwg-base-ubuntu:xenial
-COPY run.sh .
-COPY start.sh .
-
-RUN apt-get update \
- && DEBIAN_FRONTEND=noninteractive apt-get install -y \
- software-properties-common \
- && apt-get clean \
- && rm -rf \
- /var/lib/apt/lists/* \
- /tmp/* \
- /var/tmp/*
-
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y \
apt-file \
@@ -21,29 +9,26 @@ RUN apt-get update \
gnat-5 \
less \
locales \
- libgmp-dev \
- libmpc-dev \
- libmpfr-dev \
mc \
screen \
+ software-properties-common \
stgit \
tmux \
- unifdef \
&& apt-get clean \
&& rm -rf \
/var/lib/apt/lists/* \
/tmp/* \
/var/tmp/*
-RUN sed -i -e '/.*AuthorizedKeysFile/ d' /etc/ssh/sshd_config \
- && echo "AuthorizedKeysFile %h/.ssh/authorized_keys.docker" >> /etc/ssh/sshd_config \
- && locale-gen en_US.UTF-8 && update-locale LANG=en_US.UTF-8 \
+RUN locale-gen en_US.UTF-8 && update-locale LANG=en_US.UTF-8 \
&& apt-file update
# Create directories required for X11.
RUN mkdir -p /tmp/.X11-unix /tmp/.ICE-unix \
&& chmod 1777 /tmp/.X11-unix /tmp/.ICE-unix
+COPY run.sh start.sh /
+
ENTRYPOINT ["/run.sh"]
CMD ["start.sh"]
-# checksum: dcc5804aedae03114b28d305dcbc2904
+# checksum: f54252755ff04b9508233acaee33cd32
diff --git a/xenial-amd64-tcwg-base/xenial-amd64-tcwg-host/Dockerfile b/xenial-amd64-tcwg-base/xenial-amd64-tcwg-host/Dockerfile
new file mode 100644
index 00000000..48b28d26
--- /dev/null
+++ b/xenial-amd64-tcwg-base/xenial-amd64-tcwg-host/Dockerfile
@@ -0,0 +1,11 @@
+# Auto generated from tcwg-base/tcwg-host/Dockerfile.in. Do not edit.
+FROM linaro/ci-amd64-tcwg-base-ubuntu:xenial
+
+COPY docker-wrapper /usr/local/bin/docker
+COPY docker-stats /usr/local/bin/
+
+COPY run.sh start.sh /
+
+ENTRYPOINT ["/run.sh"]
+CMD ["start.sh"]
+# checksum: 9f94a8be2756ffabb6ebafa75127f228
diff --git a/xenial-amd64-tcwg-base/xenial-amd64-tcwg-host/build.sh b/xenial-amd64-tcwg-base/xenial-amd64-tcwg-host/build.sh
new file mode 120000
index 00000000..2c954456
--- /dev/null
+++ b/xenial-amd64-tcwg-base/xenial-amd64-tcwg-host/build.sh
@@ -0,0 +1 @@
+../../tcwg-base/tcwg-host/build.sh \ No newline at end of file
diff --git a/xenial-amd64-tcwg-base/xenial-amd64-tcwg-host/gerrit-branches b/xenial-amd64-tcwg-base/xenial-amd64-tcwg-host/gerrit-branches
new file mode 120000
index 00000000..44e3578e
--- /dev/null
+++ b/xenial-amd64-tcwg-base/xenial-amd64-tcwg-host/gerrit-branches
@@ -0,0 +1 @@
+../../tcwg-base/tcwg-host/gerrit-branches \ No newline at end of file
diff --git a/xenial-arm64-tcwg-base/Dockerfile b/xenial-arm64-tcwg-base/Dockerfile
index 74a08245..2ba6c04f 100644
--- a/xenial-arm64-tcwg-base/Dockerfile
+++ b/xenial-arm64-tcwg-base/Dockerfile
@@ -44,7 +44,10 @@ RUN (url="http://ports.ubuntu.com/ubuntu-ports/"; \
groff \
less \
libexpat1-dev \
+ libgmp-dev \
liblzma-dev \
+ libmpc-dev \
+ libmpfr-dev \
libncurses5-dev \
libpython2.7-dev \
libreadline-dev \
@@ -62,6 +65,7 @@ RUN (url="http://ports.ubuntu.com/ubuntu-ports/"; \
openssh-server \
python-dev \
postfix \
+ psmisc \
pxz \
qemu-system-arm \
qemu-user \
@@ -73,6 +77,7 @@ RUN (url="http://ports.ubuntu.com/ubuntu-ports/"; \
texlive-fonts-recommended \
texlive-latex-recommended \
time \
+ unifdef \
valgrind \
vim \
virtualenv \
@@ -101,6 +106,25 @@ COPY postfix-sasl_password.in /etc/postfix/sasl_password
RUN chown root:root /etc/postfix/sasl_password \
&& chmod 600 /etc/postfix/sasl_password
+# Add ninja with support for memory-threshold job limitation.
+# It's installed with ".bin" extension and containers then
+# make wrappers around it in /usr/local/bin/ninja as needed.
+RUN git clone -b master https://github.com/maxim-kuvyrkov/ninja.git \
+ && cd ninja \
+ && ./configure.py --bootstrap && ./ninja all && ./ninja_test \
+ && mv ninja /usr/local/bin/ninja.bin \
+ && cd .. \
+ && rm -rf ninja
+
+
+COPY home-data/ /home-data/
+COPY new-user.sh /usr/local/bin/
+
+RUN \
+ while read line; do \
+ new-user.sh --group $(echo "$line" | cut -d: -f 1,3); \
+ done </home-data/group
+
# We use ssh multiplexing, which creates sockets in /tmp. Overlayfs,
# which docker is using, can't host sockets, so we use a scratch mount
# for /tmp. This requires that we add --rm option to "docker run"
@@ -110,4 +134,4 @@ VOLUME /tmp
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
-# checksum: bb32f5a03bcc7864035ebc495cde2ea4
+# checksum: 5d69a0e67de38ed9fb2fd87244c1b6ce
diff --git a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/Dockerfile b/xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/Dockerfile
index 989ef31e..41b05edd 100644
--- a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/Dockerfile
+++ b/xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/Dockerfile
@@ -1,18 +1,13 @@
# Auto generated from tcwg-base/tcwg-build/Dockerfile.in. Do not edit.
FROM linaro/ci-arm64-tcwg-base-ubuntu:xenial
-COPY new-user.sh /usr/local/bin/
-
-RUN new-user.sh --user tcwg-buildslave:11827 --group tcwg-infra:9000 \
- && new-user.sh --user tcwg-benchmark:12326 --group tcwg-infra \
- && mkdir -p /home/tcwg-buildslave/workspace
-
-COPY tcwg-buildslave /home/tcwg-buildslave
-COPY tcwg-benchmark /home/tcwg-benchmark
-
-RUN chown -R tcwg-buildslave:tcwg-infra /home/tcwg-buildslave/ \
- && chown -R tcwg-benchmark:tcwg-infra /home/tcwg-benchmark/ \
- && chmod 0700 /home/tcwg-buildslave/.ssh/ /home/tcwg-benchmark/.ssh/ \
- && chmod 0600 /home/tcwg-buildslave/.ssh/* /home/tcwg-benchmark/.ssh/*
-
-# checksum: a9bb4838879761da324a80f74d713b07
+RUN while read line; do \
+ if [ x"$(echo "$line" | cut -d: -f 4)" != x"9000" ]; then \
+ continue; \
+ fi; \
+ new-user.sh --passwd "$line"; \
+ user=$(echo "$line" | cut -d: -f 1); \
+ sudo -i -u $user ccache --print-config; \
+ done </home-data/passwd
+
+# checksum: 443d79e453fa3bdf6ad9089f670cd90f
diff --git a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-dev/Dockerfile b/xenial-arm64-tcwg-base/xenial-arm64-tcwg-dev/Dockerfile
index 4534b5cc..db0cd0ba 100644
--- a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-dev/Dockerfile
+++ b/xenial-arm64-tcwg-base/xenial-arm64-tcwg-dev/Dockerfile
@@ -1,18 +1,6 @@
# Auto generated from tcwg-base/tcwg-dev/Dockerfile.in. Do not edit.
FROM linaro/ci-arm64-tcwg-base-ubuntu:xenial
-COPY run.sh .
-COPY start.sh .
-
-RUN apt-get update \
- && DEBIAN_FRONTEND=noninteractive apt-get install -y \
- software-properties-common \
- && apt-get clean \
- && rm -rf \
- /var/lib/apt/lists/* \
- /tmp/* \
- /var/tmp/*
-
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y \
apt-file \
@@ -21,29 +9,26 @@ RUN apt-get update \
gnat-5 \
less \
locales \
- libgmp-dev \
- libmpc-dev \
- libmpfr-dev \
mc \
screen \
+ software-properties-common \
stgit \
tmux \
- unifdef \
&& apt-get clean \
&& rm -rf \
/var/lib/apt/lists/* \
/tmp/* \
/var/tmp/*
-RUN sed -i -e '/.*AuthorizedKeysFile/ d' /etc/ssh/sshd_config \
- && echo "AuthorizedKeysFile %h/.ssh/authorized_keys.docker" >> /etc/ssh/sshd_config \
- && locale-gen en_US.UTF-8 && update-locale LANG=en_US.UTF-8 \
+RUN locale-gen en_US.UTF-8 && update-locale LANG=en_US.UTF-8 \
&& apt-file update
# Create directories required for X11.
RUN mkdir -p /tmp/.X11-unix /tmp/.ICE-unix \
&& chmod 1777 /tmp/.X11-unix /tmp/.ICE-unix
+COPY run.sh start.sh /
+
ENTRYPOINT ["/run.sh"]
CMD ["start.sh"]
-# checksum: 0e9607cbb3dd157d553ffebd26d6a411
+# checksum: 7d7b7765e822f49af3ecb6fad5353a16
diff --git a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-host/Dockerfile b/xenial-arm64-tcwg-base/xenial-arm64-tcwg-host/Dockerfile
new file mode 100644
index 00000000..34f161bd
--- /dev/null
+++ b/xenial-arm64-tcwg-base/xenial-arm64-tcwg-host/Dockerfile
@@ -0,0 +1,11 @@
+# Auto generated from tcwg-base/tcwg-host/Dockerfile.in. Do not edit.
+FROM linaro/ci-arm64-tcwg-base-ubuntu:xenial
+
+COPY docker-wrapper /usr/local/bin/docker
+COPY docker-stats /usr/local/bin/
+
+COPY run.sh start.sh /
+
+ENTRYPOINT ["/run.sh"]
+CMD ["start.sh"]
+# checksum: 8498aac781566adf4cb5a246369137bd
diff --git a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-host/build.sh b/xenial-arm64-tcwg-base/xenial-arm64-tcwg-host/build.sh
new file mode 120000
index 00000000..2c954456
--- /dev/null
+++ b/xenial-arm64-tcwg-base/xenial-arm64-tcwg-host/build.sh
@@ -0,0 +1 @@
+../../tcwg-base/tcwg-host/build.sh \ No newline at end of file
diff --git a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-host/gerrit-branches b/xenial-arm64-tcwg-base/xenial-arm64-tcwg-host/gerrit-branches
new file mode 120000
index 00000000..44e3578e
--- /dev/null
+++ b/xenial-arm64-tcwg-base/xenial-arm64-tcwg-host/gerrit-branches
@@ -0,0 +1 @@
+../../tcwg-base/tcwg-host/gerrit-branches \ No newline at end of file
diff --git a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-llvmbot/Dockerfile b/xenial-arm64-tcwg-base/xenial-arm64-tcwg-llvmbot/Dockerfile
index a5327736..439570e5 100644
--- a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-llvmbot/Dockerfile
+++ b/xenial-arm64-tcwg-base/xenial-arm64-tcwg-llvmbot/Dockerfile
@@ -2,8 +2,12 @@
FROM linaro/ci-arm64-tcwg-base-ubuntu:xenial
RUN apt-get update \
+ && DEBIAN_FRONTEND=noninteractive apt-get install -y software-properties-common \
+ && DEBIAN_FRONTEND=noninteractive add-apt-repository -y ppa:ubuntu-toolchain-r/test \
+ && apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y \
buildbot \
+ g++-7 \
&& apt-get clean \
&& rm -rf \
/var/lib/apt/lists/* \
@@ -22,19 +26,11 @@ RUN cd ./llvm-config-buildslave/ \
/var/tmp/* \
&& sudo -i -u buildslave mkdir /home/buildslave/buildslave
-# Add ninja with support for memory-threshold job limitation.
-RUN git clone -b master https://github.com/maxim-kuvyrkov/ninja.git \
- && cd ninja \
- && ./configure.py --bootstrap && ./ninja all && ./ninja_test \
- && mv ninja /usr/local/bin/ninja.bin \
- && cd .. \
- && rm -rf ninja
-
# Add current clang for libcxx bots.
RUN \
- clang_ver=clang+llvm-5.0.1-aarch64-linux-gnu \
+ clang_ver=clang+llvm-6.0.0-aarch64-linux-gnu \
&& cd /usr/local \
- && wget --progress=dot:giga http://releases.llvm.org/5.0.1/$clang_ver.tar.xz \
+ && wget --progress=dot:giga http://releases.llvm.org/6.0.0/$clang_ver.tar.xz \
&& tar xf $clang_ver.tar.xz \
&& rm $clang_ver.tar.xz
@@ -45,4 +41,4 @@ COPY start.sh .
ENTRYPOINT ["/run.sh"]
CMD ["start.sh"]
-# checksum: e518582a2a434e66d9c9388c0bd2fa91
+# checksum: 3601aae3505cd568a70051c768ab6cd9
diff --git a/xenial-armhf-tcwg-base/Dockerfile b/xenial-armhf-tcwg-base/Dockerfile
index cb315681..9964f843 100644
--- a/xenial-armhf-tcwg-base/Dockerfile
+++ b/xenial-armhf-tcwg-base/Dockerfile
@@ -44,7 +44,10 @@ RUN (url="http://ports.ubuntu.com/ubuntu-ports/"; \
groff \
less \
libexpat1-dev \
+ libgmp-dev \
liblzma-dev \
+ libmpc-dev \
+ libmpfr-dev \
libncurses5-dev \
libpython2.7-dev \
libreadline-dev \
@@ -62,6 +65,7 @@ RUN (url="http://ports.ubuntu.com/ubuntu-ports/"; \
openssh-server \
python-dev \
postfix \
+ psmisc \
pxz \
qemu-system-arm \
qemu-user \
@@ -73,6 +77,7 @@ RUN (url="http://ports.ubuntu.com/ubuntu-ports/"; \
texlive-fonts-recommended \
texlive-latex-recommended \
time \
+ unifdef \
valgrind \
vim \
virtualenv \
@@ -101,6 +106,25 @@ COPY postfix-sasl_password.in /etc/postfix/sasl_password
RUN chown root:root /etc/postfix/sasl_password \
&& chmod 600 /etc/postfix/sasl_password
+# Add ninja with support for memory-threshold job limitation.
+# It's installed with ".bin" extension and containers then
+# make wrappers around it in /usr/local/bin/ninja as needed.
+RUN git clone -b master https://github.com/maxim-kuvyrkov/ninja.git \
+ && cd ninja \
+ && ./configure.py --bootstrap && ./ninja all && ./ninja_test \
+ && mv ninja /usr/local/bin/ninja.bin \
+ && cd .. \
+ && rm -rf ninja
+
+
+COPY home-data/ /home-data/
+COPY new-user.sh /usr/local/bin/
+
+RUN \
+ while read line; do \
+ new-user.sh --group $(echo "$line" | cut -d: -f 1,3); \
+ done </home-data/group
+
# We use ssh multiplexing, which creates sockets in /tmp. Overlayfs,
# which docker is using, can't host sockets, so we use a scratch mount
# for /tmp. This requires that we add --rm option to "docker run"
@@ -110,4 +134,4 @@ VOLUME /tmp
EXPOSE 22
CMD ["linux32", "/usr/sbin/sshd", "-D"]
-# checksum: 23b30d538e449e7d3a20a0253ac38224
+# checksum: 85986dd6dd8ddc162d40addb2a4f80b8
diff --git a/xenial-armhf-tcwg-base/xenial-armhf-tcwg-build/Dockerfile b/xenial-armhf-tcwg-base/xenial-armhf-tcwg-build/Dockerfile
index d685b29a..09c06be4 100644
--- a/xenial-armhf-tcwg-base/xenial-armhf-tcwg-build/Dockerfile
+++ b/xenial-armhf-tcwg-base/xenial-armhf-tcwg-build/Dockerfile
@@ -1,18 +1,13 @@
# Auto generated from tcwg-base/tcwg-build/Dockerfile.in. Do not edit.
FROM linaro/ci-armhf-tcwg-base-ubuntu:xenial
-COPY new-user.sh /usr/local/bin/
-
-RUN new-user.sh --user tcwg-buildslave:11827 --group tcwg-infra:9000 \
- && new-user.sh --user tcwg-benchmark:12326 --group tcwg-infra \
- && mkdir -p /home/tcwg-buildslave/workspace
-
-COPY tcwg-buildslave /home/tcwg-buildslave
-COPY tcwg-benchmark /home/tcwg-benchmark
-
-RUN chown -R tcwg-buildslave:tcwg-infra /home/tcwg-buildslave/ \
- && chown -R tcwg-benchmark:tcwg-infra /home/tcwg-benchmark/ \
- && chmod 0700 /home/tcwg-buildslave/.ssh/ /home/tcwg-benchmark/.ssh/ \
- && chmod 0600 /home/tcwg-buildslave/.ssh/* /home/tcwg-benchmark/.ssh/*
-
-# checksum: 8dcea6cdeb064fe01ee369351717080c
+RUN while read line; do \
+ if [ x"$(echo "$line" | cut -d: -f 4)" != x"9000" ]; then \
+ continue; \
+ fi; \
+ new-user.sh --passwd "$line"; \
+ user=$(echo "$line" | cut -d: -f 1); \
+ sudo -i -u $user ccache --print-config; \
+ done </home-data/passwd
+
+# checksum: 42236a4db3a31045c88d1a3859571f0f
diff --git a/xenial-armhf-tcwg-base/xenial-armhf-tcwg-dev/Dockerfile b/xenial-armhf-tcwg-base/xenial-armhf-tcwg-dev/Dockerfile
index 1bbdba71..49a67cbe 100644
--- a/xenial-armhf-tcwg-base/xenial-armhf-tcwg-dev/Dockerfile
+++ b/xenial-armhf-tcwg-base/xenial-armhf-tcwg-dev/Dockerfile
@@ -1,18 +1,6 @@
# Auto generated from tcwg-base/tcwg-dev/Dockerfile.in. Do not edit.
FROM linaro/ci-armhf-tcwg-base-ubuntu:xenial
-COPY run.sh .
-COPY start.sh .
-
-RUN apt-get update \
- && DEBIAN_FRONTEND=noninteractive apt-get install -y \
- software-properties-common \
- && apt-get clean \
- && rm -rf \
- /var/lib/apt/lists/* \
- /tmp/* \
- /var/tmp/*
-
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y \
apt-file \
@@ -21,29 +9,26 @@ RUN apt-get update \
gnat-5 \
less \
locales \
- libgmp-dev \
- libmpc-dev \
- libmpfr-dev \
mc \
screen \
+ software-properties-common \
stgit \
tmux \
- unifdef \
&& apt-get clean \
&& rm -rf \
/var/lib/apt/lists/* \
/tmp/* \
/var/tmp/*
-RUN sed -i -e '/.*AuthorizedKeysFile/ d' /etc/ssh/sshd_config \
- && echo "AuthorizedKeysFile %h/.ssh/authorized_keys.docker" >> /etc/ssh/sshd_config \
- && locale-gen en_US.UTF-8 && update-locale LANG=en_US.UTF-8 \
+RUN locale-gen en_US.UTF-8 && update-locale LANG=en_US.UTF-8 \
&& apt-file update
# Create directories required for X11.
RUN mkdir -p /tmp/.X11-unix /tmp/.ICE-unix \
&& chmod 1777 /tmp/.X11-unix /tmp/.ICE-unix
+COPY run.sh start.sh /
+
ENTRYPOINT ["linux32", "/run.sh"]
CMD ["start.sh"]
-# checksum: ece1982cfb0a9675f6cb4af314a31779
+# checksum: b8cb9f0df64f714ab0d4514517850f35
diff --git a/xenial-armhf-tcwg-base/xenial-armhf-tcwg-host/Dockerfile b/xenial-armhf-tcwg-base/xenial-armhf-tcwg-host/Dockerfile
new file mode 100644
index 00000000..069193ec
--- /dev/null
+++ b/xenial-armhf-tcwg-base/xenial-armhf-tcwg-host/Dockerfile
@@ -0,0 +1,11 @@
+# Auto generated from tcwg-base/tcwg-host/Dockerfile.in. Do not edit.
+FROM linaro/ci-armhf-tcwg-base-ubuntu:xenial
+
+COPY docker-wrapper /usr/local/bin/docker
+COPY docker-stats /usr/local/bin/
+
+COPY run.sh start.sh /
+
+ENTRYPOINT ["linux32", "/run.sh"]
+CMD ["start.sh"]
+# checksum: ba7a02aa96c3b6df313c3fac751b47bc
diff --git a/xenial-armhf-tcwg-base/xenial-armhf-tcwg-host/build.sh b/xenial-armhf-tcwg-base/xenial-armhf-tcwg-host/build.sh
new file mode 120000
index 00000000..2c954456
--- /dev/null
+++ b/xenial-armhf-tcwg-base/xenial-armhf-tcwg-host/build.sh
@@ -0,0 +1 @@
+../../tcwg-base/tcwg-host/build.sh \ No newline at end of file
diff --git a/xenial-armhf-tcwg-base/xenial-armhf-tcwg-host/gerrit-branches b/xenial-armhf-tcwg-base/xenial-armhf-tcwg-host/gerrit-branches
new file mode 120000
index 00000000..44e3578e
--- /dev/null
+++ b/xenial-armhf-tcwg-base/xenial-armhf-tcwg-host/gerrit-branches
@@ -0,0 +1 @@
+../../tcwg-base/tcwg-host/gerrit-branches \ No newline at end of file
diff --git a/xenial-armhf-tcwg-base/xenial-armhf-tcwg-llvmbot/Dockerfile b/xenial-armhf-tcwg-base/xenial-armhf-tcwg-llvmbot/Dockerfile
index 00ed72eb..7efb553f 100644
--- a/xenial-armhf-tcwg-base/xenial-armhf-tcwg-llvmbot/Dockerfile
+++ b/xenial-armhf-tcwg-base/xenial-armhf-tcwg-llvmbot/Dockerfile
@@ -2,8 +2,12 @@
FROM linaro/ci-armhf-tcwg-base-ubuntu:xenial
RUN apt-get update \
+ && DEBIAN_FRONTEND=noninteractive apt-get install -y software-properties-common \
+ && DEBIAN_FRONTEND=noninteractive add-apt-repository -y ppa:ubuntu-toolchain-r/test \
+ && apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y \
buildbot \
+ g++-7 \
&& apt-get clean \
&& rm -rf \
/var/lib/apt/lists/* \
@@ -22,19 +26,11 @@ RUN cd ./llvm-config-buildslave/ \
/var/tmp/* \
&& sudo -i -u buildslave mkdir /home/buildslave/buildslave
-# Add ninja with support for memory-threshold job limitation.
-RUN git clone -b master https://github.com/maxim-kuvyrkov/ninja.git \
- && cd ninja \
- && ./configure.py --bootstrap && ./ninja all && ./ninja_test \
- && mv ninja /usr/local/bin/ninja.bin \
- && cd .. \
- && rm -rf ninja
-
# Add current clang for libcxx bots.
RUN \
- clang_ver=clang+llvm-5.0.1-armv7a-linux-gnueabihf \
+ clang_ver=clang+llvm-6.0.0-armv7a-linux-gnueabihf \
&& cd /usr/local \
- && wget --progress=dot:giga http://releases.llvm.org/5.0.1/$clang_ver.tar.xz \
+ && wget --progress=dot:giga http://releases.llvm.org/6.0.0/$clang_ver.tar.xz \
&& tar xf $clang_ver.tar.xz \
&& rm $clang_ver.tar.xz
@@ -45,4 +41,4 @@ COPY start.sh .
ENTRYPOINT ["linux32", "/run.sh"]
CMD ["start.sh"]
-# checksum: 478e345cb93c7e7a70535a26606fb9ed
+# checksum: cf73c99640ab904d9997a941177001f1
diff --git a/xenial-i386-tcwg-base/Dockerfile b/xenial-i386-tcwg-base/Dockerfile
index 496d119d..1023b6ed 100644
--- a/xenial-i386-tcwg-base/Dockerfile
+++ b/xenial-i386-tcwg-base/Dockerfile
@@ -49,8 +49,12 @@ RUN (url="http://archive.ubuntu.com/ubuntu/"; \
less \
libexpat1-dev \
libglib2.0-dev \
+ libgmp-dev \
liblzma-dev \
+ libmpc-dev \
+ libmpfr-dev \
libncurses5-dev \
+ libpixman-1-dev \
libpython2.7-dev \
libreadline-dev \
libssl-dev \
@@ -69,6 +73,7 @@ RUN (url="http://archive.ubuntu.com/ubuntu/"; \
pkg-config \
python-dev \
postfix \
+ psmisc \
pxz \
qemu-system-arm \
qemu-user \
@@ -80,6 +85,7 @@ RUN (url="http://archive.ubuntu.com/ubuntu/"; \
texlive-fonts-recommended \
texlive-latex-recommended \
time \
+ unifdef \
valgrind \
vim \
virtualenv \
@@ -108,15 +114,34 @@ COPY postfix-sasl_password.in /etc/postfix/sasl_password
RUN chown root:root /etc/postfix/sasl_password \
&& chmod 600 /etc/postfix/sasl_password
+# Add ninja with support for memory-threshold job limitation.
+# It's installed with ".bin" extension and containers then
+# make wrappers around it in /usr/local/bin/ninja as needed.
+RUN git clone -b master https://github.com/maxim-kuvyrkov/ninja.git \
+ && cd ninja \
+ && ./configure.py --bootstrap && ./ninja all && ./ninja_test \
+ && mv ninja /usr/local/bin/ninja.bin \
+ && cd .. \
+ && rm -rf ninja
+
RUN mkdir /tmp/docker-install-qemu.$$ \
&& cd /tmp/docker-install-qemu.$$ \
- && qemu_ver=2.8.0 && wget --progress=dot:giga http://download.qemu-project.org/qemu-${qemu_ver}.tar.xz \
+ && qemu_ver=3.1.0 && wget --progress=dot:giga http://download.qemu-project.org/qemu-${qemu_ver}.tar.xz \
&& tar xf qemu-${qemu_ver}.tar.xz \
&& mkdir build && cd build \
&& ../qemu-${qemu_ver}/configure --prefix=/usr/local --target-list=armeb-linux-user \
&& make all install -j $(nproc --all) \
&& cd && rm -rf /tmp/docker-install-qemu.$$
+
+COPY home-data/ /home-data/
+COPY new-user.sh /usr/local/bin/
+
+RUN \
+ while read line; do \
+ new-user.sh --group $(echo "$line" | cut -d: -f 1,3); \
+ done </home-data/group
+
# We use ssh multiplexing, which creates sockets in /tmp. Overlayfs,
# which docker is using, can't host sockets, so we use a scratch mount
# for /tmp. This requires that we add --rm option to "docker run"
@@ -126,4 +151,4 @@ VOLUME /tmp
EXPOSE 22
CMD ["linux32", "/usr/sbin/sshd", "-D"]
-# checksum: cb6ee278c0423b5434e71afdb95b02d8
+# checksum: 6250ecddc1d62a1bd9c34d0a1af2b5de
diff --git a/xenial-i386-tcwg-base/xenial-i386-tcwg-build/Dockerfile b/xenial-i386-tcwg-base/xenial-i386-tcwg-build/Dockerfile
index b105a155..9ef8d56d 100644
--- a/xenial-i386-tcwg-base/xenial-i386-tcwg-build/Dockerfile
+++ b/xenial-i386-tcwg-base/xenial-i386-tcwg-build/Dockerfile
@@ -1,19 +1,14 @@
# Auto generated from tcwg-base/tcwg-build/Dockerfile.in. Do not edit.
FROM linaro/ci-i386-tcwg-base-ubuntu:xenial
-COPY new-user.sh /usr/local/bin/
-
-RUN new-user.sh --user tcwg-buildslave:11827 --group tcwg-infra:9000 \
- && new-user.sh --user tcwg-benchmark:12326 --group tcwg-infra \
- && mkdir -p /home/tcwg-buildslave/workspace
-
-COPY tcwg-buildslave /home/tcwg-buildslave
-COPY tcwg-benchmark /home/tcwg-benchmark
-
-RUN chown -R tcwg-buildslave:tcwg-infra /home/tcwg-buildslave/ \
- && chown -R tcwg-benchmark:tcwg-infra /home/tcwg-benchmark/ \
- && chmod 0700 /home/tcwg-buildslave/.ssh/ /home/tcwg-benchmark/.ssh/ \
- && chmod 0600 /home/tcwg-buildslave/.ssh/* /home/tcwg-benchmark/.ssh/*
+RUN while read line; do \
+ if [ x"$(echo "$line" | cut -d: -f 4)" != x"9000" ]; then \
+ continue; \
+ fi; \
+ new-user.sh --passwd "$line"; \
+ user=$(echo "$line" | cut -d: -f 1); \
+ sudo -i -u $user ccache --print-config; \
+ done </home-data/passwd
# Install wine. On amd64 arch we need to enable i386, otherwise wine
# won't meet dependencies (this is the case at least for trusty and xenial).
@@ -26,4 +21,4 @@ RUN \
/var/lib/apt/lists/* \
/tmp/* \
/var/tmp/*
-# checksum: c4d98a96007fb76a7e5c6114053a3c87
+# checksum: c9e664ac8fbca90586d162b8dce9dd53
diff --git a/xenial-i386-tcwg-base/xenial-i386-tcwg-dev/Dockerfile b/xenial-i386-tcwg-base/xenial-i386-tcwg-dev/Dockerfile
index d0603797..e06816fe 100644
--- a/xenial-i386-tcwg-base/xenial-i386-tcwg-dev/Dockerfile
+++ b/xenial-i386-tcwg-base/xenial-i386-tcwg-dev/Dockerfile
@@ -1,18 +1,6 @@
# Auto generated from tcwg-base/tcwg-dev/Dockerfile.in. Do not edit.
FROM linaro/ci-i386-tcwg-base-ubuntu:xenial
-COPY run.sh .
-COPY start.sh .
-
-RUN apt-get update \
- && DEBIAN_FRONTEND=noninteractive apt-get install -y \
- software-properties-common \
- && apt-get clean \
- && rm -rf \
- /var/lib/apt/lists/* \
- /tmp/* \
- /var/tmp/*
-
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y \
apt-file \
@@ -21,29 +9,26 @@ RUN apt-get update \
gnat-5 \
less \
locales \
- libgmp-dev \
- libmpc-dev \
- libmpfr-dev \
mc \
screen \
+ software-properties-common \
stgit \
tmux \
- unifdef \
&& apt-get clean \
&& rm -rf \
/var/lib/apt/lists/* \
/tmp/* \
/var/tmp/*
-RUN sed -i -e '/.*AuthorizedKeysFile/ d' /etc/ssh/sshd_config \
- && echo "AuthorizedKeysFile %h/.ssh/authorized_keys.docker" >> /etc/ssh/sshd_config \
- && locale-gen en_US.UTF-8 && update-locale LANG=en_US.UTF-8 \
+RUN locale-gen en_US.UTF-8 && update-locale LANG=en_US.UTF-8 \
&& apt-file update
# Create directories required for X11.
RUN mkdir -p /tmp/.X11-unix /tmp/.ICE-unix \
&& chmod 1777 /tmp/.X11-unix /tmp/.ICE-unix
+COPY run.sh start.sh /
+
ENTRYPOINT ["linux32", "/run.sh"]
CMD ["start.sh"]
-# checksum: d4713d03be137a74e7d172adec5fd118
+# checksum: f1db2fea09ca33b4f8f4f94e36a373ec