diff options
426 files changed, 12152 insertions, 2929 deletions
@@ -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/autoware-ros-builder/Dockerfile b/autoware-ros-builder/Dockerfile new file mode 100644 index 00000000..706e85e8 --- /dev/null +++ b/autoware-ros-builder/Dockerfile @@ -0,0 +1,133 @@ +FROM ubuntu:xenial + +ENV DEBIAN_FRONTEND=noninteractive + +ENV BASE_DEPS="\ + build-essential \ + curl \ + python-catkin-pkg \ + python-rosdep \ + python-wstool \ + python3-colcon-common-extensions \ + ros-kinetic-catkin \ +" + +ENV ROSDEP_DEPS="\ + freeglut3-dev \ + gstreamer0.10-plugins-good \ + libarmadillo-dev \ + libcurl4-openssl-dev \ + libeigen3-dev \ + libgflags-dev \ + libgl1-mesa-dev \ + libglew-dev \ + libglu1-mesa-dev \ + libgoogle-glog-dev \ + libnlopt-dev \ + libopencv-dev \ + libpcap0.8-dev \ + libpcl-dev \ + libqt5opengl5-dev \ + libtinyxml-dev \ + libx11-dev \ + libxi-dev \ + libxml2-dev \ + libxmu-dev \ + libyaml-cpp-dev \ + python-flask \ + python-serial \ + qtbase5-dev \ + ros-kinetic-angles \ + ros-kinetic-automotive-platform-msgs \ + ros-kinetic-camera-info-manager \ + ros-kinetic-cmake-modules \ + ros-kinetic-cv-bridge \ + ros-kinetic-diagnostic-aggregator \ + ros-kinetic-diagnostic-msgs \ + ros-kinetic-diagnostic-updater \ + ros-kinetic-dynamic-reconfigure \ + ros-kinetic-eigen-conversions \ + ros-kinetic-geometry-msgs \ + ros-kinetic-gps-common \ + ros-kinetic-grid-map-cv \ + ros-kinetic-grid-map-msgs \ + ros-kinetic-grid-map-ros \ + ros-kinetic-grid-map-visualization \ + ros-kinetic-gscam \ + ros-kinetic-image-geometry \ + ros-kinetic-image-transport \ + ros-kinetic-imu-filter-madgwick \ + ros-kinetic-imu-tools \ + ros-kinetic-jsk-recognition-msgs \ + ros-kinetic-jsk-recognition-utils \ + ros-kinetic-jsk-rviz-plugins \ + ros-kinetic-jsk-topic-tools \ + ros-kinetic-message-filters \ + ros-kinetic-message-generation \ + ros-kinetic-message-runtime \ + ros-kinetic-nav-msgs \ + ros-kinetic-nlopt \ + ros-kinetic-nmea-msgs \ + ros-kinetic-nodelet \ + ros-kinetic-pcl-conversions \ + ros-kinetic-pcl-msgs \ + ros-kinetic-pcl-ros \ + ros-kinetic-pluginlib \ + ros-kinetic-robot-state-publisher \ + ros-kinetic-rosbag \ + ros-kinetic-rosbridge-server \ + ros-kinetic-rosconsole \ + ros-kinetic-roscpp \ + ros-kinetic-roslaunch \ + ros-kinetic-roslib \ + ros-kinetic-roslint \ + ros-kinetic-rospy \ + ros-kinetic-rostest \ + ros-kinetic-rosunit \ + ros-kinetic-rqt-plot \ + ros-kinetic-rviz \ + ros-kinetic-sensor-msgs \ + ros-kinetic-sound-play \ + ros-kinetic-std-msgs \ + ros-kinetic-std-srvs \ + ros-kinetic-stereo-msgs \ + ros-kinetic-tf \ + ros-kinetic-tf-conversions \ + ros-kinetic-tf2 \ + ros-kinetic-tf2-geometry-msgs \ + ros-kinetic-tf2-ros \ + ros-kinetic-visualization-msgs \ + ros-kinetic-xacro \ + v4l-utils \ +" + +ENV JENKINS_DEPS="\ + default-jdk-headless \ + openssh-server \ + sudo \ +" + +RUN echo "deb http://packages.ros.org/ros/ubuntu xenial main" > /etc/apt/sources.list.d/ros-latest.list ;\ + apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 ;\ + apt update -q=2 ;\ + apt upgrade -q=2 ;\ + apt install -q=2 -y --no-install-recommends ${BASE_DEPS} ${ROSDEP_DEPS} ${JENKINS_DEPS};\ + # Install setuptools from PyPI. The version shipped in Ubuntu is too old. + curl -sLS https://bootstrap.pypa.io/get-pip.py -o /tmp/get-pip.py ;\ + python3 /tmp/get-pip.py ;\ + pip install --upgrade --no-cache-dir setuptools==40.8.0 ;\ + # Install lcov from source. + git clone https://github.com/linux-test-project/lcov.git /tmp/lcov-1.14 ;\ + cd /tmp/lcov-1.14 && git checkout v1.14 && make install ;\ + # Setup buildslave user for Jenkins + useradd -m buildslave ;\ + echo 'buildslave ALL = NOPASSWD: ALL' > /etc/sudoers.d/jenkins ;\ + chmod 0440 /etc/sudoers.d/jenkins ;\ + mkdir -p /var/run/sshd /home/buildslave/bin ;\ + # Cleanup + apt clean ;\ + rm -rf /var/lib/apt/lists/* /tmp/get-pip.py /tmp/lcov-1.14 + +EXPOSE 22 +COPY entrypoint.sh /root/ +ENTRYPOINT ["/root/entrypoint.sh"] diff --git a/centos7-aarch64-openjdk/build.sh b/autoware-ros-builder/build.sh index 15e8f8a0..04f6cd0f 100755 --- a/centos7-aarch64-openjdk/build.sh +++ b/autoware-ros-builder/build.sh @@ -4,6 +4,6 @@ set -e export LANG=C -image=linaro/$(basename ${PWD}) +image=linaro/ci-ros-builder:kinetic docker build --pull --tag=$image . echo $image > .docker-tag diff --git a/autoware-ros-builder/entrypoint.sh b/autoware-ros-builder/entrypoint.sh new file mode 100755 index 00000000..b0849ca0 --- /dev/null +++ b/autoware-ros-builder/entrypoint.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +set -e + +export HOME=/home/buildslave + +[ -z "${JENKINS_SLAVE_SSH_PUBKEY}" ] || { + mkdir ${HOME}/.ssh + echo "${JENKINS_SLAVE_SSH_PUBKEY}" > ${HOME}/.ssh/authorized_keys + chown -R buildslave:buildslave ${HOME}/.ssh + chmod 0700 -R ${HOME}/.ssh +} + +. /opt/ros/kinetic/setup.sh +env | grep ROS_ >> /etc/environment +env | grep PATH >> /etc/environment + +ssh-keygen -A +exec /usr/sbin/sshd -D -e diff --git a/bionic-amd64-android-lava/Dockerfile b/bionic-amd64-android-lava/Dockerfile new file mode 100644 index 00000000..2a442c83 --- /dev/null +++ b/bionic-amd64-android-lava/Dockerfile @@ -0,0 +1,60 @@ +# Use the official image as a parent image. +FROM ubuntu:18.04 + +# Set the working directory. +WORKDIR /linaro-android + +RUN apt-get update \ + && apt-get install -y \ + aapt \ + apt-utils \ + coreutils \ + curl \ + git \ + lib32gcc1 \ + lib32z1-dev \ + libc6-dev-i386 \ + libcurl4 \ + openjdk-8-jdk-headless \ + openjdk-11-jdk-headless \ + protobuf-compiler \ + psmisc \ + python-dev \ + python-lxml \ + python-pexpect \ + python-pexpect \ + python-pip \ + python-protobuf \ + python-setuptools \ + python-virtualenv \ + sudo \ + tar \ + unzip \ + usbutils \ + wget \ + xz-utils \ + zip \ + && apt-get clean \ + && rm -rf \ + /etc/apt/sources.list.d/*.key \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* + +# https://developer.android.com/studio/releases/platform-tools +RUN curl -SL https://dl.google.com/android/repository/platform-tools_r28.0.0-linux.zip -o platform-tools_r28.0.0-linux.zip \ + && unzip platform-tools_r28.0.0-linux.zip \ + && rm -f /usr/bin/fastboot /usr/bin/adb \ + && ln -s /linaro-android/platform-tools/fastboot /usr/bin/fastboot \ + && ln -s /linaro-android/platform-tools/adb /usr/bin/adb \ + && rm -f platform-tools_r28.0.0-linux.zip + +# According to the document here: +# https://developer.android.com/studio/command-line/aapt2#download_aapt2 +# And here is the page link: +# https://maven.google.com/web/index.html#com.android.tools.build:aapt2:8.1.0-alpha10-9603961 +RUN curl -SL "https://dl.google.com/android/maven2/com/android/tools/build/aapt2/8.1.0-alpha10-9603961/aapt2-8.1.0-alpha10-9603961-linux.jar" -o aapt2-8.1.0-alpha10-9603961-linux.jar \ + && unzip aapt2-8.1.0-alpha10-9603961-linux.jar aapt2 \ + && rm -f /usr/bin/aapt2 \ + && ln -s /linaro-android/aapt2 /usr/bin/aapt2 \ + && rm -f aapt2-8.1.0-alpha10-9603961-linux.jar diff --git a/bionic-amd64-android-lava/build.sh b/bionic-amd64-android-lava/build.sh new file mode 100755 index 00000000..cc2a6a3c --- /dev/null +++ b/bionic-amd64-android-lava/build.sh @@ -0,0 +1,5 @@ +#!/bin/bash -ex + +image=linaro/lava-android-test:latest +docker build --pull --tag ${image} -f Dockerfile . +echo $image > .docker-tag diff --git a/bionic-amd64-ansible-base/Dockerfile b/bionic-amd64-ansible-base/Dockerfile new file mode 100644 index 00000000..3cc18c77 --- /dev/null +++ b/bionic-amd64-ansible-base/Dockerfile @@ -0,0 +1,19 @@ +# Install and sets up ansible image ready for docker use + +FROM ubuntu:18.04 + +LABEL maintainer="Linaro Systems Team <systems@linaro.org>" + +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get update && apt-get install -y --no-install-recommends gnupg software-properties-common +COPY *.list *.key /etc/apt/sources.list.d/ + +RUN apt-key add /etc/apt/sources.list.d/*.key \ + && apt-add-repository -y ppa:ansible/ansible \ + && apt-get update \ + && apt-get install -y ansible vim bash openssh-server python-apt sudo cron + +RUN rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +CMD /bin/sleep infinity diff --git a/bionic-amd64-ansible-base/build.sh b/bionic-amd64-ansible-base/build.sh new file mode 100755 index 00000000..272a8ac8 --- /dev/null +++ b/bionic-amd64-ansible-base/build.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +set -e + +trap cleanup_exit INT TERM EXIT + +cleanup_exit() +{ + rm -f *.key +} + +export LANG=C + +DISTRIBUTION=$(basename ${PWD} | cut -f1 -d '-') +ARCHITECTURE=$(basename ${PWD} | cut -f2 -d '-') + +cp -a ../linaro-overlay-obs.key . + +image=linaro/ci-${ARCHITECTURE}-ubuntu-ansible:${DISTRIBUTION} +docker build --pull --tag=$image . +echo $image > .docker-tag diff --git a/bionic-amd64-ansible-base/obs-stg.list b/bionic-amd64-ansible-base/obs-stg.list new file mode 100644 index 00000000..70c74cbf --- /dev/null +++ b/bionic-amd64-ansible-base/obs-stg.list @@ -0,0 +1,2 @@ +deb http://obs.linaro.org/STG/bionic ./ + diff --git a/bionic-amd64-apache/Dockerfile b/bionic-amd64-apache/Dockerfile new file mode 100644 index 00000000..77551f01 --- /dev/null +++ b/bionic-amd64-apache/Dockerfile @@ -0,0 +1,9 @@ +FROM ubuntu:bionic + +RUN apt-get update && apt-get dist-upgrade -y && apt-get install -y --no-install-recommends apache2 ca-certificates ssl-cert pwauth + +VOLUME /etc/apache/ /etc/ssl /etc/dehydrated /srv/certbot /var/log/apache +EXPOSE 443 +CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND" ] + + diff --git a/fedora23-aarch64-openjdk/build.sh b/bionic-amd64-apache/build.sh index 15e8f8a0..44332d5e 100755 --- a/fedora23-aarch64-openjdk/build.sh +++ b/bionic-amd64-apache/build.sh @@ -4,6 +4,6 @@ set -e export LANG=C -image=linaro/$(basename ${PWD}) +image=linaro/apache:bionic docker build --pull --tag=$image . echo $image > .docker-tag diff --git a/bionic-amd64-art/Dockerfile b/bionic-amd64-art/Dockerfile new file mode 100644 index 00000000..2be93afb --- /dev/null +++ b/bionic-amd64-art/Dockerfile @@ -0,0 +1,55 @@ +FROM ubuntu:bionic + +COPY setup-sshd /usr/sbin/setup-sshd + +RUN 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 \ + bc \ + bison \ + ccache \ + build-essential \ + curl \ + flex \ + g++-multilib \ + gcc-multilib \ + git \ + gnupg \ + gperf \ + lib32ncurses5-dev \ + lib32z-dev \ + libc6-dev-i386 \ + libgl1-mesa-dev \ + libx11-dev \ + libxml2-utils \ + openjdk-8-jdk \ + openjdk-11-jdk \ + openssh-server \ + parallel \ + python3-requests \ + rsync \ + unzip \ + x11proto-core-dev \ + xsltproc \ + xz-utils \ + zip \ + zlib1g-dev && \ + apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + + +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 + +ENV LC_ALL C.UTF-8 + +EXPOSE 22 +ENTRYPOINT ["/usr/sbin/setup-sshd"] + diff --git a/bionic-amd64-art/build.sh b/bionic-amd64-art/build.sh new file mode 100755 index 00000000..45869147 --- /dev/null +++ b/bionic-amd64-art/build.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +set -e + +trap cleanup_exit INT TERM EXIT + +cleanup_exit() +{ + rm -f setup-sshd +} + +export LANG=C + +DISTRIBUTION=$(basename ${PWD} | cut -f1 -d '-') +ARCHITECTURE=$(basename ${PWD} | cut -f2 -d '-') + +cp -a ../setup-sshd . + +image=linaro/jenkins-${ARCHITECTURE}-art-ubuntu:${DISTRIBUTION} +docker build --pull --tag=$image . +echo $image > .docker-tag diff --git a/utopic-amd64/Dockerfile b/bionic-amd64/Dockerfile index 56589e53..1fe41f6e 100644 --- a/utopic-amd64/Dockerfile +++ b/bionic-amd64/Dockerfile @@ -1,14 +1,12 @@ -FROM ubuntu:utopic - -COPY *.list *.key /etc/apt/sources.list.d/ +FROM ubuntu:bionic RUN dpkg --add-architecture i386 \ - && sed -i -e 's/archive.ubuntu.com\|security.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list \ - && apt-key add /etc/apt/sources.list.d/*.key \ + && apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends software-properties-common \ && apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \ && DEBIAN_FRONTEND=noninteractive apt-get install -y devscripts \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --force-yes \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ abootimg \ acpica-tools \ android-tools-fsutils \ @@ -18,6 +16,9 @@ RUN dpkg --add-architecture i386 \ bison \ build-essential \ ccache \ + clang \ + clang-format \ + clang-tidy \ curl \ debhelper \ debian-archive-keyring \ @@ -30,34 +31,47 @@ RUN dpkg --add-architecture i386 \ gcc-aarch64-linux-gnu \ gcc-arm-linux-gnueabihf \ gdisk \ + genisoimage \ git \ + gperf \ kernel-wedge \ kpartx \ lava-tool \ + lcov \ + less \ + lib32ncurses5 \ libstdc++6:i386 \ libtool \ - linaro-image-tools \ + libvirt-bin \ + libxml2-utils \ lsb-release \ - openjdk-7-jdk \ + make \ + openjdk-11-jdk \ openssh-server \ + python-cryptography \ + python-mako \ + python-networkx \ + python-pip \ python-requests \ + python-wheel \ + python3-cryptography \ + python3-pip \ + python3-requests \ + python3-wheel \ + pxz \ qemu-user-static \ + rsync \ + scons \ sudo \ time \ u-boot-tools \ uuid-dev \ + virtinst \ wget \ + xml-twig-tools \ zip \ - zlib1g:i386 \ + zlib1g-dev:i386 \ zsync \ - && 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 \ /etc/apt/sources.list.d/*.key \ @@ -66,14 +80,19 @@ RUN dpkg --add-architecture i386 \ /var/tmp/* \ *.deb -RUN useradd -m buildslave \ +RUN useradd -m -G plugdev buildslave \ && echo 'buildslave ALL = NOPASSWD: ALL' > /etc/sudoers.d/jenkins \ - && chmod 440 /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 +RUN pip install jenkins-job-builder==2.10.0 \ + && 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 + EXPOSE 22 CMD ["/usr/sbin/sshd", "-D"] + diff --git a/bionic-amd64/build.sh b/bionic-amd64/build.sh new file mode 100755 index 00000000..28723188 --- /dev/null +++ b/bionic-amd64/build.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +set -e + +trap cleanup_exit INT TERM EXIT + +cleanup_exit() +{ + rm -f setup-sshd +} + +export LANG=C + +DISTRIBUTION=$(basename ${PWD} | cut -f1 -d '-') +ARCHITECTURE=$(basename ${PWD} | cut -f2 -d '-') + +cp -a ../setup-sshd . + +image=linaro/jenkins-${ARCHITECTURE}-ubuntu:${DISTRIBUTION} +docker build --pull --tag=$image . +echo $image > .docker-tag diff --git a/bionic-arm64-armnn/Dockerfile b/bionic-arm64-armnn/Dockerfile new file mode 100644 index 00000000..b6befd19 --- /dev/null +++ b/bionic-arm64-armnn/Dockerfile @@ -0,0 +1,21 @@ +FROM linaro/jenkins-arm64-ubuntu:bionic + +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + cmake \ + autoconf \ + automake \ + libtool \ + libpthread-stubs0-dev \ + python3-pip \ + virtualenv \ + python3-dev \ + libboost-dev \ + python3-setuptools \ + && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + + +ENV LC_ALL C.UTF-8 + +EXPOSE 22 +ENTRYPOINT ["/usr/sbin/setup-sshd"] diff --git a/bionic-arm64-armnn/build.sh b/bionic-arm64-armnn/build.sh new file mode 100755 index 00000000..e0307d2f --- /dev/null +++ b/bionic-arm64-armnn/build.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +set -e + +trap cleanup_exit INT TERM EXIT + +cleanup_exit() +{ + rm -f setup-sshd +} + +export LANG=C + +DISTRIBUTION=$(basename ${PWD} | cut -f1 -d '-') +ARCHITECTURE=$(basename ${PWD} | cut -f2 -d '-') + +cp -a ../setup-sshd . + +image=linaro/jenkins-${ARCHITECTURE}-ubuntu-armnn:${DISTRIBUTION} +docker build --pull --tag=$image . +echo $image > .docker-tag diff --git a/bionic-arm64/Dockerfile b/bionic-arm64/Dockerfile new file mode 100644 index 00000000..5edba70c --- /dev/null +++ b/bionic-arm64/Dockerfile @@ -0,0 +1,69 @@ +FROM ubuntu:bionic + +COPY setup-sshd /usr/sbin/setup-sshd + +RUN 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 \ + bc \ + bison \ + ccache \ + build-essential \ + clang-4.0 \ + clang-format-4.0 \ + clang-tidy-4.0 \ + curl \ + flex \ + git \ + gnupg \ + gperf \ + lava-tool \ + libgl1-mesa-dev \ + libx11-dev \ + libxml2-utils \ + openjdk-11-jdk \ + openssh-server \ + parallel \ + python-cryptography \ + python-mako \ + python-networkx \ + python-pip \ + python-requests \ + python-wheel \ + python3-cryptography \ + python3-pip \ + python3-requests \ + python3-wheel \ + qemu-user-static \ + rsync \ + scons \ + sudo \ + unzip \ + x11proto-core-dev \ + xsltproc \ + xz-utils \ + wget \ + zip \ + zlib1g-dev && \ + apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +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 + +RUN pip install jenkins-job-builder==2.10.0 \ + && 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 + +ENV LC_ALL C.UTF-8 + +EXPOSE 22 +ENTRYPOINT ["/usr/sbin/setup-sshd"] + diff --git a/bionic-arm64/build.sh b/bionic-arm64/build.sh new file mode 100755 index 00000000..28723188 --- /dev/null +++ b/bionic-arm64/build.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +set -e + +trap cleanup_exit INT TERM EXIT + +cleanup_exit() +{ + rm -f setup-sshd +} + +export LANG=C + +DISTRIBUTION=$(basename ${PWD} | cut -f1 -d '-') +ARCHITECTURE=$(basename ${PWD} | cut -f2 -d '-') + +cp -a ../setup-sshd . + +image=linaro/jenkins-${ARCHITECTURE}-ubuntu:${DISTRIBUTION} +docker build --pull --tag=$image . +echo $image > .docker-tag diff --git a/bookworm-amd64/Dockerfile b/bookworm-amd64/Dockerfile new file mode 100644 index 00000000..5ac338fa --- /dev/null +++ b/bookworm-amd64/Dockerfile @@ -0,0 +1,94 @@ +FROM debian:bookworm-backports + +ARG SPHINX_DOCS_DEPS="python3-sphinx texlive texlive-latex-extra libalgorithm-diff-perl \ + texlive-humanities texlive-fonts-recommended texlive-latex-recommended texlive-plain-generic \ + latexmk" + +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 \ + && apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y devscripts locales \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + android-sdk-libsparse-utils \ + abootimg \ + acpica-tools \ + ansible \ + autoconf \ + automake \ + bc \ + bison \ + build-essential \ + \ + clang llvm llvm-dev lld \ + \ + ccache \ + chrpath \ + cpio \ + curl \ + debhelper \ + debian-archive-keyring \ + debian-keyring \ + debootstrap \ + device-tree-compiler \ + dosfstools \ + doxygen \ + fakeroot \ + flex \ + gawk \ + gdisk \ + genisoimage \ + git \ + iasl \ + kernel-wedge \ + kpartx \ + libcurl4-openssl-dev \ + libssl-dev \ + libtool \ + lsb-release \ + lvm2 \ + mdadm \ + mkbootimg \ + mtools \ + nasm \ + openjdk-17-jdk \ + openssh-server \ + parted \ + pigz \ + python3-cryptography \ + python3-jinja2 \ + python3-kerberos \ + python3-pip \ + python3-requests \ + python3-ruamel.yaml \ + qemu-user-static \ + sudo \ + time \ + u-boot-tools \ + uuid-dev \ + wget \ + xz-utils \ + zip \ + zsync \ + ${SPHINX_DOCS_DEPS} \ + && if [ $(uname -m) = 'x86_64' ]; then \ + DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + g++-multilib \ + libc6-dev-i386; fi \ + && apt-get clean \ + && rm -rf \ + /etc/apt/sources.list.d/*.key \ + /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 \ + && wget -q https://storage.googleapis.com/git-repo-downloads/repo -O /usr/bin/repo \ + && chmod +x /usr/bin/repo + + +EXPOSE 22 +CMD ["/usr/sbin/sshd", "-D"] diff --git a/utopic-amd64/build.sh b/bookworm-amd64/build.sh index 58fb2bf2..131c34ce 100755 --- a/utopic-amd64/build.sh +++ b/bookworm-amd64/build.sh @@ -14,9 +14,12 @@ export LANG=C DISTRIBUTION=$(basename ${PWD} | cut -f1 -d '-') ARCHITECTURE=$(basename ${PWD} | cut -f2 -d '-') -cp -a ../linaro-*.list ../linaro-*.key . -sed -e "s|@DISTRIBUTION@|${DISTRIBUTION}|" -i *.list +image=linaro/jenkins-${ARCHITECTURE}-debian:${DISTRIBUTION} + +if [ ! -e Dockerfile ] +then + cp ../${DISTRIBUTION}-amd64/Dockerfile . +fi -image=linaro/ci-${ARCHITECTURE}-ubuntu:${DISTRIBUTION} docker build --pull --tag=$image . echo $image > .docker-tag diff --git a/bookworm-arm64/build.sh b/bookworm-arm64/build.sh new file mode 120000 index 00000000..c2c65e26 --- /dev/null +++ b/bookworm-arm64/build.sh @@ -0,0 +1 @@ +../bookworm-amd64/build.sh
\ No newline at end of file diff --git a/bullseye-amd64-android-postprocess/Dockerfile b/bullseye-amd64-android-postprocess/Dockerfile new file mode 100644 index 00000000..f4ec9e6b --- /dev/null +++ b/bullseye-amd64-android-postprocess/Dockerfile @@ -0,0 +1,24 @@ +# Use the official image as a parent image. +FROM linaro/kir:master + +# Set the working directory. +WORKDIR /linaro-android + +RUN apt-get update \ + && apt-get install -y \ + bc \ + jq \ + rsync \ + selinux-utils \ + sudo \ + time \ + wget \ + && apt-get clean \ + && rm -rf \ + /etc/apt/sources.list.d/*.key \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* + +ADD https://android-git.linaro.org/android-build-configs.git/plain/lkft/linaro-lkft-android-docker.sh?h=lkft /usr/bin/linaro-lkft-android.sh +RUN chmod +x /usr/bin/linaro-lkft-android.sh diff --git a/bullseye-amd64-android-postprocess/build.sh b/bullseye-amd64-android-postprocess/build.sh new file mode 100755 index 00000000..4999c352 --- /dev/null +++ b/bullseye-amd64-android-postprocess/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -ex + +# definition of tag: baseDockerImageVersion:year.month.date-numberOfTheDay +tag="bullseye-2024.03.13-01" +image="linaro/lava-android-postprocess:${tag}" +docker build --pull --tag "${image}" -f Dockerfile . +echo $image > .docker-tag diff --git a/bullseye-amd64-jenkins-master/Dockerfile b/bullseye-amd64-jenkins-master/Dockerfile new file mode 100644 index 00000000..fc520442 --- /dev/null +++ b/bullseye-amd64-jenkins-master/Dockerfile @@ -0,0 +1,42 @@ +FROM jenkins/jenkins:2.440.2-lts-slim + +ENV JENKINS_JAVA_PARAMETERS="-server -XX:+AlwaysPreTouch -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/jenkins/heapdump.log -XX:+UseG1GC -XX:+UseStringDeduplication -XX:+ParallelRefProcEnabled -XX:+ExplicitGCInvokesConcurrent -XX:+UnlockDiagnosticVMOptions -XX:G1SummarizeRSetStatsPeriod=1 -XX:MaxMetaspaceExpansion=64M -Djenkins.model.Jenkins.logStartupPerformance=true" +ENV JAVA_OPTS="$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 --sessionEviction=86400" +ENV JAVA_MEM=${JAVA_MEM:-8} + +# Install jenkins job builder +# Create plugins directory, symlinked on host machine +USER root +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + wget \ + gettext \ + jq \ + build-essential \ + moreutils \ + python3-paramiko \ + python3-requests \ + python3-setuptools \ + python3-wheel \ + sshpass \ + virtualenv \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + && mkdir -p /var/jenkins_plugins \ + && chown jenkins:jenkins /var/jenkins_plugins \ + && ln -s /var/jenkins_home /var/lib/jenkins \ + && mkdir -p /usr/share/groovy/lib \ + && wget -q https://search.maven.org/remotecontent?filepath=org/codehaus/groovy/groovy-xmlrpc/0.8/groovy-xmlrpc-0.8.jar -O /usr/share/groovy/lib/groovy-xmlrpc-0.8.jar \ + && wget -q https://storage.googleapis.com/git-repo-downloads/repo -O /usr/bin/repo\ + && chmod +x /usr/bin/repo + +USER jenkins + +# Install jenkins plugins +COPY plugins.txt . +RUN jenkins-plugin-cli -f plugins.txt + +# Forward ports to host +EXPOSE 2222 diff --git a/jessie-amd64-jenkins-master/build.sh b/bullseye-amd64-jenkins-master/build.sh index 778d8360..778d8360 100755 --- a/jessie-amd64-jenkins-master/build.sh +++ b/bullseye-amd64-jenkins-master/build.sh diff --git a/bullseye-amd64-jenkins-master/docker-compose.yml b/bullseye-amd64-jenkins-master/docker-compose.yml new file mode 100644 index 00000000..5d824567 --- /dev/null +++ b/bullseye-amd64-jenkins-master/docker-compose.yml @@ -0,0 +1,26 @@ +version: '3' +services: + jenkins: + image: 'linaro/ci-x86_64-jenkins-master-debian:lts' + container_name: jenkins-master + logging: + driver: journald + ports: + - "2222:2222" + - "2233:2233" + - "8080:8080" + - "50000:50000" + volumes: + - "${JENKINS_HOST_PATH}:/var/jenkins_home:rw" + gerrit: + image: 'debian:buster' + container_name: gerrit + logging: + driver: journald + ports: + - "2222:2222" + - "2233:2233" + - "8080:8080" + - "50000:50000" + volumes: + - "${JENKINS_HOST_PATH}:/var/jenkins_home:rw" diff --git a/bullseye-amd64-jenkins-master/plugins.txt b/bullseye-amd64-jenkins-master/plugins.txt new file mode 100644 index 00000000..6afa2422 --- /dev/null +++ b/bullseye-amd64-jenkins-master/plugins.txt @@ -0,0 +1,76 @@ +ansicolor:1.0.4 +ant:497.v94e7d9fffa_b_9 +antisamy-markup-formatter:162.v0e6ec0fcfcf6 +apache-httpcomponents-client-5-api:5.3.1-1.0 +apache-httpcomponents-client-4-api +aws-java-sdk:1.12.633-430.vf9a_e567a_244f +basic-branch-build-strategies:81.v05e333931c7d +bouncycastle-api:2.30.1.77-225.v26ea_c9455fd9 +build-blocker-plugin:1.7.9 +build-name-setter:2.4.1 +build-timeout:1.32 +command-launcher:107.v773860566e2e +copyartifact:722.v0662a_9b_e22a_c +docker-plugin:1.5 +docker-build-publish:1.4.0 +docker-workflow:572.v950f58993843 +docker-slaves:1.0.7 +dropdown-viewstabbar-plugin:1.7 +dynamic-axis:1.0.3 +ec2:1648.vf3d852e00486 +email-ext:2.104 +embeddable-build-status:467.v4a_954796e45d +extended-read-permission:53.v6499940139e5 +external-monitor-job:215.v2e88e894db_f8 +ghprb:1.42.2 +gerrit-trigger:2.39.4 +git-parameter:0.9.19 +groovy-postbuild:228.vcdb_cf7265066 +heavy-job:1.1 +htmlpublisher:1.33 +ircbot:3.921.v40cc686b_9cf8 +jobConfigHistory:1229.v3039470161a_d +ldap:711.vb_d1a_491714dc +leastload:3.0.0 +log-parser:2.3.3 +matrix-project:822.824.v14451b_c0fd42 +matrix-combinations-parameter:1.3.3 +mercurial:1260.vdfb_723cdcc81 +metrics:4.2.21-449.v6960d7c54c69 +monitoring:1.95.0 +naginator:1.436.vb_e769dcb_cdf6 +nodelabelparameter:1.12.0 +openstack-cloud:2.65 +pam-auth:1.10 +parameterized-scheduler:255.v73827fcdf618 +postbuildscript:3.2.0-550.v88192b_d3e922 +pipeline-github:2.8-159.09e4403bc62f +pipeline-utility-steps:2.16.1 +plot:2.1.12 +prometheus:2.5.1 +publish-over-ssh:1.25 +rebuild:330.v645b_7df10e2a_ +repo:1.16.0 +simple-theme-plugin:176.v39740c03a_a_f5 +slack:684.v833089650554 +ssh-agent:346.vda_a_c4f2c8e50 +ssh-slaves:2.948.vb_8050d697fec +subversion:2.17.3 +throttle-concurrents:2.14 +timestamper:1.26 +translation:1.16 +urltrigger:1.02 +warnings-ng:10.7.0 +workflow-aggregator:596.v8c21c963d92d +ws-cleanup:0.45 +xvfb:1.2 +yet-another-docker-plugin:0.2.0 +cloudbees-disk-usage-simple:203.v3f46a_7462b_1a_ +lockable-resources:1232.v512d6c434eb_d +generic-webhook-trigger:2.0.0 +htmlpublisher:1.32 +jdk-tool:73.vddf737284550 +matrix-auth:3.2.1 +trilead-api:2.142.v748523a_76693 +multiple-scms:0.8 +jenkins-multijob-plugin:627.v7c23cef20a_6a diff --git a/bullseye-amd64/Dockerfile b/bullseye-amd64/Dockerfile new file mode 100644 index 00000000..a4928e98 --- /dev/null +++ b/bullseye-amd64/Dockerfile @@ -0,0 +1,91 @@ +FROM debian:bullseye-backports + +ARG SPHINX_DOCS_DEPS="python3-sphinx texlive texlive-latex-extra libalgorithm-diff-perl \ + texlive-humanities texlive-fonts-recommended texlive-latex-recommended texlive-plain-generic \ + latexmk" + +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 \ + && apt-get update \ + ; DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends gnupg \ + && apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y devscripts locales \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + abootimg \ + acpica-tools \ + ansible \ + autoconf \ + automake \ + bc \ + bison \ + build-essential \ + ccache \ + chrpath \ + cpio \ + curl \ + debhelper \ + debian-archive-keyring \ + debian-keyring \ + debootstrap \ + device-tree-compiler \ + dosfstools \ + doxygen \ + fakeroot \ + flex \ + gawk \ + gdisk \ + genisoimage \ + git \ + img2simg \ + kernel-wedge \ + kpartx \ + libcurl4-openssl-dev \ + libssl-dev \ + libtool \ + lsb-release \ + lvm2 \ + mdadm \ + mkbootimg \ + mtools \ + openjdk-11-jdk \ + openssh-server \ + parted \ + pigz \ + python3-cryptography \ + python3-jinja2 \ + python3-kerberos \ + python3-pip \ + python3-requests \ + python3-ruamel.yaml \ + qemu-user-static \ + simg2img \ + sudo \ + time \ + u-boot-tools \ + uuid-dev \ + wget \ + xz-utils \ + zip \ + zsync \ + ${SPHINX_DOCS_DEPS} \ + && if [ $(uname -m) = 'x86_64' ]; then \ + DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + g++-multilib \ + libc6-dev-i386; fi \ + && apt-get clean \ + && rm -rf \ + /etc/apt/sources.list.d/*.key \ + /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 \ + && wget -q https://storage.googleapis.com/git-repo-downloads/repo -O /usr/bin/repo \ + && chmod +x /usr/bin/repo + +EXPOSE 22 +CMD ["/usr/sbin/sshd", "-D"] diff --git a/xenial-arm64/build.sh b/bullseye-amd64/build.sh index 1203ab3b..131c34ce 100755 --- a/xenial-arm64/build.sh +++ b/bullseye-amd64/build.sh @@ -14,9 +14,12 @@ export LANG=C DISTRIBUTION=$(basename ${PWD} | cut -f1 -d '-') ARCHITECTURE=$(basename ${PWD} | cut -f2 -d '-') -cp -a ../linaro-overlay-repo.list ../linaro-overlay-repo.key . -sed -e "s|@DISTRIBUTION@|${DISTRIBUTION}|" -i *.list +image=linaro/jenkins-${ARCHITECTURE}-debian:${DISTRIBUTION} + +if [ ! -e Dockerfile ] +then + cp ../${DISTRIBUTION}-amd64/Dockerfile . +fi -image=linaro/ci-${ARCHITECTURE}-ubuntu:${DISTRIBUTION} docker build --pull --tag=$image . echo $image > .docker-tag diff --git a/bullseye-arm64/build.sh b/bullseye-arm64/build.sh new file mode 120000 index 00000000..74c398cc --- /dev/null +++ b/bullseye-arm64/build.sh @@ -0,0 +1 @@ +../bullseye-amd64/build.sh
\ No newline at end of file diff --git a/bullseye-arm64/dummy.txt b/bullseye-arm64/dummy.txt new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/bullseye-arm64/dummy.txt diff --git a/jessie-armhf/Dockerfile b/bullseye-armhf/Dockerfile index 029d38fb..d9e5e0f4 100644 --- a/jessie-armhf/Dockerfile +++ b/bullseye-armhf/Dockerfile @@ -1,52 +1,56 @@ -FROM linaro/base-armhf-debian:jessie +FROM arm32v7/debian:bullseye -COPY *.list *.key /etc/apt/sources.list.d/ - -RUN apt-key add /etc/apt/sources.list.d/*.key \ - && echo 'locales locales/locales_to_be_generated multiselect C.UTF-8 UTF-8, en_US.UTF-8 UTF-8 ' | debconf-set-selections \ +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 \ - && apt-get update \ - && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y devscripts locales \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + && apt-get -q update \ + && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -qy \ + && DEBIAN_FRONTEND=noninteractive apt-get install -qy devscripts locales \ + && DEBIAN_FRONTEND=noninteractive apt-get install -qy --no-install-recommends \ abootimg \ acpica-tools \ - android-tools-fsutils \ autoconf \ automake \ bc \ bison \ build-essential \ ccache \ + cpio \ curl \ debhelper \ debian-archive-keyring \ debian-keyring \ + debootstrap \ device-tree-compiler \ + dosfstools \ doxygen \ fakeroot \ flex \ - gcc \ + genisoimage \ gdisk \ git \ kernel-wedge \ kpartx \ - lava-tool \ libtool \ - linaro-image-tools \ + libssl-dev \ lsb-release \ + lvm2 \ + mdadm \ + mtools \ + openjdk-11-jdk \ openssh-server \ - python-requests \ + parted \ + python3-cryptography \ + python3-pip \ + python3-requests \ qemu-user-static \ sudo \ time \ u-boot-tools \ uuid-dev \ wget \ + xz-utils \ zip \ zsync \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends -t jessie-backports openjdk-8-jdk \ - && update-java-alternatives -s java-1.8.0-openjdk-armhf \ && apt-get clean \ && rm -rf \ /etc/apt/sources.list.d/*.key \ diff --git a/xenial-amd64-chromium/build.sh b/bullseye-armhf/build.sh index 7b8d1454..131c34ce 100755 --- a/xenial-amd64-chromium/build.sh +++ b/bullseye-armhf/build.sh @@ -14,9 +14,12 @@ export LANG=C DISTRIBUTION=$(basename ${PWD} | cut -f1 -d '-') ARCHITECTURE=$(basename ${PWD} | cut -f2 -d '-') -cp -a ../linaro-overlay-repo.list ../linaro-overlay-repo.key . -sed -e "s|@DISTRIBUTION@|${DISTRIBUTION}|" -i *.list +image=linaro/jenkins-${ARCHITECTURE}-debian:${DISTRIBUTION} + +if [ ! -e Dockerfile ] +then + cp ../${DISTRIBUTION}-amd64/Dockerfile . +fi -image=linaro/ci-${ARCHITECTURE}-chromium-ubuntu:${DISTRIBUTION} docker build --pull --tag=$image . echo $image > .docker-tag diff --git a/jessie-arm64/Dockerfile b/buster-amd64-lkft/Dockerfile index 7081ee04..ddb07baa 100644 --- a/jessie-arm64/Dockerfile +++ b/buster-amd64-lkft/Dockerfile @@ -1,11 +1,14 @@ -FROM linaro/base-arm64-debian:jessie +FROM debian:buster COPY *.list *.key /etc/apt/sources.list.d/ -RUN apt-key add /etc/apt/sources.list.d/*.key \ +RUN dpkg --add-architecture i386 \ && 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 \ && apt-get update \ + ; DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends gnupg \ + && apt-key add /etc/apt/sources.list.d/*.key \ + && apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \ && DEBIAN_FRONTEND=noninteractive apt-get install -y devscripts locales \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ @@ -18,37 +21,53 @@ RUN apt-key add /etc/apt/sources.list.d/*.key \ bison \ build-essential \ ccache \ + chrpath \ + coreutils \ + cpio \ curl \ debhelper \ debian-archive-keyring \ debian-keyring \ device-tree-compiler \ + diffstat \ doxygen \ fakeroot \ flex \ + gawk \ gcc \ gdisk \ git \ kernel-wedge \ kpartx \ lava-tool \ + libelf-dev \ + libmagickwand-dev \ + libmath-prime-util-perl \ + libsdl1.2-dev \ + libssl-dev \ + libstdc++6:i386 \ libtool \ - libvirt-clients \ - linaro-image-tools \ lsb-release \ + openjdk-11-jdk \ openssh-server \ + pigz \ + python-pip \ python-requests \ + python3-requests \ qemu-user-static \ sudo \ + texinfo \ time \ u-boot-tools \ uuid-dev \ - virtinst \ + vim-tiny \ + virtualenv \ wget \ + whiptail \ + xz-utils \ zip \ + zlib1g:i386 \ zsync \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends -t jessie-backports openjdk-8-jdk \ - && update-java-alternatives -s java-1.8.0-openjdk-arm64 \ && apt-get clean \ && rm -rf \ /etc/apt/sources.list.d/*.key \ @@ -61,7 +80,14 @@ RUN useradd -m buildslave \ && chmod 440 /etc/sudoers.d/jenkins \ && mkdir -p /var/run/sshd -VOLUME ["/var/lib/libvirt"] +USER buildslave + +RUN pip install --user --force-reinstall jinja2-cli ruamel.yaml \ + && mkdir -p /home/buildslave/bin \ + && curl https://storage.googleapis.com/git-repo-downloads/repo > /home/buildslave/bin/repo \ + && chmod a+x /home/buildslave/bin/repo + +USER root EXPOSE 22 CMD ["/usr/sbin/sshd", "-D"] diff --git a/buster-amd64-lkft/build.sh b/buster-amd64-lkft/build.sh new file mode 100755 index 00000000..f8db251f --- /dev/null +++ b/buster-amd64-lkft/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-${DISTRIBUTION}.list ../linaro-overlay-obs.key . + +image=linaro/jenkins-${ARCHITECTURE}-debian-lkft:${DISTRIBUTION} +docker build --pull --tag=$image . +echo $image > .docker-tag diff --git a/buster-amd64/Dockerfile b/buster-amd64/Dockerfile new file mode 100644 index 00000000..42fd67b1 --- /dev/null +++ b/buster-amd64/Dockerfile @@ -0,0 +1,99 @@ +FROM debian:buster-backports + +COPY *.list *.key /etc/apt/sources.list.d/ + +ARG SPHINX_DOCS_DEPS="python3-sphinx texlive texlive-latex-extra libalgorithm-diff-perl \ + texlive-humanities texlive-generic-recommended texlive-generic-extra \ + latexmk" + +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 \ + && apt-get update \ + ; DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends gnupg \ + && apt-key add /etc/apt/sources.list.d/*.key \ + && apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y devscripts locales \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + abootimg \ + acpica-tools \ + android-tools-fsutils \ + ansible/buster-backports \ + autoconf \ + automake \ + bc \ + bison \ + build-essential \ + ccache \ + chrpath \ + cpio \ + curl \ + debhelper \ + debian-archive-keyring \ + debian-keyring \ + debootstrap \ + device-tree-compiler \ + dosfstools \ + doxygen \ + fakeroot \ + flex \ + gawk \ + gdisk \ + genisoimage \ + git \ + kernel-wedge \ + kpartx \ + lava-tool \ + libcurl4-openssl-dev \ + libssl-dev \ + libtool \ + liblz4-tool \ + lsb-release \ + lvm2 \ + mdadm \ + mtools \ + openjdk-11-jdk \ + openssh-server \ + parted \ + pigz \ + python3-cryptography \ + python3-jinja2 \ + python3-kerberos \ + python3-pip \ + python3-requests \ + python3-ruamel.yaml \ + python3-setuptools \ + qemu-user-static \ + sudo \ + time \ + u-boot-tools \ + uuid-dev \ + wget \ + xz-utils \ + zip \ + zstd \ + zsync \ + ${SPHINX_DOCS_DEPS} \ + && if [ $(uname -m) = 'x86_64' ]; then \ + DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + g++-multilib \ + libc6-dev-i386; fi \ + && pip3 install --no-cache-dir kas==2.6.2 \ + && pip3 install --no-cache-dir pyrsistent==0.18.0 \ + && apt-get clean \ + && rm -rf \ + /etc/apt/sources.list.d/*.key \ + /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 \ + && wget -q https://storage.googleapis.com/git-repo-downloads/repo -O /usr/bin/repo \ + && chmod +x /usr/bin/repo + + +EXPOSE 22 +CMD ["/usr/sbin/sshd", "-D"] diff --git a/buster-amd64/build.sh b/buster-amd64/build.sh new file mode 100755 index 00000000..36cb0d16 --- /dev/null +++ b/buster-amd64/build.sh @@ -0,0 +1,27 @@ +#!/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-${DISTRIBUTION}.list ../linaro-overlay-obs.key . + +image=linaro/jenkins-${ARCHITECTURE}-debian:${DISTRIBUTION} + +if [ ! -e Dockerfile ] +then + cp ../${DISTRIBUTION}-amd64/Dockerfile . +fi + +docker build --pull --tag=$image . +echo $image > .docker-tag diff --git a/buster-arm64/build.sh b/buster-arm64/build.sh new file mode 120000 index 00000000..a8685bb2 --- /dev/null +++ b/buster-arm64/build.sh @@ -0,0 +1 @@ +../buster-amd64/build.sh
\ No newline at end of file diff --git a/buster-arm64/dummy.txt b/buster-arm64/dummy.txt new file mode 100644 index 00000000..f43876b5 --- /dev/null +++ b/buster-arm64/dummy.txt @@ -0,0 +1 @@ +bump diff --git a/stretch-armhf/Dockerfile b/buster-armhf/Dockerfile index 15ce9904..c7ab5069 100644 --- a/stretch-armhf/Dockerfile +++ b/buster-armhf/Dockerfile @@ -1,13 +1,13 @@ -FROM linaro/base-armhf-debian:stretch +FROM arm32v7/debian:buster COPY *.list *.key /etc/apt/sources.list.d/ -RUN apt-get update \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends gnupg \ - && apt-key add /etc/apt/sources.list.d/*.key \ - && echo 'locales locales/locales_to_be_generated multiselect C.UTF-8 UTF-8, en_US.UTF-8 UTF-8 ' | debconf-set-selections \ +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 \ && apt-get update \ + ; DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends gnupg \ + && apt-key add /etc/apt/sources.list.d/*.key \ + && apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \ && DEBIAN_FRONTEND=noninteractive apt-get install -y devscripts locales \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ @@ -20,32 +20,42 @@ RUN apt-get update \ bison \ build-essential \ ccache \ + cpio \ curl \ debhelper \ debian-archive-keyring \ debian-keyring \ + debootstrap \ device-tree-compiler \ + dosfstools \ doxygen \ fakeroot \ flex \ - gcc \ + genisoimage \ gdisk \ git \ kernel-wedge \ kpartx \ lava-tool \ libtool \ - linaro-image-tools \ + libssl-dev \ lsb-release \ - openjdk-8-jdk \ + lvm2 \ + mdadm \ + mtools \ + openjdk-11-jdk \ openssh-server \ - python-requests \ + parted \ + python3-cryptography \ + python3-pip \ + python3-requests \ qemu-user-static \ sudo \ time \ u-boot-tools \ uuid-dev \ wget \ + xz-utils \ zip \ zsync \ && apt-get clean \ diff --git a/buster-armhf/build.sh b/buster-armhf/build.sh new file mode 100755 index 00000000..36cb0d16 --- /dev/null +++ b/buster-armhf/build.sh @@ -0,0 +1,27 @@ +#!/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-${DISTRIBUTION}.list ../linaro-overlay-obs.key . + +image=linaro/jenkins-${ARCHITECTURE}-debian:${DISTRIBUTION} + +if [ ! -e Dockerfile ] +then + cp ../${DISTRIBUTION}-amd64/Dockerfile . +fi + +docker build --pull --tag=$image . +echo $image > .docker-tag diff --git a/centos7-aarch64-openjdk/Dockerfile b/centos7-aarch64-openjdk/Dockerfile deleted file mode 100644 index 8f72396c..00000000 --- a/centos7-aarch64-openjdk/Dockerfile +++ /dev/null @@ -1,32 +0,0 @@ -FROM quay.io/fathi_boudra/centos:7-aarch64 - -RUN rpm --import http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-7 \ - && yum -y update \ - && yum --nogpgcheck --setopt=tsflags=nodocs -y install \ - alsa-lib-devel \ - ant \ - cups-devel \ - freetype-devel \ - gcc-c++ \ - git \ - java-1.8.0-openjdk \ - libX11-devel \ - libXext-devel \ - libXrender-devel \ - libXt-devel \ - libXtst-devel \ - mercurial \ - openssh-server \ - pkgconfig \ - xorg-x11-server-Xvfb \ - && rm -rf /var/cache/yum/* - -RUN useradd buildslave \ - && echo 'buildslave ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/jenkins \ - && echo 'Defaults:buildslave !requiretty' >> /etc/sudoers.d/jenkins \ - && chmod 0440 /etc/sudoers.d/jenkins \ - && mkdir -p /var/run/sshd \ - && /usr/sbin/sshd-keygen - -EXPOSE 22 -CMD ["/usr/sbin/sshd", "-D"] diff --git a/centos7-aarch64/Dockerfile b/centos7-aarch64/Dockerfile deleted file mode 100644 index f75a7d21..00000000 --- a/centos7-aarch64/Dockerfile +++ /dev/null @@ -1,30 +0,0 @@ -FROM linaro/base-aarch64-centos:7 - -ENV container docker - -RUN rpm --import http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-7 \ - && yum -y update \ - && yum --nogpgcheck --setopt=tsflags=nodocs -y install \ - git \ - java-1.8.0-openjdk \ - make \ - openssh-server \ - python-requests \ - rpm-build \ - virt-install \ - wget \ - yum-utils \ - && yum clean all \ - && rm -rf /var/cache/yum/* - -RUN useradd buildslave \ - && echo 'buildslave ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/jenkins \ - && echo 'Defaults:buildslave !requiretty' >> /etc/sudoers.d/jenkins \ - && chmod 0440 /etc/sudoers.d/jenkins \ - && mkdir -p /var/run/sshd \ - && /usr/sbin/sshd-keygen - -VOLUME ["/var/lib/libvirt"] - -EXPOSE 22 -CMD ["/usr/sbin/sshd", "-D"] diff --git a/centos7-aarch64/build.sh b/centos7-aarch64/build.sh deleted file mode 100755 index 90000540..00000000 --- a/centos7-aarch64/build.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -set -e - -export LANG=C - -ARCHITECTURE=$(basename ${PWD} | cut -f2 -d '-') - -image=linaro/ci-${ARCHITECTURE}-centos:7 -docker build --pull --tag=$image . -echo $image > .docker-tag diff --git a/centos7-amd64/Dockerfile b/centos7-amd64/Dockerfile new file mode 100644 index 00000000..3ad7ba4b --- /dev/null +++ b/centos7-amd64/Dockerfile @@ -0,0 +1,18 @@ +FROM centos:7 + +RUN yum install -y openssh-server openssh-clients sudo java-11-openjdk-devel wget python3-requests && \ + yum groupinstall -y "Development Tools" && \ + yum install -y ansible python36 && \ + yum clean all + +RUN useradd -m buildslave \ + && mkdir /home/buildslave/.ssh \ + && chown buildslave:buildslave /home/buildslave/.ssh \ + && chmod 700 /home/buildslave/.ssh \ + && echo 'buildslave ALL = NOPASSWD: ALL' > /etc/sudoers.d/jenkins \ + && chmod 0440 /etc/sudoers.d/jenkins \ + && /usr/bin/ssh-keygen -A \ + && rm -rf /run/nologin + +EXPOSE 22 +CMD ["/usr/sbin/sshd", "-D"] diff --git a/centos7-amd64/build.sh b/centos7-amd64/build.sh new file mode 100755 index 00000000..9b3c44e4 --- /dev/null +++ b/centos7-amd64/build.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +set -e + +trap cleanup_exit INT TERM EXIT + +cleanup_exit() +{ + rm -f setup-sshd +} + +export LANG=C + +cp -a ../setup-sshd . + +image=linaro/jenkins-amd64-centos:7 +docker build --pull --tag=$image . +echo $image > .docker-tag diff --git a/centos7-arm64/Dockerfile b/centos7-arm64/Dockerfile new file mode 100644 index 00000000..89e707ce --- /dev/null +++ b/centos7-arm64/Dockerfile @@ -0,0 +1,18 @@ +FROM centos:7 + +RUN yum install -y openssh-server openssh-clients java-11-openjdk-devel sudo wget python3-requests && \ + yum groupinstall -y "Development Tools" && \ + yum install -y ansible python36 && \ + yum clean all + +RUN useradd -m buildslave \ + && mkdir /home/buildslave/.ssh \ + && chown buildslave:buildslave /home/buildslave/.ssh \ + && chmod 700 /home/buildslave/.ssh \ + && echo 'buildslave ALL = NOPASSWD: ALL' > /etc/sudoers.d/jenkins \ + && chmod 0440 /etc/sudoers.d/jenkins \ + && /usr/bin/ssh-keygen -A \ + && rm -rf /run/nologin + +EXPOSE 22 +CMD ["/usr/sbin/sshd", "-D"] diff --git a/centos7-arm64/build.sh b/centos7-arm64/build.sh new file mode 100755 index 00000000..25f929a7 --- /dev/null +++ b/centos7-arm64/build.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +set -e + +trap cleanup_exit INT TERM EXIT + +cleanup_exit() +{ + rm -f setup-sshd +} + +export LANG=C + +cp -a ../setup-sshd . + +image=linaro/jenkins-arm64-centos:7 +docker build --pull --tag=$image . +echo $image > .docker-tag diff --git a/centos8-arm64/Dockerfile b/centos8-arm64/Dockerfile new file mode 100644 index 00000000..ab5ba069 --- /dev/null +++ b/centos8-arm64/Dockerfile @@ -0,0 +1,19 @@ +FROM centos:8 + +RUN dnf install -y openssh-server openssh-clients sudo wget python3-requests centos-release-ansible-29 && \ + dnf distrosync -y && \ + dnf groupinstall -y "Development Tools" && \ + dnf install -y ansible python36 && \ + dnf clean all + +RUN useradd -m buildslave \ + && mkdir /home/buildslave/.ssh \ + && chown buildslave:buildslave /home/buildslave/.ssh \ + && chmod 700 /home/buildslave/.ssh \ + && echo 'buildslave ALL = NOPASSWD: ALL' > /etc/sudoers.d/jenkins \ + && chmod 0440 /etc/sudoers.d/jenkins \ + && /usr/bin/ssh-keygen -A \ + && rm -rf /run/nologin + +EXPOSE 22 +CMD ["/usr/sbin/sshd", "-D"] diff --git a/centos8-arm64/build.sh b/centos8-arm64/build.sh new file mode 100755 index 00000000..9b64ffcb --- /dev/null +++ b/centos8-arm64/build.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +set -e + +trap cleanup_exit INT TERM EXIT + +cleanup_exit() +{ + rm -f setup-sshd +} + +export LANG=C + +cp -a ../setup-sshd . + +image=linaro/jenkins-arm64-centos:8 +docker build --pull --tag=$image . +echo $image > .docker-tag diff --git a/ci-amd64-deployments/Dockerfile b/ci-amd64-deployments/Dockerfile new file mode 100644 index 00000000..e4a10327 --- /dev/null +++ b/ci-amd64-deployments/Dockerfile @@ -0,0 +1,6 @@ +FROM python:3.10-alpine as build +COPY requirements.txt . +RUN pip3 install -r requirements.txt + +FROM scratch +COPY --from=build / / diff --git a/ci-amd64-deployments/build.sh b/ci-amd64-deployments/build.sh new file mode 100755 index 00000000..8641b5ef --- /dev/null +++ b/ci-amd64-deployments/build.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +set -e + +trap cleanup_exit INT TERM EXIT + +cleanup_exit() +{ + rm -f setup-sshd +} + +export LANG=C + +DISTRIBUTION=$(basename ${PWD} | cut -f1 -d '-') +ARCHITECTURE=$(basename ${PWD} | cut -f2 -d '-') + +image=linaro/ci-amd64-deployments:stable +docker build --pull --tag=$image . +echo $image > .docker-tag diff --git a/ci-amd64-deployments/requirements.txt b/ci-amd64-deployments/requirements.txt new file mode 100644 index 00000000..15eeb5c5 --- /dev/null +++ b/ci-amd64-deployments/requirements.txt @@ -0,0 +1,2 @@ +requests +prometheus-client diff --git a/ci-amd64-ledge/Dockerfile b/ci-amd64-ledge/Dockerfile new file mode 100644 index 00000000..2f0724d8 --- /dev/null +++ b/ci-amd64-ledge/Dockerfile @@ -0,0 +1,24 @@ +FROM debian:bookworm + +ENV DEBIAN_FRONTEND=noninteractive + +ENV PKGS="\ + git \ + ca-certificates \ + qemu-system-arm \ + qemu-system-x86 \ + qemu-system-gui- \ + swtpm \ +" + +RUN set -e ;\ + apt-get update -q=2 ;\ + apt-get full-upgrade -q=2 --yes ;\ + apt-get install -q=2 --yes --no-install-recommends ${PKGS} ;\ + # Build QEMU + git clone -b v2 https://gitlab.com/terceiro/qemu-swtpm.git /tmp/qemu-swtpm ;\ + cd /tmp/qemu-swtpm ;\ + ./install.sh ;\ + # Cleanup + apt clean ;\ + rm -rf /var/lib/apt/lists/* /tmp/* diff --git a/ci-amd64-ledge/build.sh b/ci-amd64-ledge/build.sh new file mode 100755 index 00000000..196562f8 --- /dev/null +++ b/ci-amd64-ledge/build.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +set -e + +trap cleanup_exit INT TERM EXIT + +cleanup_exit() +{ + rm -f setup-sshd +} + +export LANG=C + +image=linaro/ci-amd64-ledge:stable +docker build --pull --tag=$image . +echo $image > .docker-tag diff --git a/ci-amd64-llp-alpine/Dockerfile b/ci-amd64-llp-alpine/Dockerfile index ee804cdf..9bebc7da 100644 --- a/ci-amd64-llp-alpine/Dockerfile +++ b/ci-amd64-llp-alpine/Dockerfile @@ -1,4 +1,4 @@ -FROM alpine +FROM alpine:3.10 ARG APP_VERSION=? ENV APP_VERSION=$APP_VERSION @@ -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 py2-gunicorn py2-gevent 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/build.sh b/ci-amd64-llp-alpine/build.sh index d95f74fa..be06e09f 100755 --- a/ci-amd64-llp-alpine/build.sh +++ b/ci-amd64-llp-alpine/build.sh @@ -5,5 +5,5 @@ set -e export LANG=C image=linaro/ci-amd64-llp-alpine:latest -docker build --pull --tag=$image . +docker build --no-cache --pull --tag=$image . echo $image > .docker-tag diff --git a/ci-amd64-llp-alpine/docker_run.sh b/ci-amd64-llp-alpine/docker_run.sh index 52c27ae1..08e1b32f 100755 --- a/ci-amd64-llp-alpine/docker_run.sh +++ b/ci-amd64-llp-alpine/docker_run.sh @@ -12,15 +12,14 @@ if [ -z "$DJANGO_DEBUG" ] ; then echo "$html_header" >> /srv/header_override.html fi - if [ ! -z "$DJANGO_MIGRATE" ]; then - python $APPDIR/manage.py migrate --noinput - fi - if [ ! -z "$DJANGO_COLLECTSTATIC" ]; then - python $APPDIR/manage.py collectstatic --noinput - fi + exec /usr/bin/gunicorn --timeout 180 -w4 -k gevent -b 0.0.0.0:$PORT $LLP_APP +fi - exec /usr/bin/gunicorn -w4 -b 0.0.0.0:$PORT $LLP_APP +if [ ! -z "$DJANGO_MIGRATE" ]; then + python $APPDIR/manage.py migrate --noinput --settings=$DJANGO_SETTINGS_MODULE +fi +if [ ! -z "$DJANGO_COLLECTSTATIC" ]; then + python $APPDIR/manage.py collectstatic --noinput --settings=$DJANGO_SETTINGS_MODULE fi -python $APPDIR/manage.py migrate --noinput --settings=settings -exec python $APPDIR/manage.py runserver 0.0.0.0:8080 --settings=settings +exec python $APPDIR/manage.py runserver 0.0.0.0:8080 --settings=$DJANGO_SETTINGS_MODULE 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/ci-amd64-serverless/Dockerfile b/ci-amd64-serverless/Dockerfile new file mode 100644 index 00000000..92fe30f9 --- /dev/null +++ b/ci-amd64-serverless/Dockerfile @@ -0,0 +1,17 @@ +FROM python:3.7-buster + +WORKDIR /usr/src/ci-serverless + +COPY Pipfile* ./ + +RUN pip install pipenv awscli && \ + pipenv install --deploy --system --dev && \ + aws configure set default.region us-east-1 + +RUN curl -o terraform.zip https://releases.hashicorp.com/terraform/0.12.24/terraform_0.12.24_linux_amd64.zip && \ + unzip terraform.zip && \ + mv terraform /bin/ && \ + rm terraform.zip + +ENV LC_ALL C.UTF-8 + diff --git a/ci-amd64-serverless/Pipfile b/ci-amd64-serverless/Pipfile new file mode 100644 index 00000000..f04ce802 --- /dev/null +++ b/ci-amd64-serverless/Pipfile @@ -0,0 +1,24 @@ +[[source]] +name = "pypi" +url = "https://pypi.org/simple" +verify_ssl = true + +[dev-packages] +black = "*" +flake8 = "*" +flake8-coding = "*" +pytest = "*" +pytest-cov = "*" + +[packages] +zappa = "*" +flask-restful = "*" +flask-api = "*" +requests = "*" +blinker = "*" + +[requires] +python_version = "3.7" + +[pipenv] +allow_prereleases = true diff --git a/ci-amd64-serverless/Pipfile.lock b/ci-amd64-serverless/Pipfile.lock new file mode 100644 index 00000000..f540745e --- /dev/null +++ b/ci-amd64-serverless/Pipfile.lock @@ -0,0 +1,569 @@ +{ + "_meta": { + "hash": { + "sha256": "cd8e1efea7d3ea0ab51a08d9f00f966f5391a12f08654b65e7c58c64d781086c" + }, + "pipfile-spec": 6, + "requires": { + "python_version": "3.7" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "aniso8601": { + "hashes": [ + "sha256:529dcb1f5f26ee0df6c0a1ee84b7b27197c3c50fc3a6321d66c544689237d072", + "sha256:c033f63d028b9a58e3ab0c2c7d0532ab4bfa7452bfc788fbfe3ddabd327b181a" + ], + "version": "==8.0.0" + }, + "argcomplete": { + "hashes": [ + "sha256:5ae7b601be17bf38a749ec06aa07fb04e7b6b5fc17906948dc1866e7facf3740", + "sha256:890bdd1fcbb973ed73db241763e78b6d958580e588c2910b508c770a59ef37d7" + ], + "version": "==1.11.1" + }, + "blinker": { + "hashes": [ + "sha256:471aee25f3992bd325afa3772f1063dbdbbca947a041b8b89466dc00d606f8b6" + ], + "index": "pypi", + "version": "==1.4" + }, + "boto3": { + "hashes": [ + "sha256:bd005143eadea91dcba536caffcdd19d9a4dbefa7f59ddd503ef0ef2e5079c36", + "sha256:c205c9d69beb43f1dee6f8c30029a418afe1f82fc52a254d9f3b5ab24ee5dd00" + ], + "version": "==1.12.42" + }, + "botocore": { + "hashes": [ + "sha256:1b7730de543a751c2491f1510688f3c34a8b9669998d8b88f8facf6c3be3c790", + "sha256:2ce77c2b11253b64a3d7ec0aa696c064d6ed83c32e6288fc2d59f485f8119828" + ], + "version": "==1.15.42" + }, + "certifi": { + "hashes": [ + "sha256:1d987a998c75633c40847cc966fcf5904906c920a7f17ef374f5aa4282abd304", + "sha256:51fcb31174be6e6664c5f69e3e1691a2d72a1a12e90f872cbdb1567eb47b6519" + ], + "version": "==2020.4.5.1" + }, + "cfn-flip": { + "hashes": [ + "sha256:2bed32a1f4dca26dc64178d52511fd4ef778b5ccbcf32559cac884ace75bde6a" + ], + "version": "==1.2.3" + }, + "chardet": { + "hashes": [ + "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae", + "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691" + ], + "version": "==3.0.4" + }, + "click": { + "hashes": [ + "sha256:8a18b4ea89d8820c5d0c7da8a64b2c324b4dabb695804dbfea19b9be9d88c0cc", + "sha256:e345d143d80bf5ee7534056164e5e112ea5e22716bbb1ce727941f4c8b471b9a" + ], + "version": "==7.1.1" + }, + "docutils": { + "hashes": [ + "sha256:6c4f696463b79f1fb8ba0c594b63840ebd41f059e92b31957c46b74a4599b6d0", + "sha256:9e4d7ecfc600058e07ba661411a2b7de2fd0fafa17d1a7f7361cd47b1175c827", + "sha256:a2aeea129088da402665e92e0b25b04b073c04b2dce4ab65caaa38b7ce2e1a99" + ], + "version": "==0.15.2" + }, + "durationpy": { + "hashes": [ + "sha256:5ef9416b527b50d722f34655becfb75e49228eb82f87b855ed1911b3314b5408" + ], + "version": "==0.5" + }, + "flask": { + "hashes": [ + "sha256:4efa1ae2d7c9865af48986de8aeb8504bf32c7f3d6fdc9353d34b21f4b127060", + "sha256:8a4fdd8936eba2512e9c85df320a37e694c93945b33ef33c89946a340a238557" + ], + "version": "==1.1.2" + }, + "flask-api": { + "hashes": [ + "sha256:3d4cfb2ff214af9957f61455f660b5cfa181d6112e56cda526011bbe7af2a09e", + "sha256:6986642e5b25b7def710ca9489ed2b88c94006bfc06eca01c78da7cf447e66e5" + ], + "index": "pypi", + "version": "==2.0" + }, + "flask-restful": { + "hashes": [ + "sha256:5ea9a5991abf2cb69b4aac19793faac6c032300505b325687d7c305ffaa76915", + "sha256:d891118b951921f1cec80cabb4db98ea6058a35e6404788f9e70d5b243813ec2" + ], + "index": "pypi", + "version": "==0.3.8" + }, + "future": { + "hashes": [ + "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d" + ], + "version": "==0.18.2" + }, + "hjson": { + "hashes": [ + "sha256:1d1727faa6aaef2973921877125a3ab7c5f6d34b93233179d01770f41fab51f9" + ], + "version": "==3.0.1" + }, + "idna": { + "hashes": [ + "sha256:7588d1c14ae4c77d74036e8c22ff447b26d0fde8f007354fd48a7814db15b7cb", + "sha256:a068a21ceac8a4d63dbfd964670474107f541babbd2250d61922f029858365fa" + ], + "version": "==2.9" + }, + "itsdangerous": { + "hashes": [ + "sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19", + "sha256:b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749" + ], + "version": "==1.1.0" + }, + "jinja2": { + "hashes": [ + "sha256:c10142f819c2d22bdcd17548c46fa9b77cf4fda45097854c689666bf425e7484", + "sha256:c922560ac46888d47384de1dbdc3daaa2ea993af4b26a436dec31fa2c19ec668" + ], + "version": "==3.0.0a1" + }, + "jmespath": { + "hashes": [ + "sha256:695cb76fa78a10663425d5b73ddc5714eb711157e52704d69be03b1a02ba4fec", + "sha256:cca55c8d153173e21baa59983015ad0daf603f9cb799904ff057bfb8ff8dc2d9" + ], + "version": "==0.9.5" + }, + "kappa": { + "hashes": [ + "sha256:4b5b372872f25d619e427e04282551048dc975a107385b076b3ffc6406a15833", + "sha256:4d6b7b3accce4a0aaaac92b36237a6304f0f2fffbbe3caea3f7c9f52d12c9989" + ], + "version": "==0.6.0" + }, + "markupsafe": { + "hashes": [ + "sha256:06358015a4dee8ee23ae426bf885616ab3963622defd829eb45b44e3dee3515f", + "sha256:0b0c4fc852c5f02c6277ef3b33d23fcbe89b1b227460423e3335374da046b6db", + "sha256:267677fc42afed5094fc5ea1c4236bbe4b6a00fe4b08e93451e65ae9048139c7", + "sha256:303cb70893e2c345588fb5d5b86e0ca369f9bb56942f03064c5e3e75fa7a238a", + "sha256:3c9b624a0d9ed5a5093ac4edc4e823e6b125441e60ef35d36e6f4a6fdacd5054", + "sha256:42033e14cae1f6c86fc0c3e90d04d08ce73ac8e46ba420a0d22d545c2abd4977", + "sha256:4e4a99b6af7bdc0856b50020c095848ec050356a001e1f751510aef6ab14d0e0", + "sha256:4eb07faad54bb07427d848f31030a65a49ebb0cec0b30674f91cf1ddd456bfe4", + "sha256:63a7161cd8c2bc563feeda45df62f42c860dd0675e2b8da2667f25bb3c95eaba", + "sha256:68e0fd039b68d2945b4beb947d4023ca7f8e95b708031c345762efba214ea761", + "sha256:8092a63397025c2f655acd42784b2a1528339b90b987beb9253f22e8cdbb36c3", + "sha256:841218860683c0f2223e24756843d84cc49cccdae6765e04962607754a52d3e0", + "sha256:94076b2314bd2f6cfae508ad65b4d493e3a58a50112b7a2cbb6287bdbc404ae8", + "sha256:9d22aff1c5322e402adfb3ce40839a5056c353e711c033798cf4f02eb9f5124d", + "sha256:b0e4584f62b3e5f5c1a7bcefd2b52f236505e6ef032cc508caa4f4c8dc8d3af1", + "sha256:b1163ffc1384d242964426a8164da12dbcdbc0de18ea36e2c34b898ed38c3b45", + "sha256:beac28ed60c8e838301226a7a85841d0af2068eba2dcb1a58c2d32d6c05e440e", + "sha256:c29f096ce79c03054a1101d6e5fe6bf04b0bb489165d5e0e9653fb4fe8048ee1", + "sha256:c58779966d53e5f14ba393d64e2402a7926601d1ac8adeb4e83893def79d0428", + "sha256:cfe14b37908eaf7d5506302987228bff69e1b8e7071ccd4e70fd0283b1b47f0b", + "sha256:e834249c45aa9837d0753351cdca61a4b8b383cc9ad0ff2325c97ff7b69e72a6", + "sha256:eed1b234c4499811ee85bcefa22ef5e466e75d132502226ed29740d593316c1f" + ], + "version": "==2.0.0a1" + }, + "pip-tools": { + "hashes": [ + "sha256:2045d0414e9db71c036443efa229ff1b76dfe47a3cb022d6154a1c9e207f0867", + "sha256:4fdc317a331de8affe481509d7efea7e72fc5cca6c9f6cacbe778617680961fe" + ], + "version": "==5.0.0" + }, + "placebo": { + "hashes": [ + "sha256:03157f8527bbc2965b71b88f4a139ef8038618b346787f20d63e3c5da541b047" + ], + "version": "==0.9.0" + }, + "python-dateutil": { + "hashes": [ + "sha256:891c38b2a02f5bb1be3e4793866c8df49c7d19baabf9c1bad62547e0b4866aca", + "sha256:95511bae634d69bc7329ba55e646499a842bc4ec342ad54a8cdb65645a0aad3c" + ], + "version": "==2.6.1" + }, + "python-slugify": { + "hashes": [ + "sha256:a8fc3433821140e8f409a9831d13ae5deccd0b033d4744d94b31fea141bdd84c" + ], + "version": "==4.0.0" + }, + "pytz": { + "hashes": [ + "sha256:1c557d7d0e871de1f5ccd5833f60fb2550652da6be2693c1e02300743d21500d", + "sha256:b02c06db6cf09c12dd25137e563b31700d3b80fcc4ad23abb7a315f2789819be" + ], + "version": "==2019.3" + }, + "pyyaml": { + "hashes": [ + "sha256:06a0d7ba600ce0b2d2fe2e78453a470b5a6e000a985dd4a4e54e436cc36b0e97", + "sha256:240097ff019d7c70a4922b6869d8a86407758333f02203e0fc6ff79c5dcede76", + "sha256:4f4b913ca1a7319b33cfb1369e91e50354d6f07a135f3b901aca02aa95940bd2", + "sha256:69f00dca373f240f842b2931fb2c7e14ddbacd1397d57157a9b005a6a9942648", + "sha256:73f099454b799e05e5ab51423c7bcf361c58d3206fa7b0d555426b1f4d9a3eaf", + "sha256:74809a57b329d6cc0fdccee6318f44b9b8649961fa73144a98735b0aaf029f1f", + "sha256:7739fc0fa8205b3ee8808aea45e968bc90082c10aef6ea95e855e10abf4a37b2", + "sha256:95f71d2af0ff4227885f7a6605c37fd53d3a106fcab511b8860ecca9fcf400ee", + "sha256:b8eac752c5e14d3eca0e6dd9199cd627518cb5ec06add0de9d32baeee6fe645d", + "sha256:cc8955cfbfc7a115fa81d85284ee61147059a753344bc51098f3ccd69b0d7e0c", + "sha256:d13155f591e6fcc1ec3b30685d50bf0711574e2c0dfffd7644babf8b5102ca1a" + ], + "version": "==5.3.1" + }, + "requests": { + "hashes": [ + "sha256:43999036bfa82904b6af1d99e4882b560e5e2c68e5c4b0aa03b655f3d7d73fee", + "sha256:b3f43d496c6daba4493e7c431722aeb7dbc6288f52a6e04e7b6023b0247817e6" + ], + "index": "pypi", + "version": "==2.23.0" + }, + "s3transfer": { + "hashes": [ + "sha256:2482b4259524933a022d59da830f51bd746db62f047d6eb213f2f8855dcb8a13", + "sha256:921a37e2aefc64145e7b73d50c71bb4f26f46e4c9f414dc648c6245ff92cf7db" + ], + "version": "==0.3.3" + }, + "six": { + "hashes": [ + "sha256:236bdbdce46e6e6a3d61a337c0f8b763ca1e8717c03b369e87a7ec7ce1319c0a", + "sha256:8f3cd2e254d8f793e7f3d6d9df77b92252b52637291d0f0da013c76ea2724b6c" + ], + "version": "==1.14.0" + }, + "text-unidecode": { + "hashes": [ + "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8", + "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93" + ], + "version": "==1.3" + }, + "toml": { + "hashes": [ + "sha256:229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c", + "sha256:235682dd292d5899d361a811df37e04a8828a5b1da3115886b73cf81ebc9100e" + ], + "version": "==0.10.0" + }, + "tqdm": { + "hashes": [ + "sha256:00339634a22c10a7a22476ee946bbde2dbe48d042ded784e4d88e0236eca5d81", + "sha256:ea9e3fd6bd9a37e8783d75bfc4c1faf3c6813da6bd1c3e776488b41ec683af94" + ], + "version": "==4.45.0" + }, + "troposphere": { + "hashes": [ + "sha256:3dbc8c438b9694a39035e29bbcb00fcd3890c9e24a6b938873d6e9afae6e4d9c" + ], + "version": "==2.6.0" + }, + "urllib3": { + "hashes": [ + "sha256:3018294ebefce6572a474f0604c2021e33b3fd8006ecd11d62107a5d2a963527", + "sha256:88206b0eb87e6d677d424843ac5209e3fb9d0190d0ee169599165ec25e9d9115" + ], + "markers": "python_version != '3.4'", + "version": "==1.25.9" + }, + "werkzeug": { + "hashes": [ + "sha256:1e0dedc2acb1f46827daa2e399c1485c8fa17c0d8e70b6b875b4e7f54bf408d2", + "sha256:b353856d37dec59d6511359f97f6a4b2468442e454bd1c98298ddce53cac1f04" + ], + "version": "==0.16.1" + }, + "wheel": { + "hashes": [ + "sha256:8788e9155fe14f54164c1b9eb0a319d98ef02c160725587ad60f14ddc57b6f96", + "sha256:df277cb51e61359aba502208d680f90c0493adec6f0e848af94948778aed386e" + ], + "version": "==0.34.2" + }, + "wsgi-request-logger": { + "hashes": [ + "sha256:445d7ec52799562f812006394d0b4a7064b37084c6ea6bd74ea7a2136c97ed83" + ], + "version": "==0.4.6" + }, + "zappa": { + "hashes": [ + "sha256:c6e740334c1c39e644a345124b7317003420b632a8f7a6811d18b82bb16e2f8e", + "sha256:ccfc336d3bc48a6898cbbd157e16653f717dbe3ca37f933ce40acfe242a03a40" + ], + "index": "pypi", + "version": "==0.51.0" + } + }, + "develop": { + "appdirs": { + "hashes": [ + "sha256:9e5896d1372858f8dd3344faf4e5014d21849c756c8d5701f78f8a103b372d92", + "sha256:d8b24664561d0d34ddfaec54636d502d7cea6e29c3eaf68f3df6180863e2166e" + ], + "version": "==1.4.3" + }, + "attrs": { + "hashes": [ + "sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c", + "sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72" + ], + "version": "==19.3.0" + }, + "black": { + "hashes": [ + "sha256:1b30e59be925fafc1ee4565e5e08abef6b03fe455102883820fe5ee2e4734e0b", + "sha256:c2edb73a08e9e0e6f65a0e6af18b059b8b1cdd5bef997d7a0b181df93dc81539" + ], + "index": "pypi", + "version": "==19.10b0" + }, + "click": { + "hashes": [ + "sha256:8a18b4ea89d8820c5d0c7da8a64b2c324b4dabb695804dbfea19b9be9d88c0cc", + "sha256:e345d143d80bf5ee7534056164e5e112ea5e22716bbb1ce727941f4c8b471b9a" + ], + "version": "==7.1.1" + }, + "coverage": { + "hashes": [ + "sha256:00f1d23f4336efc3b311ed0d807feb45098fc86dee1ca13b3d6768cdab187c8a", + "sha256:01333e1bd22c59713ba8a79f088b3955946e293114479bbfc2e37d522be03355", + "sha256:0cb4be7e784dcdc050fc58ef05b71aa8e89b7e6636b99967fadbdba694cf2b65", + "sha256:0e61d9803d5851849c24f78227939c701ced6704f337cad0a91e0972c51c1ee7", + "sha256:1601e480b9b99697a570cea7ef749e88123c04b92d84cedaa01e117436b4a0a9", + "sha256:2742c7515b9eb368718cd091bad1a1b44135cc72468c731302b3d641895b83d1", + "sha256:2d27a3f742c98e5c6b461ee6ef7287400a1956c11421eb574d843d9ec1f772f0", + "sha256:402e1744733df483b93abbf209283898e9f0d67470707e3c7516d84f48524f55", + "sha256:5c542d1e62eece33c306d66fe0a5c4f7f7b3c08fecc46ead86d7916684b36d6c", + "sha256:5f2294dbf7875b991c381e3d5af2bcc3494d836affa52b809c91697449d0eda6", + "sha256:6402bd2fdedabbdb63a316308142597534ea8e1895f4e7d8bf7476c5e8751fef", + "sha256:66460ab1599d3cf894bb6baee8c684788819b71a5dc1e8fa2ecc152e5d752019", + "sha256:782caea581a6e9ff75eccda79287daefd1d2631cc09d642b6ee2d6da21fc0a4e", + "sha256:79a3cfd6346ce6c13145731d39db47b7a7b859c0272f02cdb89a3bdcbae233a0", + "sha256:7a5bdad4edec57b5fb8dae7d3ee58622d626fd3a0be0dfceda162a7035885ecf", + "sha256:8fa0cbc7ecad630e5b0f4f35b0f6ad419246b02bc750de7ac66db92667996d24", + "sha256:a027ef0492ede1e03a8054e3c37b8def89a1e3c471482e9f046906ba4f2aafd2", + "sha256:a3f3654d5734a3ece152636aad89f58afc9213c6520062db3978239db122f03c", + "sha256:a82b92b04a23d3c8a581fc049228bafde988abacba397d57ce95fe95e0338ab4", + "sha256:acf3763ed01af8410fc36afea23707d4ea58ba7e86a8ee915dfb9ceff9ef69d0", + "sha256:adeb4c5b608574a3d647011af36f7586811a2c1197c861aedb548dd2453b41cd", + "sha256:b83835506dfc185a319031cf853fa4bb1b3974b1f913f5bb1a0f3d98bdcded04", + "sha256:bb28a7245de68bf29f6fb199545d072d1036a1917dca17a1e75bbb919e14ee8e", + "sha256:bf9cb9a9fd8891e7efd2d44deb24b86d647394b9705b744ff6f8261e6f29a730", + "sha256:c317eaf5ff46a34305b202e73404f55f7389ef834b8dbf4da09b9b9b37f76dd2", + "sha256:dbe8c6ae7534b5b024296464f387d57c13caa942f6d8e6e0346f27e509f0f768", + "sha256:de807ae933cfb7f0c7d9d981a053772452217df2bf38e7e6267c9cbf9545a796", + "sha256:dead2ddede4c7ba6cb3a721870f5141c97dc7d85a079edb4bd8d88c3ad5b20c7", + "sha256:dec5202bfe6f672d4511086e125db035a52b00f1648d6407cc8e526912c0353a", + "sha256:e1ea316102ea1e1770724db01998d1603ed921c54a86a2efcb03428d5417e489", + "sha256:f90bfc4ad18450c80b024036eaf91e4a246ae287701aaa88eaebebf150868052" + ], + "version": "==5.1" + }, + "entrypoints": { + "hashes": [ + "sha256:589f874b313739ad35be6e0cd7efde2a4e9b6fea91edcc34e58ecbb8dbe56d19", + "sha256:c70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451" + ], + "version": "==0.3" + }, + "flake8": { + "hashes": [ + "sha256:45681a117ecc81e870cbf1262835ae4af5e7a8b08e40b944a8a6e6b895914cfb", + "sha256:49356e766643ad15072a789a20915d3c91dc89fd313ccd71802303fd67e4deca" + ], + "index": "pypi", + "version": "==3.7.9" + }, + "flake8-coding": { + "hashes": [ + "sha256:79704112c44d09d4ab6c8965e76a20c3f7073d52146db60303bce777d9612260", + "sha256:b8f4d5157a8f74670e6cfea732c3d9f4291a4e994c8701d2c55f787c6e6cb741" + ], + "index": "pypi", + "version": "==1.3.2" + }, + "mccabe": { + "hashes": [ + "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", + "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f" + ], + "version": "==0.6.1" + }, + "more-itertools": { + "hashes": [ + "sha256:5dd8bcf33e5f9513ffa06d5ad33d78f31e1931ac9a18f33d37e77a180d393a7c", + "sha256:b1ddb932186d8a6ac451e1d95844b382f55e12686d51ca0c68b6f61f2ab7a507" + ], + "version": "==8.2.0" + }, + "packaging": { + "hashes": [ + "sha256:3c292b474fda1671ec57d46d739d072bfd495a4f51ad01a055121d81e952b7a3", + "sha256:82f77b9bee21c1bafbf35a84905d604d5d1223801d639cf3ed140bd651c08752" + ], + "version": "==20.3" + }, + "pathspec": { + "hashes": [ + "sha256:7d91249d21749788d07a2d0f94147accd8f845507400749ea19c1ec9054a12b0", + "sha256:da45173eb3a6f2a5a487efba21f050af2b41948be6ab52b6a1e3ff22bb8b7061" + ], + "version": "==0.8.0" + }, + "pluggy": { + "hashes": [ + "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0", + "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d" + ], + "version": "==0.13.1" + }, + "py": { + "hashes": [ + "sha256:5e27081401262157467ad6e7f851b7aa402c5852dbcb3dae06768434de5752aa", + "sha256:c20fdd83a5dbc0af9efd622bee9a5564e278f6380fffcacc43ba6f43db2813b0" + ], + "version": "==1.8.1" + }, + "pycodestyle": { + "hashes": [ + "sha256:95a2219d12372f05704562a14ec30bc76b05a5b297b21a5dfe3f6fac3491ae56", + "sha256:e40a936c9a450ad81df37f549d676d127b1b66000a6c500caa2b085bc0ca976c" + ], + "version": "==2.5.0" + }, + "pyflakes": { + "hashes": [ + "sha256:17dbeb2e3f4d772725c777fabc446d5634d1038f234e77343108ce445ea69ce0", + "sha256:d976835886f8c5b31d47970ed689944a0262b5f3afa00a5a7b4dc81e5449f8a2" + ], + "version": "==2.1.1" + }, + "pyparsing": { + "hashes": [ + "sha256:67199f0c41a9c702154efb0e7a8cc08accf830eb003b4d9fa42c4059002e2492", + "sha256:700d17888d441604b0bd51535908dcb297561b040819cccde647a92439db5a2a" + ], + "version": "==3.0.0a1" + }, + "pytest": { + "hashes": [ + "sha256:0e5b30f5cb04e887b91b1ee519fa3d89049595f428c1db76e73bd7f17b09b172", + "sha256:84dde37075b8805f3d1f392cc47e38a0e59518fb46a431cfdaf7cf1ce805f970" + ], + "index": "pypi", + "version": "==5.4.1" + }, + "pytest-cov": { + "hashes": [ + "sha256:cc6742d8bac45070217169f5f72ceee1e0e55b0221f54bcf24845972d3a47f2b", + "sha256:cdbdef4f870408ebdbfeb44e63e07eb18bb4619fae852f6e760645fa36172626" + ], + "index": "pypi", + "version": "==2.8.1" + }, + "regex": { + "hashes": [ + "sha256:08119f707f0ebf2da60d2f24c2f39ca616277bb67ef6c92b72cbf90cbe3a556b", + "sha256:0ce9537396d8f556bcfc317c65b6a0705320701e5ce511f05fc04421ba05b8a8", + "sha256:1cbe0fa0b7f673400eb29e9ef41d4f53638f65f9a2143854de6b1ce2899185c3", + "sha256:2294f8b70e058a2553cd009df003a20802ef75b3c629506be20687df0908177e", + "sha256:23069d9c07e115537f37270d1d5faea3e0bdded8279081c4d4d607a2ad393683", + "sha256:24f4f4062eb16c5bbfff6a22312e8eab92c2c99c51a02e39b4eae54ce8255cd1", + "sha256:295badf61a51add2d428a46b8580309c520d8b26e769868b922750cf3ce67142", + "sha256:2a3bf8b48f8e37c3a40bb3f854bf0121c194e69a650b209628d951190b862de3", + "sha256:4385f12aa289d79419fede43f979e372f527892ac44a541b5446617e4406c468", + "sha256:5635cd1ed0a12b4c42cce18a8d2fb53ff13ff537f09de5fd791e97de27b6400e", + "sha256:5bfed051dbff32fd8945eccca70f5e22b55e4148d2a8a45141a3b053d6455ae3", + "sha256:7e1037073b1b7053ee74c3c6c0ada80f3501ec29d5f46e42669378eae6d4405a", + "sha256:90742c6ff121a9c5b261b9b215cb476eea97df98ea82037ec8ac95d1be7a034f", + "sha256:a58dd45cb865be0ce1d5ecc4cfc85cd8c6867bea66733623e54bd95131f473b6", + "sha256:c087bff162158536387c53647411db09b6ee3f9603c334c90943e97b1052a156", + "sha256:c162a21e0da33eb3d31a3ac17a51db5e634fc347f650d271f0305d96601dc15b", + "sha256:c9423a150d3a4fc0f3f2aae897a59919acd293f4cb397429b120a5fcd96ea3db", + "sha256:ccccdd84912875e34c5ad2d06e1989d890d43af6c2242c6fcfa51556997af6cd", + "sha256:e91ba11da11cf770f389e47c3f5c30473e6d85e06d7fd9dcba0017d2867aab4a", + "sha256:ea4adf02d23b437684cd388d557bf76e3afa72f7fed5bbc013482cc00c816948", + "sha256:fb95debbd1a824b2c4376932f2216cc186912e389bdb0e27147778cf6acb3f89" + ], + "version": "==2020.4.4" + }, + "six": { + "hashes": [ + "sha256:236bdbdce46e6e6a3d61a337c0f8b763ca1e8717c03b369e87a7ec7ce1319c0a", + "sha256:8f3cd2e254d8f793e7f3d6d9df77b92252b52637291d0f0da013c76ea2724b6c" + ], + "version": "==1.14.0" + }, + "toml": { + "hashes": [ + "sha256:229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c", + "sha256:235682dd292d5899d361a811df37e04a8828a5b1da3115886b73cf81ebc9100e" + ], + "version": "==0.10.0" + }, + "typed-ast": { + "hashes": [ + "sha256:0666aa36131496aed8f7be0410ff974562ab7eeac11ef351def9ea6fa28f6355", + "sha256:0c2c07682d61a629b68433afb159376e24e5b2fd4641d35424e462169c0a7919", + "sha256:249862707802d40f7f29f6e1aad8d84b5aa9e44552d2cc17384b209f091276aa", + "sha256:24995c843eb0ad11a4527b026b4dde3da70e1f2d8806c99b7b4a7cf491612652", + "sha256:269151951236b0f9a6f04015a9004084a5ab0d5f19b57de779f908621e7d8b75", + "sha256:4083861b0aa07990b619bd7ddc365eb7fa4b817e99cf5f8d9cf21a42780f6e01", + "sha256:498b0f36cc7054c1fead3d7fc59d2150f4d5c6c56ba7fb150c013fbc683a8d2d", + "sha256:4e3e5da80ccbebfff202a67bf900d081906c358ccc3d5e3c8aea42fdfdfd51c1", + "sha256:6daac9731f172c2a22ade6ed0c00197ee7cc1221aa84cfdf9c31defeb059a907", + "sha256:715ff2f2df46121071622063fc7543d9b1fd19ebfc4f5c8895af64a77a8c852c", + "sha256:73d785a950fc82dd2a25897d525d003f6378d1cb23ab305578394694202a58c3", + "sha256:8c8aaad94455178e3187ab22c8b01a3837f8ee50e09cf31f1ba129eb293ec30b", + "sha256:8ce678dbaf790dbdb3eba24056d5364fb45944f33553dd5869b7580cdbb83614", + "sha256:aaee9905aee35ba5905cfb3c62f3e83b3bec7b39413f0a7f19be4e547ea01ebb", + "sha256:bcd3b13b56ea479b3650b82cabd6b5343a625b0ced5429e4ccad28a8973f301b", + "sha256:c9e348e02e4d2b4a8b2eedb48210430658df6951fa484e59de33ff773fbd4b41", + "sha256:d205b1b46085271b4e15f670058ce182bd1199e56b317bf2ec004b6a44f911f6", + "sha256:d43943ef777f9a1c42bf4e552ba23ac77a6351de620aa9acf64ad54933ad4d34", + "sha256:d5d33e9e7af3b34a40dc05f498939f0ebf187f07c385fd58d591c533ad8562fe", + "sha256:fc0fea399acb12edbf8a628ba8d2312f583bdbdb3335635db062fa98cf71fca4", + "sha256:fe460b922ec15dd205595c9b5b99e2f056fd98ae8f9f56b888e7a17dc2b757e7" + ], + "version": "==1.4.1" + }, + "wcwidth": { + "hashes": [ + "sha256:cafe2186b3c009a04067022ce1dcd79cb38d8d65ee4f4791b8888d6599d1bbe1", + "sha256:ee73862862a156bf77ff92b09034fc4825dd3af9cf81bc5b360668d425f3c5f1" + ], + "version": "==0.1.9" + } + } +} diff --git a/trusty-amd64-art/build.sh b/ci-amd64-serverless/build.sh index 14167821..f87632a0 100755 --- a/trusty-amd64-art/build.sh +++ b/ci-amd64-serverless/build.sh @@ -2,11 +2,18 @@ set -e +trap cleanup_exit INT TERM EXIT + +cleanup_exit() +{ + rm -f setup-sshd +} + 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-amd64-serverless:stable docker build --pull --tag=$image . echo $image > .docker-tag diff --git a/fedora23-aarch64-openjdk/Dockerfile b/fedora23-aarch64-openjdk/Dockerfile deleted file mode 100644 index b5fd8db7..00000000 --- a/fedora23-aarch64-openjdk/Dockerfile +++ /dev/null @@ -1,30 +0,0 @@ -FROM quay.io/fathi_boudra/fedora:23-aarch64 - -RUN dnf -y update \ - && dnf --nogpgcheck --setopt=tsflags=nodocs -y install \ - alsa-lib-devel \ - ant \ - cups-devel \ - freetype-devel \ - gcc-c++ \ - git \ - java-1.8.0-openjdk \ - mercurial \ - libX11-devel \ - libXext-devel \ - libXrender-devel \ - libXt-devel \ - libXtst-devel \ - openssh-server \ - pkgconfig \ - xorg-x11-server-Xvfb \ - && rm -rf /var/cache/dnf/* /var/cache/yum/* - -RUN useradd buildslave \ - && echo 'buildslave ALL = NOPASSWD: ALL' > /etc/sudoers.d/jenkins \ - && chmod 0440 /etc/sudoers.d/jenkins \ - && mkdir -p /var/run/sshd \ - && /usr/sbin/sshd-keygen - -EXPOSE 22 -CMD ["/usr/sbin/sshd", "-D"] diff --git a/fedora23-aarch64/Dockerfile b/fedora23-aarch64/Dockerfile deleted file mode 100644 index 325d9509..00000000 --- a/fedora23-aarch64/Dockerfile +++ /dev/null @@ -1,17 +0,0 @@ -FROM linaro/base-aarch64-fedora:23 - -RUN dnf -y update \ - && dnf --nogpgcheck --setopt=tsflags=nodocs -y install \ - git \ - java-1.8.0-openjdk \ - openssh-server \ - && rm -rf /var/cache/dnf/* /var/cache/yum/* - -RUN useradd buildslave \ - && echo 'buildslave ALL = NOPASSWD: ALL' > /etc/sudoers.d/jenkins \ - && chmod 0440 /etc/sudoers.d/jenkins \ - && mkdir -p /var/run/sshd \ - && /usr/sbin/sshd-keygen - -EXPOSE 22 -CMD ["/usr/sbin/sshd", "-D"] diff --git a/fedora23-aarch64/build.sh b/fedora23-aarch64/build.sh deleted file mode 100755 index 06af9587..00000000 --- a/fedora23-aarch64/build.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -set -e - -export LANG=C - -ARCHITECTURE=$(basename ${PWD} | cut -f2 -d '-') - -image=linaro/ci-${ARCHITECTURE}-fedora:23 -docker build --pull --tag=$image . -echo $image > .docker-tag diff --git a/focal-amd64-android-lava/Dockerfile b/focal-amd64-android-lava/Dockerfile new file mode 100644 index 00000000..f11045c4 --- /dev/null +++ b/focal-amd64-android-lava/Dockerfile @@ -0,0 +1,60 @@ +# Use the official image as a parent image. +FROM ubuntu:20.04 + +# Set the working directory. +WORKDIR /linaro-android + +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y \ + aapt \ + apt-utils \ + coreutils \ + curl \ + git \ + inetutils-ping \ + iproute2 \ + lib32gcc1 \ + lib32z1-dev \ + libc6-dev-i386 \ + libcurl4 \ + openjdk-11-jdk-headless \ + openjdk-17-jdk-headless \ + protobuf-compiler \ + psmisc \ + python3 \ + python-is-python3 \ + python-lxml \ + python-pexpect \ + python-protobuf \ + python-setuptools \ + sudo \ + tar \ + unzip \ + usbutils \ + wget \ + xz-utils \ + zip \ + && apt-get clean \ + && rm -rf \ + /etc/apt/sources.list.d/*.key \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* + +# https://developer.android.com/studio/releases/platform-tools +RUN curl -SL https://dl.google.com/android/repository/platform-tools_r34.0.5-linux.zip -o platform-tools_r34.0.5-linux.zip \ + && unzip platform-tools_r34.0.5-linux.zip \ + && rm -f /usr/bin/fastboot /usr/bin/adb \ + && ln -s /linaro-android/platform-tools/fastboot /usr/bin/fastboot \ + && ln -s /linaro-android/platform-tools/adb /usr/bin/adb \ + && rm -f platform-tools_r34.0.5-linux.zip + +# According to the document here: +# https://developer.android.com/studio/command-line/aapt2#download_aapt2 +# And here is the page link: +# https://maven.google.com/web/index.html#com.android.tools.build:aapt2:8.1.0-alpha10-9603961 +RUN curl -SL "https://dl.google.com/android/maven2/com/android/tools/build/aapt2/8.1.0-alpha10-9603961/aapt2-8.1.0-alpha10-9603961-linux.jar" -o aapt2-8.1.0-alpha10-9603961-linux.jar \ + && unzip aapt2-8.1.0-alpha10-9603961-linux.jar aapt2 \ + && rm -f /usr/bin/aapt2 \ + && ln -s /linaro-android/aapt2 /usr/bin/aapt2 \ + && rm -f aapt2-8.1.0-alpha10-9603961-linux.jar diff --git a/focal-amd64-android-lava/build.sh b/focal-amd64-android-lava/build.sh new file mode 100755 index 00000000..1de8f09b --- /dev/null +++ b/focal-amd64-android-lava/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash -ex + +# definition of tag: baseDockerImageVersion:year.month.date-numberOfTheDay +tag="focal-2024.02.20-01" +image="linaro/lava-android-test:${tag}" +docker build --pull --tag ${image} -f Dockerfile . +echo $image > .docker-tag diff --git a/focal-amd64-tcwg-base/Dockerfile b/focal-amd64-tcwg-base/Dockerfile new file mode 100644 index 00000000..8f3e23d0 --- /dev/null +++ b/focal-amd64-tcwg-base/Dockerfile @@ -0,0 +1,328 @@ +# Auto generated by ./tcwg-base/generate-dockerfiles.sh from tcwg-base/Dockerfile.in. Do not edit. +FROM ubuntu:focal +# Use bash for better string escaping (on Ubuntu, /bin/sh is dash). +SHELL ["/bin/bash", "-c"] +# Unminimize Ubuntu to install contrib files of git (after package +# update, otherwise unminimize's "apt upgrade" might fail). +RUN 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-dev \ + bsd-mailx \ + build-essential \ + byacc \ + ccache \ + ccrypt \ + chrpath \ + clang \ + curl \ + debhelper \ + default-jre \ + dejagnu \ + dh-autoreconf \ + dh-translations \ + distro-info-data \ + emacs \ + fakeroot \ + flex \ + fp-compiler \ + gawk \ + gdc \ + gdb \ + gdbserver \ +# gettext is needed according to README-maintainer-mode + gettext \ + gfortran \ + git \ + # git-annex : is now used to store bmk results in base-artifacts + git-annex \ + gm2 \ + gnat \ + gobjc \ + gobjc++ \ + golang \ + groff \ + guile-3.0 \ + guile-3.0-dev \ + less \ +# libc6-dbg is necessary for armhf debugging, but also helps on aarch64. + libc6-dbg \ + libcc1-0 \ +# For building lldb. + libedit-dev \ + libexpat1-dev \ + libffi-dev \ + libglib2.0-dev \ + libgmp-dev \ +# libjpeg is necessary for building jipdate + libjpeg-dev \ + liblzma-dev \ + libmpc-dev \ + libmpfr-dev \ +# We need libncurses5 for ancient clang-3289846 used for renderscript AOSP. + libncurses5 \ + libncurses5-dev \ + libpixman-1-dev \ + libpython3-dev \ + libreadline-dev \ + libssl-dev \ + libtcnative-1 \ +# Our bionic-built llvm releases expect to find this but +# focal installs libtinfo6 instead. + libtinfo5 \ + libtool \ +# For building lldb. + libxml2-dev \ + llvm \ + locales \ + lzop \ + make \ + mingw-w64 \ + moreutils \ + net-tools \ + netcat \ + nfs-kernel-server \ + ninja-build \ + ntp \ + openssh-server \ + pkg-config \ + psmisc \ + python3-dev \ + python3-pip \ + python3-setuptools \ + python3-venv \ + python3-wheel \ + python3-pandas \ + python3-numpy \ + python3-scipy \ +# Symlink python to python3 to make upstream "repo", which is downloaded +# by distro's repo, happy. Also needed to run lnt checks on focal. + python-is-python3 \ + rsync \ +# sqlite3 is used by lnt test suite + sqlite3 \ + subversion \ + sudo \ + swig \ +# systemtap-sdt-dev allows building glibc with probes, which GDB uses to +# detect shared library events. + systemtap-sdt-dev \ + tclsh \ + texinfo \ + texlive-fonts-recommended \ + texlive-latex-recommended \ + time \ +# tox is used to run lnt test suite + tox \ + unifdef \ + valgrind \ + vim \ +# virtualenv is used for lnt environment + virtualenv \ + wget \ +# xsltproc is needed by GDB in maintainer mode + xsltproc \ + xz-utils \ + zip \ + zlib1g-dev \ + shellcheck \ +# Update tzdata, because some base images have an incorrect file for UTC. + && DEBIAN_FRONTEND=noninteractive apt-get install --reinstall tzdata \ + && rm -f /etc/ssh/ssh_host_*_key* \ + && 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 \ + && locale-gen en_US.UTF-8 && update-locale LANG=en_US.UTF-8 \ + && pip3 install git-review \ + && pip3 install psutil \ +# Patchworks client for pre-commit testing with "-f yaml" support and +# shyaml tool to parse its output; these are used in jenkins-scripts/pw-*.sh. + && pip3 install git-pw \ + && pip3 install shyaml \ +# For testing lldb. + && pip3 install pexpect \ +# PIP on jammy (all arches) and focal (armhf) has a version mismatch for pyyaml. + && pip3 install jenkins-job-builder==2.10.0 \ + && git clone --depth 1 https://git.linaro.org/infrastructure/jjb-linaro-plugin.git \ + && cd jjb-linaro-plugin && python3 setup.py install && cd .. && rm -rf jjb-linaro-plugin \ +# tensorflow package required to enable MLGO in clang builds (for AOSP toolchains) +# installation of this package fails on arm64/focal + && pip3 install tensorflow \ + && true +# Install custom jipdate. +# FIXME: Revert to installing from pip, when pull requests from maxim-kuvyrkov +# are merged https://github.com/Linaro/jipdate/pulls . +RUN git clone -b master https://github.com/maxim-kuvyrkov/jipdate.git /usr/local/jipdate/ \ + && cd /usr/local/jipdate \ + && pip3 install flit \ + && flit build \ + && FLIT_ROOT_INSTALL=1 flit install --symlink +# LLVM requires at least CMake 3.20.0 and we need 3.24 for flang support. + RUN cd /tmp \ + && git clone -b v3.24.2 --single-branch --depth 1 https://github.com/Kitware/CMake.git \ + && cd /tmp/CMake \ + && ./bootstrap --parallel=$(nproc --all) \ + && make -j$(nproc --all) \ + && make -j$(nproc --all) install \ + && cd /tmp \ + && rm -rf /tmp/CMake +# Configure linux tools for benchmarking support. +# +# We symlink linux tools to supportted "hw_tags": +# apm_32, apm_64, sq_32, sq_64, tk1_32, tx1_32, tx1_64. +# HW_TAGS represent tested configurations of hardware+kernel+perf that +# work well together. We create new hw_tag for any variation in hardware, +# kernel, or perf. This gives us assurance that benchmarking data stored +# under bkp-01.tcwglab:results-<HW_TAG>/ directory has no unexpected variations. +# +# For the initial hw_tags for TK1s and TX1s we can use nice short tk1_32, +# tx1_64, and tx1_32 names, but if we update, say, perf version, we would +# need to add something like tk1_32-lt_5.4 (updating linux-tools to 5.4) or +# tx1_64-k_4.10 (updating kernel to 4.10). +# +# Bionic's linux-tools-4.18 version has proven to work well with TK1s' 3.10 and +# TX1s' 4.4 kernels. We need to install it in all distro versionss so that we +# use same perf version to generate and process results. +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ +# cpufrequtils is used by our benchmarking scripts, but we should update them to +# use cpupower from linux-tools everywhere instead. + cpufrequtils \ + linux-tools-common \ + && cat /etc/apt/sources.list | sed -e "s/focal/bionic/g" \ + > /etc/apt/sources.list.d/bionic.list \ +# Import Bionic key + && apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32 \ + && apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + linux-tools-4.18.0-13-generic \ + linux-tools-5.4.0-74-generic \ + linux-tools-5.4.0-80-generic \ + linux-tools-5.4.0-99-generic \ + && apt-get clean \ + && rm -rf \ + /etc/apt/sources.list.d/bionic.list \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* \ + && ln -s /usr/lib/linux-tools/4.18.0-13-generic /usr/lib/linux-tools/tk1_32 \ + && ln -s /usr/lib/linux-tools/4.18.0-13-generic /usr/lib/linux-tools/tx1_32 \ + && ln -s /usr/lib/linux-tools/4.18.0-13-generic /usr/lib/linux-tools/tx1_64 \ + && ln -s /usr/lib/linux-tools/5.4.0-74-generic /usr/lib/linux-tools/sq_32 \ + && ln -s /usr/lib/linux-tools/5.4.0-74-generic /usr/lib/linux-tools/sq_64 \ + && ln -s /usr/lib/linux-tools/5.4.0-80-generic /usr/lib/linux-tools/apm_32 \ + && ln -s /usr/lib/linux-tools/5.4.0-80-generic /usr/lib/linux-tools/apm_64 \ + && ln -s /usr/lib/linux-tools/5.4.0-99-generic /usr/lib/linux-tools/fx_32 \ + && ln -s /usr/lib/linux-tools/5.4.0-99-generic /usr/lib/linux-tools/fx_64 \ + && true +# Install usb libs and OpenOCD on x86 hosts, used to target bare-metal boards. +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + libusb-1.0 \ + libusb-dev \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* +RUN cd /tmp \ + && git clone --single-branch https://git.code.sf.net/p/openocd/code openocd \ + && cd /tmp/openocd \ +# Next commit (ce5027ab019ac7f96d05ec5f8f533144b3bcafdf) breaks semihosting. +# See https://review.openocd.org/c/openocd/+/6888 . + && git checkout e5f515f990cc345fd3089a5520f39d5a128329bd \ + && ./bootstrap \ + && ./configure --enable-stlink \ + && make -j$(nproc --all) \ + && make -j$(nproc --all) install \ + && cd /tmp \ + && rm -rf /tmp/openocd +# Add the latest clang (17.0.6) +# We need this in tcwg-llvmbot images for *-latest-clang bots, and in tcwg-build/tcwg-dev +# images for building LLVM with flang enabled. +# Install git-filter-repo for Ubuntu Focal +RUN curl -f -o $(git --exec-path)/git-filter-repo \ + https://raw.githubusercontent.com/newren/git-filter-repo/main/git-filter-repo \ + && chmod +x $(git --exec-path)/git-filter-repo +# Precommit testing for GNU projects requires autoconf-2.69 and +# automake-1.15.1. Install them in custom paths to avoid confusing +# other tools that make use of the system versions. +# README-maintainer-mode in these projects also mentions libtool-2.2.6 +# and gettext-0.16.1, but there is no tarball available for these +# versions. In addition, some files have been regenerated using +# libtool-2.2.7a which is not available either. Build succeeds in +# with --enable-maintainer-mode and the system versions of libtool and +# gettext, so rely on them. +RUN autoconf_version=2.69 autoconf_ver=autoconf-${autoconf_version} \ + && cd /usr/local \ + && wget https://ftp.gnu.org/gnu/autoconf/${autoconf_ver}.tar.xz \ + && cd /tmp \ + && tar xf /usr/local/${autoconf_ver}.tar.xz \ + && cd ${autoconf_ver} \ + && mkdir build \ + && cd build \ + && ../configure --prefix=/usr/local/${autoconf_ver} \ + && make install \ + && cd /usr/local/${autoconf_ver}/bin \ + && for f in autoconf autoheader autom4te autoreconf autoscan autoupdate ifnames; do \ + ln -sv $f $f-${autoconf_version} ; \ + done \ + && rm -f /usr/local/${autoconf_ver}.tar.xz \ + && automake_version=1.15.1 automake_ver=automake-${automake_version} \ + && cd /usr/local \ + && wget https://ftp.gnu.org/gnu/automake/${automake_ver}.tar.xz \ + && cd /tmp \ + && tar xf /usr/local/${automake_ver}.tar.xz \ + && cd ${automake_ver} \ + && mkdir build \ + && cd build \ + && ../configure --prefix=/usr/local/${automake_ver} \ + && make install \ + && cd /usr/local/${automake_ver}/bin \ + && for f in aclocal automake; do \ + ln -sv $f $f-${automake_version} ; \ + done \ + && rm -f /usr/local/${automake_ver}.tar.xz \ + && rm -rf /tmp/${autoconf_ver} /tmp/${automake_ver} +COPY home-data/ /home-data/ +COPY install-gcc-latest.sh new-user.sh nvidia-power-cycle.sh nvidia-serial.sh \ + /usr/local/bin/ +RUN \ + while read line; do \ + new-user.sh --group $(echo "$line" | cut -d: -f 1,3); \ + done < <(grep -v ":x:x:" /home-data/group) +# Create directories required for X11. We use X11 in tcwg-x2go images and, +# sometimes, in tcwg-dev images. +# We need to create these before "VOLUME /tmp" directive, since after +# the directive stuff from /tmp won't make it into the image. +RUN mkdir -p /tmp/.X11-unix /tmp/.ICE-unix \ + && chmod 1777 /tmp/.X11-unix /tmp/.ICE-unix +# 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"] +# This is a dummy comment to trigger a base image rebuild. +# checksum: a3189ffcf2a879f188230ca64162be43 diff --git a/trusty-amd64-tcwg-base/build.sh b/focal-amd64-tcwg-base/build.sh index 67d8934e..67d8934e 120000 --- a/trusty-amd64-tcwg-base/build.sh +++ b/focal-amd64-tcwg-base/build.sh diff --git a/focal-amd64-tcwg-base/focal-amd64-tcwg-build/Dockerfile b/focal-amd64-tcwg-base/focal-amd64-tcwg-build/Dockerfile new file mode 100644 index 00000000..a06fbea8 --- /dev/null +++ b/focal-amd64-tcwg-base/focal-amd64-tcwg-build/Dockerfile @@ -0,0 +1,42 @@ +# Auto generated by ./tcwg-base/generate-dockerfiles.sh from tcwg-base/tcwg-build/Dockerfile.in. Do not edit. +FROM linaro/ci-amd64-tcwg-base-ubuntu:focal +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 -p; \ + done </home-data/passwd +# We create ccache directory as tcwg-buildslave, because otherwise +# "docker run -v ccache-volume:/home/tcwg-buildslave/.ccache" will create +# it owned by root:root, which will break builds. We set ccache size: +# - 50G is a bare minimum to ccache the gnu/llvm builds +# - The aa64/amd64 build machines have enough disk to support 50G +# - TK1s have small disk, so try to get by with 10G. +RUN sudo -i -u tcwg-buildslave mkdir -p /home/tcwg-buildslave/.ccache \ + && sudo -i -u tcwg-buildslave ccache -M 50G +# Install wine. +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/* +# Add llvm 11 to get llvm-objdump with support for --disassemble-symbols. +# We need this in bmk-scripts.git/symbol_md5sum.sh. +RUN \ + apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + llvm-11 \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* \ + # This will override llvm-objdump installed by tcwg-base's llvm package. + && ln -s `which llvm-objdump-11` /usr/local/bin/llvm-objdump +# checksum: 4a6718d410939e630d9cfe3a1434523a diff --git a/trusty-amd64-tcwg-base/trusty-amd64-tcwg-build/build.sh b/focal-amd64-tcwg-base/focal-amd64-tcwg-build/build.sh index 50162e02..50162e02 120000 --- a/trusty-amd64-tcwg-base/trusty-amd64-tcwg-build/build.sh +++ b/focal-amd64-tcwg-base/focal-amd64-tcwg-build/build.sh diff --git a/focal-amd64-tcwg-base/focal-amd64-tcwg-dev/Dockerfile b/focal-amd64-tcwg-base/focal-amd64-tcwg-dev/Dockerfile new file mode 100644 index 00000000..0ab65b89 --- /dev/null +++ b/focal-amd64-tcwg-base/focal-amd64-tcwg-dev/Dockerfile @@ -0,0 +1,32 @@ +# Auto generated by ./tcwg-base/generate-dockerfiles.sh from tcwg-base/tcwg-dev/Dockerfile.in. Do not edit. +FROM linaro/ci-amd64-tcwg-base-ubuntu:focal +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y \ + arcanist \ + apt-file \ + elpa-flycheck \ + git-email \ + git-gui \ + git-svn \ + htop \ + iputils-ping \ + iputils-tracepath \ + ispell \ + less \ + mc \ + python3-git \ + screen \ + software-properties-common \ + stgit \ + tig \ + tmux \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* +RUN apt-file update +COPY run.sh start.sh / +ENTRYPOINT ["/run.sh"] +CMD ["start.sh"] +# checksum: f148147f369faf7dc19e6471b4c4beb3 diff --git a/trusty-amd64-tcwg-base/trusty-amd64-tcwg-dev/build.sh b/focal-amd64-tcwg-base/focal-amd64-tcwg-dev/build.sh index e8571a37..e8571a37 120000 --- a/trusty-amd64-tcwg-base/trusty-amd64-tcwg-dev/build.sh +++ b/focal-amd64-tcwg-base/focal-amd64-tcwg-dev/build.sh diff --git a/xenial-amd64-tcwg-base/xenial-amd64-tcwg-dev/xenial-amd64-tcwg-x2go/Dockerfile b/focal-amd64-tcwg-base/focal-amd64-tcwg-dev/focal-amd64-tcwg-x2go/Dockerfile index a7909d59..5f9c07c4 100644 --- a/xenial-amd64-tcwg-base/xenial-amd64-tcwg-dev/xenial-amd64-tcwg-x2go/Dockerfile +++ b/focal-amd64-tcwg-base/focal-amd64-tcwg-dev/focal-amd64-tcwg-x2go/Dockerfile @@ -1,8 +1,5 @@ -# Auto generated from tcwg-base/tcwg-dev/tcwg-x2go/Dockerfile.in. Do not edit. -FROM linaro/ci-amd64-tcwg-dev-ubuntu:xenial - -COPY start.sh . - +# Auto generated by ./tcwg-base/generate-dockerfiles.sh from tcwg-base/tcwg-dev/tcwg-x2go/Dockerfile.in. Do not edit. +FROM linaro/ci-amd64-tcwg-dev-ubuntu:focal RUN apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y \ ubuntu-desktop \ @@ -11,14 +8,12 @@ RUN apt-get update \ /var/lib/apt/lists/* \ /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 \ + light-themes \ mate-desktop-environment \ - x2godesktopsharing \ - x2gomatebindings \ + ubuntu-mate-themes \ x2goserver \ x2goserver-xsession \ && apt-get clean \ @@ -26,13 +21,13 @@ RUN add-apt-repository ppa:x2go/stable \ /var/lib/apt/lists/* \ /tmp/* \ /var/tmp/* - RUN apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y \ ddd \ + xfonts-100dpi \ && apt-get clean \ && rm -rf \ /var/lib/apt/lists/* \ /tmp/* \ /var/tmp/* -# checksum: 3e1c139ac1715b1096130c6e90c55fc9 +# checksum: eefb00f89fa926e34aba2550de1906e1 diff --git a/xenial-amd64-tcwg-base/xenial-amd64-tcwg-dev/xenial-amd64-tcwg-x2go/build.sh b/focal-amd64-tcwg-base/focal-amd64-tcwg-dev/focal-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/focal-amd64-tcwg-base/focal-amd64-tcwg-dev/focal-amd64-tcwg-x2go/build.sh diff --git a/xenial-amd64-tcwg-base/xenial-amd64-tcwg-dev/xenial-amd64-tcwg-x2go/gerrit-branches b/focal-amd64-tcwg-base/focal-amd64-tcwg-dev/focal-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/focal-amd64-tcwg-base/focal-amd64-tcwg-dev/focal-amd64-tcwg-x2go/gerrit-branches diff --git a/trusty-amd64-art/Dockerfile b/focal-amd64/Dockerfile index 650c3054..a09de291 100644 --- a/trusty-amd64-art/Dockerfile +++ b/focal-amd64/Dockerfile @@ -1,54 +1,80 @@ -FROM ubuntu:trusty +FROM ubuntu:focal 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 devscripts \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + abootimg \ acpica-tools \ - android-tools-adb \ + android-sdk-libsparse-utils \ + autoconf \ + automake \ bc \ bison \ + build-essential \ ccache \ clang \ + clang-format \ + clang-tidy \ + cmake \ curl \ - default-jdk \ - gcc-4.6 \ - g++-multilib \ + debhelper \ + debian-archive-keyring \ + debian-keyring \ + device-tree-compiler \ + doxygen \ + fakeroot \ + flex \ + gcc \ + gcc-aarch64-linux-gnu \ + gcc-arm-linux-gnueabihf \ + gdisk \ genisoimage \ git \ gperf \ + kernel-wedge \ + kpartx \ lcov \ less \ - lib32ncurses5 \ + libtool \ + libncurses6:i386 \ + libstdc++6:i386 \ libxml2-utils \ + lsb-release \ make \ - openssh-client \ + ninja-build \ + openjdk-11-jdk \ openssh-server \ - python-mako \ - python-networkx \ - python-requests \ + python3-cryptography \ + python3-pip \ + python3-requests \ + python3-serial \ + python3-setuptools \ + python3-wheel \ + qemu-user-static \ + rename \ rsync \ scons \ + sudo \ time \ - unzip \ + u-boot-tools \ + uuid-dev \ + virtinst \ 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 \ + zsync \ && apt-get clean \ - && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* *.deb + && rm -rf \ + /etc/apt/sources.list.d/*.key \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* \ + *.deb RUN useradd -m -G plugdev buildslave \ && echo 'buildslave ALL = NOPASSWD: ALL' > /etc/sudoers.d/jenkins \ diff --git a/focal-amd64/build.sh b/focal-amd64/build.sh new file mode 100755 index 00000000..28723188 --- /dev/null +++ b/focal-amd64/build.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +set -e + +trap cleanup_exit INT TERM EXIT + +cleanup_exit() +{ + rm -f setup-sshd +} + +export LANG=C + +DISTRIBUTION=$(basename ${PWD} | cut -f1 -d '-') +ARCHITECTURE=$(basename ${PWD} | cut -f2 -d '-') + +cp -a ../setup-sshd . + +image=linaro/jenkins-${ARCHITECTURE}-ubuntu:${DISTRIBUTION} +docker build --pull --tag=$image . +echo $image > .docker-tag diff --git a/focal-arm64-tcwg-base/Dockerfile b/focal-arm64-tcwg-base/Dockerfile new file mode 100644 index 00000000..76400f48 --- /dev/null +++ b/focal-arm64-tcwg-base/Dockerfile @@ -0,0 +1,309 @@ +# Auto generated by ./tcwg-base/generate-dockerfiles.sh from tcwg-base/Dockerfile.in. Do not edit. +FROM ubuntu:focal +# Use bash for better string escaping (on Ubuntu, /bin/sh is dash). +SHELL ["/bin/bash", "-c"] +# Unminimize Ubuntu to install contrib files of git (after package +# update, otherwise unminimize's "apt upgrade" might fail). +RUN 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-dev \ + bsd-mailx \ + build-essential \ + byacc \ + ccache \ + ccrypt \ + chrpath \ + clang \ + curl \ + debhelper \ + default-jre \ + dejagnu \ + dh-autoreconf \ + dh-translations \ + distro-info-data \ + emacs \ + fakeroot \ + flex \ + fp-compiler \ + gawk \ + gdc \ + gdb \ + gdbserver \ +# gettext is needed according to README-maintainer-mode + gettext \ + gfortran \ + git \ + # git-annex : is now used to store bmk results in base-artifacts + git-annex \ + gm2 \ + gnat \ + gobjc \ + gobjc++ \ + golang \ + groff \ + guile-3.0 \ + guile-3.0-dev \ + less \ +# libc6-dbg is necessary for armhf debugging, but also helps on aarch64. + libc6-dbg \ + libcc1-0 \ +# For building lldb. + libedit-dev \ + libexpat1-dev \ + libffi-dev \ + libglib2.0-dev \ + libgmp-dev \ +# libjpeg is necessary for building jipdate + libjpeg-dev \ + liblzma-dev \ + libmpc-dev \ + libmpfr-dev \ +# We need libncurses5 for ancient clang-3289846 used for renderscript AOSP. + libncurses5 \ + libncurses5-dev \ + libpixman-1-dev \ + libpython3-dev \ + libreadline-dev \ + libssl-dev \ + libtcnative-1 \ +# Our bionic-built llvm releases expect to find this but +# focal installs libtinfo6 instead. + libtinfo5 \ + libtool \ +# For building lldb. + libxml2-dev \ + llvm \ + locales \ + lzop \ + make \ + moreutils \ + net-tools \ + netcat \ + nfs-kernel-server \ + ninja-build \ + ntp \ + openssh-server \ + pkg-config \ + psmisc \ + python3-dev \ + python3-pip \ + python3-setuptools \ + python3-venv \ + python3-wheel \ + python3-pandas \ + python3-numpy \ + python3-scipy \ +# Symlink python to python3 to make upstream "repo", which is downloaded +# by distro's repo, happy. Also needed to run lnt checks on focal. + python-is-python3 \ + rsync \ +# sqlite3 is used by lnt test suite + sqlite3 \ + subversion \ + sudo \ + swig \ +# systemtap-sdt-dev allows building glibc with probes, which GDB uses to +# detect shared library events. + systemtap-sdt-dev \ + tclsh \ + texinfo \ + texlive-fonts-recommended \ + texlive-latex-recommended \ + time \ +# tox is used to run lnt test suite + tox \ + unifdef \ + valgrind \ + vim \ +# virtualenv is used for lnt environment + virtualenv \ + wget \ +# xsltproc is needed by GDB in maintainer mode + xsltproc \ + xz-utils \ + zip \ + zlib1g-dev \ + shellcheck \ +# Update tzdata, because some base images have an incorrect file for UTC. + && DEBIAN_FRONTEND=noninteractive apt-get install --reinstall tzdata \ + && rm -f /etc/ssh/ssh_host_*_key* \ + && 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 \ + && locale-gen en_US.UTF-8 && update-locale LANG=en_US.UTF-8 \ + && pip3 install git-review \ + && pip3 install psutil \ +# Patchworks client for pre-commit testing with "-f yaml" support and +# shyaml tool to parse its output; these are used in jenkins-scripts/pw-*.sh. + && pip3 install git-pw \ + && pip3 install shyaml \ +# For testing lldb. + && pip3 install pexpect \ +# PIP on jammy (all arches) and focal (armhf) has a version mismatch for pyyaml. + && pip3 install jenkins-job-builder==2.10.0 \ + && git clone --depth 1 https://git.linaro.org/infrastructure/jjb-linaro-plugin.git \ + && cd jjb-linaro-plugin && python3 setup.py install && cd .. && rm -rf jjb-linaro-plugin \ + && true +# Install custom jipdate. +# FIXME: Revert to installing from pip, when pull requests from maxim-kuvyrkov +# are merged https://github.com/Linaro/jipdate/pulls . +RUN git clone -b master https://github.com/maxim-kuvyrkov/jipdate.git /usr/local/jipdate/ \ + && cd /usr/local/jipdate \ + && pip3 install flit \ + && flit build \ + && FLIT_ROOT_INSTALL=1 flit install --symlink +# LLVM requires at least CMake 3.20.0 and we need 3.24 for flang support. +RUN wget https://github.com/Kitware/CMake/releases/download/v3.24.2/cmake-3.24.2-linux-aarch64.sh \ + && chmod +x cmake-3.24.2-linux-aarch64.sh \ + && ./cmake-3.24.2-linux-aarch64.sh --prefix=/usr/local --skip-license +# Configure linux tools for benchmarking support. +# +# We symlink linux tools to supportted "hw_tags": +# apm_32, apm_64, sq_32, sq_64, tk1_32, tx1_32, tx1_64. +# HW_TAGS represent tested configurations of hardware+kernel+perf that +# work well together. We create new hw_tag for any variation in hardware, +# kernel, or perf. This gives us assurance that benchmarking data stored +# under bkp-01.tcwglab:results-<HW_TAG>/ directory has no unexpected variations. +# +# For the initial hw_tags for TK1s and TX1s we can use nice short tk1_32, +# tx1_64, and tx1_32 names, but if we update, say, perf version, we would +# need to add something like tk1_32-lt_5.4 (updating linux-tools to 5.4) or +# tx1_64-k_4.10 (updating kernel to 4.10). +# +# Bionic's linux-tools-4.18 version has proven to work well with TK1s' 3.10 and +# TX1s' 4.4 kernels. We need to install it in all distro versionss so that we +# use same perf version to generate and process results. +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ +# cpufrequtils is used by our benchmarking scripts, but we should update them to +# use cpupower from linux-tools everywhere instead. + cpufrequtils \ + linux-tools-common \ + && cat /etc/apt/sources.list | sed -e "s/focal/bionic/g" \ + > /etc/apt/sources.list.d/bionic.list \ +# Import Bionic key + && apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32 \ + && apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + linux-tools-4.18.0-13-generic \ + linux-tools-5.4.0-74-generic \ + linux-tools-5.4.0-80-generic \ + linux-tools-5.4.0-99-generic \ + && apt-get clean \ + && rm -rf \ + /etc/apt/sources.list.d/bionic.list \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* \ + && ln -s /usr/lib/linux-tools/4.18.0-13-generic /usr/lib/linux-tools/tk1_32 \ + && ln -s /usr/lib/linux-tools/4.18.0-13-generic /usr/lib/linux-tools/tx1_32 \ + && ln -s /usr/lib/linux-tools/4.18.0-13-generic /usr/lib/linux-tools/tx1_64 \ + && ln -s /usr/lib/linux-tools/5.4.0-74-generic /usr/lib/linux-tools/sq_32 \ + && ln -s /usr/lib/linux-tools/5.4.0-74-generic /usr/lib/linux-tools/sq_64 \ + && ln -s /usr/lib/linux-tools/5.4.0-80-generic /usr/lib/linux-tools/apm_32 \ + && ln -s /usr/lib/linux-tools/5.4.0-80-generic /usr/lib/linux-tools/apm_64 \ + && ln -s /usr/lib/linux-tools/5.4.0-99-generic /usr/lib/linux-tools/fx_32 \ + && ln -s /usr/lib/linux-tools/5.4.0-99-generic /usr/lib/linux-tools/fx_64 \ + && true +# Add the latest clang (17.0.6) +# We need this in tcwg-llvmbot images for *-latest-clang bots, and in tcwg-build/tcwg-dev +# images for building LLVM with flang enabled. +RUN \ + clang_ver=clang+llvm-17.0.6-aarch64-linux-gnu \ + # For the 17.0.6 release, the two archives have different formats. + ext=xz \ + && cd /usr/local \ + && wget --progress=dot:giga https://github.com/llvm/llvm-project/releases/download/llvmorg-17.0.6/$clang_ver.tar.$ext \ + && tar xf $clang_ver.tar.$ext \ + && rm $clang_ver.tar.$ext +# Add libpgmath, which is used by flang +RUN git clone https://github.com/rovka/libpgmath-binaries.git \ + && mv libpgmath-binaries/* /usr/local/lib/ \ + && rm -rf libpgmath-binaries +# Install git-filter-repo for Ubuntu Focal +RUN curl -f -o $(git --exec-path)/git-filter-repo \ + https://raw.githubusercontent.com/newren/git-filter-repo/main/git-filter-repo \ + && chmod +x $(git --exec-path)/git-filter-repo +# Precommit testing for GNU projects requires autoconf-2.69 and +# automake-1.15.1. Install them in custom paths to avoid confusing +# other tools that make use of the system versions. +# README-maintainer-mode in these projects also mentions libtool-2.2.6 +# and gettext-0.16.1, but there is no tarball available for these +# versions. In addition, some files have been regenerated using +# libtool-2.2.7a which is not available either. Build succeeds in +# with --enable-maintainer-mode and the system versions of libtool and +# gettext, so rely on them. +RUN autoconf_version=2.69 autoconf_ver=autoconf-${autoconf_version} \ + && cd /usr/local \ + && wget https://ftp.gnu.org/gnu/autoconf/${autoconf_ver}.tar.xz \ + && cd /tmp \ + && tar xf /usr/local/${autoconf_ver}.tar.xz \ + && cd ${autoconf_ver} \ + && mkdir build \ + && cd build \ + && ../configure --prefix=/usr/local/${autoconf_ver} \ + && make install \ + && cd /usr/local/${autoconf_ver}/bin \ + && for f in autoconf autoheader autom4te autoreconf autoscan autoupdate ifnames; do \ + ln -sv $f $f-${autoconf_version} ; \ + done \ + && rm -f /usr/local/${autoconf_ver}.tar.xz \ + && automake_version=1.15.1 automake_ver=automake-${automake_version} \ + && cd /usr/local \ + && wget https://ftp.gnu.org/gnu/automake/${automake_ver}.tar.xz \ + && cd /tmp \ + && tar xf /usr/local/${automake_ver}.tar.xz \ + && cd ${automake_ver} \ + && mkdir build \ + && cd build \ + && ../configure --prefix=/usr/local/${automake_ver} \ + && make install \ + && cd /usr/local/${automake_ver}/bin \ + && for f in aclocal automake; do \ + ln -sv $f $f-${automake_version} ; \ + done \ + && rm -f /usr/local/${automake_ver}.tar.xz \ + && rm -rf /tmp/${autoconf_ver} /tmp/${automake_ver} +COPY home-data/ /home-data/ +COPY install-gcc-latest.sh new-user.sh nvidia-power-cycle.sh nvidia-serial.sh \ + /usr/local/bin/ +RUN \ + while read line; do \ + new-user.sh --group $(echo "$line" | cut -d: -f 1,3); \ + done < <(grep -v ":x:x:" /home-data/group) +# Create directories required for X11. We use X11 in tcwg-x2go images and, +# sometimes, in tcwg-dev images. +# We need to create these before "VOLUME /tmp" directive, since after +# the directive stuff from /tmp won't make it into the image. +RUN mkdir -p /tmp/.X11-unix /tmp/.ICE-unix \ + && chmod 1777 /tmp/.X11-unix /tmp/.ICE-unix +# 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"] +# This is a dummy comment to trigger a base image rebuild. +# checksum: c38eece402c64fa2c214420831b4775d diff --git a/trusty-arm64-tcwg-base/build.sh b/focal-arm64-tcwg-base/build.sh index 67d8934e..67d8934e 120000 --- a/trusty-arm64-tcwg-base/build.sh +++ b/focal-arm64-tcwg-base/build.sh diff --git a/focal-arm64-tcwg-base/focal-arm64-tcwg-build/Dockerfile b/focal-arm64-tcwg-base/focal-arm64-tcwg-build/Dockerfile new file mode 100644 index 00000000..71927684 --- /dev/null +++ b/focal-arm64-tcwg-base/focal-arm64-tcwg-build/Dockerfile @@ -0,0 +1,32 @@ +# Auto generated by ./tcwg-base/generate-dockerfiles.sh from tcwg-base/tcwg-build/Dockerfile.in. Do not edit. +FROM linaro/ci-arm64-tcwg-base-ubuntu:focal +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 -p; \ + done </home-data/passwd +# We create ccache directory as tcwg-buildslave, because otherwise +# "docker run -v ccache-volume:/home/tcwg-buildslave/.ccache" will create +# it owned by root:root, which will break builds. We set ccache size: +# - 50G is a bare minimum to ccache the gnu/llvm builds +# - The aa64/amd64 build machines have enough disk to support 50G +# - TK1s have small disk, so try to get by with 10G. +RUN sudo -i -u tcwg-buildslave mkdir -p /home/tcwg-buildslave/.ccache \ + && sudo -i -u tcwg-buildslave ccache -M 50G +# Add llvm 11 to get llvm-objdump with support for --disassemble-symbols. +# We need this in bmk-scripts.git/symbol_md5sum.sh. +RUN \ + apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + llvm-11 \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* \ + # This will override llvm-objdump installed by tcwg-base's llvm package. + && ln -s `which llvm-objdump-11` /usr/local/bin/llvm-objdump +# checksum: f4581c2c071379c5b031871727887448 diff --git a/trusty-arm64-tcwg-base/trusty-arm64-tcwg-build/build.sh b/focal-arm64-tcwg-base/focal-arm64-tcwg-build/build.sh index 50162e02..50162e02 120000 --- a/trusty-arm64-tcwg-base/trusty-arm64-tcwg-build/build.sh +++ b/focal-arm64-tcwg-base/focal-arm64-tcwg-build/build.sh diff --git a/focal-arm64-tcwg-base/focal-arm64-tcwg-dev/Dockerfile b/focal-arm64-tcwg-base/focal-arm64-tcwg-dev/Dockerfile new file mode 100644 index 00000000..fd73b74e --- /dev/null +++ b/focal-arm64-tcwg-base/focal-arm64-tcwg-dev/Dockerfile @@ -0,0 +1,32 @@ +# Auto generated by ./tcwg-base/generate-dockerfiles.sh from tcwg-base/tcwg-dev/Dockerfile.in. Do not edit. +FROM linaro/ci-arm64-tcwg-base-ubuntu:focal +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y \ + arcanist \ + apt-file \ + elpa-flycheck \ + git-email \ + git-gui \ + git-svn \ + htop \ + iputils-ping \ + iputils-tracepath \ + ispell \ + less \ + mc \ + python3-git \ + screen \ + software-properties-common \ + stgit \ + tig \ + tmux \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* +RUN apt-file update +COPY run.sh start.sh / +ENTRYPOINT ["/run.sh"] +CMD ["start.sh"] +# checksum: 6e9bcbce53da0cec83d927a0d4ce4b9c diff --git a/trusty-arm64-tcwg-base/trusty-arm64-tcwg-dev/build.sh b/focal-arm64-tcwg-base/focal-arm64-tcwg-dev/build.sh index e8571a37..e8571a37 120000 --- a/trusty-arm64-tcwg-base/trusty-arm64-tcwg-dev/build.sh +++ b/focal-arm64-tcwg-base/focal-arm64-tcwg-dev/build.sh diff --git a/focal-arm64-tcwg-base/focal-arm64-tcwg-dev/focal-arm64-tcwg-x2go/Dockerfile b/focal-arm64-tcwg-base/focal-arm64-tcwg-dev/focal-arm64-tcwg-x2go/Dockerfile new file mode 100644 index 00000000..e613649b --- /dev/null +++ b/focal-arm64-tcwg-base/focal-arm64-tcwg-dev/focal-arm64-tcwg-x2go/Dockerfile @@ -0,0 +1,33 @@ +# Auto generated by ./tcwg-base/generate-dockerfiles.sh from tcwg-base/tcwg-dev/tcwg-x2go/Dockerfile.in. Do not edit. +FROM linaro/ci-arm64-tcwg-dev-ubuntu:focal +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y \ + ubuntu-desktop \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y \ + duplicity \ + light-themes \ + mate-desktop-environment \ + ubuntu-mate-themes \ + x2goserver \ + x2goserver-xsession \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y \ + ddd \ + xfonts-100dpi \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* +# checksum: 9d3f20f688b2d4291fe7471fdb9c86ce diff --git a/focal-arm64-tcwg-base/focal-arm64-tcwg-dev/focal-arm64-tcwg-x2go/build.sh b/focal-arm64-tcwg-base/focal-arm64-tcwg-dev/focal-arm64-tcwg-x2go/build.sh new file mode 120000 index 00000000..6e52e4e6 --- /dev/null +++ b/focal-arm64-tcwg-base/focal-arm64-tcwg-dev/focal-arm64-tcwg-x2go/build.sh @@ -0,0 +1 @@ +../../../tcwg-base/tcwg-dev/tcwg-x2go/build.sh
\ No newline at end of file diff --git a/focal-arm64-tcwg-base/focal-arm64-tcwg-dev/focal-arm64-tcwg-x2go/gerrit-branches b/focal-arm64-tcwg-base/focal-arm64-tcwg-dev/focal-arm64-tcwg-x2go/gerrit-branches new file mode 120000 index 00000000..748350c7 --- /dev/null +++ b/focal-arm64-tcwg-base/focal-arm64-tcwg-dev/focal-arm64-tcwg-x2go/gerrit-branches @@ -0,0 +1 @@ +../../../tcwg-base/tcwg-dev/tcwg-x2go/gerrit-branches
\ No newline at end of file diff --git a/focal-arm64-tcwg-base/focal-arm64-tcwg-llvmbot/Dockerfile b/focal-arm64-tcwg-base/focal-arm64-tcwg-llvmbot/Dockerfile new file mode 100644 index 00000000..a8f7110f --- /dev/null +++ b/focal-arm64-tcwg-base/focal-arm64-tcwg-llvmbot/Dockerfile @@ -0,0 +1,85 @@ +# Auto generated by ./tcwg-base/generate-dockerfiles.sh from tcwg-base/tcwg-llvmbot/Dockerfile.in. Do not edit. +FROM linaro/ci-arm64-tcwg-base-ubuntu:focal +RUN echo "deb https://apt.buildkite.com/buildkite-agent stable main" | tee /etc/apt/sources.list.d/buildkite-agent.list \ + && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 32A37959C2FA5C3C99EFBC32A79206696452D198 +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y \ + binutils-gold \ + buildkite-agent \ + cpio \ + gfortran \ + htop \ + iotop \ +# Add locales used for testing libcxx + language-pack-en \ + language-pack-fr \ + language-pack-ja \ + language-pack-ru \ + language-pack-zh-hans \ + libjson-perl \ + libtinfo-dev \ +# We build clang+llvm releases on Ubuntu Bionic, which has libtinfo.so.5, +# and we link against it. +# Ubuntu Focal by default installs libtinfo6 (aka libtinfo.so.6), and +# our clang+llvm releases don't work on Ubuntu Focal unless we install +# legacy libtinfo5 (aka libtinfo.so.5). +# We should no longer need libtinfo5 when we switch building releases to +# Ubuntu Focal or later. + libtinfo5 \ + linux-tools-common \ + python3-buildbot-worker \ + tmux \ +# uuidgen is used by the flang driver script. Not installed by default on focal. + uuid-runtime \ +# Although the base image has python3-venv installed, this does not give +# you 'virtualenv'. Instead you must do 'python3 -m venv'. However the test +# suite calls virtualenv with --python=python3, so we're ok to use the Python2 +# version here. + virtualenv \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* +# Libcxx needs some locales that are not generated by default +RUN printf "fr_CA ISO-8859-1\ncs_CZ ISO-8859-2" >> /etc/locale.gen \ + && mkdir /usr/local/share/i1en/ \ + && printf "fr_CA ISO-8859-1\ncs_CZ ISO-8859-2" >> /usr/local/share/i1en/SUPPORTED \ + && locale-gen +# Add ninja with support for matching concurrency to available CPU allowance. +RUN git clone -b limit-on-cpu https://github.com/maxim-kuvyrkov/ninja.git \ + && cd ninja \ + && python3 ./configure.py --bootstrap && ./ninja all && ./ninja_test \ + && mv ninja /usr/local/bin/ninja.limit-on-cpu \ + && cd .. \ + && rm -rf ninja \ + && git clone -b master https://github.com/maxim-kuvyrkov/ninja.git \ + && cd ninja \ + && python3 ./configure.py --bootstrap && ./ninja all && ./ninja_test \ + && mv ninja /usr/local/bin/ninja.limit-on-psi \ + && cd .. \ + && rm -rf ninja +# AArch64 bots run MLIR tests for SVE and SME using qemu-user-static. +# Armv7-M libcxx bots use qemu-system-arm for emulation. +# SME support was added in 7.1.0 and other Arm (32 bit) bugs were +# fixed between then and 8.1.3. +RUN qemu_ver=8.1.3 \ + && wget --progress=dot:giga https://download.qemu.org/qemu-${qemu_ver}.tar.xz \ + && tar -xvf qemu-${qemu_ver}.tar.xz \ + && cd qemu-${qemu_ver} \ + && ./configure --prefix=/usr/local --target-list=aarch64-linux-user,arm-softmmu \ + && make -j$(nproc) \ + && make install \ + && rm -rf qemu-${qemu_ver}.tar.xz qemu-${qemu_ver}/ +RUN new-user.sh --user tcwg-buildbot \ + # Initialize .ccache dir, so that we mount ccache docker volumes with + # correct permissions. + && sudo -i -u tcwg-buildbot mkdir -p /home/tcwg-buildbot/.ccache \ + # Allow non root users to access the buildkite config files + && chmod -R a+rw /etc/buildkite-agent/ +VOLUME /home +COPY run.sh . +COPY start.sh . +ENTRYPOINT ["/run.sh"] +CMD ["start.sh"] +# checksum: daf14e78943eca285c168a7ade5ad322 diff --git a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-llvmbot/build.sh b/focal-arm64-tcwg-base/focal-arm64-tcwg-llvmbot/build.sh index cb3c7a8c..cb3c7a8c 120000 --- a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-llvmbot/build.sh +++ b/focal-arm64-tcwg-base/focal-arm64-tcwg-llvmbot/build.sh diff --git a/focal-armhf-tcwg-base/Dockerfile b/focal-armhf-tcwg-base/Dockerfile new file mode 100644 index 00000000..7de45301 --- /dev/null +++ b/focal-armhf-tcwg-base/Dockerfile @@ -0,0 +1,315 @@ +# Auto generated by ./tcwg-base/generate-dockerfiles.sh from tcwg-base/Dockerfile.in. Do not edit. +FROM arm32v7/ubuntu:focal +# Use bash for better string escaping (on Ubuntu, /bin/sh is dash). +SHELL ["/bin/bash", "-c"] +# Unminimize Ubuntu to install contrib files of git (after package +# update, otherwise unminimize's "apt upgrade" might fail). +RUN 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-dev \ + bsd-mailx \ + build-essential \ + byacc \ + ccache \ + ccrypt \ + chrpath \ + clang \ + curl \ + debhelper \ + default-jre \ + dejagnu \ + dh-autoreconf \ + dh-translations \ + distro-info-data \ + emacs \ + fakeroot \ + flex \ + fp-compiler \ + gawk \ + gdc \ + gdb \ + gdbserver \ +# gettext is needed according to README-maintainer-mode + gettext \ + gfortran \ + git \ + # git-annex : is now used to store bmk results in base-artifacts + git-annex \ + gm2 \ + gnat \ + gobjc \ + gobjc++ \ + golang \ + groff \ + guile-3.0 \ + guile-3.0-dev \ + less \ +# libc6-dbg is necessary for armhf debugging, but also helps on aarch64. + libc6-dbg \ + libcc1-0 \ +# For building lldb. + libedit-dev \ + libexpat1-dev \ + libffi-dev \ + libglib2.0-dev \ + libgmp-dev \ +# libjpeg is necessary for building jipdate + libjpeg-dev \ + liblzma-dev \ + libmpc-dev \ + libmpfr-dev \ +# We need libncurses5 for ancient clang-3289846 used for renderscript AOSP. + libncurses5 \ + libncurses5-dev \ + libpixman-1-dev \ + libpython3-dev \ + libreadline-dev \ + libssl-dev \ + libtcnative-1 \ +# Our bionic-built llvm releases expect to find this but +# focal installs libtinfo6 instead. + libtinfo5 \ + libtool \ +# For building lldb. + libxml2-dev \ + llvm \ + locales \ + lzop \ + make \ + moreutils \ + net-tools \ + netcat \ + nfs-kernel-server \ + ninja-build \ + ntp \ + openssh-server \ + pkg-config \ + psmisc \ + python3-dev \ + python3-pip \ + python3-setuptools \ + python3-venv \ + python3-wheel \ + python3-pandas \ + python3-numpy \ + python3-scipy \ +# Symlink python to python3 to make upstream "repo", which is downloaded +# by distro's repo, happy. Also needed to run lnt checks on focal. + python-is-python3 \ + rsync \ +# sqlite3 is used by lnt test suite + sqlite3 \ + subversion \ + sudo \ + swig \ +# systemtap-sdt-dev allows building glibc with probes, which GDB uses to +# detect shared library events. + systemtap-sdt-dev \ + tclsh \ + texinfo \ + texlive-fonts-recommended \ + texlive-latex-recommended \ + time \ +# tox is used to run lnt test suite + tox \ + unifdef \ + valgrind \ + vim \ +# virtualenv is used for lnt environment + virtualenv \ + wget \ +# xsltproc is needed by GDB in maintainer mode + xsltproc \ + xz-utils \ + zip \ + zlib1g-dev \ + shellcheck \ +# Update tzdata, because some base images have an incorrect file for UTC. + && DEBIAN_FRONTEND=noninteractive apt-get install --reinstall tzdata \ + && rm -f /etc/ssh/ssh_host_*_key* \ + && 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 \ + && locale-gen en_US.UTF-8 && update-locale LANG=en_US.UTF-8 \ + && pip3 install git-review \ + && pip3 install psutil \ +# Patchworks client for pre-commit testing with "-f yaml" support and +# shyaml tool to parse its output; these are used in jenkins-scripts/pw-*.sh. + && pip3 install git-pw \ + && pip3 install shyaml \ +# For testing lldb. + && pip3 install pexpect \ + && true +# Install custom jipdate. +# FIXME: Revert to installing from pip, when pull requests from maxim-kuvyrkov +# are merged https://github.com/Linaro/jipdate/pulls . +RUN git clone -b master https://github.com/maxim-kuvyrkov/jipdate.git /usr/local/jipdate/ \ + && cd /usr/local/jipdate \ + && pip3 install flit \ + && flit build \ + && FLIT_ROOT_INSTALL=1 flit install --symlink +# LLVM requires at least CMake 3.20.0 and we need 3.24 for flang support. + RUN cd /tmp \ + && git clone -b v3.24.2 --single-branch --depth 1 https://github.com/Kitware/CMake.git \ + && cd /tmp/CMake \ + && ./bootstrap --parallel=$(nproc --all) \ + && make -j$(nproc --all) \ + && make -j$(nproc --all) install \ + && cd /tmp \ + && rm -rf /tmp/CMake +# Configure linux tools for benchmarking support. +# +# We symlink linux tools to supportted "hw_tags": +# apm_32, apm_64, sq_32, sq_64, tk1_32, tx1_32, tx1_64. +# HW_TAGS represent tested configurations of hardware+kernel+perf that +# work well together. We create new hw_tag for any variation in hardware, +# kernel, or perf. This gives us assurance that benchmarking data stored +# under bkp-01.tcwglab:results-<HW_TAG>/ directory has no unexpected variations. +# +# For the initial hw_tags for TK1s and TX1s we can use nice short tk1_32, +# tx1_64, and tx1_32 names, but if we update, say, perf version, we would +# need to add something like tk1_32-lt_5.4 (updating linux-tools to 5.4) or +# tx1_64-k_4.10 (updating kernel to 4.10). +# +# Bionic's linux-tools-4.18 version has proven to work well with TK1s' 3.10 and +# TX1s' 4.4 kernels. We need to install it in all distro versionss so that we +# use same perf version to generate and process results. +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ +# cpufrequtils is used by our benchmarking scripts, but we should update them to +# use cpupower from linux-tools everywhere instead. + cpufrequtils \ + linux-tools-common \ + && cat /etc/apt/sources.list | sed -e "s/focal/bionic/g" \ + > /etc/apt/sources.list.d/bionic.list \ +# Import Bionic key + && apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32 \ + && apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + linux-tools-4.18.0-13-generic \ + linux-tools-5.4.0-74-generic \ + linux-tools-5.4.0-80-generic \ + linux-tools-5.4.0-99-generic \ + && apt-get clean \ + && rm -rf \ + /etc/apt/sources.list.d/bionic.list \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* \ + && ln -s /usr/lib/linux-tools/4.18.0-13-generic /usr/lib/linux-tools/tk1_32 \ + && ln -s /usr/lib/linux-tools/4.18.0-13-generic /usr/lib/linux-tools/tx1_32 \ + && ln -s /usr/lib/linux-tools/4.18.0-13-generic /usr/lib/linux-tools/tx1_64 \ + && ln -s /usr/lib/linux-tools/5.4.0-74-generic /usr/lib/linux-tools/sq_32 \ + && ln -s /usr/lib/linux-tools/5.4.0-74-generic /usr/lib/linux-tools/sq_64 \ + && ln -s /usr/lib/linux-tools/5.4.0-80-generic /usr/lib/linux-tools/apm_32 \ + && ln -s /usr/lib/linux-tools/5.4.0-80-generic /usr/lib/linux-tools/apm_64 \ + && ln -s /usr/lib/linux-tools/5.4.0-99-generic /usr/lib/linux-tools/fx_32 \ + && ln -s /usr/lib/linux-tools/5.4.0-99-generic /usr/lib/linux-tools/fx_64 \ + && true +COPY install-armhf-perf-workaround.sh /usr/lib/linux-tools/ +# Add the latest clang (17.0.6) +# We need this in tcwg-llvmbot images for *-latest-clang bots, and in tcwg-build/tcwg-dev +# images for building LLVM with flang enabled. +RUN \ + clang_ver=clang+llvm-17.0.6-armv7a-linux-gnueabihf \ + ext=gz \ + && cd /usr/local \ + && wget --progress=dot:giga https://github.com/llvm/llvm-project/releases/download/llvmorg-17.0.6/$clang_ver.tar.$ext \ + && tar xf $clang_ver.tar.$ext \ + && rm $clang_ver.tar.$ext +# Install git-filter-repo for Ubuntu Focal +RUN curl -f -o $(git --exec-path)/git-filter-repo \ + https://raw.githubusercontent.com/newren/git-filter-repo/main/git-filter-repo \ + && chmod +x $(git --exec-path)/git-filter-repo +# Precommit testing for GNU projects requires autoconf-2.69 and +# automake-1.15.1. Install them in custom paths to avoid confusing +# other tools that make use of the system versions. +# README-maintainer-mode in these projects also mentions libtool-2.2.6 +# and gettext-0.16.1, but there is no tarball available for these +# versions. In addition, some files have been regenerated using +# libtool-2.2.7a which is not available either. Build succeeds in +# with --enable-maintainer-mode and the system versions of libtool and +# gettext, so rely on them. +RUN autoconf_version=2.69 autoconf_ver=autoconf-${autoconf_version} \ + && cd /usr/local \ + && wget https://ftp.gnu.org/gnu/autoconf/${autoconf_ver}.tar.xz \ + && cd /tmp \ + && tar xf /usr/local/${autoconf_ver}.tar.xz \ + && cd ${autoconf_ver} \ + && mkdir build \ + && cd build \ + && ../configure --prefix=/usr/local/${autoconf_ver} \ + && make install \ + && cd /usr/local/${autoconf_ver}/bin \ + && for f in autoconf autoheader autom4te autoreconf autoscan autoupdate ifnames; do \ + ln -sv $f $f-${autoconf_version} ; \ + done \ + && rm -f /usr/local/${autoconf_ver}.tar.xz \ + && automake_version=1.15.1 automake_ver=automake-${automake_version} \ + && cd /usr/local \ + && wget https://ftp.gnu.org/gnu/automake/${automake_ver}.tar.xz \ + && cd /tmp \ + && tar xf /usr/local/${automake_ver}.tar.xz \ + && cd ${automake_ver} \ + && mkdir build \ + && cd build \ + && ../configure --prefix=/usr/local/${automake_ver} \ + && make install \ + && cd /usr/local/${automake_ver}/bin \ + && for f in aclocal automake; do \ + ln -sv $f $f-${automake_version} ; \ + done \ + && rm -f /usr/local/${automake_ver}.tar.xz \ + && rm -rf /tmp/${autoconf_ver} /tmp/${automake_ver} +COPY home-data/ /home-data/ +COPY install-gcc-latest.sh new-user.sh nvidia-power-cycle.sh nvidia-serial.sh \ + /usr/local/bin/ +RUN \ + while read line; do \ + new-user.sh --group $(echo "$line" | cut -d: -f 1,3); \ + done < <(grep -v ":x:x:" /home-data/group) +# Create directories required for X11. We use X11 in tcwg-x2go images and, +# sometimes, in tcwg-dev images. +# We need to create these before "VOLUME /tmp" directive, since after +# the directive stuff from /tmp won't make it into the image. +RUN mkdir -p /tmp/.X11-unix /tmp/.ICE-unix \ + && chmod 1777 /tmp/.X11-unix /tmp/.ICE-unix +# For AArch32 images, add a warning if an interactive shell is opened in an +# AArch64 environment. +RUN echo $'if [ "$(uname -m)" == "aarch64" ] || [ "$(uname -m)" == "x86_64" ]; then\n' \ + $' echo "============================================================================================="\n' \ + $' echo "WARNING: This is a 32-bit container, but your shell is running in a 64-bit environment."\n' \ + $' echo "You probably want to run your shell with the \'linux32\' program to get a 32-bit environment."\n' \ + $' echo "============================================================================================="\n' \ + $'fi\n' \ + >> /etc/bash.bashrc +# 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 ["linux32", "/usr/sbin/sshd", "-D"] +# This is a dummy comment to trigger a base image rebuild. +# checksum: 33dcd3b146cf6b5229a189e1c404e8ee diff --git a/trusty-armhf-tcwg-base/build.sh b/focal-armhf-tcwg-base/build.sh index 67d8934e..67d8934e 120000 --- a/trusty-armhf-tcwg-base/build.sh +++ b/focal-armhf-tcwg-base/build.sh diff --git a/focal-armhf-tcwg-base/focal-armhf-tcwg-build/Dockerfile b/focal-armhf-tcwg-base/focal-armhf-tcwg-build/Dockerfile new file mode 100644 index 00000000..b4894d67 --- /dev/null +++ b/focal-armhf-tcwg-base/focal-armhf-tcwg-build/Dockerfile @@ -0,0 +1,32 @@ +# Auto generated by ./tcwg-base/generate-dockerfiles.sh from tcwg-base/tcwg-build/Dockerfile.in. Do not edit. +FROM linaro/ci-armhf-tcwg-base-ubuntu:focal +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 -p; \ + done </home-data/passwd +# We create ccache directory as tcwg-buildslave, because otherwise +# "docker run -v ccache-volume:/home/tcwg-buildslave/.ccache" will create +# it owned by root:root, which will break builds. We set ccache size: +# - 50G is a bare minimum to ccache the gnu/llvm builds +# - The aa64/amd64 build machines have enough disk to support 50G +# - TK1s have small disk, so try to get by with 10G. +RUN sudo -i -u tcwg-buildslave mkdir -p /home/tcwg-buildslave/.ccache \ + && sudo -i -u tcwg-buildslave ccache -M 10G +# Add llvm 11 to get llvm-objdump with support for --disassemble-symbols. +# We need this in bmk-scripts.git/symbol_md5sum.sh. +RUN \ + apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + llvm-11 \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* \ + # This will override llvm-objdump installed by tcwg-base's llvm package. + && ln -s `which llvm-objdump-11` /usr/local/bin/llvm-objdump +# checksum: a2e2ec304d81da94f161c54c20ea298d diff --git a/trusty-armhf-tcwg-base/trusty-armhf-tcwg-build/build.sh b/focal-armhf-tcwg-base/focal-armhf-tcwg-build/build.sh index 50162e02..50162e02 120000 --- a/trusty-armhf-tcwg-base/trusty-armhf-tcwg-build/build.sh +++ b/focal-armhf-tcwg-base/focal-armhf-tcwg-build/build.sh diff --git a/focal-armhf-tcwg-base/focal-armhf-tcwg-dev/Dockerfile b/focal-armhf-tcwg-base/focal-armhf-tcwg-dev/Dockerfile new file mode 100644 index 00000000..2e9fdfe1 --- /dev/null +++ b/focal-armhf-tcwg-base/focal-armhf-tcwg-dev/Dockerfile @@ -0,0 +1,32 @@ +# Auto generated by ./tcwg-base/generate-dockerfiles.sh from tcwg-base/tcwg-dev/Dockerfile.in. Do not edit. +FROM linaro/ci-armhf-tcwg-base-ubuntu:focal +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y \ + arcanist \ + apt-file \ + elpa-flycheck \ + git-email \ + git-gui \ + git-svn \ + htop \ + iputils-ping \ + iputils-tracepath \ + ispell \ + less \ + mc \ + python3-git \ + screen \ + software-properties-common \ + stgit \ + tig \ + tmux \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* +RUN apt-file update +COPY run.sh start.sh / +ENTRYPOINT ["linux32", "/run.sh"] +CMD ["start.sh"] +# checksum: 18f1ec3322aae4a4b71bce8e347acfc4 diff --git a/trusty-armhf-tcwg-base/trusty-armhf-tcwg-dev/build.sh b/focal-armhf-tcwg-base/focal-armhf-tcwg-dev/build.sh index e8571a37..e8571a37 120000 --- a/trusty-armhf-tcwg-base/trusty-armhf-tcwg-dev/build.sh +++ b/focal-armhf-tcwg-base/focal-armhf-tcwg-dev/build.sh diff --git a/focal-armhf-tcwg-base/focal-armhf-tcwg-llvmbot/Dockerfile b/focal-armhf-tcwg-base/focal-armhf-tcwg-llvmbot/Dockerfile new file mode 100644 index 00000000..d0b23255 --- /dev/null +++ b/focal-armhf-tcwg-base/focal-armhf-tcwg-llvmbot/Dockerfile @@ -0,0 +1,73 @@ +# Auto generated by ./tcwg-base/generate-dockerfiles.sh from tcwg-base/tcwg-llvmbot/Dockerfile.in. Do not edit. +FROM linaro/ci-armhf-tcwg-base-ubuntu:focal +RUN echo "deb https://apt.buildkite.com/buildkite-agent stable main" | tee /etc/apt/sources.list.d/buildkite-agent.list \ + && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 32A37959C2FA5C3C99EFBC32A79206696452D198 +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y \ + binutils-gold \ + buildkite-agent \ + cpio \ + gfortran \ + htop \ + iotop \ +# Add locales used for testing libcxx + language-pack-en \ + language-pack-fr \ + language-pack-ja \ + language-pack-ru \ + language-pack-zh-hans \ + libjson-perl \ + libtinfo-dev \ +# We build clang+llvm releases on Ubuntu Bionic, which has libtinfo.so.5, +# and we link against it. +# Ubuntu Focal by default installs libtinfo6 (aka libtinfo.so.6), and +# our clang+llvm releases don't work on Ubuntu Focal unless we install +# legacy libtinfo5 (aka libtinfo.so.5). +# We should no longer need libtinfo5 when we switch building releases to +# Ubuntu Focal or later. + libtinfo5 \ + linux-tools-common \ + python3-buildbot-worker \ + tmux \ +# uuidgen is used by the flang driver script. Not installed by default on focal. + uuid-runtime \ +# Although the base image has python3-venv installed, this does not give +# you 'virtualenv'. Instead you must do 'python3 -m venv'. However the test +# suite calls virtualenv with --python=python3, so we're ok to use the Python2 +# version here. + virtualenv \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* +# Libcxx needs some locales that are not generated by default +RUN printf "fr_CA ISO-8859-1\ncs_CZ ISO-8859-2" >> /etc/locale.gen \ + && mkdir /usr/local/share/i1en/ \ + && printf "fr_CA ISO-8859-1\ncs_CZ ISO-8859-2" >> /usr/local/share/i1en/SUPPORTED \ + && locale-gen +# Add ninja with support for matching concurrency to available CPU allowance. +RUN git clone -b limit-on-cpu https://github.com/maxim-kuvyrkov/ninja.git \ + && cd ninja \ + && python3 ./configure.py --bootstrap && ./ninja all && ./ninja_test \ + && mv ninja /usr/local/bin/ninja.limit-on-cpu \ + && cd .. \ + && rm -rf ninja \ + && git clone -b master https://github.com/maxim-kuvyrkov/ninja.git \ + && cd ninja \ + && python3 ./configure.py --bootstrap && ./ninja all && ./ninja_test \ + && mv ninja /usr/local/bin/ninja.limit-on-psi \ + && cd .. \ + && rm -rf ninja +RUN new-user.sh --user tcwg-buildbot \ + # Initialize .ccache dir, so that we mount ccache docker volumes with + # correct permissions. + && sudo -i -u tcwg-buildbot mkdir -p /home/tcwg-buildbot/.ccache \ + # Allow non root users to access the buildkite config files + && chmod -R a+rw /etc/buildkite-agent/ +VOLUME /home +COPY run.sh . +COPY start.sh . +ENTRYPOINT ["linux32", "/run.sh"] +CMD ["start.sh"] +# checksum: b01437c7168e565247503b8fd28c1e75 diff --git a/xenial-armhf-tcwg-base/xenial-armhf-tcwg-llvmbot/build.sh b/focal-armhf-tcwg-base/focal-armhf-tcwg-llvmbot/build.sh index cb3c7a8c..cb3c7a8c 120000 --- a/xenial-armhf-tcwg-base/xenial-armhf-tcwg-llvmbot/build.sh +++ b/focal-armhf-tcwg-base/focal-armhf-tcwg-llvmbot/build.sh diff --git a/jammy-amd64-tcwg-base/Dockerfile b/jammy-amd64-tcwg-base/Dockerfile new file mode 100644 index 00000000..b4401bc7 --- /dev/null +++ b/jammy-amd64-tcwg-base/Dockerfile @@ -0,0 +1,330 @@ +# Auto generated by ./tcwg-base/generate-dockerfiles.sh from tcwg-base/Dockerfile.in. Do not edit. +FROM ubuntu:jammy +# Use bash for better string escaping (on Ubuntu, /bin/sh is dash). +SHELL ["/bin/bash", "-c"] +# Unminimize Ubuntu to install contrib files of git (after package +# update, otherwise unminimize's "apt upgrade" might fail). +RUN 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-dev \ + bsd-mailx \ + build-essential \ + byacc \ + ccache \ + ccrypt \ + chrpath \ + clang \ + curl \ + debhelper \ + default-jre \ + dejagnu \ + dh-autoreconf \ + dh-translations \ + distro-info-data \ + emacs \ + fakeroot \ + flex \ + fp-compiler \ + gawk \ + gdc \ + gdb \ + gdbserver \ +# gettext is needed according to README-maintainer-mode + gettext \ + gfortran \ + git \ + # git-annex : is now used to store bmk results in base-artifacts + git-annex \ + git-filter-repo \ + gm2 \ + # For unknown reason "gnat" defaults to "gnat-10" in Jammy, while all other + # GCC packages default to "*-11" versions. + gnat-11 \ + gobjc \ + gobjc++ \ + golang \ + groff \ + guile-3.0 \ + guile-3.0-dev \ + less \ +# libc6-dbg is necessary for armhf debugging, but also helps on aarch64. + libc6-dbg \ + libcc1-0 \ +# For building lldb. + libedit-dev \ + libexpat1-dev \ + libffi-dev \ + libglib2.0-dev \ + libgmp-dev \ +# libjpeg is necessary for building jipdate + libjpeg-dev \ + liblzma-dev \ + libmpc-dev \ + libmpfr-dev \ +# We need libncurses5 for ancient clang-3289846 used for renderscript AOSP. + libncurses5 \ + libncurses5-dev \ + libpixman-1-dev \ + libpython3-dev \ + libreadline-dev \ + libssl-dev \ + libtcnative-1 \ +# Our bionic-built llvm releases expect to find this but +# focal installs libtinfo6 instead. + libtinfo5 \ + libtool \ +# For building lldb. + libxml2-dev \ + llvm \ + locales \ + lzop \ + make \ + mingw-w64 \ + moreutils \ + net-tools \ + netcat \ + nfs-kernel-server \ + ninja-build \ + ntp \ + openssh-server \ + pkg-config \ + psmisc \ + python3-dev \ + python3-pip \ + python3-setuptools \ + python3-venv \ + python3-wheel \ + python3-pandas \ + python3-numpy \ + python3-scipy \ +# Symlink python to python3 to make upstream "repo", which is downloaded +# by distro's repo, happy. Also needed to run lnt checks on focal. + python-is-python3 \ +# Focal doesn't have "repo" package. We also symlink python to python3 +# below solely to make upstream repo, which is downloaded by distro's repo, +# happy. + repo \ + rsync \ +# sqlite3 is used by lnt test suite + sqlite3 \ + subversion \ + sudo \ + swig \ +# systemtap-sdt-dev allows building glibc with probes, which GDB uses to +# detect shared library events. + systemtap-sdt-dev \ + tclsh \ + texinfo \ + texlive-fonts-recommended \ + texlive-latex-recommended \ + time \ +# tox is used to run lnt test suite + tox \ + unifdef \ + valgrind \ + vim \ +# virtualenv is used for lnt environment + virtualenv \ + wget \ +# xsltproc is needed by GDB in maintainer mode + xsltproc \ + xz-utils \ + zip \ + zlib1g-dev \ + shellcheck \ +# Update tzdata, because some base images have an incorrect file for UTC. + && DEBIAN_FRONTEND=noninteractive apt-get install --reinstall tzdata \ + && rm -f /etc/ssh/ssh_host_*_key* \ + && 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 \ + && locale-gen en_US.UTF-8 && update-locale LANG=en_US.UTF-8 \ + && pip3 install git-review \ + && pip3 install psutil \ +# Patchworks client for pre-commit testing with "-f yaml" support and +# shyaml tool to parse its output; these are used in jenkins-scripts/pw-*.sh. + && pip3 install git-pw \ + && pip3 install shyaml \ +# For testing lldb. + && pip3 install pexpect \ +# tensorflow package required to enable MLGO in clang builds (for AOSP toolchains) +# installation of this package fails on arm64/focal + && pip3 install tensorflow \ + && true +# Install custom jipdate. +# FIXME: Revert to installing from pip, when pull requests from maxim-kuvyrkov +# are merged https://github.com/Linaro/jipdate/pulls . +RUN git clone -b master https://github.com/maxim-kuvyrkov/jipdate.git /usr/local/jipdate/ \ + && cd /usr/local/jipdate \ + && pip3 install flit \ + && flit build \ + && FLIT_ROOT_INSTALL=1 flit install --symlink +# LLVM requires at least CMake 3.20.0 and we need 3.24 for flang support. + RUN cd /tmp \ + && git clone -b v3.24.2 --single-branch --depth 1 https://github.com/Kitware/CMake.git \ + && cd /tmp/CMake \ + && ./bootstrap --parallel=$(nproc --all) \ + && make -j$(nproc --all) \ + && make -j$(nproc --all) install \ + && cd /tmp \ + && rm -rf /tmp/CMake +# Configure linux tools for benchmarking support. +# +# We symlink linux tools to supportted "hw_tags": +# apm_32, apm_64, sq_32, sq_64, tk1_32, tx1_32, tx1_64. +# HW_TAGS represent tested configurations of hardware+kernel+perf that +# work well together. We create new hw_tag for any variation in hardware, +# kernel, or perf. This gives us assurance that benchmarking data stored +# under bkp-01.tcwglab:results-<HW_TAG>/ directory has no unexpected variations. +# +# For the initial hw_tags for TK1s and TX1s we can use nice short tk1_32, +# tx1_64, and tx1_32 names, but if we update, say, perf version, we would +# need to add something like tk1_32-lt_5.4 (updating linux-tools to 5.4) or +# tx1_64-k_4.10 (updating kernel to 4.10). +# +# Bionic's linux-tools-4.18 version has proven to work well with TK1s' 3.10 and +# TX1s' 4.4 kernels. We need to install it in all distro versionss so that we +# use same perf version to generate and process results. +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ +# cpufrequtils is used by our benchmarking scripts, but we should update them to +# use cpupower from linux-tools everywhere instead. + cpufrequtils \ + linux-tools-common \ + && cat /etc/apt/sources.list | sed -e "s/jammy/bionic/g" \ + > /etc/apt/sources.list.d/bionic.list \ +# Import Bionic key + && apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32 \ + && apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + linux-tools-4.18.0-13-generic \ + linux-tools-5.4.0-74-generic \ + linux-tools-5.4.0-80-generic \ + linux-tools-5.4.0-99-generic \ + linux-tools-5.19.0-41-generic \ + && apt-get clean \ + && rm -rf \ + /etc/apt/sources.list.d/bionic.list \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* \ + && ln -s /usr/lib/linux-tools/4.18.0-13-generic /usr/lib/linux-tools/tk1_32 \ + && ln -s /usr/lib/linux-tools/4.18.0-13-generic /usr/lib/linux-tools/tx1_32 \ + && ln -s /usr/lib/linux-tools/4.18.0-13-generic /usr/lib/linux-tools/tx1_64 \ + && ln -s /usr/lib/linux-tools/5.4.0-74-generic /usr/lib/linux-tools/sq_32 \ + && ln -s /usr/lib/linux-tools/5.4.0-74-generic /usr/lib/linux-tools/sq_64 \ + && ln -s /usr/lib/linux-tools/5.4.0-80-generic /usr/lib/linux-tools/apm_32 \ + && ln -s /usr/lib/linux-tools/5.4.0-80-generic /usr/lib/linux-tools/apm_64 \ + && ln -s /usr/lib/linux-tools/5.4.0-99-generic /usr/lib/linux-tools/fx_32 \ + && ln -s /usr/lib/linux-tools/5.4.0-99-generic /usr/lib/linux-tools/fx_64 \ + && ln -s /usr/lib/linux-tools/5.19.0-41-generic /usr/lib/linux-tools/qc_32 \ + && ln -s /usr/lib/linux-tools/5.19.0-41-generic /usr/lib/linux-tools/qc_64 \ + && true +# Install usb libs and OpenOCD on x86 hosts, used to target bare-metal boards. +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + libusb-1.0 \ + libusb-dev \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* +RUN cd /tmp \ + && git clone --single-branch https://git.code.sf.net/p/openocd/code openocd \ + && cd /tmp/openocd \ +# Next commit (ce5027ab019ac7f96d05ec5f8f533144b3bcafdf) breaks semihosting. +# See https://review.openocd.org/c/openocd/+/6888 . + && git checkout e5f515f990cc345fd3089a5520f39d5a128329bd \ + && ./bootstrap \ + && ./configure --enable-stlink \ + && make -j$(nproc --all) \ + && make -j$(nproc --all) install \ + && cd /tmp \ + && rm -rf /tmp/openocd +# Add the latest clang (17.0.6) +# We need this in tcwg-llvmbot images for *-latest-clang bots, and in tcwg-build/tcwg-dev +# images for building LLVM with flang enabled. +# Precommit testing for GNU projects requires autoconf-2.69 and +# automake-1.15.1. Install them in custom paths to avoid confusing +# other tools that make use of the system versions. +# README-maintainer-mode in these projects also mentions libtool-2.2.6 +# and gettext-0.16.1, but there is no tarball available for these +# versions. In addition, some files have been regenerated using +# libtool-2.2.7a which is not available either. Build succeeds in +# with --enable-maintainer-mode and the system versions of libtool and +# gettext, so rely on them. +RUN autoconf_version=2.69 autoconf_ver=autoconf-${autoconf_version} \ + && cd /usr/local \ + && wget https://ftp.gnu.org/gnu/autoconf/${autoconf_ver}.tar.xz \ + && cd /tmp \ + && tar xf /usr/local/${autoconf_ver}.tar.xz \ + && cd ${autoconf_ver} \ + && mkdir build \ + && cd build \ + && ../configure --prefix=/usr/local/${autoconf_ver} \ + && make install \ + && cd /usr/local/${autoconf_ver}/bin \ + && for f in autoconf autoheader autom4te autoreconf autoscan autoupdate ifnames; do \ + ln -sv $f $f-${autoconf_version} ; \ + done \ + && rm -f /usr/local/${autoconf_ver}.tar.xz \ + && automake_version=1.15.1 automake_ver=automake-${automake_version} \ + && cd /usr/local \ + && wget https://ftp.gnu.org/gnu/automake/${automake_ver}.tar.xz \ + && cd /tmp \ + && tar xf /usr/local/${automake_ver}.tar.xz \ + && cd ${automake_ver} \ + && mkdir build \ + && cd build \ + && ../configure --prefix=/usr/local/${automake_ver} \ + && make install \ + && cd /usr/local/${automake_ver}/bin \ + && for f in aclocal automake; do \ + ln -sv $f $f-${automake_version} ; \ + done \ + && rm -f /usr/local/${automake_ver}.tar.xz \ + && rm -rf /tmp/${autoconf_ver} /tmp/${automake_ver} +COPY home-data/ /home-data/ +COPY install-gcc-latest.sh new-user.sh nvidia-power-cycle.sh nvidia-serial.sh \ + /usr/local/bin/ +RUN \ + while read line; do \ + new-user.sh --group $(echo "$line" | cut -d: -f 1,3); \ + done < <(grep -v ":x:x:" /home-data/group) +# Create directories required for X11. We use X11 in tcwg-x2go images and, +# sometimes, in tcwg-dev images. +# We need to create these before "VOLUME /tmp" directive, since after +# the directive stuff from /tmp won't make it into the image. +RUN mkdir -p /tmp/.X11-unix /tmp/.ICE-unix \ + && chmod 1777 /tmp/.X11-unix /tmp/.ICE-unix +# 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"] +# This is a dummy comment to trigger a base image rebuild. +# checksum: 6abe91c402501929753104a36a53da66 diff --git a/trusty-i386-tcwg-base/build.sh b/jammy-amd64-tcwg-base/build.sh index 67d8934e..67d8934e 120000 --- a/trusty-i386-tcwg-base/build.sh +++ b/jammy-amd64-tcwg-base/build.sh diff --git a/jammy-amd64-tcwg-base/jammy-amd64-tcwg-build/Dockerfile b/jammy-amd64-tcwg-base/jammy-amd64-tcwg-build/Dockerfile new file mode 100644 index 00000000..020908f6 --- /dev/null +++ b/jammy-amd64-tcwg-base/jammy-amd64-tcwg-build/Dockerfile @@ -0,0 +1,29 @@ +# Auto generated by ./tcwg-base/generate-dockerfiles.sh from tcwg-base/tcwg-build/Dockerfile.in. Do not edit. +FROM linaro/ci-amd64-tcwg-base-ubuntu:jammy +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 -p; \ + done </home-data/passwd +# We create ccache directory as tcwg-buildslave, because otherwise +# "docker run -v ccache-volume:/home/tcwg-buildslave/.ccache" will create +# it owned by root:root, which will break builds. We set ccache size: +# - 50G is a bare minimum to ccache the gnu/llvm builds +# - The aa64/amd64 build machines have enough disk to support 50G +# - TK1s have small disk, so try to get by with 10G. +RUN sudo -i -u tcwg-buildslave mkdir -p /home/tcwg-buildslave/.ccache \ + && sudo -i -u tcwg-buildslave ccache -M 50G +# Install wine. +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: 1322aafd37c1e25c38b6b627e3c475ff diff --git a/trusty-i386-tcwg-base/trusty-i386-tcwg-build/build.sh b/jammy-amd64-tcwg-base/jammy-amd64-tcwg-build/build.sh index 50162e02..50162e02 120000 --- a/trusty-i386-tcwg-base/trusty-i386-tcwg-build/build.sh +++ b/jammy-amd64-tcwg-base/jammy-amd64-tcwg-build/build.sh diff --git a/jammy-amd64-tcwg-base/jammy-amd64-tcwg-dev/Dockerfile b/jammy-amd64-tcwg-base/jammy-amd64-tcwg-dev/Dockerfile new file mode 100644 index 00000000..47e2afba --- /dev/null +++ b/jammy-amd64-tcwg-base/jammy-amd64-tcwg-dev/Dockerfile @@ -0,0 +1,32 @@ +# Auto generated by ./tcwg-base/generate-dockerfiles.sh from tcwg-base/tcwg-dev/Dockerfile.in. Do not edit. +FROM linaro/ci-amd64-tcwg-base-ubuntu:jammy +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y \ + arcanist \ + apt-file \ + elpa-flycheck \ + git-email \ + git-gui \ + git-svn \ + htop \ + iputils-ping \ + iputils-tracepath \ + ispell \ + less \ + mc \ + python3-git \ + screen \ + software-properties-common \ + stgit \ + tig \ + tmux \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* +RUN apt-file update +COPY run.sh start.sh / +ENTRYPOINT ["/run.sh"] +CMD ["start.sh"] +# checksum: 3e9774c1f692d5050c2693715d221784 diff --git a/xenial-amd64-tcwg-base/xenial-amd64-tcwg-dev/build.sh b/jammy-amd64-tcwg-base/jammy-amd64-tcwg-dev/build.sh index e8571a37..e8571a37 120000 --- a/xenial-amd64-tcwg-base/xenial-amd64-tcwg-dev/build.sh +++ b/jammy-amd64-tcwg-base/jammy-amd64-tcwg-dev/build.sh diff --git a/jammy-amd64-tcwg-base/jammy-amd64-tcwg-dev/jammy-amd64-tcwg-x2go/Dockerfile b/jammy-amd64-tcwg-base/jammy-amd64-tcwg-dev/jammy-amd64-tcwg-x2go/Dockerfile new file mode 100644 index 00000000..c6f8228a --- /dev/null +++ b/jammy-amd64-tcwg-base/jammy-amd64-tcwg-dev/jammy-amd64-tcwg-x2go/Dockerfile @@ -0,0 +1,33 @@ +# Auto generated by ./tcwg-base/generate-dockerfiles.sh from tcwg-base/tcwg-dev/tcwg-x2go/Dockerfile.in. Do not edit. +FROM linaro/ci-amd64-tcwg-dev-ubuntu:jammy +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y \ + ubuntu-desktop \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y \ + duplicity \ + light-themes \ + mate-desktop-environment \ + ubuntu-mate-themes \ + x2goserver \ + x2goserver-xsession \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y \ + ddd \ + xfonts-100dpi \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* +# checksum: e552331ac0d778d8a8427eb735b51b45 diff --git a/jammy-amd64-tcwg-base/jammy-amd64-tcwg-dev/jammy-amd64-tcwg-x2go/build.sh b/jammy-amd64-tcwg-base/jammy-amd64-tcwg-dev/jammy-amd64-tcwg-x2go/build.sh new file mode 120000 index 00000000..6e52e4e6 --- /dev/null +++ b/jammy-amd64-tcwg-base/jammy-amd64-tcwg-dev/jammy-amd64-tcwg-x2go/build.sh @@ -0,0 +1 @@ +../../../tcwg-base/tcwg-dev/tcwg-x2go/build.sh
\ No newline at end of file diff --git a/jammy-amd64-tcwg-base/jammy-amd64-tcwg-dev/jammy-amd64-tcwg-x2go/gerrit-branches b/jammy-amd64-tcwg-base/jammy-amd64-tcwg-dev/jammy-amd64-tcwg-x2go/gerrit-branches new file mode 120000 index 00000000..748350c7 --- /dev/null +++ b/jammy-amd64-tcwg-base/jammy-amd64-tcwg-dev/jammy-amd64-tcwg-x2go/gerrit-branches @@ -0,0 +1 @@ +../../../tcwg-base/tcwg-dev/tcwg-x2go/gerrit-branches
\ No newline at end of file diff --git a/jammy-amd64-tcwg-base/jammy-amd64-tcwg-host/Dockerfile b/jammy-amd64-tcwg-base/jammy-amd64-tcwg-host/Dockerfile new file mode 100644 index 00000000..85d2a109 --- /dev/null +++ b/jammy-amd64-tcwg-base/jammy-amd64-tcwg-host/Dockerfile @@ -0,0 +1,37 @@ +# Auto generated by ./tcwg-base/generate-dockerfiles.sh from tcwg-base/tcwg-host/Dockerfile.in. Do not edit. +FROM linaro/ci-amd64-tcwg-base-ubuntu:jammy +# Install static user-mode QEMU for running SVE LLVM buildbots via QEMU +# on x86_64 machines. We bind-mount qemu-aarch64-static binary inside +# the aarch64 tcwg-llvmbot container, and all specify it as container +# entrypoint. This allows us to run aarch64 container with SVE support. +# We do this only for Focal, since Bionic's QEMU version has no SVE support. +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + qemu-user-static \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* +COPY docker-stats docker-wrapper tcwg-build.sh /usr/local/bin/ +COPY docker-wrapper /usr/local/bin/docker +COPY run.sh start.sh / +# Allow privileged containers to access services on the bare machine. +# See run_on_bare_machine and run.sh for details. +COPY run_on_bare_machine /usr/local/bin/ +RUN ln -sf /usr/local/bin/run_on_bare_machine /usr/sbin/sysctl \ + && ln -sf /usr/local/bin/run_on_bare_machine /usr/bin/systemctl \ + && ln -sf /usr/local/bin/run_on_bare_machine /usr/bin/timedatectl \ + && ln -sf /usr/local/bin/run_on_bare_machine /usr/sbin/reboot +# These are compatibility links for prepare-board.sh to find cpupower in the same +# place when running "start_board" on bare machine and inside host container. +# These are for TK1s and TX1s. +RUN true \ + && ln -s /usr/lib/linux-tools/4.18.0-13-generic /usr/lib/linux-tools/3.10.40 \ + && ln -s /usr/lib/linux-tools/4.18.0-13-generic /usr/lib/linux-tools/4.4.38-tegra +ENV TINI_VERSION v0.18.0 +ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini-amd64 /sbin/tini +RUN chmod +x /sbin/tini +ENTRYPOINT ["/sbin/tini", "--", "/run.sh"] +CMD ["start.sh"] +# checksum: 002a99f683074f27f054ea4ac1c5ee0c diff --git a/jammy-amd64-tcwg-base/jammy-amd64-tcwg-host/build.sh b/jammy-amd64-tcwg-base/jammy-amd64-tcwg-host/build.sh new file mode 120000 index 00000000..2c954456 --- /dev/null +++ b/jammy-amd64-tcwg-base/jammy-amd64-tcwg-host/build.sh @@ -0,0 +1 @@ +../../tcwg-base/tcwg-host/build.sh
\ No newline at end of file diff --git a/jammy-amd64-tcwg-base/jammy-amd64-tcwg-lnt/Dockerfile b/jammy-amd64-tcwg-base/jammy-amd64-tcwg-lnt/Dockerfile new file mode 100644 index 00000000..1d4583cc --- /dev/null +++ b/jammy-amd64-tcwg-base/jammy-amd64-tcwg-lnt/Dockerfile @@ -0,0 +1,12 @@ +# Auto generated by ./tcwg-base/generate-dockerfiles.sh from tcwg-base/tcwg-lnt/Dockerfile.in. Do not edit. +FROM linaro/ci-amd64-tcwg-base-ubuntu:jammy +RUN new-user.sh --user tcwg-buildslave \ + && sudo -i -u tcwg-buildslave mkdir bin +COPY lnt.sh /home/tcwg-buildslave/bin +COPY run.sh start.sh / +ENV TINI_VERSION v0.18.0 +ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini-amd64 /sbin/tini +RUN chmod +x /sbin/tini +ENTRYPOINT ["/sbin/tini", "--", "/run.sh"] +CMD ["start.sh"] +# checksum: 502d7b6a7d7304e72a080e9d86554afe diff --git a/jammy-amd64-tcwg-base/jammy-amd64-tcwg-lnt/build.sh b/jammy-amd64-tcwg-base/jammy-amd64-tcwg-lnt/build.sh new file mode 120000 index 00000000..7fc24e9b --- /dev/null +++ b/jammy-amd64-tcwg-base/jammy-amd64-tcwg-lnt/build.sh @@ -0,0 +1 @@ +../../tcwg-base/tcwg-lnt/build.sh
\ No newline at end of file diff --git a/jammy-arm64-tcwg-base/Dockerfile b/jammy-arm64-tcwg-base/Dockerfile new file mode 100644 index 00000000..4c939f20 --- /dev/null +++ b/jammy-arm64-tcwg-base/Dockerfile @@ -0,0 +1,311 @@ +# Auto generated by ./tcwg-base/generate-dockerfiles.sh from tcwg-base/Dockerfile.in. Do not edit. +FROM ubuntu:jammy +# Use bash for better string escaping (on Ubuntu, /bin/sh is dash). +SHELL ["/bin/bash", "-c"] +# Unminimize Ubuntu to install contrib files of git (after package +# update, otherwise unminimize's "apt upgrade" might fail). +RUN 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-dev \ + bsd-mailx \ + build-essential \ + byacc \ + ccache \ + ccrypt \ + chrpath \ + clang \ + curl \ + debhelper \ + default-jre \ + dejagnu \ + dh-autoreconf \ + dh-translations \ + distro-info-data \ + emacs \ + fakeroot \ + flex \ + fp-compiler \ + gawk \ + gdc \ + gdb \ + gdbserver \ +# gettext is needed according to README-maintainer-mode + gettext \ + gfortran \ + git \ + # git-annex : is now used to store bmk results in base-artifacts + git-annex \ + git-filter-repo \ + gm2 \ + # For unknown reason "gnat" defaults to "gnat-10" in Jammy, while all other + # GCC packages default to "*-11" versions. + gnat-11 \ + gobjc \ + gobjc++ \ + golang \ + groff \ + guile-3.0 \ + guile-3.0-dev \ + less \ +# libc6-dbg is necessary for armhf debugging, but also helps on aarch64. + libc6-dbg \ + libcc1-0 \ +# For building lldb. + libedit-dev \ + libexpat1-dev \ + libffi-dev \ + libglib2.0-dev \ + libgmp-dev \ +# libjpeg is necessary for building jipdate + libjpeg-dev \ + liblzma-dev \ + libmpc-dev \ + libmpfr-dev \ +# We need libncurses5 for ancient clang-3289846 used for renderscript AOSP. + libncurses5 \ + libncurses5-dev \ + libpixman-1-dev \ + libpython3-dev \ + libreadline-dev \ + libssl-dev \ + libtcnative-1 \ +# Our bionic-built llvm releases expect to find this but +# focal installs libtinfo6 instead. + libtinfo5 \ + libtool \ +# For building lldb. + libxml2-dev \ + llvm \ + locales \ + lzop \ + make \ + moreutils \ + net-tools \ + netcat \ + nfs-kernel-server \ + ninja-build \ + ntp \ + openssh-server \ + pkg-config \ + psmisc \ + python3-dev \ + python3-pip \ + python3-setuptools \ + python3-venv \ + python3-wheel \ + python3-pandas \ + python3-numpy \ + python3-scipy \ +# Symlink python to python3 to make upstream "repo", which is downloaded +# by distro's repo, happy. Also needed to run lnt checks on focal. + python-is-python3 \ +# Focal doesn't have "repo" package. We also symlink python to python3 +# below solely to make upstream repo, which is downloaded by distro's repo, +# happy. + repo \ + rsync \ +# sqlite3 is used by lnt test suite + sqlite3 \ + subversion \ + sudo \ + swig \ +# systemtap-sdt-dev allows building glibc with probes, which GDB uses to +# detect shared library events. + systemtap-sdt-dev \ + tclsh \ + texinfo \ + texlive-fonts-recommended \ + texlive-latex-recommended \ + time \ +# tox is used to run lnt test suite + tox \ + unifdef \ + valgrind \ + vim \ +# virtualenv is used for lnt environment + virtualenv \ + wget \ +# xsltproc is needed by GDB in maintainer mode + xsltproc \ + xz-utils \ + zip \ + zlib1g-dev \ + shellcheck \ +# Update tzdata, because some base images have an incorrect file for UTC. + && DEBIAN_FRONTEND=noninteractive apt-get install --reinstall tzdata \ + && rm -f /etc/ssh/ssh_host_*_key* \ + && 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 \ + && locale-gen en_US.UTF-8 && update-locale LANG=en_US.UTF-8 \ + && pip3 install git-review \ + && pip3 install psutil \ +# Patchworks client for pre-commit testing with "-f yaml" support and +# shyaml tool to parse its output; these are used in jenkins-scripts/pw-*.sh. + && pip3 install git-pw \ + && pip3 install shyaml \ +# For testing lldb. + && pip3 install pexpect \ + && true +# Install custom jipdate. +# FIXME: Revert to installing from pip, when pull requests from maxim-kuvyrkov +# are merged https://github.com/Linaro/jipdate/pulls . +RUN git clone -b master https://github.com/maxim-kuvyrkov/jipdate.git /usr/local/jipdate/ \ + && cd /usr/local/jipdate \ + && pip3 install flit \ + && flit build \ + && FLIT_ROOT_INSTALL=1 flit install --symlink +# LLVM requires at least CMake 3.20.0 and we need 3.24 for flang support. +RUN wget https://github.com/Kitware/CMake/releases/download/v3.24.2/cmake-3.24.2-linux-aarch64.sh \ + && chmod +x cmake-3.24.2-linux-aarch64.sh \ + && ./cmake-3.24.2-linux-aarch64.sh --prefix=/usr/local --skip-license +# Configure linux tools for benchmarking support. +# +# We symlink linux tools to supportted "hw_tags": +# apm_32, apm_64, sq_32, sq_64, tk1_32, tx1_32, tx1_64. +# HW_TAGS represent tested configurations of hardware+kernel+perf that +# work well together. We create new hw_tag for any variation in hardware, +# kernel, or perf. This gives us assurance that benchmarking data stored +# under bkp-01.tcwglab:results-<HW_TAG>/ directory has no unexpected variations. +# +# For the initial hw_tags for TK1s and TX1s we can use nice short tk1_32, +# tx1_64, and tx1_32 names, but if we update, say, perf version, we would +# need to add something like tk1_32-lt_5.4 (updating linux-tools to 5.4) or +# tx1_64-k_4.10 (updating kernel to 4.10). +# +# Bionic's linux-tools-4.18 version has proven to work well with TK1s' 3.10 and +# TX1s' 4.4 kernels. We need to install it in all distro versionss so that we +# use same perf version to generate and process results. +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ +# cpufrequtils is used by our benchmarking scripts, but we should update them to +# use cpupower from linux-tools everywhere instead. + cpufrequtils \ + linux-tools-common \ + && cat /etc/apt/sources.list | sed -e "s/jammy/bionic/g" \ + > /etc/apt/sources.list.d/bionic.list \ +# Import Bionic key + && apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32 \ + && apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + linux-tools-4.18.0-13-generic \ + linux-tools-5.4.0-74-generic \ + linux-tools-5.4.0-80-generic \ + linux-tools-5.4.0-99-generic \ + linux-tools-5.19.0-41-generic \ + && apt-get clean \ + && rm -rf \ + /etc/apt/sources.list.d/bionic.list \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* \ + && ln -s /usr/lib/linux-tools/4.18.0-13-generic /usr/lib/linux-tools/tk1_32 \ + && ln -s /usr/lib/linux-tools/4.18.0-13-generic /usr/lib/linux-tools/tx1_32 \ + && ln -s /usr/lib/linux-tools/4.18.0-13-generic /usr/lib/linux-tools/tx1_64 \ + && ln -s /usr/lib/linux-tools/5.4.0-74-generic /usr/lib/linux-tools/sq_32 \ + && ln -s /usr/lib/linux-tools/5.4.0-74-generic /usr/lib/linux-tools/sq_64 \ + && ln -s /usr/lib/linux-tools/5.4.0-80-generic /usr/lib/linux-tools/apm_32 \ + && ln -s /usr/lib/linux-tools/5.4.0-80-generic /usr/lib/linux-tools/apm_64 \ + && ln -s /usr/lib/linux-tools/5.4.0-99-generic /usr/lib/linux-tools/fx_32 \ + && ln -s /usr/lib/linux-tools/5.4.0-99-generic /usr/lib/linux-tools/fx_64 \ + && ln -s /usr/lib/linux-tools/5.19.0-41-generic /usr/lib/linux-tools/qc_32 \ + && ln -s /usr/lib/linux-tools/5.19.0-41-generic /usr/lib/linux-tools/qc_64 \ + && true +# Add the latest clang (17.0.6) +# We need this in tcwg-llvmbot images for *-latest-clang bots, and in tcwg-build/tcwg-dev +# images for building LLVM with flang enabled. +RUN \ + clang_ver=clang+llvm-17.0.6-aarch64-linux-gnu \ + # For the 17.0.6 release, the two archives have different formats. + ext=xz \ + && cd /usr/local \ + && wget --progress=dot:giga https://github.com/llvm/llvm-project/releases/download/llvmorg-17.0.6/$clang_ver.tar.$ext \ + && tar xf $clang_ver.tar.$ext \ + && rm $clang_ver.tar.$ext +# Add libpgmath, which is used by flang +RUN git clone https://github.com/rovka/libpgmath-binaries.git \ + && mv libpgmath-binaries/* /usr/local/lib/ \ + && rm -rf libpgmath-binaries +# Precommit testing for GNU projects requires autoconf-2.69 and +# automake-1.15.1. Install them in custom paths to avoid confusing +# other tools that make use of the system versions. +# README-maintainer-mode in these projects also mentions libtool-2.2.6 +# and gettext-0.16.1, but there is no tarball available for these +# versions. In addition, some files have been regenerated using +# libtool-2.2.7a which is not available either. Build succeeds in +# with --enable-maintainer-mode and the system versions of libtool and +# gettext, so rely on them. +RUN autoconf_version=2.69 autoconf_ver=autoconf-${autoconf_version} \ + && cd /usr/local \ + && wget https://ftp.gnu.org/gnu/autoconf/${autoconf_ver}.tar.xz \ + && cd /tmp \ + && tar xf /usr/local/${autoconf_ver}.tar.xz \ + && cd ${autoconf_ver} \ + && mkdir build \ + && cd build \ + && ../configure --prefix=/usr/local/${autoconf_ver} \ + && make install \ + && cd /usr/local/${autoconf_ver}/bin \ + && for f in autoconf autoheader autom4te autoreconf autoscan autoupdate ifnames; do \ + ln -sv $f $f-${autoconf_version} ; \ + done \ + && rm -f /usr/local/${autoconf_ver}.tar.xz \ + && automake_version=1.15.1 automake_ver=automake-${automake_version} \ + && cd /usr/local \ + && wget https://ftp.gnu.org/gnu/automake/${automake_ver}.tar.xz \ + && cd /tmp \ + && tar xf /usr/local/${automake_ver}.tar.xz \ + && cd ${automake_ver} \ + && mkdir build \ + && cd build \ + && ../configure --prefix=/usr/local/${automake_ver} \ + && make install \ + && cd /usr/local/${automake_ver}/bin \ + && for f in aclocal automake; do \ + ln -sv $f $f-${automake_version} ; \ + done \ + && rm -f /usr/local/${automake_ver}.tar.xz \ + && rm -rf /tmp/${autoconf_ver} /tmp/${automake_ver} +COPY home-data/ /home-data/ +COPY install-gcc-latest.sh new-user.sh nvidia-power-cycle.sh nvidia-serial.sh \ + /usr/local/bin/ +RUN \ + while read line; do \ + new-user.sh --group $(echo "$line" | cut -d: -f 1,3); \ + done < <(grep -v ":x:x:" /home-data/group) +# Create directories required for X11. We use X11 in tcwg-x2go images and, +# sometimes, in tcwg-dev images. +# We need to create these before "VOLUME /tmp" directive, since after +# the directive stuff from /tmp won't make it into the image. +RUN mkdir -p /tmp/.X11-unix /tmp/.ICE-unix \ + && chmod 1777 /tmp/.X11-unix /tmp/.ICE-unix +# 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"] +# This is a dummy comment to trigger a base image rebuild. +# checksum: ff825fc7d2c78670adfaff39d0d05a90 diff --git a/xenial-amd64-tcwg-base/build.sh b/jammy-arm64-tcwg-base/build.sh index 67d8934e..67d8934e 120000 --- a/xenial-amd64-tcwg-base/build.sh +++ b/jammy-arm64-tcwg-base/build.sh diff --git a/jammy-arm64-tcwg-base/jammy-arm64-tcwg-build/Dockerfile b/jammy-arm64-tcwg-base/jammy-arm64-tcwg-build/Dockerfile new file mode 100644 index 00000000..a377af8e --- /dev/null +++ b/jammy-arm64-tcwg-base/jammy-arm64-tcwg-build/Dockerfile @@ -0,0 +1,19 @@ +# Auto generated by ./tcwg-base/generate-dockerfiles.sh from tcwg-base/tcwg-build/Dockerfile.in. Do not edit. +FROM linaro/ci-arm64-tcwg-base-ubuntu:jammy +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 -p; \ + done </home-data/passwd +# We create ccache directory as tcwg-buildslave, because otherwise +# "docker run -v ccache-volume:/home/tcwg-buildslave/.ccache" will create +# it owned by root:root, which will break builds. We set ccache size: +# - 50G is a bare minimum to ccache the gnu/llvm builds +# - The aa64/amd64 build machines have enough disk to support 50G +# - TK1s have small disk, so try to get by with 10G. +RUN sudo -i -u tcwg-buildslave mkdir -p /home/tcwg-buildslave/.ccache \ + && sudo -i -u tcwg-buildslave ccache -M 50G +# checksum: 848b185837dfcd3314a2efa3a51b4b5f diff --git a/xenial-amd64-tcwg-base/xenial-amd64-tcwg-build/build.sh b/jammy-arm64-tcwg-base/jammy-arm64-tcwg-build/build.sh index 50162e02..50162e02 120000 --- a/xenial-amd64-tcwg-base/xenial-amd64-tcwg-build/build.sh +++ b/jammy-arm64-tcwg-base/jammy-arm64-tcwg-build/build.sh diff --git a/jammy-arm64-tcwg-base/jammy-arm64-tcwg-dev/Dockerfile b/jammy-arm64-tcwg-base/jammy-arm64-tcwg-dev/Dockerfile new file mode 100644 index 00000000..2e4ee88d --- /dev/null +++ b/jammy-arm64-tcwg-base/jammy-arm64-tcwg-dev/Dockerfile @@ -0,0 +1,32 @@ +# Auto generated by ./tcwg-base/generate-dockerfiles.sh from tcwg-base/tcwg-dev/Dockerfile.in. Do not edit. +FROM linaro/ci-arm64-tcwg-base-ubuntu:jammy +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y \ + arcanist \ + apt-file \ + elpa-flycheck \ + git-email \ + git-gui \ + git-svn \ + htop \ + iputils-ping \ + iputils-tracepath \ + ispell \ + less \ + mc \ + python3-git \ + screen \ + software-properties-common \ + stgit \ + tig \ + tmux \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* +RUN apt-file update +COPY run.sh start.sh / +ENTRYPOINT ["/run.sh"] +CMD ["start.sh"] +# checksum: f22c2401522b340ea0a1f0a5ce4acc63 diff --git a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-dev/build.sh b/jammy-arm64-tcwg-base/jammy-arm64-tcwg-dev/build.sh index e8571a37..e8571a37 120000 --- a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-dev/build.sh +++ b/jammy-arm64-tcwg-base/jammy-arm64-tcwg-dev/build.sh diff --git a/jammy-arm64-tcwg-base/jammy-arm64-tcwg-dev/jammy-arm64-tcwg-x2go/Dockerfile b/jammy-arm64-tcwg-base/jammy-arm64-tcwg-dev/jammy-arm64-tcwg-x2go/Dockerfile new file mode 100644 index 00000000..efe1ae7b --- /dev/null +++ b/jammy-arm64-tcwg-base/jammy-arm64-tcwg-dev/jammy-arm64-tcwg-x2go/Dockerfile @@ -0,0 +1,33 @@ +# Auto generated by ./tcwg-base/generate-dockerfiles.sh from tcwg-base/tcwg-dev/tcwg-x2go/Dockerfile.in. Do not edit. +FROM linaro/ci-arm64-tcwg-dev-ubuntu:jammy +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y \ + ubuntu-desktop \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y \ + duplicity \ + light-themes \ + mate-desktop-environment \ + ubuntu-mate-themes \ + x2goserver \ + x2goserver-xsession \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y \ + ddd \ + xfonts-100dpi \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* +# checksum: 461ffa2b036454fa4b2e365f8a08b387 diff --git a/jammy-arm64-tcwg-base/jammy-arm64-tcwg-dev/jammy-arm64-tcwg-x2go/build.sh b/jammy-arm64-tcwg-base/jammy-arm64-tcwg-dev/jammy-arm64-tcwg-x2go/build.sh new file mode 120000 index 00000000..6e52e4e6 --- /dev/null +++ b/jammy-arm64-tcwg-base/jammy-arm64-tcwg-dev/jammy-arm64-tcwg-x2go/build.sh @@ -0,0 +1 @@ +../../../tcwg-base/tcwg-dev/tcwg-x2go/build.sh
\ No newline at end of file diff --git a/jammy-arm64-tcwg-base/jammy-arm64-tcwg-dev/jammy-arm64-tcwg-x2go/gerrit-branches b/jammy-arm64-tcwg-base/jammy-arm64-tcwg-dev/jammy-arm64-tcwg-x2go/gerrit-branches new file mode 120000 index 00000000..748350c7 --- /dev/null +++ b/jammy-arm64-tcwg-base/jammy-arm64-tcwg-dev/jammy-arm64-tcwg-x2go/gerrit-branches @@ -0,0 +1 @@ +../../../tcwg-base/tcwg-dev/tcwg-x2go/gerrit-branches
\ No newline at end of file diff --git a/jammy-arm64-tcwg-base/jammy-arm64-tcwg-host/Dockerfile b/jammy-arm64-tcwg-base/jammy-arm64-tcwg-host/Dockerfile new file mode 100644 index 00000000..ba8975fa --- /dev/null +++ b/jammy-arm64-tcwg-base/jammy-arm64-tcwg-host/Dockerfile @@ -0,0 +1,24 @@ +# Auto generated by ./tcwg-base/generate-dockerfiles.sh from tcwg-base/tcwg-host/Dockerfile.in. Do not edit. +FROM linaro/ci-arm64-tcwg-base-ubuntu:jammy +COPY docker-stats docker-wrapper tcwg-build.sh /usr/local/bin/ +COPY docker-wrapper /usr/local/bin/docker +COPY run.sh start.sh / +# Allow privileged containers to access services on the bare machine. +# See run_on_bare_machine and run.sh for details. +COPY run_on_bare_machine /usr/local/bin/ +RUN ln -sf /usr/local/bin/run_on_bare_machine /usr/sbin/sysctl \ + && ln -sf /usr/local/bin/run_on_bare_machine /usr/bin/systemctl \ + && ln -sf /usr/local/bin/run_on_bare_machine /usr/bin/timedatectl \ + && ln -sf /usr/local/bin/run_on_bare_machine /usr/sbin/reboot +# These are compatibility links for prepare-board.sh to find cpupower in the same +# place when running "start_board" on bare machine and inside host container. +# These are for TK1s and TX1s. +RUN true \ + && ln -s /usr/lib/linux-tools/4.18.0-13-generic /usr/lib/linux-tools/3.10.40 \ + && ln -s /usr/lib/linux-tools/4.18.0-13-generic /usr/lib/linux-tools/4.4.38-tegra +ENV TINI_VERSION v0.18.0 +ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini-arm64 /sbin/tini +RUN chmod +x /sbin/tini +ENTRYPOINT ["/sbin/tini", "--", "/run.sh"] +CMD ["start.sh"] +# checksum: bccb05fd35e2bc54da76ea0c4a7d51b9 diff --git a/jammy-arm64-tcwg-base/jammy-arm64-tcwg-host/build.sh b/jammy-arm64-tcwg-base/jammy-arm64-tcwg-host/build.sh new file mode 120000 index 00000000..2c954456 --- /dev/null +++ b/jammy-arm64-tcwg-base/jammy-arm64-tcwg-host/build.sh @@ -0,0 +1 @@ +../../tcwg-base/tcwg-host/build.sh
\ No newline at end of file diff --git a/jammy-arm64-tcwg-base/jammy-arm64-tcwg-llvmbot/Dockerfile b/jammy-arm64-tcwg-base/jammy-arm64-tcwg-llvmbot/Dockerfile new file mode 100644 index 00000000..9c22d400 --- /dev/null +++ b/jammy-arm64-tcwg-base/jammy-arm64-tcwg-llvmbot/Dockerfile @@ -0,0 +1,85 @@ +# Auto generated by ./tcwg-base/generate-dockerfiles.sh from tcwg-base/tcwg-llvmbot/Dockerfile.in. Do not edit. +FROM linaro/ci-arm64-tcwg-base-ubuntu:jammy +RUN echo "deb https://apt.buildkite.com/buildkite-agent stable main" | tee /etc/apt/sources.list.d/buildkite-agent.list \ + && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 32A37959C2FA5C3C99EFBC32A79206696452D198 +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y \ + binutils-gold \ + buildkite-agent \ + cpio \ + gfortran \ + htop \ + iotop \ +# Add locales used for testing libcxx + language-pack-en \ + language-pack-fr \ + language-pack-ja \ + language-pack-ru \ + language-pack-zh-hans \ + libjson-perl \ + libtinfo-dev \ +# We build clang+llvm releases on Ubuntu Bionic, which has libtinfo.so.5, +# and we link against it. +# Ubuntu Focal by default installs libtinfo6 (aka libtinfo.so.6), and +# our clang+llvm releases don't work on Ubuntu Focal unless we install +# legacy libtinfo5 (aka libtinfo.so.5). +# We should no longer need libtinfo5 when we switch building releases to +# Ubuntu Focal or later. + libtinfo5 \ + linux-tools-common \ + python3-buildbot-worker \ + tmux \ +# uuidgen is used by the flang driver script. Not installed by default on focal. + uuid-runtime \ +# Although the base image has python3-venv installed, this does not give +# you 'virtualenv'. Instead you must do 'python3 -m venv'. However the test +# suite calls virtualenv with --python=python3, so we're ok to use the Python2 +# version here. + virtualenv \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* +# Libcxx needs some locales that are not generated by default +RUN printf "fr_CA ISO-8859-1\ncs_CZ ISO-8859-2" >> /etc/locale.gen \ + && mkdir /usr/local/share/i1en/ \ + && printf "fr_CA ISO-8859-1\ncs_CZ ISO-8859-2" >> /usr/local/share/i1en/SUPPORTED \ + && locale-gen +# Add ninja with support for matching concurrency to available CPU allowance. +RUN git clone -b limit-on-cpu https://github.com/maxim-kuvyrkov/ninja.git \ + && cd ninja \ + && python3 ./configure.py --bootstrap && ./ninja all && ./ninja_test \ + && mv ninja /usr/local/bin/ninja.limit-on-cpu \ + && cd .. \ + && rm -rf ninja \ + && git clone -b master https://github.com/maxim-kuvyrkov/ninja.git \ + && cd ninja \ + && python3 ./configure.py --bootstrap && ./ninja all && ./ninja_test \ + && mv ninja /usr/local/bin/ninja.limit-on-psi \ + && cd .. \ + && rm -rf ninja +# AArch64 bots run MLIR tests for SVE and SME using qemu-user-static. +# Armv7-M libcxx bots use qemu-system-arm for emulation. +# SME support was added in 7.1.0 and other Arm (32 bit) bugs were +# fixed between then and 8.1.3. +RUN qemu_ver=8.1.3 \ + && wget --progress=dot:giga https://download.qemu.org/qemu-${qemu_ver}.tar.xz \ + && tar -xvf qemu-${qemu_ver}.tar.xz \ + && cd qemu-${qemu_ver} \ + && ./configure --prefix=/usr/local --target-list=aarch64-linux-user,arm-softmmu \ + && make -j$(nproc) \ + && make install \ + && rm -rf qemu-${qemu_ver}.tar.xz qemu-${qemu_ver}/ +RUN new-user.sh --user tcwg-buildbot \ + # Initialize .ccache dir, so that we mount ccache docker volumes with + # correct permissions. + && sudo -i -u tcwg-buildbot mkdir -p /home/tcwg-buildbot/.ccache \ + # Allow non root users to access the buildkite config files + && chmod -R a+rw /etc/buildkite-agent/ +VOLUME /home +COPY run.sh . +COPY start.sh . +ENTRYPOINT ["/run.sh"] +CMD ["start.sh"] +# checksum: bf0f12e46f0f08b3caeee1cebc815d2e diff --git a/jammy-arm64-tcwg-base/jammy-arm64-tcwg-llvmbot/build.sh b/jammy-arm64-tcwg-base/jammy-arm64-tcwg-llvmbot/build.sh new file mode 120000 index 00000000..cb3c7a8c --- /dev/null +++ b/jammy-arm64-tcwg-base/jammy-arm64-tcwg-llvmbot/build.sh @@ -0,0 +1 @@ +../../tcwg-base/tcwg-llvmbot/build.sh
\ No newline at end of file diff --git a/jammy-armhf-tcwg-base/Dockerfile b/jammy-armhf-tcwg-base/Dockerfile new file mode 100644 index 00000000..78e356d5 --- /dev/null +++ b/jammy-armhf-tcwg-base/Dockerfile @@ -0,0 +1,321 @@ +# Auto generated by ./tcwg-base/generate-dockerfiles.sh from tcwg-base/Dockerfile.in. Do not edit. +FROM arm32v7/ubuntu:jammy +# Use bash for better string escaping (on Ubuntu, /bin/sh is dash). +SHELL ["/bin/bash", "-c"] +# Unminimize Ubuntu to install contrib files of git (after package +# update, otherwise unminimize's "apt upgrade" might fail). +RUN 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-dev \ + bsd-mailx \ + build-essential \ + byacc \ + ccache \ + ccrypt \ + chrpath \ + clang \ + curl \ + debhelper \ + default-jre \ + dejagnu \ + dh-autoreconf \ + dh-translations \ + distro-info-data \ + emacs \ + fakeroot \ + flex \ + fp-compiler \ + gawk \ + gdc \ + gdb \ + gdbserver \ +# gettext is needed according to README-maintainer-mode + gettext \ + gfortran \ + git \ + # git-annex : is now used to store bmk results in base-artifacts + git-annex \ + git-filter-repo \ + gm2 \ + # For unknown reason "gnat" defaults to "gnat-10" in Jammy, while all other + # GCC packages default to "*-11" versions. + gnat-11 \ + gobjc \ + gobjc++ \ + golang \ + groff \ + guile-3.0 \ + guile-3.0-dev \ + less \ +# libc6-dbg is necessary for armhf debugging, but also helps on aarch64. + libc6-dbg \ + libcc1-0 \ +# For building lldb. + libedit-dev \ + libexpat1-dev \ + libffi-dev \ + libglib2.0-dev \ + libgmp-dev \ +# libjpeg is necessary for building jipdate + libjpeg-dev \ + liblzma-dev \ + libmpc-dev \ + libmpfr-dev \ +# We need libncurses5 for ancient clang-3289846 used for renderscript AOSP. + libncurses5 \ + libncurses5-dev \ + libpixman-1-dev \ + libpython3-dev \ + libreadline-dev \ + libssl-dev \ + libtcnative-1 \ +# Our bionic-built llvm releases expect to find this but +# focal installs libtinfo6 instead. + libtinfo5 \ + libtool \ +# For building lldb. + libxml2-dev \ + llvm \ + locales \ + lzop \ + make \ + moreutils \ + net-tools \ + netcat \ + nfs-kernel-server \ + ninja-build \ + ntp \ + openssh-server \ + pkg-config \ + psmisc \ + python3-dev \ + python3-pip \ + python3-setuptools \ + python3-venv \ + python3-wheel \ + python3-pandas \ + python3-numpy \ + python3-scipy \ +# Symlink python to python3 to make upstream "repo", which is downloaded +# by distro's repo, happy. Also needed to run lnt checks on focal. + python-is-python3 \ +# Focal doesn't have "repo" package. We also symlink python to python3 +# below solely to make upstream repo, which is downloaded by distro's repo, +# happy. + repo \ + rsync \ +# sqlite3 is used by lnt test suite + sqlite3 \ + subversion \ + sudo \ + swig \ +# systemtap-sdt-dev allows building glibc with probes, which GDB uses to +# detect shared library events. + systemtap-sdt-dev \ + tclsh \ + texinfo \ + texlive-fonts-recommended \ + texlive-latex-recommended \ + time \ +# tox is used to run lnt test suite + tox \ + unifdef \ + valgrind \ + vim \ +# virtualenv is used for lnt environment + virtualenv \ + wget \ +# xsltproc is needed by GDB in maintainer mode + xsltproc \ + xz-utils \ + zip \ + zlib1g-dev \ + shellcheck \ +# Update tzdata, because some base images have an incorrect file for UTC. + && DEBIAN_FRONTEND=noninteractive apt-get install --reinstall tzdata \ + && rm -f /etc/ssh/ssh_host_*_key* \ + && 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 \ + && locale-gen en_US.UTF-8 && update-locale LANG=en_US.UTF-8 \ + && pip3 install git-review \ + && pip3 install psutil \ +# Patchworks client for pre-commit testing with "-f yaml" support and +# shyaml tool to parse its output; these are used in jenkins-scripts/pw-*.sh. + && pip3 install git-pw \ + && pip3 install shyaml \ +# For testing lldb. + && pip3 install pexpect \ + && true +# Install custom jipdate. +# FIXME: Revert to installing from pip, when pull requests from maxim-kuvyrkov +# are merged https://github.com/Linaro/jipdate/pulls . +RUN git clone -b master https://github.com/maxim-kuvyrkov/jipdate.git /usr/local/jipdate/ \ + && cd /usr/local/jipdate \ + && pip3 install flit \ + && flit build \ + && FLIT_ROOT_INSTALL=1 flit install --symlink +# LLVM requires at least CMake 3.20.0 and we need 3.24 for flang support. + RUN cd /tmp \ + && git clone -b v3.24.2 --single-branch --depth 1 https://github.com/Kitware/CMake.git \ + && cd /tmp/CMake \ + && ./bootstrap --parallel=$(nproc --all) \ + && make -j$(nproc --all) \ + && make -j$(nproc --all) install \ + && cd /tmp \ + && rm -rf /tmp/CMake +# Configure linux tools for benchmarking support. +# +# We symlink linux tools to supportted "hw_tags": +# apm_32, apm_64, sq_32, sq_64, tk1_32, tx1_32, tx1_64. +# HW_TAGS represent tested configurations of hardware+kernel+perf that +# work well together. We create new hw_tag for any variation in hardware, +# kernel, or perf. This gives us assurance that benchmarking data stored +# under bkp-01.tcwglab:results-<HW_TAG>/ directory has no unexpected variations. +# +# For the initial hw_tags for TK1s and TX1s we can use nice short tk1_32, +# tx1_64, and tx1_32 names, but if we update, say, perf version, we would +# need to add something like tk1_32-lt_5.4 (updating linux-tools to 5.4) or +# tx1_64-k_4.10 (updating kernel to 4.10). +# +# Bionic's linux-tools-4.18 version has proven to work well with TK1s' 3.10 and +# TX1s' 4.4 kernels. We need to install it in all distro versionss so that we +# use same perf version to generate and process results. +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ +# cpufrequtils is used by our benchmarking scripts, but we should update them to +# use cpupower from linux-tools everywhere instead. + cpufrequtils \ + linux-tools-common \ + && cat /etc/apt/sources.list | sed -e "s/jammy/bionic/g" \ + > /etc/apt/sources.list.d/bionic.list \ +# Import Bionic key + && apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32 \ + && apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + linux-tools-4.18.0-13-generic \ + linux-tools-5.4.0-74-generic \ + linux-tools-5.4.0-80-generic \ + linux-tools-5.4.0-99-generic \ + linux-tools-5.19.0-41-generic \ + && apt-get clean \ + && rm -rf \ + /etc/apt/sources.list.d/bionic.list \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* \ + && ln -s /usr/lib/linux-tools/4.18.0-13-generic /usr/lib/linux-tools/tk1_32 \ + && ln -s /usr/lib/linux-tools/4.18.0-13-generic /usr/lib/linux-tools/tx1_32 \ + && ln -s /usr/lib/linux-tools/4.18.0-13-generic /usr/lib/linux-tools/tx1_64 \ + && ln -s /usr/lib/linux-tools/5.4.0-74-generic /usr/lib/linux-tools/sq_32 \ + && ln -s /usr/lib/linux-tools/5.4.0-74-generic /usr/lib/linux-tools/sq_64 \ + && ln -s /usr/lib/linux-tools/5.4.0-80-generic /usr/lib/linux-tools/apm_32 \ + && ln -s /usr/lib/linux-tools/5.4.0-80-generic /usr/lib/linux-tools/apm_64 \ + && ln -s /usr/lib/linux-tools/5.4.0-99-generic /usr/lib/linux-tools/fx_32 \ + && ln -s /usr/lib/linux-tools/5.4.0-99-generic /usr/lib/linux-tools/fx_64 \ + && ln -s /usr/lib/linux-tools/5.19.0-41-generic /usr/lib/linux-tools/qc_32 \ + && ln -s /usr/lib/linux-tools/5.19.0-41-generic /usr/lib/linux-tools/qc_64 \ + && true +COPY install-armhf-perf-workaround.sh /usr/lib/linux-tools/ +# Add the latest clang (17.0.6) +# We need this in tcwg-llvmbot images for *-latest-clang bots, and in tcwg-build/tcwg-dev +# images for building LLVM with flang enabled. +RUN \ + clang_ver=clang+llvm-17.0.6-armv7a-linux-gnueabihf \ + ext=gz \ + && cd /usr/local \ + && wget --progress=dot:giga https://github.com/llvm/llvm-project/releases/download/llvmorg-17.0.6/$clang_ver.tar.$ext \ + && tar xf $clang_ver.tar.$ext \ + && rm $clang_ver.tar.$ext +# Precommit testing for GNU projects requires autoconf-2.69 and +# automake-1.15.1. Install them in custom paths to avoid confusing +# other tools that make use of the system versions. +# README-maintainer-mode in these projects also mentions libtool-2.2.6 +# and gettext-0.16.1, but there is no tarball available for these +# versions. In addition, some files have been regenerated using +# libtool-2.2.7a which is not available either. Build succeeds in +# with --enable-maintainer-mode and the system versions of libtool and +# gettext, so rely on them. +RUN autoconf_version=2.69 autoconf_ver=autoconf-${autoconf_version} \ + && cd /usr/local \ + && wget https://ftp.gnu.org/gnu/autoconf/${autoconf_ver}.tar.xz \ + && cd /tmp \ + && tar xf /usr/local/${autoconf_ver}.tar.xz \ + && cd ${autoconf_ver} \ + && mkdir build \ + && cd build \ + && ../configure --prefix=/usr/local/${autoconf_ver} \ + && make install \ + && cd /usr/local/${autoconf_ver}/bin \ + && for f in autoconf autoheader autom4te autoreconf autoscan autoupdate ifnames; do \ + ln -sv $f $f-${autoconf_version} ; \ + done \ + && rm -f /usr/local/${autoconf_ver}.tar.xz \ + && automake_version=1.15.1 automake_ver=automake-${automake_version} \ + && cd /usr/local \ + && wget https://ftp.gnu.org/gnu/automake/${automake_ver}.tar.xz \ + && cd /tmp \ + && tar xf /usr/local/${automake_ver}.tar.xz \ + && cd ${automake_ver} \ + && mkdir build \ + && cd build \ + && ../configure --prefix=/usr/local/${automake_ver} \ + && make install \ + && cd /usr/local/${automake_ver}/bin \ + && for f in aclocal automake; do \ + ln -sv $f $f-${automake_version} ; \ + done \ + && rm -f /usr/local/${automake_ver}.tar.xz \ + && rm -rf /tmp/${autoconf_ver} /tmp/${automake_ver} +COPY home-data/ /home-data/ +COPY install-gcc-latest.sh new-user.sh nvidia-power-cycle.sh nvidia-serial.sh \ + /usr/local/bin/ +RUN \ + while read line; do \ + new-user.sh --group $(echo "$line" | cut -d: -f 1,3); \ + done < <(grep -v ":x:x:" /home-data/group) +# Create directories required for X11. We use X11 in tcwg-x2go images and, +# sometimes, in tcwg-dev images. +# We need to create these before "VOLUME /tmp" directive, since after +# the directive stuff from /tmp won't make it into the image. +RUN mkdir -p /tmp/.X11-unix /tmp/.ICE-unix \ + && chmod 1777 /tmp/.X11-unix /tmp/.ICE-unix +# For AArch32 images, add a warning if an interactive shell is opened in an +# AArch64 environment. +RUN echo $'if [ "$(uname -m)" == "aarch64" ] || [ "$(uname -m)" == "x86_64" ]; then\n' \ + $' echo "============================================================================================="\n' \ + $' echo "WARNING: This is a 32-bit container, but your shell is running in a 64-bit environment."\n' \ + $' echo "You probably want to run your shell with the \'linux32\' program to get a 32-bit environment."\n' \ + $' echo "============================================================================================="\n' \ + $'fi\n' \ + >> /etc/bash.bashrc +# 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 ["linux32", "/usr/sbin/sshd", "-D"] +# This is a dummy comment to trigger a base image rebuild. +# checksum: c703892b252d152771e3928eb17e2f65 diff --git a/xenial-arm64-tcwg-base/build.sh b/jammy-armhf-tcwg-base/build.sh index 67d8934e..67d8934e 120000 --- a/xenial-arm64-tcwg-base/build.sh +++ b/jammy-armhf-tcwg-base/build.sh diff --git a/jammy-armhf-tcwg-base/jammy-armhf-tcwg-build/Dockerfile b/jammy-armhf-tcwg-base/jammy-armhf-tcwg-build/Dockerfile new file mode 100644 index 00000000..a572a1b2 --- /dev/null +++ b/jammy-armhf-tcwg-base/jammy-armhf-tcwg-build/Dockerfile @@ -0,0 +1,19 @@ +# Auto generated by ./tcwg-base/generate-dockerfiles.sh from tcwg-base/tcwg-build/Dockerfile.in. Do not edit. +FROM linaro/ci-armhf-tcwg-base-ubuntu:jammy +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 -p; \ + done </home-data/passwd +# We create ccache directory as tcwg-buildslave, because otherwise +# "docker run -v ccache-volume:/home/tcwg-buildslave/.ccache" will create +# it owned by root:root, which will break builds. We set ccache size: +# - 50G is a bare minimum to ccache the gnu/llvm builds +# - The aa64/amd64 build machines have enough disk to support 50G +# - TK1s have small disk, so try to get by with 10G. +RUN sudo -i -u tcwg-buildslave mkdir -p /home/tcwg-buildslave/.ccache \ + && sudo -i -u tcwg-buildslave ccache -M 10G +# checksum: 3db7084b1504bf636c8d96573a9299d1 diff --git a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/build.sh b/jammy-armhf-tcwg-base/jammy-armhf-tcwg-build/build.sh index 50162e02..50162e02 120000 --- a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/build.sh +++ b/jammy-armhf-tcwg-base/jammy-armhf-tcwg-build/build.sh diff --git a/jammy-armhf-tcwg-base/jammy-armhf-tcwg-dev/Dockerfile b/jammy-armhf-tcwg-base/jammy-armhf-tcwg-dev/Dockerfile new file mode 100644 index 00000000..ff6aa7d5 --- /dev/null +++ b/jammy-armhf-tcwg-base/jammy-armhf-tcwg-dev/Dockerfile @@ -0,0 +1,32 @@ +# Auto generated by ./tcwg-base/generate-dockerfiles.sh from tcwg-base/tcwg-dev/Dockerfile.in. Do not edit. +FROM linaro/ci-armhf-tcwg-base-ubuntu:jammy +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y \ + arcanist \ + apt-file \ + elpa-flycheck \ + git-email \ + git-gui \ + git-svn \ + htop \ + iputils-ping \ + iputils-tracepath \ + ispell \ + less \ + mc \ + python3-git \ + screen \ + software-properties-common \ + stgit \ + tig \ + tmux \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* +RUN apt-file update +COPY run.sh start.sh / +ENTRYPOINT ["linux32", "/run.sh"] +CMD ["start.sh"] +# checksum: f3649c5dac3e39910388f6d8b99c7cf1 diff --git a/xenial-armhf-tcwg-base/xenial-armhf-tcwg-dev/build.sh b/jammy-armhf-tcwg-base/jammy-armhf-tcwg-dev/build.sh index e8571a37..e8571a37 120000 --- a/xenial-armhf-tcwg-base/xenial-armhf-tcwg-dev/build.sh +++ b/jammy-armhf-tcwg-base/jammy-armhf-tcwg-dev/build.sh diff --git a/jammy-armhf-tcwg-base/jammy-armhf-tcwg-host/Dockerfile b/jammy-armhf-tcwg-base/jammy-armhf-tcwg-host/Dockerfile new file mode 100644 index 00000000..16e68200 --- /dev/null +++ b/jammy-armhf-tcwg-base/jammy-armhf-tcwg-host/Dockerfile @@ -0,0 +1,24 @@ +# Auto generated by ./tcwg-base/generate-dockerfiles.sh from tcwg-base/tcwg-host/Dockerfile.in. Do not edit. +FROM linaro/ci-armhf-tcwg-base-ubuntu:jammy +COPY docker-stats docker-wrapper tcwg-build.sh /usr/local/bin/ +COPY docker-wrapper /usr/local/bin/docker +COPY run.sh start.sh / +# Allow privileged containers to access services on the bare machine. +# See run_on_bare_machine and run.sh for details. +COPY run_on_bare_machine /usr/local/bin/ +RUN ln -sf /usr/local/bin/run_on_bare_machine /usr/sbin/sysctl \ + && ln -sf /usr/local/bin/run_on_bare_machine /usr/bin/systemctl \ + && ln -sf /usr/local/bin/run_on_bare_machine /usr/bin/timedatectl \ + && ln -sf /usr/local/bin/run_on_bare_machine /usr/sbin/reboot +# These are compatibility links for prepare-board.sh to find cpupower in the same +# place when running "start_board" on bare machine and inside host container. +# These are for TK1s and TX1s. +RUN true \ + && ln -s /usr/lib/linux-tools/4.18.0-13-generic /usr/lib/linux-tools/3.10.40 \ + && ln -s /usr/lib/linux-tools/4.18.0-13-generic /usr/lib/linux-tools/4.4.38-tegra +ENV TINI_VERSION v0.18.0 +ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini-armhf /sbin/tini +RUN chmod +x /sbin/tini +ENTRYPOINT ["/sbin/tini", "--", "linux32", "/run.sh"] +CMD ["start.sh"] +# checksum: 8b5bd481da58baba499ec495c5255866 diff --git a/jammy-armhf-tcwg-base/jammy-armhf-tcwg-host/build.sh b/jammy-armhf-tcwg-base/jammy-armhf-tcwg-host/build.sh new file mode 120000 index 00000000..2c954456 --- /dev/null +++ b/jammy-armhf-tcwg-base/jammy-armhf-tcwg-host/build.sh @@ -0,0 +1 @@ +../../tcwg-base/tcwg-host/build.sh
\ No newline at end of file diff --git a/jammy-armhf-tcwg-base/jammy-armhf-tcwg-llvmbot/Dockerfile b/jammy-armhf-tcwg-base/jammy-armhf-tcwg-llvmbot/Dockerfile new file mode 100644 index 00000000..452e4934 --- /dev/null +++ b/jammy-armhf-tcwg-base/jammy-armhf-tcwg-llvmbot/Dockerfile @@ -0,0 +1,73 @@ +# Auto generated by ./tcwg-base/generate-dockerfiles.sh from tcwg-base/tcwg-llvmbot/Dockerfile.in. Do not edit. +FROM linaro/ci-armhf-tcwg-base-ubuntu:jammy +RUN echo "deb https://apt.buildkite.com/buildkite-agent stable main" | tee /etc/apt/sources.list.d/buildkite-agent.list \ + && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 32A37959C2FA5C3C99EFBC32A79206696452D198 +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y \ + binutils-gold \ + buildkite-agent \ + cpio \ + gfortran \ + htop \ + iotop \ +# Add locales used for testing libcxx + language-pack-en \ + language-pack-fr \ + language-pack-ja \ + language-pack-ru \ + language-pack-zh-hans \ + libjson-perl \ + libtinfo-dev \ +# We build clang+llvm releases on Ubuntu Bionic, which has libtinfo.so.5, +# and we link against it. +# Ubuntu Focal by default installs libtinfo6 (aka libtinfo.so.6), and +# our clang+llvm releases don't work on Ubuntu Focal unless we install +# legacy libtinfo5 (aka libtinfo.so.5). +# We should no longer need libtinfo5 when we switch building releases to +# Ubuntu Focal or later. + libtinfo5 \ + linux-tools-common \ + python3-buildbot-worker \ + tmux \ +# uuidgen is used by the flang driver script. Not installed by default on focal. + uuid-runtime \ +# Although the base image has python3-venv installed, this does not give +# you 'virtualenv'. Instead you must do 'python3 -m venv'. However the test +# suite calls virtualenv with --python=python3, so we're ok to use the Python2 +# version here. + virtualenv \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* +# Libcxx needs some locales that are not generated by default +RUN printf "fr_CA ISO-8859-1\ncs_CZ ISO-8859-2" >> /etc/locale.gen \ + && mkdir /usr/local/share/i1en/ \ + && printf "fr_CA ISO-8859-1\ncs_CZ ISO-8859-2" >> /usr/local/share/i1en/SUPPORTED \ + && locale-gen +# Add ninja with support for matching concurrency to available CPU allowance. +RUN git clone -b limit-on-cpu https://github.com/maxim-kuvyrkov/ninja.git \ + && cd ninja \ + && python3 ./configure.py --bootstrap && ./ninja all && ./ninja_test \ + && mv ninja /usr/local/bin/ninja.limit-on-cpu \ + && cd .. \ + && rm -rf ninja \ + && git clone -b master https://github.com/maxim-kuvyrkov/ninja.git \ + && cd ninja \ + && python3 ./configure.py --bootstrap && ./ninja all && ./ninja_test \ + && mv ninja /usr/local/bin/ninja.limit-on-psi \ + && cd .. \ + && rm -rf ninja +RUN new-user.sh --user tcwg-buildbot \ + # Initialize .ccache dir, so that we mount ccache docker volumes with + # correct permissions. + && sudo -i -u tcwg-buildbot mkdir -p /home/tcwg-buildbot/.ccache \ + # Allow non root users to access the buildkite config files + && chmod -R a+rw /etc/buildkite-agent/ +VOLUME /home +COPY run.sh . +COPY start.sh . +ENTRYPOINT ["linux32", "/run.sh"] +CMD ["start.sh"] +# checksum: 14a7d240dbcb9dca43f398321a3da6f5 diff --git a/jammy-armhf-tcwg-base/jammy-armhf-tcwg-llvmbot/build.sh b/jammy-armhf-tcwg-base/jammy-armhf-tcwg-llvmbot/build.sh new file mode 120000 index 00000000..cb3c7a8c --- /dev/null +++ b/jammy-armhf-tcwg-base/jammy-armhf-tcwg-llvmbot/build.sh @@ -0,0 +1 @@ +../../tcwg-base/tcwg-llvmbot/build.sh
\ No newline at end of file diff --git a/jessie-amd64-jenkins-master/Dockerfile b/jessie-amd64-jenkins-master/Dockerfile deleted file mode 100644 index 1d407da2..00000000 --- a/jessie-amd64-jenkins-master/Dockerfile +++ /dev/null @@ -1,54 +0,0 @@ -FROM jenkins/jenkins:2.107.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" - -# Install jenkins job builder -# Create plugins directory, symlinked on host machine -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 \ - && 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 \ - && mkdir -p /var/jenkins_plugins \ - && chown jenkins:jenkins /var/jenkins_plugins \ - && ln -s /var/jenkins_home /var/lib/jenkins \ - && mkdir -p /usr/share/groovy/lib \ - && wget -q https://search.maven.org/remotecontent?filepath=org/codehaus/groovy/groovy-xmlrpc/0.8/groovy-xmlrpc-0.8.jar -O /usr/share/groovy/lib/groovy-xmlrpc-0.8.jar \ - && wget -q https://storage.googleapis.com/git-repo-downloads/repo -O /usr/bin/repo \ - && chmod +x /usr/bin/repo \ - && apt-get update \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ - ansible \ - debian-keyring \ - devscripts \ - dirmngr \ - dput \ - jq \ - moreutils \ - python-future \ - python-paramiko \ - python-requests \ - python3-setuptools \ - python3-wheel \ - sshpass \ - virtualenv \ - && wget -q https://launchpad.net/ubuntu/+archive/primary/+files/dput_0.9.6.4ubuntu3_all.deb \ - && dpkg -i --force-all *.deb \ - && apt-get clean \ - && rm -rf \ - /var/lib/apt/lists/* \ - *.deb -USER jenkins - -# Install jenkins plugins -COPY plugins.txt . -RUN install-plugins.sh $(echo $(cat plugins.txt)) \ - && wget -q http://people.linaro.org/~paul.sokolovsky/jenkins/linaro-pubapi-1.3.hpi -O /usr/share/jenkins/ref/plugins/linaro-pubapi-1.3.hpi - -# Forward ports to host -EXPOSE 2222 diff --git a/jessie-amd64-jenkins-master/plugins.txt b/jessie-amd64-jenkins-master/plugins.txt deleted file mode 100644 index b71ec5a3..00000000 --- a/jessie-amd64-jenkins-master/plugins.txt +++ /dev/null @@ -1,69 +0,0 @@ -ansicolor:0.5.2 -ant:1.8 -antisamy-markup-formatter:1.5 -apache-httpcomponents-client-4-api:4.5.3-2.1 -bouncycastle-api:2.16.2 -build-blocker:1.7.3 -build-monitor-plugin:1.10+build.201611041949 -build-name-setter:1.6.9 -build-timeout:1.19 -command-launcher:1.2 -copy-to-slave:1.4.4 -copyartifact:1.39.1 -coverity:1.11.0 -crowd2:1.8 -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 -embeddable-build-status:1.9 -extended-read-permission:2.0 -external-monitor-job:1.7 -ghprb:1.40.0 -gerrit-trigger:2.27.5 -github-organization-folder:1.6 -greenballs:1.15 -groovy-postbuild:1.10 -heavy-job:1.1 -htmlpublisher:1.15 -ircbot:2.30 -jira:2.5 -jenkins-multijob-plugin:1.29 -jobConfigHistory:2.18 -ldap:1.20 -leastload:2.0.1 -log-parser:2.0 -matrix-auth:2.2 -matrix-combinations-parameter:1.3.0 -matrixtieparent:1.2 -mercurial:1.61 -metrics:3.1.2.11 -monitoring:1.71.0 -multiple-scms:0.6 -naginator:1.17.2 -nodelabelparameter:1.7.2 -pam-auth:1.3 -pipeline-utility-steps:2.0.2 -plot:1.11 -PrioritySorter:3.6.0 -publish-over-ssh:1.19.1 -rebuild:1.28 -repo:1.10.7 -simple-theme-plugin:0.4 -ssh-agent:1.15 -subversion:2.10.5 -tap:2.2.1 -throttle-concurrents:2.0.1 -timestamper:1.8.9 -translation:1.16 -urltrigger:0.41 -warnings:4.66 -windows-slaves:1.3.1 -workflow-aggregator:2.5 -ws-cleanup:0.34 -xvfb:1.1.3 -yet-another-docker-plugin:0.1.0-rc47 diff --git a/jessie-amd64/build.sh b/jessie-amd64/build.sh deleted file mode 100755 index 2b645dee..00000000 --- a/jessie-amd64/build.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/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 ../${DISTRIBUTION}.list linaro.list -cp -a ../linaro-overlay-repo.list ../linaro-overlay-repo.key . -sed -e "s|@DISTRIBUTION@|${DISTRIBUTION}|" -i *.list - -image=linaro/ci-${ARCHITECTURE}-debian:${DISTRIBUTION} -docker build --pull --tag=$image . -echo $image > .docker-tag diff --git a/jessie-arm64/build.sh b/jessie-arm64/build.sh deleted file mode 100755 index 2b645dee..00000000 --- a/jessie-arm64/build.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/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 ../${DISTRIBUTION}.list linaro.list -cp -a ../linaro-overlay-repo.list ../linaro-overlay-repo.key . -sed -e "s|@DISTRIBUTION@|${DISTRIBUTION}|" -i *.list - -image=linaro/ci-${ARCHITECTURE}-debian:${DISTRIBUTION} -docker build --pull --tag=$image . -echo $image > .docker-tag diff --git a/jessie-armhf/build.sh b/jessie-armhf/build.sh deleted file mode 100755 index 2b645dee..00000000 --- a/jessie-armhf/build.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/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 ../${DISTRIBUTION}.list linaro.list -cp -a ../linaro-overlay-repo.list ../linaro-overlay-repo.key . -sed -e "s|@DISTRIBUTION@|${DISTRIBUTION}|" -i *.list - -image=linaro/ci-${ARCHITECTURE}-debian:${DISTRIBUTION} -docker build --pull --tag=$image . -echo $image > .docker-tag diff --git a/jessie.list b/jessie.list deleted file mode 100644 index e3e55be1..00000000 --- a/jessie.list +++ /dev/null @@ -1 +0,0 @@ -deb http://http.debian.net/debian jessie-backports main diff --git a/latest-amd64-tcwg-cimonitor/Dockerfile b/latest-amd64-tcwg-cimonitor/Dockerfile new file mode 100644 index 00000000..7b75dd9b --- /dev/null +++ b/latest-amd64-tcwg-cimonitor/Dockerfile @@ -0,0 +1,26 @@ +FROM nginx:latest + +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + cron \ + git \ + libjson-perl \ + libwww-perl \ + python3 \ + python3-yaml \ + wget \ + && git clone https://git.linaro.org/toolchain/jenkins-scripts.git \ + && rm -rf /usr/share/nginx/html \ + && ln -s /public_html /usr/share/nginx/html \ + && mkdir -p /public_html /public_html/for-ci-devs \ + && ln -s tcwg.html /public_html/index.html \ + && echo "*/20 * * * * git -C /jenkins-scripts pull >/dev/null 2>&1 && /jenkins-scripts/generate-cimonitor-dashboard.py /jenkins-scripts/cimonitor-configs/CI-TCWG.yaml /jenkins-scripts/cimonitor-configs/CI-TCWG-BISECT.yaml /jenkins-scripts/cimonitor-configs/CI-TCWG-ARM.yaml /jenkins-scripts/cimonitor-configs/LNT.yaml --output /public_html > /public_html/generate-cimonitor-dashboard.trace 2>&1" > /tmp/crontab.txt \ + && crontab /tmp/crontab.txt \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* + +CMD ["bash", "-c", "service cron start && exec nginx -g 'daemon off;'"] + +# docker run -d -p 8080:80 --name cimonitor linaro/ci-amd64-tcwg-cimonitor-nginx diff --git a/latest-amd64-tcwg-cimonitor/build.sh b/latest-amd64-tcwg-cimonitor/build.sh new file mode 100755 index 00000000..18775bf6 --- /dev/null +++ b/latest-amd64-tcwg-cimonitor/build.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +set -e + +trap cleanup_exit INT TERM EXIT + +cleanup_exit() +{ + : +} + +export LANG=C +top=$(git rev-parse --show-toplevel) +distro=$(basename ${PWD} | cut -f1 -d '-') +arch=$(basename ${PWD} | cut -f2 -d '-') +name=$(basename ${PWD} | cut -f3- -d '-') +image=linaro/ci-${arch}-${name}-nginx:${distro} +baseimage=$(grep "^FROM" Dockerfile | head -n 1 | cut -d" " -f 2) + +docker pull $baseimage 2>/dev/null || true +docker pull $image 2>/dev/null || true +docker build --tag=$image . +echo $image > .docker-tag diff --git a/latest-amd64-tcwg-llvmmonitor/Dockerfile b/latest-amd64-tcwg-llvmmonitor/Dockerfile index 9683fe9b..1f61ee88 100644 --- a/latest-amd64-tcwg-llvmmonitor/Dockerfile +++ b/latest-amd64-tcwg-llvmmonitor/Dockerfile @@ -6,11 +6,14 @@ RUN apt-get update \ git \ libjson-perl \ libwww-perl \ + python3 \ + python3-pip \ + && pip3 install requests \ && git clone https://git.linaro.org/toolchain/llvm/linaro-scripts.git \ && /linaro-scripts/monitor/install.sh /linaro-scripts-monitor \ && rm -rf /usr/share/nginx/html \ && ln -s /linaro-scripts-monitor/html /usr/share/nginx/html \ - && echo "*/5 * * * * /linaro-scripts-monitor/bin/bot-status /linaro-scripts-monitor/bin/linaro.json /linaro-scripts-monitor/html/index.html && chmod +r /linaro-scripts-monitor/html/index.html" | crontab - \ + && echo "*/5 * * * * git -C /linaro-scripts pull >/dev/null 2>&1 && /linaro-scripts-monitor/bin/bot-status.py /linaro-scripts-monitor/bin/linaro.json /linaro-scripts-monitor/html/index.html && chmod +r /linaro-scripts-monitor/html/index.html" | crontab - \ && rm -rf \ /var/lib/apt/lists/* \ /tmp/* \ diff --git a/latest-amd64-tcwg-llvmmonitor/gerrit-branches b/latest-amd64-tcwg-llvmmonitor/gerrit-branches deleted file mode 100644 index 1f7391f9..00000000 --- a/latest-amd64-tcwg-llvmmonitor/gerrit-branches +++ /dev/null @@ -1 +0,0 @@ -master diff --git a/latest-arm64-tcwg-cmakeflangci/Dockerfile b/latest-arm64-tcwg-cmakeflangci/Dockerfile new file mode 100644 index 00000000..9590f4e2 --- /dev/null +++ b/latest-arm64-tcwg-cmakeflangci/Dockerfile @@ -0,0 +1,43 @@ +FROM nginx:latest + +# Install packages +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + build-essential \ + cmake \ + cron \ + file \ + git \ + libssl-dev \ + ninja-build \ + pkg-config \ + wget \ + xz-utils \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* + +# Install a recent enough LLVM release (needs to be at least LLVM 15) +RUN \ + clang_ver=15.0.2 \ + && archive_name=clang+llvm-$clang_ver-aarch64-linux-gnu \ + && cd /usr/local \ + && wget --progress=dot:giga https://github.com/llvm/llvm-project/releases/download/llvmorg-$clang_ver/$archive_name.tar.xz \ + && tar xf $archive_name.tar.xz --strip-components=1 \ + && rm $archive_name.tar.xz + +# Setup CMake scripts: +# https://gitlab.kitware.com/cmake/cmake/-/blob/master/Help/dev/testing.rst +RUN \ + scripts_dir=/ci/Dashboards \ + && mkdir -p $scripts_dir \ + && cd $scripts_dir \ + && git clone https://gitlab.kitware.com/cmake/dashboard-scripts.git CMakeScripts + +COPY flang_dashboard.cmake "/ci/Dashboards/CMakeScripts/flang_dashboard.cmake" + +RUN echo "0 2 * * * PATH=/usr/local/bin:$PATH ctest -S /ci/Dashboards/CMakeScripts/flang_dashboard.cmake -V" | crontab - + +CMD ["bash", "-c", "service cron start && exec nginx -g 'daemon off;'"] + diff --git a/latest-arm64-tcwg-cmakeflangci/build.sh b/latest-arm64-tcwg-cmakeflangci/build.sh new file mode 100755 index 00000000..18775bf6 --- /dev/null +++ b/latest-arm64-tcwg-cmakeflangci/build.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +set -e + +trap cleanup_exit INT TERM EXIT + +cleanup_exit() +{ + : +} + +export LANG=C +top=$(git rev-parse --show-toplevel) +distro=$(basename ${PWD} | cut -f1 -d '-') +arch=$(basename ${PWD} | cut -f2 -d '-') +name=$(basename ${PWD} | cut -f3- -d '-') +image=linaro/ci-${arch}-${name}-nginx:${distro} +baseimage=$(grep "^FROM" Dockerfile | head -n 1 | cut -d" " -f 2) + +docker pull $baseimage 2>/dev/null || true +docker pull $image 2>/dev/null || true +docker build --tag=$image . +echo $image > .docker-tag diff --git a/latest-arm64-tcwg-cmakeflangci/flang_dashboard.cmake b/latest-arm64-tcwg-cmakeflangci/flang_dashboard.cmake new file mode 100644 index 00000000..50dd2e8c --- /dev/null +++ b/latest-arm64-tcwg-cmakeflangci/flang_dashboard.cmake @@ -0,0 +1,27 @@ +# Client maintainer: linaro-toolchain@lists.linaro.org + +set(CTEST_SITE "linaro") +set(CTEST_BUILD_NAME "cmake_ubuntu_arm64_flang") +set(CTEST_BUILD_CONFIGURATION Debug) +set(CTEST_CMAKE_GENERATOR "Ninja") + +set(ENV{CC} "clang") +set(ENV{CXX} "clang++") +set(ENV{FC} "flang-new") +set(ENV{FFLAGS} "-flang-experimental-exec") + +# Exclude some tests (because they need a compiler built with +# ENABLE_LINKER_BUILD_ID set to ON, and the releases default to OFF). +set(exclude + "RunCMake.CPack_DEB.DEBUGINFO" + ) +string(REPLACE ";" "|" exclude "${exclude}") + +# Enable parallelism. +set(CTEST_TEST_ARGS PARALLEL_LEVEL 8 EXCLUDE "^(${exclude})$" ) +set(dashboard_cache " + CMAKE_Fortran_COMPILER:FILEPATH=flang-new + CMAKE_Fortran_FLAGS:STRING=-flang-experimental-exec + CMAKE_Fortran_COMPILER_SUPPORTS_F90:BOOL=1 + ") +include(${CTEST_SCRIPT_DIRECTORY}/cmake_common.cmake) 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 cdf52809..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 | \ - sed -n '/Package: lava-dispatcher/{n;p}' | \ - sed 's/Version: //' | 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/linaro-overlay-buster.list b/linaro-overlay-buster.list new file mode 100644 index 00000000..a1933698 --- /dev/null +++ b/linaro-overlay-buster.list @@ -0,0 +1,2 @@ +deb http://obs.linaro.org/linaro-overlay-buster/buster/ ./ +deb-src http://obs.linaro.org/linaro-overlay-buster/buster/ ./ diff --git a/reviewers.config b/reviewers.config new file mode 100644 index 00000000..e8edaf83 --- /dev/null +++ b/reviewers.config @@ -0,0 +1,3 @@ +[filter "path:^jenkins-master/.*"] + reviewer = ldap/systems + reviewer = fathi.boudra@linaro.org diff --git a/jessie-amd64/Dockerfile b/stretch-amd64-lkft/Dockerfile index 76e5d106..e597cc71 100644 --- a/jessie-amd64/Dockerfile +++ b/stretch-amd64-lkft/Dockerfile @@ -1,10 +1,12 @@ -FROM debian:jessie +FROM debian:stretch COPY *.list *.key /etc/apt/sources.list.d/ RUN dpkg --add-architecture i386 \ && 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 \ + && apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends gnupg \ && apt-key add /etc/apt/sources.list.d/*.key \ && apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \ @@ -19,41 +21,54 @@ RUN dpkg --add-architecture i386 \ bison \ build-essential \ ccache \ + chrpath \ + coreutils \ + cpio \ curl \ debhelper \ debian-archive-keyring \ debian-keyring \ device-tree-compiler \ + diffstat \ doxygen \ fakeroot \ flex \ + gawk \ gcc \ gdisk \ git \ kernel-wedge \ kpartx \ lava-tool \ + libelf-dev \ + libmagickwand-dev \ + libmath-prime-util-perl \ + libsdl1.2-dev \ + libssl-dev \ libstdc++6:i386 \ libtool \ - libvirt-clients \ linaro-image-tools \ lsb-release \ + openjdk-8-jdk \ openssh-server \ + pigz \ + python-pip \ python-requests \ + python3-requests \ qemu-user-static \ sudo \ + texinfo \ time \ u-boot-tools \ uuid-dev \ - virtinst \ + vim-tiny \ + virtualenv \ wget \ + whiptail \ + xz-utils \ zip \ zlib1g:i386 \ zsync \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends -t jessie-backports \ - libsdl1.2-dev \ - openjdk-8-jdk \ - && update-java-alternatives -s java-1.8.0-openjdk-amd64 \ && apt-get clean \ && rm -rf \ /etc/apt/sources.list.d/*.key \ @@ -66,7 +81,14 @@ RUN useradd -m buildslave \ && chmod 440 /etc/sudoers.d/jenkins \ && mkdir -p /var/run/sshd -VOLUME ["/var/lib/libvirt"] +USER buildslave + +RUN pip install --user --force-reinstall jinja2-cli ruamel.yaml \ + && mkdir -p /home/buildslave/bin \ + && curl https://storage.googleapis.com/git-repo-downloads/repo > /home/buildslave/bin/repo \ + && chmod a+x /home/buildslave/bin/repo + +USER root EXPOSE 22 CMD ["/usr/sbin/sshd", "-D"] diff --git a/stretch-amd64-lkft/build.sh b/stretch-amd64-lkft/build.sh new file mode 100755 index 00000000..545f145a --- /dev/null +++ b/stretch-amd64-lkft/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/jenkins-${ARCHITECTURE}-debian-lkft:${DISTRIBUTION} +docker build --pull --tag=$image . +echo $image > .docker-tag 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-armhf/build.sh b/stretch-amd64-ota/build.sh index 155a1b39..a03d97ac 100755 --- a/stretch-armhf/build.sh +++ b/stretch-amd64-ota/build.sh @@ -16,6 +16,6 @@ ARCHITECTURE=$(basename ${PWD} | cut -f2 -d '-') cp -a ../linaro-overlay-obs.list ../linaro-overlay-obs.key . -image=linaro/ci-${ARCHITECTURE}-debian:${DISTRIBUTION} +image=linaro/ci-${ARCHITECTURE}-debian-ota:${DISTRIBUTION} docker build --pull --tag=$image . echo $image > .docker-tag diff --git a/stretch-amd64/Dockerfile b/stretch-amd64/Dockerfile index 1d192522..ac7181c3 100644 --- a/stretch-amd64/Dockerfile +++ b/stretch-amd64/Dockerfile @@ -21,33 +21,45 @@ RUN dpkg --add-architecture i386 \ bison \ build-essential \ ccache \ + cpio \ curl \ debhelper \ debian-archive-keyring \ debian-keyring \ + debootstrap \ device-tree-compiler \ + dosfstools \ doxygen \ fakeroot \ flex \ - gcc \ + genisoimage \ gdisk \ git \ kernel-wedge \ kpartx \ lava-tool \ + libssl-dev \ libstdc++6:i386 \ libtool \ linaro-image-tools \ lsb-release \ + lvm2 \ + mdadm \ + mtools \ openjdk-8-jdk \ + openjdk-11-jdk \ openssh-server \ + parted \ + python-pip \ python-requests \ + python3-requests \ qemu-user-static \ sudo \ time \ u-boot-tools \ uuid-dev \ wget \ + xz-utils \ zip \ zlib1g:i386 \ zsync \ diff --git a/stretch-amd64/backports.list b/stretch-amd64/backports.list new file mode 100644 index 00000000..c983975e --- /dev/null +++ b/stretch-amd64/backports.list @@ -0,0 +1 @@ +deb http://ftp.us.debian.org/debian stretch-backports main diff --git a/stretch-amd64/build.sh b/stretch-amd64/build.sh index 155a1b39..e5c48f77 100755 --- a/stretch-amd64/build.sh +++ b/stretch-amd64/build.sh @@ -16,6 +16,6 @@ ARCHITECTURE=$(basename ${PWD} | cut -f2 -d '-') cp -a ../linaro-overlay-obs.list ../linaro-overlay-obs.key . -image=linaro/ci-${ARCHITECTURE}-debian:${DISTRIBUTION} +image=linaro/jenkins-${ARCHITECTURE}-debian:${DISTRIBUTION} docker build --pull --tag=$image . echo $image > .docker-tag diff --git a/stretch-arm64-fai/Dockerfile b/stretch-arm64-fai/Dockerfile index 458d542c..2f11e0b0 100644 --- a/stretch-arm64-fai/Dockerfile +++ b/stretch-arm64-fai/Dockerfile @@ -1,4 +1,4 @@ -FROM linaro/base-arm64-debian:stretch +FROM debian:stretch COPY *.list *.key /etc/apt/sources.list.d/ 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-arm64/Dockerfile b/stretch-arm64/Dockerfile index 46c96cf6..0ef67e1b 100644 --- a/stretch-arm64/Dockerfile +++ b/stretch-arm64/Dockerfile @@ -1,4 +1,4 @@ -FROM linaro/base-arm64-debian:stretch +FROM debian:stretch COPY *.list *.key /etc/apt/sources.list.d/ @@ -20,32 +20,44 @@ RUN apt-get update \ bison \ build-essential \ ccache \ + cpio \ curl \ debhelper \ debian-archive-keyring \ debian-keyring \ + debootstrap \ device-tree-compiler \ + dosfstools \ doxygen \ fakeroot \ flex \ - gcc \ + genisoimage \ gdisk \ git \ kernel-wedge \ kpartx \ lava-tool \ + libssl-dev \ libtool \ linaro-image-tools \ lsb-release \ + lvm2 \ + mdadm \ + mtools \ openjdk-8-jdk \ + openjdk-11-jdk \ openssh-server \ + parted \ + python-pip \ python-requests \ + python3-requests \ qemu-user-static \ sudo \ time \ u-boot-tools \ uuid-dev \ wget \ + xz-utils \ zip \ zsync \ && apt-get clean \ diff --git a/stretch-arm64/backports.list b/stretch-arm64/backports.list new file mode 100644 index 00000000..c983975e --- /dev/null +++ b/stretch-arm64/backports.list @@ -0,0 +1 @@ +deb http://ftp.us.debian.org/debian stretch-backports main diff --git a/stretch-arm64/build.sh b/stretch-arm64/build.sh index 155a1b39..e5c48f77 100755 --- a/stretch-arm64/build.sh +++ b/stretch-arm64/build.sh @@ -16,6 +16,6 @@ ARCHITECTURE=$(basename ${PWD} | cut -f2 -d '-') cp -a ../linaro-overlay-obs.list ../linaro-overlay-obs.key . -image=linaro/ci-${ARCHITECTURE}-debian:${DISTRIBUTION} +image=linaro/jenkins-${ARCHITECTURE}-debian:${DISTRIBUTION} docker build --pull --tag=$image . echo $image > .docker-tag diff --git a/tcwg-base/Dockerfile.in b/tcwg-base/Dockerfile.in index f8a87092..31b1a18d 100644 --- a/tcwg-base/Dockerfile.in +++ b/tcwg-base/Dockerfile.in @@ -1,32 +1,17 @@ -#if ARCH_amd64 -FROM ubuntu:#{DISTRO} -#elif DISTRO_zesty -FROM snapcraft/zesty-#{ARCH}:latest +#if ARCH_armhf +FROM arm32v7/ubuntu:#{DISTRO} #else -FROM linaro/base-#{ARCH}-ubuntu:#{DISTRO} +FROM ubuntu:#{DISTRO} #endif -#if ARCH_amd64 || ARCH_i386 -RUN (url="http://archive.ubuntu.com/ubuntu/"; \ -#else -RUN (url="http://ports.ubuntu.com/ubuntu-ports/"; \ -#endif - ubuntu=#{DISTRO}; \ - for i in $ubuntu $ubuntu-updates $ubuntu-backports $ubuntu-security; do \ - for j in deb deb-src; do \ - echo "$j $url $i main restricted universe multiverse"; \ - done; \ - echo; \ - done) > /etc/apt/sources.list \ -#if ARCH_amd64 - && dpkg --add-architecture i386 \ -#endif - && apt-get update \ +# Use bash for better string escaping (on Ubuntu, /bin/sh is dash). +SHELL ["/bin/bash", "-c"] + +# Unminimize Ubuntu to install contrib files of git (after package +# update, otherwise unminimize's "apt upgrade" might fail). +RUN apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \ -#if ARCH_i386 - && dpkg-divert --local --rename --add /sbin/initctl \ - && ln -s /bin/true /sbin/initctl \ -#endif + && echo y | unminimize \ && DEBIAN_FRONTEND=noninteractive apt-get install -y devscripts \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ alien \ @@ -34,11 +19,9 @@ RUN (url="http://ports.ubuntu.com/ubuntu-ports/"; \ autogen \ automake \ bc \ + bind9-host \ bison \ -#if ARCH_amd64 || ARCH_i386 - binutils-aarch64-linux-gnu \ - binutils-arm-linux-gnueabihf \ -#endif + binutils-dev \ bsd-mailx \ build-essential \ byacc \ @@ -46,8 +29,9 @@ RUN (url="http://ports.ubuntu.com/ubuntu-ports/"; \ ccrypt \ chrpath \ clang \ - cmake \ + curl \ debhelper \ + default-jre \ dejagnu \ dh-autoreconf \ dh-translations \ @@ -55,79 +39,127 @@ RUN (url="http://ports.ubuntu.com/ubuntu-ports/"; \ emacs \ fakeroot \ flex \ -#if ARCH_amd64 || ARCH_i386 - g++-multilib \ -#endif + fp-compiler \ gawk \ + gdc \ gdb \ gdbserver \ +# gettext is needed according to README-maintainer-mode + gettext \ + gfortran \ git \ - git-review \ + # git-annex : is now used to store bmk results in base-artifacts + git-annex \ +#if !DISTRO_focal + git-filter-repo \ +#endif + gm2 \ +#if DISTRO_jammy + # For unknown reason "gnat" defaults to "gnat-10" in Jammy, while all other + # GCC packages default to "*-11" versions. + gnat-11 \ +#else + gnat \ +#endif + gobjc \ + gobjc++ \ + golang \ groff \ + guile-3.0 \ + guile-3.0-dev \ less \ +# libc6-dbg is necessary for armhf debugging, but also helps on aarch64. + libc6-dbg \ + libcc1-0 \ +# For building lldb. + libedit-dev \ libexpat1-dev \ -#if ARCH_amd64 || ARCH_i386 + libffi-dev \ libglib2.0-dev \ -#endif + libgmp-dev \ +# libjpeg is necessary for building jipdate + libjpeg-dev \ liblzma-dev \ + libmpc-dev \ + libmpfr-dev \ +# We need libncurses5 for ancient clang-3289846 used for renderscript AOSP. + libncurses5 \ libncurses5-dev \ - libpython2.7-dev \ + libpixman-1-dev \ + libpython3-dev \ libreadline-dev \ libssl-dev \ libtcnative-1 \ +# Our bionic-built llvm releases expect to find this but +# focal installs libtinfo6 instead. + libtinfo5 \ libtool \ - linux-tools-generic \ +# For building lldb. + libxml2-dev \ + llvm \ + locales \ lzop \ make \ -#if ARCH_amd64 || ARCH_i386 +#if ARCH_amd64 mingw-w64 \ -# if DISTRO_trusty - mingw32 \ -# endif #endif + moreutils \ net-tools \ netcat \ -#if ARCH_amd64 || !DISTRO_trusty nfs-kernel-server \ -#endif ninja-build \ -#if DISTRO_trusty - openjdk-7-jdk \ -#else - openjdk-8-jdk \ -#endif + ntp \ openssh-server \ -#if ARCH_amd64 || ARCH_i386 pkg-config \ + psmisc \ + python3-dev \ + python3-pip \ + python3-setuptools \ + python3-venv \ + python3-wheel \ + python3-pandas \ + python3-numpy \ + python3-scipy \ +# Symlink python to python3 to make upstream "repo", which is downloaded +# by distro's repo, happy. Also needed to run lnt checks on focal. + python-is-python3 \ +#if !DISTRO_focal +# Focal doesn't have "repo" package. We also symlink python to python3 +# below solely to make upstream repo, which is downloaded by distro's repo, +# happy. + repo \ #endif - python-dev \ -#if DISTRO_trusty - python-virtualenv \ -#endif - postfix \ - pxz \ - qemu-system-arm \ - qemu-user \ rsync \ +# sqlite3 is used by lnt test suite + sqlite3 \ subversion \ sudo \ + swig \ +# systemtap-sdt-dev allows building glibc with probes, which GDB uses to +# detect shared library events. + systemtap-sdt-dev \ tclsh \ texinfo \ texlive-fonts-recommended \ texlive-latex-recommended \ time \ +# tox is used to run lnt test suite + tox \ + unifdef \ valgrind \ vim \ -#if !DISTRO_trusty +# virtualenv is used for lnt environment virtualenv \ -#endif wget \ -#if ARCH_amd64 || ARCH_i386 - wine \ -#endif +# xsltproc is needed by GDB in maintainer mode + xsltproc \ xz-utils \ zip \ zlib1g-dev \ + shellcheck \ +# Update tzdata, because some base images have an incorrect file for UTC. + && DEBIAN_FRONTEND=noninteractive apt-get install --reinstall tzdata \ + && rm -f /etc/ssh/ssh_host_*_key* \ && apt-get clean \ && rm -rf \ /var/lib/apt/lists/* \ @@ -139,27 +171,246 @@ RUN install -D -p -m0755 /usr/share/doc/git/contrib/workdir/git-new-workdir /usr && mkdir -p /var/run/sshd \ && sed -i \ -e "/.*MaxStartups.*/d" \ - -e "/.*MaxSesssions.*/d" /etc/ssh/sshd_config \ + -e "/.*MaxSessions.*/d" /etc/ssh/sshd_config \ && echo "MaxStartups 256" >> /etc/ssh/sshd_config \ - && echo "MaxSessions 256" >> /etc/ssh/sshd_config + && echo "MaxSessions 256" >> /etc/ssh/sshd_config \ + && locale-gen en_US.UTF-8 && update-locale LANG=en_US.UTF-8 \ + && pip3 install git-review \ + && pip3 install psutil \ +# Patchworks client for pre-commit testing with "-f yaml" support and +# shyaml tool to parse its output; these are used in jenkins-scripts/pw-*.sh. + && pip3 install git-pw \ + && pip3 install shyaml \ +# For testing lldb. + && pip3 install pexpect \ +#if DISTRO_focal && !ARCH_armhf +# PIP on jammy (all arches) and focal (armhf) has a version mismatch for pyyaml. + && pip3 install jenkins-job-builder==2.10.0 \ + && git clone --depth 1 https://git.linaro.org/infrastructure/jjb-linaro-plugin.git \ + && cd jjb-linaro-plugin && python3 setup.py install && cd .. && rm -rf jjb-linaro-plugin \ +#endif +#if ARCH_amd64 +# tensorflow package required to enable MLGO in clang builds (for AOSP toolchains) +# installation of this package fails on arm64/focal + && pip3 install tensorflow \ +#endif + && true -COPY postfix-main.cf.in /etc/postfix/main.cf -COPY postfix-sasl_password.in /etc/postfix/sasl_password +# Install custom jipdate. +# FIXME: Revert to installing from pip, when pull requests from maxim-kuvyrkov +# are merged https://github.com/Linaro/jipdate/pulls . +RUN git clone -b master https://github.com/maxim-kuvyrkov/jipdate.git /usr/local/jipdate/ \ + && cd /usr/local/jipdate \ + && pip3 install flit \ + && flit build \ + && FLIT_ROOT_INSTALL=1 flit install --symlink -RUN chown root:root /etc/postfix/sasl_password \ - && chmod 600 /etc/postfix/sasl_password +# LLVM requires at least CMake 3.20.0 and we need 3.24 for flang support. +#if DISTRO_focal || DISTRO_jammy +#if ARCH_arm64 +RUN wget https://github.com/Kitware/CMake/releases/download/v3.24.2/cmake-3.24.2-linux-aarch64.sh \ + && chmod +x cmake-3.24.2-linux-aarch64.sh \ + && ./cmake-3.24.2-linux-aarch64.sh --prefix=/usr/local --skip-license +#else + RUN cd /tmp \ + && git clone -b v3.24.2 --single-branch --depth 1 https://github.com/Kitware/CMake.git \ + && cd /tmp/CMake \ + && ./bootstrap --parallel=$(nproc --all) \ + && make -j$(nproc --all) \ + && make -j$(nproc --all) install \ + && cd /tmp \ + && rm -rf /tmp/CMake +#endif +#endif -#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 \ - && 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.$$ +# Configure linux tools for benchmarking support. +# +# We symlink linux tools to supportted "hw_tags": +# apm_32, apm_64, sq_32, sq_64, tk1_32, tx1_32, tx1_64. +# HW_TAGS represent tested configurations of hardware+kernel+perf that +# work well together. We create new hw_tag for any variation in hardware, +# kernel, or perf. This gives us assurance that benchmarking data stored +# under bkp-01.tcwglab:results-<HW_TAG>/ directory has no unexpected variations. +# +# For the initial hw_tags for TK1s and TX1s we can use nice short tk1_32, +# tx1_64, and tx1_32 names, but if we update, say, perf version, we would +# need to add something like tk1_32-lt_5.4 (updating linux-tools to 5.4) or +# tx1_64-k_4.10 (updating kernel to 4.10). +# +# Bionic's linux-tools-4.18 version has proven to work well with TK1s' 3.10 and +# TX1s' 4.4 kernels. We need to install it in all distro versionss so that we +# use same perf version to generate and process results. +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ +# cpufrequtils is used by our benchmarking scripts, but we should update them to +# use cpupower from linux-tools everywhere instead. + cpufrequtils \ + linux-tools-common \ + && cat /etc/apt/sources.list | sed -e "s/#{DISTRO}/bionic/g" \ + > /etc/apt/sources.list.d/bionic.list \ +# Import Bionic key + && apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32 \ + && apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + linux-tools-4.18.0-13-generic \ + linux-tools-5.4.0-74-generic \ + linux-tools-5.4.0-80-generic \ + linux-tools-5.4.0-99-generic \ +#if !DISTRO_focal + linux-tools-5.19.0-41-generic \ +#endif + && apt-get clean \ + && rm -rf \ + /etc/apt/sources.list.d/bionic.list \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* \ + && ln -s /usr/lib/linux-tools/4.18.0-13-generic /usr/lib/linux-tools/tk1_32 \ + && ln -s /usr/lib/linux-tools/4.18.0-13-generic /usr/lib/linux-tools/tx1_32 \ + && ln -s /usr/lib/linux-tools/4.18.0-13-generic /usr/lib/linux-tools/tx1_64 \ + && ln -s /usr/lib/linux-tools/5.4.0-74-generic /usr/lib/linux-tools/sq_32 \ + && ln -s /usr/lib/linux-tools/5.4.0-74-generic /usr/lib/linux-tools/sq_64 \ + && ln -s /usr/lib/linux-tools/5.4.0-80-generic /usr/lib/linux-tools/apm_32 \ + && ln -s /usr/lib/linux-tools/5.4.0-80-generic /usr/lib/linux-tools/apm_64 \ + && ln -s /usr/lib/linux-tools/5.4.0-99-generic /usr/lib/linux-tools/fx_32 \ + && ln -s /usr/lib/linux-tools/5.4.0-99-generic /usr/lib/linux-tools/fx_64 \ +#if !DISTRO_focal + && ln -s /usr/lib/linux-tools/5.19.0-41-generic /usr/lib/linux-tools/qc_32 \ + && ln -s /usr/lib/linux-tools/5.19.0-41-generic /usr/lib/linux-tools/qc_64 \ +#endif + && true + +#if ARCH_armhf +COPY install-armhf-perf-workaround.sh /usr/lib/linux-tools/ +#endif + +#if ARCH_amd64 +# Install usb libs and OpenOCD on x86 hosts, used to target bare-metal boards. +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + libusb-1.0 \ + libusb-dev \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* +RUN cd /tmp \ + && git clone --single-branch https://git.code.sf.net/p/openocd/code openocd \ + && cd /tmp/openocd \ +# Next commit (ce5027ab019ac7f96d05ec5f8f533144b3bcafdf) breaks semihosting. +# See https://review.openocd.org/c/openocd/+/6888 . + && git checkout e5f515f990cc345fd3089a5520f39d5a128329bd \ + && ./bootstrap \ + && ./configure --enable-stlink \ + && make -j$(nproc --all) \ + && make -j$(nproc --all) install \ + && cd /tmp \ + && rm -rf /tmp/openocd +#endif + +# Add the latest clang (17.0.6) +# We need this in tcwg-llvmbot images for *-latest-clang bots, and in tcwg-build/tcwg-dev +# images for building LLVM with flang enabled. +#if ARCH_arm64 || ARCH_armhf +RUN \ +#if ARCH_arm64 + clang_ver=clang+llvm-17.0.6-aarch64-linux-gnu \ + # For the 17.0.6 release, the two archives have different formats. + ext=xz \ +#else /* ARCH_armhf */ + clang_ver=clang+llvm-17.0.6-armv7a-linux-gnueabihf \ + ext=gz \ +#endif + && cd /usr/local \ + && wget --progress=dot:giga https://github.com/llvm/llvm-project/releases/download/llvmorg-17.0.6/$clang_ver.tar.$ext \ + && tar xf $clang_ver.tar.$ext \ + && rm $clang_ver.tar.$ext +#endif + +#if ARCH_arm64 +# Add libpgmath, which is used by flang +RUN git clone https://github.com/rovka/libpgmath-binaries.git \ + && mv libpgmath-binaries/* /usr/local/lib/ \ + && rm -rf libpgmath-binaries +#endif +#if DISTRO_focal +# Install git-filter-repo for Ubuntu Focal +RUN curl -f -o $(git --exec-path)/git-filter-repo \ + https://raw.githubusercontent.com/newren/git-filter-repo/main/git-filter-repo \ + && chmod +x $(git --exec-path)/git-filter-repo #endif + +# Precommit testing for GNU projects requires autoconf-2.69 and +# automake-1.15.1. Install them in custom paths to avoid confusing +# other tools that make use of the system versions. +# README-maintainer-mode in these projects also mentions libtool-2.2.6 +# and gettext-0.16.1, but there is no tarball available for these +# versions. In addition, some files have been regenerated using +# libtool-2.2.7a which is not available either. Build succeeds in +# with --enable-maintainer-mode and the system versions of libtool and +# gettext, so rely on them. +RUN autoconf_version=2.69 autoconf_ver=autoconf-${autoconf_version} \ + && cd /usr/local \ + && wget https://ftp.gnu.org/gnu/autoconf/${autoconf_ver}.tar.xz \ + && cd /tmp \ + && tar xf /usr/local/${autoconf_ver}.tar.xz \ + && cd ${autoconf_ver} \ + && mkdir build \ + && cd build \ + && ../configure --prefix=/usr/local/${autoconf_ver} \ + && make install \ + && cd /usr/local/${autoconf_ver}/bin \ + && for f in autoconf autoheader autom4te autoreconf autoscan autoupdate ifnames; do \ + ln -sv $f $f-${autoconf_version} ; \ + done \ + && rm -f /usr/local/${autoconf_ver}.tar.xz \ + && automake_version=1.15.1 automake_ver=automake-${automake_version} \ + && cd /usr/local \ + && wget https://ftp.gnu.org/gnu/automake/${automake_ver}.tar.xz \ + && cd /tmp \ + && tar xf /usr/local/${automake_ver}.tar.xz \ + && cd ${automake_ver} \ + && mkdir build \ + && cd build \ + && ../configure --prefix=/usr/local/${automake_ver} \ + && make install \ + && cd /usr/local/${automake_ver}/bin \ + && for f in aclocal automake; do \ + ln -sv $f $f-${automake_version} ; \ + done \ + && rm -f /usr/local/${automake_ver}.tar.xz \ + && rm -rf /tmp/${autoconf_ver} /tmp/${automake_ver} + +COPY home-data/ /home-data/ +COPY install-gcc-latest.sh new-user.sh nvidia-power-cycle.sh nvidia-serial.sh \ + /usr/local/bin/ + +RUN \ + while read line; do \ + new-user.sh --group $(echo "$line" | cut -d: -f 1,3); \ + done < <(grep -v ":x:x:" /home-data/group) + +# Create directories required for X11. We use X11 in tcwg-x2go images and, +# sometimes, in tcwg-dev images. +# We need to create these before "VOLUME /tmp" directive, since after +# the directive stuff from /tmp won't make it into the image. +RUN mkdir -p /tmp/.X11-unix /tmp/.ICE-unix \ + && chmod 1777 /tmp/.X11-unix /tmp/.ICE-unix + +#if ARCH_armhf +# For AArch32 images, add a warning if an interactive shell is opened in an +# AArch64 environment. +RUN echo $'if [ "$(uname -m)" == "aarch64" ] || [ "$(uname -m)" == "x86_64" ]; then\n' \ + $' echo "============================================================================================="\n' \ + $' echo "WARNING: This is a 32-bit container, but your shell is running in a 64-bit environment."\n' \ + $' echo "You probably want to run your shell with the \'linux32\' program to get a 32-bit environment."\n' \ + $' echo "============================================================================================="\n' \ + $'fi\n' \ + >> /etc/bash.bashrc +#endif + # 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" @@ -173,3 +424,5 @@ CMD ["/usr/sbin/sshd", "-D"] #else CMD ["linux32", "/usr/sbin/sshd", "-D"] #endif + +# This is a dummy comment to trigger a base image rebuild. diff --git a/tcwg-base/build-all.sh b/tcwg-base/build-all.sh new file mode 100755 index 00000000..d0351115 --- /dev/null +++ b/tcwg-base/build-all.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +set -euf -o pipefail + +top=$(git rev-parse --show-toplevel) + +case $(uname -m) in + x86_64) arch="amd64\|i386" ;; + aarch64) arch="arm64\|armhf" ;; +esac + +dirs=($(find "$top" -type d -name "*-tcwg*" | grep "$arch")) + +rm -f $top/tcwg-base/status + +for dir in "${dirs[@]}"; do + ( + cd $dir + + image="$(basename $dir)" + echo "START: $image" | tee -a $top/tcwg-base/status + ./build.sh > build.log 2>&1 & + res=0 && wait $! || res=$? + if [ $res = 0 ]; then + echo "PASS: $image" | tee -a $top/tcwg-base/status + else + echo "FAIL: $image" | tee -a $top/tcwg-base/status + tail build.log + fi + ) & +done + +wait diff --git a/tcwg-base/build.sh b/tcwg-base/build.sh index 24ede180..ab0e4560 100755 --- a/tcwg-base/build.sh +++ b/tcwg-base/build.sh @@ -2,11 +2,21 @@ set -e +# Can't run multiple copies of this script +exec 9<Dockerfile +flock -x 9 + trap cleanup_exit INT TERM EXIT cleanup_exit() { - rm -rf postfix*.in + rm -rf \ + home-data/ \ + install-armhf-perf-workaround.sh \ + install-gcc-latest.sh \ + new-user.sh \ + nvidia-power-cycle.sh \ + nvidia-serial.sh } export LANG=C @@ -17,10 +27,22 @@ name=$(basename ${PWD} | cut -f3- -d '-') image=linaro/ci-${arch}-${name}-ubuntu:${distro} baseimage=$(grep "^FROM" Dockerfile | head -n 1 | cut -d" " -f 2) -cp $top/tcwg-base/postfix*.in . +rsync -aL $top/tcwg-base/home-data/ ./home-data/ +cp -t ./ \ + $top/tcwg-base/install-armhf-perf-workaround.sh \ + $top/tcwg-base/install-gcc-latest.sh \ + $top/tcwg-base/new-user.sh \ + $top/tcwg-base/nvidia-power-cycle.sh \ + $top/tcwg-base/nvidia-serial.sh + +# Check if passwd has end-of-line. If no eol at the end of passwd, all "while read line" +# will silently skip last line +if [ "$(tail -c1 ./home-data/passwd | wc -l)" -eq 0 ] ; then + echo "ERROR: no eol to /home-data/passwd" + exit 1 +fi -"$top"/tcwg-base/validate-dockerfile.sh Dockerfile +"$top"/tcwg-base/validate-checksum.sh Dockerfile docker pull $baseimage 2>/dev/null || true -docker pull $image 2>/dev/null || true docker build --tag=$image . echo $image > .docker-tag diff --git a/tcwg-base/cpp-script.sh b/tcwg-base/cpp-script.sh index 7270d6e0..5c994546 100755 --- a/tcwg-base/cpp-script.sh +++ b/tcwg-base/cpp-script.sh @@ -2,6 +2,11 @@ # Clean: shellcheck -e 2001 ./cpp-script.sh +# NOTE: THIS SCRIPT HAS COPIES IN THE FOLLOWING REPOS: +# - CI/DOCKERFILES.GIT AND +# - CI/JOB/CONFIGS.GIT +# REMEMBER TO SYNCHRONIZE ALL COPIES ON CHANGES. + set -eu -o pipefail input="" @@ -38,4 +43,4 @@ for var in ${vars[@]+"${vars[@]}"}; do done unifdef -k -t -x2 "${cpp_opts[@]}" "$input" \ - | sed -e "s/^//" "${sed_opts[@]+"${sed_opts[@]}"}" + | sed -e "/^\$/ d" "${sed_opts[@]+"${sed_opts[@]}"}" diff --git a/tcwg-base/generate-dockerfiles.sh b/tcwg-base/generate-dockerfiles.sh index c53c9d8f..23c76513 100755 --- a/tcwg-base/generate-dockerfiles.sh +++ b/tcwg-base/generate-dockerfiles.sh @@ -11,19 +11,21 @@ generate_dockerfile () distro=$(basename ${PWD} | cut -f1 -d '-') arch=$(basename ${PWD} | cut -f2 -d '-') name=$(basename ${PWD} | cut -f3- -d '-') - dockerfile_in=$(find $top/tcwg-base -name "$name")/Dockerfile.in + # Find Dockerfile.in template for $name image flavour. + dockerfile_in=$(find $top/tcwg-base -path "*/$name/Dockerfile.in") dockerfile_out=Dockerfile if [ -f "$dockerfile_in" ]; then - echo "# Auto generated from ${dockerfile_in#$top/}. Do not edit." > "$dockerfile_out" + echo "# Auto generated by $0 from ${dockerfile_in#$top/}. Do not edit." > "$dockerfile_out" $top/tcwg-base/cpp-script.sh -v DISTRO=$distro -v ARCH=$arch \ -i $dockerfile_in >> "$dockerfile_out" - MD5=$(md5sum "$dockerfile_out" | awk '{ print $1; }') - echo "# checksum: $MD5" >> "$dockerfile_out" + $top/tcwg-base/validate-checksum.sh --generate true "$dockerfile_out" fi ) } -for i in $(find $top -name "*-tcwg-*"); do +cd $top + +for i in $(find $top -type d -name "*-tcwg-*"); do generate_dockerfile $i done diff --git a/tcwg-base/gerrit-branches b/tcwg-base/gerrit-branches deleted file mode 100644 index 0561f3af..00000000 --- a/tcwg-base/gerrit-branches +++ /dev/null @@ -1,2 +0,0 @@ -master -tcwg-staging diff --git a/tcwg-base/home-data/adhemerval.zanella/.screenrc b/tcwg-base/home-data/adhemerval.zanella/.screenrc new file mode 100644 index 00000000..da7dfe44 --- /dev/null +++ b/tcwg-base/home-data/adhemerval.zanella/.screenrc @@ -0,0 +1,86 @@ +# the following two lines give a two-line status, with the current window highlighted +hardstatus alwayslastline +hardstatus string '%{= kG}[%{G}%H%? %1`%?%{g}][%= %{= kw}%-w%{+b yk} %n*%t%?(%u)%? %{-}%+w %=%{g}][%{B}%m/%d %{W}%C%A%{g}]' + +# huge scrollback buffer +defscrollback 5000 + +# no welcome message +startup_message off + +# 256 colors +attrcolor b ".I" +termcapinfo xterm 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm' +defbce on + +# mouse tracking allows to switch region focus by clicking +#mousetrack on + +# default windows +screen -t Shell1 1 $SHELL +screen -t Shell2 2 $SHELL +screen -t Shell3 3 $SHELL +select 0 +bind c screen 1 # window numbering starts at 1 not 0 +bind 0 select 10 + +# get rid of silly xoff stuff +bind s split + +# layouts +layout autosave on +layout new one +select 1 +layout new two +select 1 +split +resize -v +8 +focus down +select 4 +focus up +layout new three +select 1 +split +resize -v +7 +focus down +select 3 +split -v +resize -h +10 +focus right +select 4 +focus up + +layout attach one +layout select one + +# navigating regions with Ctrl-arrows +bindkey "^[[1;5D" focus left +bindkey "^[[1;5C" focus right +bindkey "^[[1;5A" focus up +bindkey "^[[1;5B" focus down + +# switch windows with F3 (prev) and F4 (next) +bindkey "^[OR" prev +bindkey "^[OS" next + +# switch layouts with Ctrl+F3 (prev layout) and Ctrl+F4 (next) +bindkey "^[O1;5R" layout prev +bindkey "^[O1;5S" layout next + +# F2 puts Screen into resize mode. Resize regions using hjkl keys. +bindkey "^[OQ" eval "command -c rsz" # enter resize mode + +# use hjkl keys to resize regions +bind -c rsz h eval "resize -h -5" "command -c rsz" +bind -c rsz j eval "resize -v -5" "command -c rsz" +bind -c rsz k eval "resize -v +5" "command -c rsz" +bind -c rsz l eval "resize -h +5" "command -c rsz" + +# quickly switch between regions using tab and arrows +bind -c rsz \t eval "focus" "command -c rsz" # Tab +bind -c rsz -k kl eval "focus left" "command -c rsz" # Left +bind -c rsz -k kr eval "focus right" "command -c rsz" # Right +bind -c rsz -k ku eval "focus up" "command -c rsz" # Up +bind -c rsz -k kd eval "focus down" "command -c rsz" # Down + +vbell off diff --git a/tcwg-base/home-data/adhemerval.zanella/.ssh/authorized_keys b/tcwg-base/home-data/adhemerval.zanella/.ssh/authorized_keys new file mode 100644 index 00000000..7cebc7f0 --- /dev/null +++ b/tcwg-base/home-data/adhemerval.zanella/.ssh/authorized_keys @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDa6gGzIvhVn1AHCG7HhH6s0eIJrAcQKR9tlcKL27Eh+TXan+VPZnL1WkwGT87JCJiDmsQn5Ecp8AtsLHJUGycAC3cvHGZ13DeJWnlDCThkkZqsf63x0rauAFMA1bncmCv/vf8+lZ2WHDerY4RNQZTIvFCOWpatNAEzpq4Qh8yksw0Xv5mKpPJV2/cY7j6m6KxTSLFr+tn9mOoe0KANVrwbg1eE3jTDmLG4MajT/LpAzBxMoGqaI3nbJFfRH43DRWPgancQfPmQB+cw4I1e8vwGST2EZuCII+uNMs1ZLBJ57utvRZuX7SRx35CxsUUV8giRSQ5VG6W26OaIAQl0l3Qr azanella@mandiga 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/anthony.roberts/.ssh/authorized_keys b/tcwg-base/home-data/anthony.roberts/.ssh/authorized_keys new file mode 100644 index 00000000..a304661c --- /dev/null +++ b/tcwg-base/home-data/anthony.roberts/.ssh/authorized_keys @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCivmwJC4LTwL7zrrwZ/MX8VQoZtO7FUmPUdj87upqSw5Yz0LhGCjwwHthsCOjS5Rv9Pacbb+r5nxnCTmbgCb5wFhIwvJyy0VhpmF/5H259uvCyAlwRS1cKbj32laQS+j0XXXrmLArGj9TK8lRBlUFetcDzEXQWVATG0MeWeME+fkM16P9R0fN+ndZHnv+1THK8o9M6oCK24qt48IiZ7oVX/LKJ/GiwYWm1rpjSMuzoQMPCsKhpoDGBUfGSGwbu31eBQYYMbapOcZ1kwuNbb4+aw8LKu7IMyhAoRj0y+bc3le+i1QZmYj53jk+v50DrslS46MXrYDD36bVkbLjiVDxYe/pBYwzZYZVQkmGdA5+gTG3OgsaryqxW5xQj+73vGPttz9SdxNXMK26scqv/BJv9Y5gK9ZqlpuwCpMZZXfWLBxbKWVqQ/WCIBY59H0Bc9cBSvlPjxZDbfIQYYvxur6c48MBo+s3boTUyJ2tmG0NnAjQTh8cEEfqwbl+1t98qdvM= anthony@E128101 diff --git a/tcwg-base/home-data/anthony.roberts/.ssh/config b/tcwg-base/home-data/anthony.roberts/.ssh/config new file mode 120000 index 00000000..5f9d8251 --- /dev/null +++ b/tcwg-base/home-data/anthony.roberts/.ssh/config @@ -0,0 +1 @@ +../../tcwg-buildslave/.ssh/config
\ No newline at end of file diff --git a/tcwg-base/home-data/anthony.roberts/.ssh/config.d b/tcwg-base/home-data/anthony.roberts/.ssh/config.d new file mode 120000 index 00000000..1af9bec1 --- /dev/null +++ b/tcwg-base/home-data/anthony.roberts/.ssh/config.d @@ -0,0 +1 @@ +../../tcwg-buildslave/.ssh/config.d
\ No newline at end of file diff --git a/tcwg-base/home-data/anthony.roberts/.ssh/known_hosts b/tcwg-base/home-data/anthony.roberts/.ssh/known_hosts new file mode 120000 index 00000000..936136a2 --- /dev/null +++ b/tcwg-base/home-data/anthony.roberts/.ssh/known_hosts @@ -0,0 +1 @@ +../../tcwg-buildslave/.ssh/known_hosts
\ No newline at end of file diff --git a/tcwg-base/home-data/anthony.roberts/.ssh/ssh-tcwglab-nc.sh b/tcwg-base/home-data/anthony.roberts/.ssh/ssh-tcwglab-nc.sh new file mode 120000 index 00000000..6eddeb50 --- /dev/null +++ b/tcwg-base/home-data/anthony.roberts/.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/antoine.moynault/.ssh/authorized_keys b/tcwg-base/home-data/antoine.moynault/.ssh/authorized_keys new file mode 100644 index 00000000..181cdb75 --- /dev/null +++ b/tcwg-base/home-data/antoine.moynault/.ssh/authorized_keys @@ -0,0 +1,2 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDizgV143g/EjA5G4kWpbs84q91+vO5/xSB56+v177fb3z+kaIr9NttVnrzVB5A3AEJrPEoD9CzXgiD0wz6jzMrsL9kWmC2vorHtjUQM2qB9GgtHynkY9X/9y6+q4HU6rmVq/Kq27fjaN73nZk2dm6RUpve6DKhKq/J77JOo/zANssFtZjqwwFYr3Hrr7P6vbTKpTrzX8E31FZnC8s90/ZMqw8l72qTmecjaVB1EWjtku6rdcbQVNkOoYhLUrnSAwYQG5baKUGy1dWlRJ6se+gKsPzRSWeph62hpAxRux+Nj1iFeRoAwntw3kHX0z4aLOTJcMfSN4Rz/r8wdsoVacBb7SmLJ09hHayajTvZLJUmyqaJfrvAWo/I8oeOgiTUiGkX+WklhoP3zVLTrS5QWsh3xkUiwaGpeevHn1RCwloQyWdZqsSlyFhqBmEUpl0Q9xlHQXSLAGnhlaqv9OoAXD7/Sh/T0FRAnGeYZxz/pzphPy5GHd8ZBWnshgjOlCo7uDk= antoine@hoth +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAicBxGjO+zJfZy286DkSfhd5Dh9imOAtlGJ01jZ0kqX antoine@hoth diff --git a/tcwg-base/home-data/antoine.moynault/.ssh/config b/tcwg-base/home-data/antoine.moynault/.ssh/config new file mode 120000 index 00000000..5f9d8251 --- /dev/null +++ b/tcwg-base/home-data/antoine.moynault/.ssh/config @@ -0,0 +1 @@ +../../tcwg-buildslave/.ssh/config
\ No newline at end of file diff --git a/tcwg-base/home-data/antoine.moynault/.ssh/config.d b/tcwg-base/home-data/antoine.moynault/.ssh/config.d new file mode 120000 index 00000000..1af9bec1 --- /dev/null +++ b/tcwg-base/home-data/antoine.moynault/.ssh/config.d @@ -0,0 +1 @@ +../../tcwg-buildslave/.ssh/config.d
\ No newline at end of file diff --git a/tcwg-base/home-data/antoine.moynault/.ssh/known_hosts b/tcwg-base/home-data/antoine.moynault/.ssh/known_hosts new file mode 120000 index 00000000..936136a2 --- /dev/null +++ b/tcwg-base/home-data/antoine.moynault/.ssh/known_hosts @@ -0,0 +1 @@ +../../tcwg-buildslave/.ssh/known_hosts
\ No newline at end of file diff --git a/tcwg-base/home-data/antoine.moynault/.ssh/ssh-tcwglab-nc.sh b/tcwg-base/home-data/antoine.moynault/.ssh/ssh-tcwglab-nc.sh new file mode 120000 index 00000000..6eddeb50 --- /dev/null +++ b/tcwg-base/home-data/antoine.moynault/.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/carlos.seo/.screenrc b/tcwg-base/home-data/carlos.seo/.screenrc new file mode 100644 index 00000000..ddeecd33 --- /dev/null +++ b/tcwg-base/home-data/carlos.seo/.screenrc @@ -0,0 +1,4 @@ +# Add a status line to the screen sessions. Copy to your $HOME/.screenrc file. +# # This will show: | List of Shells | username@hostname | CPU Load | Date | Time | +hardstatus alwayslastline "%{wk}%?%-Lw%?%{=b kR}(%{W}%n*%f %t%?(%u)%?%{=b kR})%{= kw}%?%+Lw%?%? %= %{C}$USER@%{W}%H %{K}load{%l} %{kR} %d/%m %{Yk}%C%a %{g}" + diff --git a/tcwg-base/home-data/carlos.seo/.ssh/authorized_keys b/tcwg-base/home-data/carlos.seo/.ssh/authorized_keys new file mode 100644 index 00000000..6c2096b6 --- /dev/null +++ b/tcwg-base/home-data/carlos.seo/.ssh/authorized_keys @@ -0,0 +1,2 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDbGhz5nfY/qYBaDB69OTE711xEGnnI8lLD0D5/+i0VnsXAAXPyrzri8ohOsEdbGfz05aPjl5JfbDCRgcfNJnhosGiLa2noPs/MygssNY37OXn9LbGkaQQl6tz2moTPFndL9QcY0uehyXpdrjxv3PMdcuhaL7B8Qz/TfGKzABVSGZ25TeOBTkUetgaM8PHtuBFTe82BJ4zrw0sxpdq9A1G+Jifu01RgRTpN1TBk3hLZEYInUbjzRUxtziMU/CfSyC6KA4S1H8W8J4VqVGYO3FSg98NB/2zt/KXjk9cwvviJ8B9SNlusFfU4NyfDh4xaLg/UXvviyFa39ubjzgfbetCiA4oA/mnRWiH3vgULRaqQmoyCDOn/6o5KQjN3tI62TcfVbIt1aplBOC1xjoYbec29V+pBRP89fD6EjJ+fSNiNr9fW/mOXK7u0FOXLez9DfRXtt54LqgIbEl16uTfQjUDIDi+zeZ7KeicZknc1sh+BbRm9mB0MeLgWctH3a7J8xoucLtwTOQHMaZl80HLQzovsMoLYYRf1rfrO4H2pNnq1Ao/v2E14+WFyGdduYlyq/satfpsV7Ox1eyD9BWtDL63daYetCeBPwAywwqe0LJtK8Z6Erahz1UVC4+kWZYgqvxUENESXkQ/7nOmHf+vkrdf6AfVNC98XXgT9scgzPE3UHw== carlos.seo@linaro.org +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK/aNyU4LPj0pXCAzxIbBXrSm/qKJv386pKhyp0X6yq/ carlos.seo@linaro.org diff --git a/tcwg-base/home-data/carlos.seo/.ssh/config b/tcwg-base/home-data/carlos.seo/.ssh/config new file mode 120000 index 00000000..5f9d8251 --- /dev/null +++ b/tcwg-base/home-data/carlos.seo/.ssh/config @@ -0,0 +1 @@ +../../tcwg-buildslave/.ssh/config
\ No newline at end of file diff --git a/tcwg-base/home-data/carlos.seo/.ssh/config.d b/tcwg-base/home-data/carlos.seo/.ssh/config.d new file mode 120000 index 00000000..1af9bec1 --- /dev/null +++ b/tcwg-base/home-data/carlos.seo/.ssh/config.d @@ -0,0 +1 @@ +../../tcwg-buildslave/.ssh/config.d
\ No newline at end of file diff --git a/tcwg-base/home-data/carlos.seo/.ssh/known_hosts b/tcwg-base/home-data/carlos.seo/.ssh/known_hosts new file mode 120000 index 00000000..936136a2 --- /dev/null +++ b/tcwg-base/home-data/carlos.seo/.ssh/known_hosts @@ -0,0 +1 @@ +../../tcwg-buildslave/.ssh/known_hosts
\ No newline at end of file diff --git a/tcwg-base/home-data/carlos.seo/.ssh/ssh-tcwglab-nc.sh b/tcwg-base/home-data/carlos.seo/.ssh/ssh-tcwglab-nc.sh new file mode 120000 index 00000000..6eddeb50 --- /dev/null +++ b/tcwg-base/home-data/carlos.seo/.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/carlos.seo/.vimrc b/tcwg-base/home-data/carlos.seo/.vimrc new file mode 100644 index 00000000..53ec06b9 --- /dev/null +++ b/tcwg-base/home-data/carlos.seo/.vimrc @@ -0,0 +1,18 @@ +" Config file for Vim + +" Syntax highlighting +syntax on + +" For identation with hard tabs: +" Set \t to eight spaces +set tabstop=8 + +" For identation with spaces / mixed tabs and spaces +" Set soft \t to two spaces +set softtabstop=2 +set shiftwidth=2 +set noexpandtab +set smarttab + +" Create a marker at the 80th column (useful for GNU projects) +set colorcolumn=80 diff --git a/tcwg-base/home-data/christophe.lyon/.gitconfig b/tcwg-base/home-data/christophe.lyon/.gitconfig new file mode 100644 index 00000000..c07d4d51 --- /dev/null +++ b/tcwg-base/home-data/christophe.lyon/.gitconfig @@ -0,0 +1,18 @@ +[user] + email = christophe.lyon@linaro.org + name = Christophe Lyon + +[core] + editor = emacs +[alias] + co = checkout + br = branch + st = status + ci = commit +[sendemail] + smtpencryption = tls + smtpserver = smtp.gmail.com + smtpuser = christophe.lyon@linaro.org + smtpserverport = 587 +[credential] + helper = store 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/christophe.lyon/.ssh/config b/tcwg-base/home-data/christophe.lyon/.ssh/config new file mode 120000 index 00000000..5f9d8251 --- /dev/null +++ b/tcwg-base/home-data/christophe.lyon/.ssh/config @@ -0,0 +1 @@ +../../tcwg-buildslave/.ssh/config
\ No newline at end of file diff --git a/tcwg-base/home-data/christophe.lyon/.ssh/config.d b/tcwg-base/home-data/christophe.lyon/.ssh/config.d new file mode 120000 index 00000000..1af9bec1 --- /dev/null +++ b/tcwg-base/home-data/christophe.lyon/.ssh/config.d @@ -0,0 +1 @@ +../../tcwg-buildslave/.ssh/config.d
\ No newline at end of file diff --git a/tcwg-base/home-data/christophe.lyon/.ssh/known_hosts b/tcwg-base/home-data/christophe.lyon/.ssh/known_hosts new file mode 120000 index 00000000..936136a2 --- /dev/null +++ b/tcwg-base/home-data/christophe.lyon/.ssh/known_hosts @@ -0,0 +1 @@ +../../tcwg-buildslave/.ssh/known_hosts
\ No newline at end of file diff --git a/tcwg-base/home-data/christophe.lyon/.ssh/ssh-tcwglab-nc.sh b/tcwg-base/home-data/christophe.lyon/.ssh/ssh-tcwglab-nc.sh new file mode 120000 index 00000000..6eddeb50 --- /dev/null +++ b/tcwg-base/home-data/christophe.lyon/.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/david.spickett/.ssh/authorized_keys b/tcwg-base/home-data/david.spickett/.ssh/authorized_keys new file mode 100644 index 00000000..9706dd72 --- /dev/null +++ b/tcwg-base/home-data/david.spickett/.ssh/authorized_keys @@ -0,0 +1,2 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCf7urQs7/xG0kFtnr31TgZb3cQpBqT42EFpPPkJtiMfoMcgVTacZqWCGo8pcxb34O8+zi1MiEM3ZlEJXapY+rQ8TINlxQG3JwllCR+bEVkql8jjZ3SR6ilvwi9Q88AiD4BorTvnuqEjRC1RF26X4yIrDBvGLKSimAsavsufFI4cYujbK6Rs6SqIj9RohbUnrGDEX/O8zl0zX4lnKpCwRL+tIhhES+uc44QlyLVdKZjxgSB3w5faqnjy8XicKFh5GLcQvcL/LFUP7Ut5ZmAAlGgTldNplgFEA7CxOXtDlaOLY6l/jOjqTC9Pr2n2K5PNfXpJchBoEZbwgozpNOxOkkt davspi01@e113826-lin +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBH3r1EO2AbXNc6LSpjbWOWjuAQdXR7xRxZRxydzQpUS david.spickett@linaro.org diff --git a/tcwg-base/home-data/david.spickett/.vimrc b/tcwg-base/home-data/david.spickett/.vimrc new file mode 100644 index 00000000..052a0621 --- /dev/null +++ b/tcwg-base/home-data/david.spickett/.vimrc @@ -0,0 +1,10 @@ +set number +set tabstop=2 +set shiftwidth=2 +set expandtab + +set undodir=~/.vim/undodir +set undofile + +highlight ExtraWhitespace ctermbg=red guibg=red +match ExtraWhitespace /\s\+$/ diff --git a/tcwg-base/home-data/everton.constantino/.ssh/authorized_keys b/tcwg-base/home-data/everton.constantino/.ssh/authorized_keys new file mode 100644 index 00000000..136addd1 --- /dev/null +++ b/tcwg-base/home-data/everton.constantino/.ssh/authorized_keys @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC5cVLsJD6LC96FhufdR8eHXqnALWxAnk9M344bS+TmLMm/XQk2+A8Ym9skSToBCcorFGhNb4AGjmeAndcUa5I+3t7lxLvRBDTllrW+/m/yVH79ylVH+h7sqap7gJsBwODVoYmdThZaOgMT1V8LLmm36MwBLYM9Ws//Go1kBV/zwF1J9Un1/Xu9b7/02bUbu0nBJykDht9pIlqm9lkXsCgy/LalWM55bN/zskVf9pLGoPMLY3QNiYBA+T6TaV93QaSSzU5T/Ar1J0myTROGFZQWdrnaepR+pI8MJ44tzmNfVA8ONK0a48AbKioTexE4uGvLQbwN30oVnv1VhpoU7shsAu2noO+nhuYtOoDpJ3pC+2ZwwVGfXj3zSy6kfkCXlkfl93iU+u205GEbu6tOT+lm3Uc9qrQaloohOAZm2YH/+D8bamA55mLLIWu78/wiI83fFFDPf/gNJLt/pWj78gmlSWmAwB16fwlMUZWJFrZPM97V25Eb/ugl6H3w35ni96fiiLc+CBxd8yymKp+nMNded4xwa5h806g9gkFIAjpRJLHCMA0fMzKgosM0RU8HDQdNfaQXsYrnxGBg7z1xNpGcz7tzTYjYPZw2yVmlXs/goq4E9vcByl3KkDpSPfH5jbMWqkWjtADTpZAPlNRaT0wjLQW7M+OzkEQ88sW34NDdhw== everton.constantino@ibm.com diff --git a/tcwg-base/home-data/everton.constantino/.ssh/config b/tcwg-base/home-data/everton.constantino/.ssh/config new file mode 120000 index 00000000..5f9d8251 --- /dev/null +++ b/tcwg-base/home-data/everton.constantino/.ssh/config @@ -0,0 +1 @@ +../../tcwg-buildslave/.ssh/config
\ No newline at end of file diff --git a/tcwg-base/home-data/everton.constantino/.ssh/config.d b/tcwg-base/home-data/everton.constantino/.ssh/config.d new file mode 120000 index 00000000..1af9bec1 --- /dev/null +++ b/tcwg-base/home-data/everton.constantino/.ssh/config.d @@ -0,0 +1 @@ +../../tcwg-buildslave/.ssh/config.d
\ No newline at end of file diff --git a/tcwg-base/home-data/everton.constantino/.ssh/known_hosts b/tcwg-base/home-data/everton.constantino/.ssh/known_hosts new file mode 120000 index 00000000..936136a2 --- /dev/null +++ b/tcwg-base/home-data/everton.constantino/.ssh/known_hosts @@ -0,0 +1 @@ +../../tcwg-buildslave/.ssh/known_hosts
\ No newline at end of file diff --git a/tcwg-base/home-data/everton.constantino/.ssh/ssh-tcwglab-nc.sh b/tcwg-base/home-data/everton.constantino/.ssh/ssh-tcwglab-nc.sh new file mode 120000 index 00000000..6eddeb50 --- /dev/null +++ b/tcwg-base/home-data/everton.constantino/.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/group b/tcwg-base/home-data/group new file mode 100644 index 00000000..41f29159 --- /dev/null +++ b/tcwg-base/home-data/group @@ -0,0 +1,10 @@ +tcwg-root:x:x:maxim.kuvyrkov,david.spickett,thiago.bauermann,tcwg-benchmark,laurent.alfonsi,adhemerval.zanella,christophe.lyon +tcwg-infra:x:9000:tcwg-buildslave,tcwg-benchmark,tcwg-buildbot,tcwg-ci-bot +tcwg-users:x:10000:maxim.kuvyrkov,alex.bennee,christophe.lyon,richard.henderson,omair.javaid,adhemerval.zanella,david.spickett,laurent.alfonsi,thiago.bauermann,pierrick.bouvier,antoine.moynault,carlos.seo,leandro.lupori +tcwg-llvm:x:9001:tcwg-buildslave,tcwg-buildbot,maxim.kuvyrkov,omair.javaid,adhemerval.zanella,david.spickett,thiago.bauermann,antoine.moynault,carlos.seo,leandro.lupori +tcwg-llvm-root:x:x:maxim.kuvyrkov,omair.javaid,david.spickett,adhemerval.zanella,laurent.alfonsi +tcwg-guests:x:9002:everton.constantino,anthony.roberts,lina.iyer +tcwg-build-group:x:9003: +tcwg-sudo:x:9004:maxim.kuvyrkov,alex.bennee,christophe.lyon,richard.henderson,omair.javaid,adhemerval.zanella,david.spickett,laurent.alfonsi,thiago.bauermann,pierrick.bouvier,antoine.moynault,carlos.seo,leandro.lupori,tcwg-benchmark,tcwg-buildslave,tcwg-buildbot,tcwg-ci-bot +tcwg-bmk:x:9005:tcwg-benchmark,maxim.kuvyrkov,laurent.alfonsi,antoine.moynault,leandro.lupori,carlos.seo +tcwg-bmk-root:x:x:tcwg-benchmark,maxim.kuvyrkov,laurent.alfonsi diff --git a/tcwg-base/home-data/laurent.alfonsi/.ssh/authorized_keys b/tcwg-base/home-data/laurent.alfonsi/.ssh/authorized_keys new file mode 100644 index 00000000..7cb5b648 --- /dev/null +++ b/tcwg-base/home-data/laurent.alfonsi/.ssh/authorized_keys @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC8kf1cm7kY8ecDQ3DJ7UfGSIKxBAs0ga+Gi8kkDZag1ItZsKWlKNB+FIx9NtSW5vZBewlOHDv46zWaJLNRE2ZCLbAt3WIEtWTC3ppQD64no8WJvb3XcGoae6uWksrsF5d84958M0t4BND504/bukFi0t03loWrnfsOnwZuRF/7BxOIwGrTawoHMUVFKoY76GL2rAYPv1Yg+twR3n+m6kyeis2GPOfVbspc3P9PiQo01oslzPvUlu954jJFFEeevY+TlILDtkjIdozcZfMOaxhBfsv7M9DlK3kpdtepu7peyxyJUwdKTo5g1zDaS8ssP3WCfR+/WQi5OVbvEasxK2BH laurent_linaro@laurent-XPS-13-9360 diff --git a/tcwg-base/home-data/laurent.alfonsi/.ssh/config b/tcwg-base/home-data/laurent.alfonsi/.ssh/config new file mode 120000 index 00000000..5f9d8251 --- /dev/null +++ b/tcwg-base/home-data/laurent.alfonsi/.ssh/config @@ -0,0 +1 @@ +../../tcwg-buildslave/.ssh/config
\ No newline at end of file diff --git a/tcwg-base/home-data/laurent.alfonsi/.ssh/config.d b/tcwg-base/home-data/laurent.alfonsi/.ssh/config.d new file mode 120000 index 00000000..1af9bec1 --- /dev/null +++ b/tcwg-base/home-data/laurent.alfonsi/.ssh/config.d @@ -0,0 +1 @@ +../../tcwg-buildslave/.ssh/config.d
\ No newline at end of file diff --git a/tcwg-base/home-data/laurent.alfonsi/.ssh/known_hosts b/tcwg-base/home-data/laurent.alfonsi/.ssh/known_hosts new file mode 120000 index 00000000..936136a2 --- /dev/null +++ b/tcwg-base/home-data/laurent.alfonsi/.ssh/known_hosts @@ -0,0 +1 @@ +../../tcwg-buildslave/.ssh/known_hosts
\ No newline at end of file diff --git a/tcwg-base/home-data/laurent.alfonsi/.ssh/ssh-tcwglab-nc.sh b/tcwg-base/home-data/laurent.alfonsi/.ssh/ssh-tcwglab-nc.sh new file mode 120000 index 00000000..6eddeb50 --- /dev/null +++ b/tcwg-base/home-data/laurent.alfonsi/.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/leandro.lupori/.ssh/authorized_keys b/tcwg-base/home-data/leandro.lupori/.ssh/authorized_keys new file mode 100644 index 00000000..99b2fab1 --- /dev/null +++ b/tcwg-base/home-data/leandro.lupori/.ssh/authorized_keys @@ -0,0 +1,2 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDN/YYE01YIh30u8xQBfGGDU178Fncq+Qfb6WeGENqLrm5C+/mR8sPHFHHEWCbpKBZajB5aorB9YRDv2TLTD1JGcrpoo+iEYXOK2pSM/l8dVZqDhEWzJQ5DlQ07L+7kdOTK0Y2i/yPDpBY2BNflmo13AW0wPK2M0qvd/cGgzNJHYnweIZ7R4yGyhHdwBv+Ax51va6YzcdmpEo4atZmdlqAIdj11ruhDb0eXVoQX/DEODmO64fUs2osS++FTsbuUUbm9nv1W50SJw8GXvWnXEqcfoJgtwxUV020GCk83/qXwiX8BLMhZ5mo2NDzbMp0tLUOfCWl49xRlJwli+KiFIkegzNK7JWuxSL+m2ICH6cWkqSphc9VxtY8hOu5n4DYwe3zmKji7PC0BlriEUEj9+BBnFI1rIlAKhO1hZWf4eIU72AS64End5MKqQh8zxF7sli6KNsWVRru3HrYngXGFYyhJjt6y9OWAQrN0714PaDKTw69nsA3eLVxfzx8EVM4DADGr8df+tJs5pPpuFi6DekSRhA5gNC12UkiwFbIekU+oJNq3IH96SMliNpSy8akRXtsPnLWd1YVxzIVpeMOe39xTCBklFwCPQx/zd1ZVRmO/PCkCNfb4Udfy4boYOobuq1caCBbJO487t99ZNhGpPF69p0Rmdi3mpqh5CM/WtpmmqQ== luporl@inspiron +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO+l1RUosDOyT36drUF8AOJFBZthfPtQZdiNEOAxosUP leandro.lupori@linaro.org diff --git a/tcwg-base/home-data/leandro.lupori/.ssh/config b/tcwg-base/home-data/leandro.lupori/.ssh/config new file mode 120000 index 00000000..5f9d8251 --- /dev/null +++ b/tcwg-base/home-data/leandro.lupori/.ssh/config @@ -0,0 +1 @@ +../../tcwg-buildslave/.ssh/config
\ No newline at end of file diff --git a/tcwg-base/home-data/leandro.lupori/.ssh/config.d b/tcwg-base/home-data/leandro.lupori/.ssh/config.d new file mode 120000 index 00000000..1af9bec1 --- /dev/null +++ b/tcwg-base/home-data/leandro.lupori/.ssh/config.d @@ -0,0 +1 @@ +../../tcwg-buildslave/.ssh/config.d
\ No newline at end of file diff --git a/tcwg-base/home-data/leandro.lupori/.ssh/known_hosts b/tcwg-base/home-data/leandro.lupori/.ssh/known_hosts new file mode 120000 index 00000000..936136a2 --- /dev/null +++ b/tcwg-base/home-data/leandro.lupori/.ssh/known_hosts @@ -0,0 +1 @@ +../../tcwg-buildslave/.ssh/known_hosts
\ No newline at end of file diff --git a/tcwg-base/home-data/leandro.lupori/.ssh/ssh-tcwglab-nc.sh b/tcwg-base/home-data/leandro.lupori/.ssh/ssh-tcwglab-nc.sh new file mode 120000 index 00000000..6eddeb50 --- /dev/null +++ b/tcwg-base/home-data/leandro.lupori/.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/lina.iyer/.ssh/authorized_keys b/tcwg-base/home-data/lina.iyer/.ssh/authorized_keys new file mode 100644 index 00000000..9c0aa9da --- /dev/null +++ b/tcwg-base/home-data/lina.iyer/.ssh/authorized_keys @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDv/5+aWNajFBOO6kLQ/2s5I3/O8dcf1UpsqwoDXgUp1I+HUw0RutM3uCYIu28gAnX8qYfOg38kEO188zJ+dSi6n6q7feXpkRDWFcB4iFARik+jMXL7tWG2ndB8+hpFwE0HfnHmYm/IhAKFeLW3vjoHBblrQzYupG6h/ri1hfVXhVqQe/W0T0lIs3XmgB38S0DyuHgmNEC4EeIH3H6fMAQPittAe9pxr4hvUd7vtPFOUVgijbbT/DrnQOUtialUiAdQzLNSpDI/4qwF/xNg4sLb39+l1Rbsorvn3QwGS4sCCB2heKNiNZB5pSDcbG55ftGpEKRwHV7tA3OK4baobPdysyXavvAhQUK+QJRMbGR+rtHn3JHcbleM2zl6LkbbMU93YtJksPGq+hkezDIPMUaU9S3LUuKCUFqW89ANlLhFCETB2e/Ci826ddn5JnBIxZXenrPn64rs5/+gQgSKpIBSnJStrdD+Y9Wr6GybH0dUy+COQCHEYLin64lb4FIkx4c= ilina@primo.lan diff --git a/tcwg-base/home-data/lina.iyer/.ssh/config b/tcwg-base/home-data/lina.iyer/.ssh/config new file mode 120000 index 00000000..5f9d8251 --- /dev/null +++ b/tcwg-base/home-data/lina.iyer/.ssh/config @@ -0,0 +1 @@ +../../tcwg-buildslave/.ssh/config
\ No newline at end of file diff --git a/tcwg-base/home-data/lina.iyer/.ssh/config.d b/tcwg-base/home-data/lina.iyer/.ssh/config.d new file mode 120000 index 00000000..1af9bec1 --- /dev/null +++ b/tcwg-base/home-data/lina.iyer/.ssh/config.d @@ -0,0 +1 @@ +../../tcwg-buildslave/.ssh/config.d
\ No newline at end of file diff --git a/tcwg-base/home-data/lina.iyer/.ssh/known_hosts b/tcwg-base/home-data/lina.iyer/.ssh/known_hosts new file mode 120000 index 00000000..936136a2 --- /dev/null +++ b/tcwg-base/home-data/lina.iyer/.ssh/known_hosts @@ -0,0 +1 @@ +../../tcwg-buildslave/.ssh/known_hosts
\ No newline at end of file diff --git a/tcwg-base/home-data/lina.iyer/.ssh/ssh-tcwglab-nc-sh b/tcwg-base/home-data/lina.iyer/.ssh/ssh-tcwglab-nc-sh new file mode 120000 index 00000000..6eddeb50 --- /dev/null +++ b/tcwg-base/home-data/lina.iyer/.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/maxim.kuvyrkov/.bashrc b/tcwg-base/home-data/maxim.kuvyrkov/.bashrc new file mode 100644 index 00000000..67102dc6 --- /dev/null +++ b/tcwg-base/home-data/maxim.kuvyrkov/.bashrc @@ -0,0 +1,122 @@ +# ~/.bashrc: executed by bash(1) for non-login shells. +# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) +# for examples + +# If not running interactively, don't do anything +case $- in + *i*) ;; + *) return;; +esac + +# don't put duplicate lines or lines starting with space in the history. +# See bash(1) for more options +HISTCONTROL=ignoreboth + +# append to the history file, don't overwrite it +shopt -s histappend + +# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) +HISTSIZE=1000 +HISTFILESIZE=2000 + +# check the window size after each command and, if necessary, +# update the values of LINES and COLUMNS. +shopt -s checkwinsize + +# If set, the pattern "**" used in a pathname expansion context will +# match all files and zero or more directories and subdirectories. +#shopt -s globstar + +# make less more friendly for non-text input files, see lesspipe(1) +[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" + +# set variable identifying the chroot you work in (used in the prompt below) +if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then + debian_chroot=$(cat /etc/debian_chroot) +fi + +# set a fancy prompt (non-color, unless we know we "want" color) +case "$TERM" in + xterm-color) color_prompt=yes;; +esac + +# uncomment for a colored prompt, if the terminal has the capability; turned +# off by default to not distract the user: the focus in a terminal window +# should be on the output of commands, not on the prompt +#force_color_prompt=yes + +if [ -n "$force_color_prompt" ]; then + if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then + # We have color support; assume it's compliant with Ecma-48 + # (ISO/IEC-6429). (Lack of such support is extremely rare, and such + # a case would tend to support setf rather than setaf.) + color_prompt=yes + else + color_prompt= + fi +fi + +if [ "$color_prompt" = yes ]; then + PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' +else + PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' +fi +unset color_prompt force_color_prompt + +# If this is an xterm set the title to user@host:dir +case "$TERM" in +xterm*|rxvt*) + PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" + ;; +*) + ;; +esac + +# enable color support of ls and also add handy aliases +if [ -x /usr/bin/dircolors ]; then + test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" + alias ls='ls --color=auto' + #alias dir='dir --color=auto' + #alias vdir='vdir --color=auto' + + alias grep='grep --color=auto' + alias fgrep='fgrep --color=auto' + alias egrep='egrep --color=auto' +fi + +# colored GCC warnings and errors +#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' + +# some more ls aliases +alias ll='ls -alF' +alias la='ls -A' +alias l='ls -CF' + +# Add an "alert" alias for long running commands. Use like so: +# sleep 10; alert +alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' + +# Alias definitions. +# You may want to put all your additions into a separate file like +# ~/.bash_aliases, instead of adding them here directly. +# See /usr/share/doc/bash-doc/examples in the bash-doc package. + +if [ -f ~/.bash_aliases ]; then + . ~/.bash_aliases +fi + +# enable programmable completion features (you don't need to enable +# this, if it's already enabled in /etc/bash.bashrc and /etc/profile +# sources /etc/bash.bashrc). +if ! shopt -oq posix; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi +fi + +export EDITOR=emacs +export SHELLCHECK_OPTS='-S warning' + +PS1="\h:\W\$ " diff --git a/tcwg-base/home-data/maxim.kuvyrkov/.emacs b/tcwg-base/home-data/maxim.kuvyrkov/.emacs new file mode 100644 index 00000000..928984d1 --- /dev/null +++ b/tcwg-base/home-data/maxim.kuvyrkov/.emacs @@ -0,0 +1,110 @@ +;; .emacs + +;;; uncomment this line to disable loading of "default.el" at startup +;; (setq inhibit-default-init t) + +;; turn on font-lock mode +(when (fboundp 'global-font-lock-mode) + (global-font-lock-mode t)) + +;; enable visual feedback on selections +(setq transient-mark-mode t) + +;; default to better frame titles +(setq frame-title-format + (concat "%b - " (system-name))) + +;; default to unified diffs +(setq diff-switches "-u") + +;; always end a file with a newline +;(setq require-final-newline 'query) + +(global-set-key [f3] `auto-revert-mode) +(global-set-key [f4] `auto-revert-tail-mode) +(global-set-key [f5] 'goto-line) +(global-set-key [f6] 'next-multiframe-window) +(global-set-key "\M-p" `grep-find) +(global-set-key "\M-g" 'goto-line) +(custom-set-variables + ;; custom-set-variables was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + '(auto-compression-mode t nil (jka-compr)) + '(blink-cursor-mode nil) + '(case-fold-search t) + '(current-language-environment "UTF-8") + '(default-frame-alist (quote ((width . 80) (height . 70)))) + '(default-input-method "rfc1345") + '(global-font-lock-mode t nil (font-lock)) + '(inhibit-startup-screen t) + '(initial-frame-alist (quote ((width . 80) (height . 70)))) + '(show-paren-mode t nil (paren)) + '(tool-bar-mode nil) + '(menu-bar-mode nil)) + +(defun my-java-mode-hook () + (setq c-basic-offset 4) + (setq tab-width 4)) +(add-hook 'java-mode-hook 'my-java-mode-hook) +(add-hook 'c-mode-hook (which-func-mode)) + +(setq-default header-line-format '(which-func-mode which-func-format)) + +(add-to-list 'load-path "~/share/emacs/site-lisp") +;(require 'git) +;(require 'git-blame) + +(defun c-lineup-arglist-tabs-only (ignored) + "Line up argument lists by tabs, not spaces" + (let* ((anchor (c-langelem-pos c-syntactic-element)) + (column (c-langelem-2nd-pos c-syntactic-element)) + (offset (- (1+ column) anchor)) + (steps (floor offset c-basic-offset))) + (* (max steps 1) + c-basic-offset))) + +(add-hook 'c-mode-common-hook + (lambda () + ;; Add kernel style + (c-add-style + "linux-tabs-only" + '("linux" (c-offsets-alist + (arglist-cont-nonempty + c-lineup-gcc-asm-reg + c-lineup-arglist-tabs-only)))))) + +(add-hook 'c-mode-hook + (lambda () + (let ((filename (buffer-file-name))) + ;; Enable kernel mode for the appropriate files + (when (and filename + (string-match (expand-file-name "/scratch/maxim/cf/src/linux-2.6.git") + filename)) + (setq indent-tabs-mode t) + (c-set-style "linux-tabs-only"))))) + +(normal-erase-is-backspace-mode 1) +(custom-set-faces + ;; custom-set-faces was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + '(default ((t (:inherit nil :stipple nil :background "white" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 90 :width normal :foundry "unknown" :family "DejaVu Sans Mono"))))) +;;(custom-set-faces + ;; custom-set-faces was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. +;; '(default ((t (:inherit nil :stipple nil :background "#ffffff" :foreground "#1a1a1a" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 116 :width normal :foundry "bitstream" :family "Courier 10 Pitch"))))) + +(setq grep-find-command "find . -type f -a ! '(' -name 'ChangeLog*' ')' -print0 | \"xargs\" -0 -e grep -nH -e ") + +(require 'yaml-mode) +(add-to-list 'auto-mode-alist '("\\.yaml\\'" . yaml-mode)) +(add-hook 'yaml-mode-hook + '(lambda () + (define-key yaml-mode-map "\C-m" 'newline-and-indent))) + +(add-hook 'after-init-hook #'global-flycheck-mode) diff --git a/tcwg-base/home-data/maxim.kuvyrkov/.gitconfig b/tcwg-base/home-data/maxim.kuvyrkov/.gitconfig new file mode 100644 index 00000000..49fec6a5 --- /dev/null +++ b/tcwg-base/home-data/maxim.kuvyrkov/.gitconfig @@ -0,0 +1,23 @@ +[user] + name = Maxim Kuvyrkov + email = maxim.kuvyrkov@linaro.org +[core] + editor = emacs +[alias] + co = checkout + br = branch + st = status + ci = commit +[color] + diff = auto + status = auto + branch = auto +[gui] + fontui = -family \"DejaVu Sans\" -size 9 -weight normal -slant roman -underline 0 -overstrike 0 +[sendemail] + smtpencryption = tls + smtpserver = smtp.gmail.com + smtpuser = maxim.kuvyrkov@linaro.org + smtpserverport = 587 +[push] + default = simple diff --git a/tcwg-base/home-data/maxim.kuvyrkov/.profile b/tcwg-base/home-data/maxim.kuvyrkov/.profile new file mode 100644 index 00000000..c9db4591 --- /dev/null +++ b/tcwg-base/home-data/maxim.kuvyrkov/.profile @@ -0,0 +1,22 @@ +# ~/.profile: executed by the command interpreter for login shells. +# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login +# exists. +# see /usr/share/doc/bash/examples/startup-files for examples. +# the files are located in the bash-doc package. + +# the default umask is set in /etc/profile; for setting the umask +# for ssh logins, install and configure the libpam-umask package. +#umask 022 + +# if running bash +if [ -n "$BASH_VERSION" ]; then + # include .bashrc if it exists + if [ -f "$HOME/.bashrc" ]; then + . "$HOME/.bashrc" + fi +fi + +# set PATH so it includes user's private bin if it exists +if [ -d "$HOME/bin" ] ; then + PATH="$HOME/bin:$PATH" +fi 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..21b84647 --- /dev/null +++ b/tcwg-base/home-data/maxim.kuvyrkov/.ssh/authorized_keys @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBFNV3JYhc3eDiT4D5mPbVM6tDX4PL2lEgdUx2T64wDf maxim.kuvyrkov@linaro.org-20221125 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/config.d b/tcwg-base/home-data/maxim.kuvyrkov/.ssh/config.d new file mode 120000 index 00000000..1af9bec1 --- /dev/null +++ b/tcwg-base/home-data/maxim.kuvyrkov/.ssh/config.d @@ -0,0 +1 @@ +../../tcwg-buildslave/.ssh/config.d
\ 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/maxim.kuvyrkov/share/emacs/site-lisp/yaml-mode.el b/tcwg-base/home-data/maxim.kuvyrkov/share/emacs/site-lisp/yaml-mode.el new file mode 100644 index 00000000..9274a5bb --- /dev/null +++ b/tcwg-base/home-data/maxim.kuvyrkov/share/emacs/site-lisp/yaml-mode.el @@ -0,0 +1,439 @@ +;;; yaml-mode.el --- Major mode for editing YAML files + +;; Copyright (C) 2010-2014 Yoshiki Kurihara + +;; Author: Yoshiki Kurihara <clouder@gmail.com> +;; Marshall T. Vandegrift <llasram@gmail.com> +;; Maintainer: Vasilij Schneidermann <v.schneidermann@gmail.com> +;; Package-Requires: ((emacs "24.1")) +;; Keywords: data yaml +;; Version: 0.0.12 + +;; This file is not part of Emacs + +;; This file is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; This file is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License along +;; with this program; if not, write to the Free Software Foundation, Inc., +;; 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +;;; Commentary: + +;; This is a major mode for editing files in the YAML data +;; serialization format. It was initially developed by Yoshiki +;; Kurihara and many features were added by Marshall Vandegrift. As +;; YAML and Python share the fact that indentation determines +;; structure, this mode provides indentation and indentation command +;; behavior very similar to that of python-mode. + +;;; Installation: + +;; To install, just drop this file into a directory in your +;; `load-path' and (optionally) byte-compile it. To automatically +;; handle files ending in '.yml', add something like: +;; +;; (require 'yaml-mode) +;; (add-to-list 'auto-mode-alist '("\\.yml\\'" . yaml-mode)) +;; +;; to your .emacs file. +;; +;; Unlike python-mode, this mode follows the Emacs convention of not +;; binding the ENTER key to `newline-and-indent'. To get this +;; behavior, add the key definition to `yaml-mode-hook': +;; +;; (add-hook 'yaml-mode-hook +;; '(lambda () +;; (define-key yaml-mode-map "\C-m" 'newline-and-indent))) + +;;; Known Bugs: + +;; YAML is easy to write but complex to parse, and this mode doesn't +;; even really try. Indentation and highlighting will break on +;; abnormally complicated structures. + +;;; Code: + + +;; User definable variables + +;;;###autoload +(defgroup yaml nil + "Support for the YAML serialization format" + :group 'languages + :prefix "yaml-") + +(defcustom yaml-mode-hook nil + "*Hook run by `yaml-mode'." + :type 'hook + :group 'yaml) + +(defcustom yaml-indent-offset 2 + "*Amount of offset per level of indentation." + :type 'integer + :safe 'natnump + :group 'yaml) + +(defcustom yaml-backspace-function 'backward-delete-char-untabify + "*Function called by `yaml-electric-backspace' when deleting backwards. +It will receive one argument, the numeric prefix value." + :type 'function + :group 'yaml) + +(defcustom yaml-block-literal-search-lines 100 + "*Maximum number of lines to search for start of block literals." + :type 'integer + :group 'yaml) + +(defcustom yaml-block-literal-electric-alist + '((?| . "") (?> . "-")) + "*Characters for which to provide electric behavior. +The association list key should be a key code and the associated value +should be a string containing additional characters to insert when +that key is pressed to begin a block literal." + :type 'alist + :group 'yaml) + +(defface yaml-tab-face + '((((class color)) (:background "red" :foreground "red" :bold t)) + (t (:reverse-video t))) + "Face to use for highlighting tabs in YAML files." + :group 'faces + :group 'yaml) + +(defcustom yaml-imenu-generic-expression + '((nil "^\\(:?[a-zA-Z_-]+\\):" 1)) + "The imenu regex to parse an outline of the yaml file." + :type 'string + :group 'yaml) + + +;; Constants + +(defconst yaml-mode-version "0.0.12" "Version of `yaml-mode'.") + +(defconst yaml-blank-line-re "^ *$" + "Regexp matching a line containing only (valid) whitespace.") + +(defconst yaml-directive-re "^\\(?:--- \\)? *%\\(\\w+\\)" + "Regexp matching a line contatining a YAML directive.") + +(defconst yaml-document-delimiter-re "^ *\\(?:---\\|[.][.][.]\\)" + "Rexexp matching a YAML document delimiter line.") + +(defconst yaml-node-anchor-alias-re "[&*][a-zA-Z0-9_-]+" + "Regexp matching a YAML node anchor or alias.") + +(defconst yaml-tag-re "!!?[^ \n]+" + "Rexexp matching a YAML tag.") + +(defconst yaml-bare-scalar-re + "\\(?:[^-:,#!\n{\\[ ]\\|[^#!\n{\\[ ]\\S-\\)[^#\n]*?" + "Rexexp matching a YAML bare scalar.") + +(defconst yaml-hash-key-re + (concat "\\(?:^\\(?:--- \\)?\\|{\\|\\(?:[-,] +\\)+\\) *" + "\\(?:" yaml-tag-re " +\\)?" + "\\(" yaml-bare-scalar-re "\\) *:" + "\\(?: +\\|$\\)") + "Regexp matching a single YAML hash key.") + +(defconst yaml-scalar-context-re + (concat "\\(?:^\\(?:--- \\)?\\|{\\|\\(?: *[-,] +\\)+\\) *" + "\\(?:" yaml-bare-scalar-re " *: \\)?") + "Regexp indicating the begininng of a scalar context.") + +(defconst yaml-nested-map-re + (concat ".*: *\\(?:&.*\\|{ *\\|" yaml-tag-re " *\\)?$") + "Regexp matching a line beginning a YAML nested structure.") + +(defconst yaml-block-literal-base-re " *[>|][-+0-9]* *\\(?:\n\\|\\'\\)" + "Regexp matching the substring start of a block literal.") + +(defconst yaml-block-literal-re + (concat yaml-scalar-context-re + "\\(?:" yaml-tag-re "\\)?" + yaml-block-literal-base-re) + "Regexp matching a line beginning a YAML block literal.") + +(defconst yaml-nested-sequence-re + (concat "^\\(?:\\(?: *- +\\)+\\|\\(:? *-$\\)\\)" + "\\(?:" yaml-bare-scalar-re " *:\\(?: +.*\\)?\\)?$") + "Regexp matching a line containing one or more nested YAML sequences.") + +(defconst yaml-constant-scalars-re + (concat "\\(?:^\\|\\(?::\\|-\\|,\\|{\\|\\[\\) +\\) *" + (regexp-opt + '("~" "null" "Null" "NULL" + ".nan" ".NaN" ".NAN" + ".inf" ".Inf" ".INF" + "-.inf" "-.Inf" "-.INF" + "y" "Y" "yes" "Yes" "YES" "n" "N" "no" "No" "NO" + "true" "True" "TRUE" "false" "False" "FALSE" + "on" "On" "ON" "off" "Off" "OFF") t) + " *$") + "Regexp matching certain scalar constants in scalar context.") + + +;; Mode setup + +(defvar yaml-mode-map + (let ((map (make-sparse-keymap))) + (define-key map "|" 'yaml-electric-bar-and-angle) + (define-key map ">" 'yaml-electric-bar-and-angle) + (define-key map "-" 'yaml-electric-dash-and-dot) + (define-key map "." 'yaml-electric-dash-and-dot) + (define-key map [backspace] 'yaml-electric-backspace) + map) + "Keymap used in `yaml-mode' buffers.") + +(defvar yaml-mode-syntax-table + (let ((syntax-table (make-syntax-table))) + (modify-syntax-entry ?\' "\"" syntax-table) + (modify-syntax-entry ?\" "\"" syntax-table) + (modify-syntax-entry ?# "<" syntax-table) + (modify-syntax-entry ?\n ">" syntax-table) + (modify-syntax-entry ?\\ "\\" syntax-table) + (modify-syntax-entry ?- "w" syntax-table) + (modify-syntax-entry ?_ "_" syntax-table) + (modify-syntax-entry ?\( "." syntax-table) + (modify-syntax-entry ?\) "." syntax-table) + (modify-syntax-entry ?\{ "(}" syntax-table) + (modify-syntax-entry ?\} "){" syntax-table) + (modify-syntax-entry ?\[ "(]" syntax-table) + (modify-syntax-entry ?\] ")[" syntax-table) + syntax-table) + "Syntax table in use in `yaml-mode' buffers.") + +;;;###autoload +(define-derived-mode yaml-mode text-mode "YAML" + "Simple mode to edit YAML. + +\\{yaml-mode-map}" + :syntax-table yaml-mode-syntax-table + (set (make-local-variable 'comment-start) "# ") + (set (make-local-variable 'comment-start-skip) "#+ *") + (set (make-local-variable 'indent-line-function) 'yaml-indent-line) + (set (make-local-variable 'indent-tabs-mode) nil) + (set (make-local-variable 'fill-paragraph-function) 'yaml-fill-paragraph) + + (set (make-local-variable 'syntax-propertize-function) + 'yaml-mode-syntax-propertize-function) + (setq font-lock-defaults '(yaml-font-lock-keywords))) + + +;; Font-lock support + +(defvar yaml-font-lock-keywords + `((,yaml-constant-scalars-re . (1 font-lock-constant-face)) + (,yaml-tag-re . (0 font-lock-type-face)) + (,yaml-node-anchor-alias-re . (0 font-lock-function-name-face)) + (,yaml-hash-key-re . (1 font-lock-variable-name-face)) + (,yaml-document-delimiter-re . (0 font-lock-comment-face)) + (,yaml-directive-re . (1 font-lock-builtin-face)) + (yaml-font-lock-block-literals 0 font-lock-string-face) + ("^[\t]+" 0 'yaml-tab-face t)) + "Additional expressions to highlight in YAML mode.") + +(defun yaml-mode-syntax-propertize-function (beg end) + "Unhighlight foo#bar tokens between BEG and END." + (save-excursion + (goto-char beg) + (while (search-forward "#" end t) + (save-excursion + (forward-char -1) + ;; both ^# and [ \t]# are comments + (when (and (not (bolp)) + (not (memq (preceding-char) '(?\s ?\t)))) + (put-text-property (point) (1+ (point)) + 'syntax-table (string-to-syntax "_"))))))) + +(defun yaml-font-lock-block-literals (bound) + "Find lines within block literals. +Find the next line of the first (if any) block literal after point and +prior to BOUND. Returns the beginning and end of the block literal +line in the match data, as consumed by `font-lock-keywords' matcher +functions. The function begins by searching backwards to determine +whether or not the current line is within a block literal. This could +be time-consuming in large buffers, so the number of lines searched is +artificially limitted to the value of +`yaml-block-literal-search-lines'." + (if (eolp) (goto-char (1+ (point)))) + (unless (or (eobp) (>= (point) bound)) + (let ((begin (point)) + (end (min (1+ (point-at-eol)) bound))) + (goto-char (point-at-bol)) + (while (and (looking-at yaml-blank-line-re) (not (bobp))) + (forward-line -1)) + (let ((nlines yaml-block-literal-search-lines) + (min-level (current-indentation))) + (forward-line -1) + (while (and (/= nlines 0) + (/= min-level 0) + (not (looking-at yaml-block-literal-re)) + (not (bobp))) + (set 'nlines (1- nlines)) + (unless (looking-at yaml-blank-line-re) + (set 'min-level (min min-level (current-indentation)))) + (forward-line -1)) + (cond + ((and (< (current-indentation) min-level) + (looking-at yaml-block-literal-re)) + (goto-char end) (set-match-data (list begin end)) t) + ((progn + (goto-char begin) + (re-search-forward (concat yaml-block-literal-re + " *\\(.*\\)\n") + bound t)) + (set-match-data (nthcdr 2 (match-data))) t)))))) + + +;; Indentation and electric keys + +(defun yaml-compute-indentation () + "Calculate the maximum sensible indentation for the current line." + (save-excursion + (beginning-of-line) + (if (looking-at yaml-document-delimiter-re) 0 + (forward-line -1) + (while (and (looking-at yaml-blank-line-re) + (> (point) (point-min))) + (forward-line -1)) + (+ (current-indentation) + (if (looking-at yaml-nested-map-re) yaml-indent-offset 0) + (if (looking-at yaml-nested-sequence-re) yaml-indent-offset 0) + (if (looking-at yaml-block-literal-re) yaml-indent-offset 0))))) + +(defun yaml-indent-line () + "Indent the current line. +The first time this command is used, the line will be indented to the +maximum sensible indentation. Each immediately subsequent usage will +back-dent the line by `yaml-indent-offset' spaces. On reaching column +0, it will cycle back to the maximum sensible indentation." + (interactive "*") + (let ((ci (current-indentation)) + (cc (current-column)) + (need (yaml-compute-indentation))) + (save-excursion + (beginning-of-line) + (delete-horizontal-space) + (if (and (equal last-command this-command) (/= ci 0)) + (indent-to (* (/ (- ci 1) yaml-indent-offset) yaml-indent-offset)) + (indent-to need))) + (if (< (current-column) (current-indentation)) + (forward-to-indentation 0)))) + +(defun yaml-electric-backspace (arg) + "Delete characters or back-dent the current line. +If invoked following only whitespace on a line, will back-dent to the +immediately previous multiple of `yaml-indent-offset' spaces." + (interactive "*p") + (if (or (/= (current-indentation) (current-column)) (bolp)) + (funcall yaml-backspace-function arg) + (let ((ci (current-column))) + (beginning-of-line) + (delete-horizontal-space) + (indent-to (* (/ (- ci (* arg yaml-indent-offset)) + yaml-indent-offset) + yaml-indent-offset))))) + +(defun yaml-electric-bar-and-angle (arg) + "Insert the bound key and possibly begin a block literal. +Inserts the bound key. If inserting the bound key causes the current +line to match the initial line of a block literal, then inserts the +matching string from `yaml-block-literal-electric-alist', a newline, +and indents appropriately." + (interactive "*P") + (self-insert-command (prefix-numeric-value arg)) + (let ((extra-chars + (assoc last-command-event + yaml-block-literal-electric-alist))) + (cond + ((and extra-chars (not arg) (eolp) + (save-excursion + (beginning-of-line) + (looking-at yaml-block-literal-re))) + (insert (cdr extra-chars)) + (newline-and-indent))))) + +(defun yaml-electric-dash-and-dot (arg) + "Insert the bound key and possibly de-dent line. +Inserts the bound key. If inserting the bound key causes the current +line to match a document delimiter, de-dent the line to the left +margin." + (interactive "*P") + (self-insert-command (prefix-numeric-value arg)) + (save-excursion + (beginning-of-line) + (if (and (not arg) (looking-at yaml-document-delimiter-re)) + (delete-horizontal-space)))) + +(defun yaml-narrow-to-block-literal () + "Narrow the buffer to block literal if the point is in it, +otherwise do nothing." + (interactive) + (save-excursion + (goto-char (point-at-bol)) + (while (and (looking-at-p yaml-blank-line-re) (not (bobp))) + (forward-line -1)) + (let ((nlines yaml-block-literal-search-lines) + (min-level (current-indentation)) + beg) + (forward-line -1) + (while (and (/= nlines 0) + (/= min-level 0) + (not (looking-at-p yaml-block-literal-re)) + (not (bobp))) + (set 'nlines (1- nlines)) + (unless (looking-at-p yaml-blank-line-re) + (set 'min-level (min min-level (current-indentation)))) + (forward-line -1)) + (when (and (< (current-indentation) min-level) + (looking-at-p yaml-block-literal-re)) + (set 'min-level (current-indentation)) + (forward-line) + (setq beg (point)) + (while (and (not (eobp)) + (or (looking-at-p yaml-blank-line-re) + (> (current-indentation) min-level))) + (forward-line)) + (narrow-to-region beg (point)))))) + +(defun yaml-fill-paragraph (&optional justify region) + "Fill paragraph. +This behaves as `fill-paragraph' except that filling does not +cross boundaries of block literals." + (interactive "*P") + (save-restriction + (yaml-narrow-to-block-literal) + (let ((fill-paragraph-function nil)) + (fill-paragraph justify region)))) + +(defun yaml-set-imenu-generic-expression () + (make-local-variable 'imenu-generic-expression) + (make-local-variable 'imenu-create-index-function) + (setq imenu-create-index-function 'imenu-default-create-index-function) + (setq imenu-generic-expression yaml-imenu-generic-expression)) + +(add-hook 'yaml-mode-hook 'yaml-set-imenu-generic-expression) + + +(defun yaml-mode-version () + "Diplay version of `yaml-mode'." + (interactive) + (message "yaml-mode %s" yaml-mode-version) + yaml-mode-version) + +;;;###autoload +(add-to-list 'auto-mode-alist '("\\.e?ya?ml\\'" . yaml-mode)) + +(provide 'yaml-mode) + +;;; yaml-mode.el ends here diff --git a/tcwg-base/home-data/maxim.kuvyrkov/share/emacs/site-lisp/yaml-mode.elc b/tcwg-base/home-data/maxim.kuvyrkov/share/emacs/site-lisp/yaml-mode.elc Binary files differnew file mode 100644 index 00000000..c80c6bfd --- /dev/null +++ b/tcwg-base/home-data/maxim.kuvyrkov/share/emacs/site-lisp/yaml-mode.elc 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..cec2efa9 --- /dev/null +++ b/tcwg-base/home-data/omair.javaid/.ssh/authorized_keys @@ -0,0 +1,2 @@ +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 +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII68Ck8ycVNMNkSf7OQNaDB6637LMgMkDMlioWWZlPUv omair.javaid@linaro.org diff --git a/tcwg-base/home-data/passwd b/tcwg-base/home-data/passwd new file mode 100644 index 00000000..176454b7 --- /dev/null +++ b/tcwg-base/home-data/passwd @@ -0,0 +1,21 @@ +tcwg-build:x:9003:9003:TCWG Builder::/bin/bash +tcwg-buildslave:x:11827:9000:TCWG Buildslave::/bin/bash +tcwg-buildbot:x:15703:9000:TCWG Buildbot::/bin/bash +tcwg-benchmark:x:12326:9000:TCWG Benchmark::/bin/bash +tcwg-ci-bot:x:15849:9000:CI Bot::/bin/bash +alex.bennee:x:10583:10000:Alex Bennée::/bin/bash +christophe.lyon:x:15923:10000:Christophe Lyon::/bin/bash +maxim.kuvyrkov:x:10967:10000:Maxim Kuvyrkov::/bin/bash +richard.henderson:x:13410:10000:Richard Henderson::/bin/bash +omair.javaid:x:10174:10000:Omair Javaid::/bin/bash +adhemerval.zanella:x:11706:10000:Adhemerval Zanella::/bin/bash +david.spickett:x:15194:10000:David Spickett::/bin/bash +everton.constantino:x:15437:9002:Everton Constantino::/bin/bash +laurent.alfonsi:x:15734:10000:Laurent Alfonsi:/home/laurent.alfonsi:/bin/bash +thiago.bauermann:x:15744:10000:Thiago Jung Bauermann:/home/thiago.bauermann:/bin/bash +pierrick.bouvier:x:15752:10000:Pierrick Bouvier:/home/pierrick.bouvier:/bin/bash +anthony.roberts:x:15751:9002:Anthony Roberts:/home/anthony.roberts:/bin/bash +antoine.moynault:x:15825:10000:Antoine Moynault:/home/antoine.moynault:/bin/bash +carlos.seo:x:15430:10000:Carlos Eduardo Seo:/home/carlos.seo:/bin/bash +leandro.lupori:x:15854:10000:Leandro Lupori:/home/leandro.lupori:/bin/bash +lina.iyer:x:15978:9002:Lina Iyer::/bin/bash diff --git a/tcwg-base/home-data/pierrick.bouvier/.ssh/authorized_keys b/tcwg-base/home-data/pierrick.bouvier/.ssh/authorized_keys new file mode 100644 index 00000000..3ad01c01 --- /dev/null +++ b/tcwg-base/home-data/pierrick.bouvier/.ssh/authorized_keys @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDE6pIRBAIT7u96O9YviJN5R64qzbTcuhfE0Q2NnSu7awZF6OEB+p3Xb0FMomn7tJ79a2u2AkXQL7MkrxjVcre6WaUIPqqqMguWrNDM4YHKV+4AUBAiK1uJSw4An0Ct/ohyjEjDqwzywu1KFO2v5QSkmLTM1ITwLz5miyZPWW4HxQ2hK5NnhjkMClaXrEErXR2pmJAd72t2tswsPqQ4KEJSB2ZHIW7mJ3G7SMJfiiWqdll37LiEU42oTtdzJehH6G7i9vy6BfkF4MTyaf3SimZQ9lxeVc+tg94Lv0HPnNM8mkWx1oP/0GhPO7Eo2jm7PCVujB8x2sT9z79AVeS4OEgP pibouvier@linaro diff --git a/tcwg-base/home-data/pierrick.bouvier/.ssh/config b/tcwg-base/home-data/pierrick.bouvier/.ssh/config new file mode 120000 index 00000000..5f9d8251 --- /dev/null +++ b/tcwg-base/home-data/pierrick.bouvier/.ssh/config @@ -0,0 +1 @@ +../../tcwg-buildslave/.ssh/config
\ No newline at end of file diff --git a/tcwg-base/home-data/pierrick.bouvier/.ssh/config.d b/tcwg-base/home-data/pierrick.bouvier/.ssh/config.d new file mode 120000 index 00000000..1af9bec1 --- /dev/null +++ b/tcwg-base/home-data/pierrick.bouvier/.ssh/config.d @@ -0,0 +1 @@ +../../tcwg-buildslave/.ssh/config.d
\ No newline at end of file diff --git a/tcwg-base/home-data/pierrick.bouvier/.ssh/known_hosts b/tcwg-base/home-data/pierrick.bouvier/.ssh/known_hosts new file mode 120000 index 00000000..936136a2 --- /dev/null +++ b/tcwg-base/home-data/pierrick.bouvier/.ssh/known_hosts @@ -0,0 +1 @@ +../../tcwg-buildslave/.ssh/known_hosts
\ No newline at end of file diff --git a/tcwg-base/home-data/pierrick.bouvier/.ssh/ssh-tcwglab-nc-sh b/tcwg-base/home-data/pierrick.bouvier/.ssh/ssh-tcwglab-nc-sh new file mode 120000 index 00000000..6eddeb50 --- /dev/null +++ b/tcwg-base/home-data/pierrick.bouvier/.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/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..54fcd903 100644 --- a/tcwg-base/tcwg-build/tcwg-benchmark/.ssh/authorized_keys +++ b/tcwg-base/home-data/tcwg-benchmark/.ssh/authorized_keys @@ -1 +1,2 @@ ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC1u4GVTRNPWVnU9YRUZPeUql0vjm3sD4F6KG68OpMAtbR8F8q1dCOgeOjPOipznJP4ghVakPrEQSOPnbnlMhNg9FQbScwXctmLknKsXrKSCuef+PEs7YRCmb+mD1RBXaoOChaNV1O7dt5tnRbqYT4k97ojwbLqIBwHWF0l8+3kY0R83LJBK2JCdZN2zfzg7xnumx700uGICPRozFMLszuIRu/oDC14bJnOFd9htcW2KzU1/oPPUhDScmVTYKjyRm8QGudElHTy1wGMroApnuc+NCCY8iy8A7GfxIX48aghnb3kh57P0W6jyc8bpBtMieYCwBRMR/imyvbpWF8Tlbnu0C0uMg4mSU15daJLrdv446xmcb2WB/xxz437fpVchAOz0H+Hao24DQFIzzCOnkgDXixP/43kybRi/8IqAXjJhCRO+8bHVXOESDhH6kidERIaSAiT+LG2uTgufxoWuFWm8fftLj7oKBx+SpMymSNofDHRWa4XGBO66dP1Ijmu2jRH5Z4Pnxy25tVPReOVSXyT/fkzd0+kpFUR0mEjl9ahZliZMFSSMdm3vDqqt7oQWxlMc6Dl1MMQ1iWzvRWRVSyofw6Fp2rretVbDmW+kavxxGRrWFr73EWrn47yC+mqR7DouaQ8wC/baU1GXZ6ouoY1kalNMSmGLTMMrLlclpz2mw== tcwg-benchmark +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICGp3175gYsucw1DgO/+VmEAwlUhGqK89qJfmK/jhV1P tcwg-benchmark@linaro.org-20220725 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/config.d b/tcwg-base/home-data/tcwg-benchmark/.ssh/config.d new file mode 120000 index 00000000..1af9bec1 --- /dev/null +++ b/tcwg-base/home-data/tcwg-benchmark/.ssh/config.d @@ -0,0 +1 @@ +../../tcwg-buildslave/.ssh/config.d
\ 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/home-data/tcwg-build/.gitconfig b/tcwg-base/home-data/tcwg-build/.gitconfig new file mode 100644 index 00000000..51ec486b --- /dev/null +++ b/tcwg-base/home-data/tcwg-build/.gitconfig @@ -0,0 +1,3 @@ +[user] + name = TCWG Build + email = linaro-toolchain@lists.linaro.org diff --git a/tcwg-base/home-data/tcwg-build/.ssh/authorized_keys b/tcwg-base/home-data/tcwg-build/.ssh/authorized_keys new file mode 100644 index 00000000..b7148fbf --- /dev/null +++ b/tcwg-base/home-data/tcwg-build/.ssh/authorized_keys @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILSW/oV/XFlGxI0WdLfI+kU7YwR2TPAxqUJCQQn/779f tcwg-build@linaro.org-20220725 diff --git a/tcwg-base/home-data/tcwg-build/README b/tcwg-base/home-data/tcwg-build/README new file mode 100644 index 00000000..d5a95bf5 --- /dev/null +++ b/tcwg-base/home-data/tcwg-build/README @@ -0,0 +1,65 @@ +This automation user -- tcwg-build -- is designed for robust-isolation +testing and, in particular, pre-commit testing. It is used in environments +where we need to assume presence of malicious actors. + +This user is configured (aka "new-user.sh --user tcwg-build" is called) +only inside a particular build/test container -- this is done by +"jenkins-scripts/start-container-docker.sh --task precommit". Therefore, +someone with access only to the private key of this user can't access +any of TCWG machines outside of currently-running containers for +pre-commit testing. See Note #1 below. + +The two primary methods of isolation is that +1. tcwg-build has no sudo access, +2. tcwg-build has no access to ssh agent. + +Lack of sudo access is configured by the fact that tcwg-build is not +a member of tcwg-sudo group in home-data/group. + +Lack of access to ssh agent is configured by +"jenkins-scripts/start-container-docker.sh --task precommit" +disabling ssh agent forwarding. +FIXME: Drop tcwg-buildslave's key from ssh agent once container for tcwg-build +is created. + +Secondary method of isolation is that "--task precommit" containers are +allowed to mount read-write only scratch volumes. All other mounts must +be readonly. We then take care when handling data produced by precommit +containers, and we do all non-trivial handling of this data only inside +other "--task precommit" containers. + +With the above safeguards we are able to put tcwg-build inside a privileged +docker container, and tcwg-build should not be able to escape without +escalating privileges. A potential privilege escalation in our docker +containers can happen by exploiting: +1. kernel, +2. sshd, +3. docker, +4. sudo or another setuid binary. +Assuming we stay on top of updating both bare machines and our docker images, +all of the above are too costly to exploit. + +Note #1: We provide access to tcwg-* machines via "host" containers, +which allow access for groups of users defined in home-data/group. +!!! It is important that tcwg-build is NOT a member of ANY group in +!!! home-data/group. This prevents it from accessing TCWG machines. + +We have a dedicated group with the matching GID for tcwg-build to have +a primary group. The group name does not match the user name to avoid +using umask 002 when most other users have 022. This can cause +differences in builds/tests which depend on file permissions, leading +to bogus regression reports (see USERGROUPS_ENAB description in +/etc/login.defs). This is it's entry in home-data/group: +=== +tcwg-build-group:x:9003: +=== +!!! It is important that tcwg-build is NOT specified as a member of this +!!! group because, otherwise, "tcwg-host/run.sh all" will configure access +!!! for tcwg-build on most TCWG machines. This is the same point as above, +!!! but I am just concerned about temptation to specify tcwg-build as member +!!! of tcwg-build. + +Note that tcwg-build cannot access *.tcwglab machines from outside of +Cambridge Lab. This is due to tcwg-build having no account in TCWG ssh proxy +container running on ci.linaro.org. + diff --git a/tcwg-base/home-data/tcwg-buildbot/.ssh/.keep b/tcwg-base/home-data/tcwg-buildbot/.ssh/.keep new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/tcwg-base/home-data/tcwg-buildbot/.ssh/.keep 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/home-data/tcwg-buildslave/.jipdate.yml b/tcwg-base/home-data/tcwg-buildslave/.jipdate.yml new file mode 100644 index 00000000..b7fab431 --- /dev/null +++ b/tcwg-base/home-data/tcwg-buildslave/.jipdate.yml @@ -0,0 +1,5 @@ +server: + url: https://linaro.atlassian.net + token: #TCWG_JIRA_TOKEN# +text-editor: False +username: team-toolchain+tcwg-jira@linaro.org 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..473e1855 100644 --- a/tcwg-base/tcwg-build/tcwg-buildslave/.ssh/authorized_keys +++ b/tcwg-base/home-data/tcwg-buildslave/.ssh/authorized_keys @@ -1 +1,2 @@ ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCvo00oFPW9t4OOylGA2hpBFu/3S7xjMWolmzZoS234Hej/Y8RvMgyG+jAg/hdG8aMG+PRmCRDDk2R5HSceSTG/51x3DyVkpjiFHaWdafCvy63Okalhu0vLAXHi8pbpSjHv7c5KPorBWdG2L5D2LSv/zwDGm+aXvHOrfE6WDraipYML7lUuruTwpg7Fs+NMPqghroslD+gIWeIr897aFug4Enj4oYJSitHqIHwBuPha//bFJpBHakP2PmnB0hFIBDpHq0QYfyHechm6iO+VOOooKG1MMmsPlPfT5kOZkSo/pIgpBILXwFx+BnVhtvNRhN1a8FyLL5V4fb34HXT7Qyq6bA3qGs+cgjy+ZQtHIOyo2rZmBD5uZNjaUdpJFMpMQs9g+h9dIit57bMJBc1anE3BhOhRzd+bsKhsXkhlioaVKMwPyXbkKgGkRsrLn3VEWgF4f2lO2LyBc6HNdm5t5xnh2u1MxnxmSgw3co+86lSvhh5o36Kth7ebi06OLnJDuborq/uBv33G/6dargIz5ZaMySpQIgO6mo+mTMdJr6QpWGek93MFE0N0tbAAXADkk0hpA7if1UJwmCmBAifFDeAMt0QV+taA9jtHMHHgSZC+a4i4EO06L1u0e9qX9ciQJbqXt65Ynjumo2uZfnK1aBSrWX5zaT0Z0LIwxY2HISA06w== tcwg@linaro.org +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK5/Q9u6/oaa6J322ZEKnwxe5nwGQXPQRcEjUvAwcz81 tcwg-buildslave@linaro.org-20220725 diff --git a/tcwg-base/home-data/tcwg-buildslave/.ssh/config b/tcwg-base/home-data/tcwg-buildslave/.ssh/config new file mode 100644 index 00000000..4f6a872b --- /dev/null +++ b/tcwg-base/home-data/tcwg-buildslave/.ssh/config @@ -0,0 +1,2 @@ +Match All + Include ~/.ssh/config.d/*.conf diff --git a/tcwg-base/home-data/tcwg-buildslave/.ssh/config.d/01-tcwg.conf b/tcwg-base/home-data/tcwg-buildslave/.ssh/config.d/01-tcwg.conf new file mode 100644 index 00000000..69cdfb35 --- /dev/null +++ b/tcwg-base/home-data/tcwg-buildslave/.ssh/config.d/01-tcwg.conf @@ -0,0 +1,269 @@ +# === BEGIN: TCWG SSH configuration === +# +# This must be included or copied at the start of your ~/.ssh/config file. +# Ssh uses the first matching occurrence for a setting, so the farther +# this is from the top, the more likely it is that some other stanza +# will take precedence. + +# If you want to use the Include directive to include this file from +# your ~/.ssh/config file, make sure to add a 'Match All' directive +# just before the 'Include' one, otherwise this file will only be +# taken into account if the ssh invocation matches the preceding +# 'Host' directive: +# Host bla +# Hostname blabla +# +# Match All +# Include /path/to/this/file +# + +# Add this into your local ~/.ssh/config.d/00-local.conf +#Host tcwg-* *.tcwglab people.linaro.org lab.validation.linaro.org ci.linaro.org +# User first.last + +# Access to Cambridge Lab. E.g., ssh dev-01.tcwglab +Host *.tcwglab + ProxyCommand ~/.ssh/ssh-tcwglab-nc.sh -q0 %h %p + +Host tcwg-* *.tcwglab + # Forward authentication agent and keep private keys in one place. + ForwardAgent yes + # 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 + +Host *.tcwglab + # Disable checking of host keys for boards behind gateways. + # !!! BE CAREFUL 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 + +Host ci.linaro.org + Port 2020 + +# The verison of Apache MINA SSHD used by Gerrit < 3.6 does not +# enumerate supported key types properly. This workaround allows +# ssh-rsa keys to still work. +Host review.linaro.org + Port 29418 + PubkeyAcceptedKeyTypes +ssh-rsa + +# VM to provide PDU control and serial access for LAB-hosted machines +Host services.tcwglab + Hostname 192.168.16.2 + Port 22 + +# VM to provide PDU control for LAB-hosted machines. It seems that from TCWG +# only maxim.kuvyrkov has access to this machine. Information from +# support.tcwglab:/usr/local/bin/pcycle-* is collated in nvidia-power-cycle.sh . +Host support.tcwglab + Hostname 192.168.17.160 + Port 22 + +Host git*.linaro.org dev-private-git.linaro.org + User git + +# Connect to "host" container by default. +# Users in "root" groups can also ssh as root on the bare machine on port 22. +Host tcwg-* *.tcwglab + Port 2222 + +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 + +# When connecting to a container on an AWS machine, use the ".tcwglab" name instead. +# (access to any port is only allowed when going via ci.linaro.org) + +# AWS Graviton3 instances for LLVM Buildbot SVE testing +# Spec: 32x Graviton3, 64GB RAM, 512GB disk +# Service: AWS dashboard for TCWG (David and Maxim have access) +# PDU, serial: via AWS dashboard +Host tcwg-g3-01 tcwg-g3-01.tcwglab + # Has 1TB disk; can be used by developers for investigations. + Hostname 34.247.40.177 +Host tcwg-g3-02 tcwg-g3-02.tcwglab + # 8 core 256GB disk, used for AArch64 LLDB bot. + Hostname 34.244.87.161 +Host tcwg-g3-04 tcwg-g3-04.tcwglab + # Spec: 64x Graviton3, 128GB RAM, 1TB disk + Hostname 52.48.47.199 + +# ARMv8.2+SVE Fujitsu FX700 (Cambridge Colo) +# Service: kevin.zhao@linaro.org +# PDU: no; serial: no +Host tcwg-fx-01 # Tiny VM for SVE cross-testing # 6x A64FX + Hostname 213.146.141.69 +Host tcwg-fx-02 tcwg-bmk-fx-02 # Benchmarking machine # 48x A64FX + Hostname 213.146.155.110 +Host tcwg-fx-03 tcwg-bmk-fx-03 # Benchmarking machine # 48x A64FX + Hostname 213.146.155.6 +Host tcwg-fx-04 tcwg-bmk-fx-04 # Benchmarking machine # 48x A64FX + Hostname 213.146.141.8 + +# ARMv8.2 Ampere Altra Mt. Jade (Packet.net): # 160x Neoverse-N1 +# Service: maxim.kuvyrkov@linaro.org +# PDU: via Packet.net dashboard; serial: via Packet.net dashboard +Host tcwg-jade-01 # LLVM Buildbot + Hostname 139.178.86.199 +Host tcwg-snow-02 tcwg-snow_bmk-02 # Jenkins builder + Hostname 139.178.86.6 +Host tcwg-jade-03 # Dev Box + Hostname 139.178.84.207 +Host tcwg-jade-04 # LLVM Buildbot + Hostname 145.40.80.173 +Host tcwg-jade-05 # Jenkins builder + Hostname 147.75.55.117 +Host tcwg-jade-06 # Jenkins builder + Hostname 139.178.86.193 + +# ARMv8 SynQuacer dev boxes (Cambridge Lab): # 24x Cortex-A53 +# Service: ticket for LAB; https://linaro.atlassian.net/issues/?filter=10146 +# PDU: nvidia-power-cycle.sh; serial: yes +Host tcwg-sq-01.tcwglab tcwg-bmk-sq-01.tcwglab + Hostname 192.168.16.41 +Host tcwg-sq-02.tcwglab tcwg-bmk-sq-02.tcwglab + Hostname 192.168.16.42 + +# ARMv7 dev / bmk boxes (Cambridge Lab): +# Service: ticket for LAB; https://linaro.atlassian.net/issues/?filter=10146 +# PDU: nvidia-power-cycle.sh; serial: yes +Host tcwg-tk1-10.tcwglab # 4x Cortex-A15 + Hostname 192.168.18.199 +# PDU: nvidia-power-cycle.sh; serial: no +Host tcwg-x15-01.tcwglab # 2x Cortex-A15 + Hostname 192.168.16.31 + +# X86_64 dev box (Hetzner): +# Service: ticket for Systems; https://linaro.atlassian.net/issues/?filter=10146 +# PDU: via Hetzner dashboard; serial: via Hetzner dashboard +Host tcwg-ex42-01 ex42-01 # 8x Core i7 + Hostname 95.216.72.225 + +# X86_64 dev boxes (Cambridge Lab): +# Service: ticket for LAB; https://linaro.atlassian.net/issues/?filter=10146 +# PDU: nvidia-power-cycle.sh; serial: no +Host dev-01.tcwglab tcwg-x86_64-dev-01.tcwglab # 32x Xeon + Hostname 192.168.17.10 + +# Backup server and bmk coordinator (Cambridge Lab): # 4x Xeon +# Service: ticket for LAB; https://linaro.atlassian.net/issues/?filter=10146 +Host bkp.tcwglab bkp-01.tcwglab + Hostname 192.168.17.22 + +# X86_64 builders (Cambridge Lab): # 4-32x Xeon +# Service: ticket for LAB; https://linaro.atlassian.net/issues/?filter=10146 +# PDU: nvidia-power-cycle.sh; serial: no +Host build-01.tcwglab tcwg-x86_64-build-01.tcwglab + Hostname 192.168.16.5 +Host build-02.tcwglab tcwg-x86_64-build-02.tcwglab + Hostname 192.168.16.6 +Host build-03.tcwglab tcwg-x86_64-build-03.tcwglab + Hostname 192.168.16.7 +Host build-04.tcwglab tcwg-x86_64-build-04.tcwglab + Hostname 192.168.16.8 +Host build-05.tcwglab tcwg-x86_64-build-05.tcwglab + Hostname 192.168.16.9 +Host build-07.tcwglab tcwg-x86_64-build-07.tcwglab + Hostname 192.168.16.11 +Host build-08.tcwglab tcwg-x86_64-build-08.tcwglab + Hostname 192.168.16.12 +Host build-10.tcwglab tcwg-x86_64-build-10.tcwglab + Hostname 192.168.16.14 + +# ARMv8 Ampere boards (Cambridge Lab): +# Service: ticket for LAB; https://linaro.atlassian.net/issues/?filter=10146 +# PDU: BMC; serial: BMC +Host tcwg-amp-01.tcwglab tcwg-bmk-amp256-01.tcwglab # 256x Neoverse-N1 + Hostname 192.168.17.78 +Host tcwg-amp-02.tcwglab tcwg-bmk-amp80-02.tcwglab # 80x Neoverse-N1 + Hostname 192.168.17.79 + +# ARMv8 APM benchmarking boards (Cambridge Lab): # 8x X-Gene1 +# Service: ticket for LAB; https://linaro.atlassian.net/issues/?filter=10146 +# PDU: nvidia-power-cycle.sh; serial: no +Host tcwg-apm-01.tcwglab tcwg-bmk-apm-01.tcwglab + Hostname 192.168.16.20 +# PDU: nvidia-power-cycle.sh; serial: no +Host tcwg-apm-02.tcwglab tcwg-bmk-apm-02.tcwglab + Hostname 192.168.16.21 +# PDU: nvidia-power-cycle.sh; serial: nvidia-serial.sh +Host tcwg-apm-05.tcwglab tcwg-bmk-apm-05.tcwglab + Hostname 192.168.16.70 + +# ARMv8 APM builder/tester boards (Cambridge Lab): # 8x X-Gene1 +# This one has different CPU frequency settings, than -01, -02 and -05. +# Service: ticket for LAB; https://linaro.atlassian.net/issues/?filter=10146 +# PDU: nvidia-power-cycle.sh; serial: no +Host tcwg-apm-03.tcwglab + Hostname 192.168.16.24 + +# ARMv7 and ARMv8 benchmarking boxes (Cambridge Lab): # 4x Cortex-A15/A57 +# Service: ticket for LAB; https://linaro.atlassian.net/issues/?filter=10146 +# PDU: nvidia-power-cycle.sh; serial: nvidia-serial.sh +Host tcwg-tk1-01.tcwglab tcwg-bmk-tk1-01.tcwglab + Hostname 192.168.18.151 +Host tcwg-tk1-02.tcwglab tcwg-bmk-tk1-02.tcwglab + Hostname 192.168.18.152 +Host tcwg-tk1-03.tcwglab tcwg-bmk-tk1-03.tcwglab + Hostname 192.168.18.153 +Host tcwg-tk1-04.tcwglab tcwg-bmk-tk1-04.tcwglab + Hostname 192.168.18.154 +Host tcwg-tk1-05.tcwglab tcwg-bmk-tk1-05.tcwglab + Hostname 192.168.18.155 +Host tcwg-tk1-06.tcwglab tcwg-bmk-tk1-06.tcwglab + Hostname 192.168.18.156 +Host tcwg-tk1-07.tcwglab tcwg-bmk-tk1-07.tcwglab + Hostname 192.168.18.157 +Host tcwg-tk1-08.tcwglab tcwg-bmk-tk1-08.tcwglab + Hostname 192.168.18.158 +Host tcwg-tk1-09.tcwglab tcwg-bmk-tk1-09.tcwglab + Hostname 192.168.18.159 +Host tcwg-tx1-01.tcwglab tcwg-bmk-tx1-01.tcwglab + Hostname 192.168.18.101 +Host tcwg-tx1-02.tcwglab tcwg-bmk-tx1-02.tcwglab + Hostname 192.168.18.102 +Host tcwg-tx1-03.tcwglab tcwg-bmk-tx1-03.tcwglab + Hostname 192.168.18.103 +Host tcwg-tx1-04.tcwglab tcwg-bmk-tx1-04.tcwglab + Hostname 192.168.18.104 +Host tcwg-tx1-05.tcwglab tcwg-bmk-tx1-05.tcwglab + Hostname 192.168.18.105 +Host tcwg-tx1-06.tcwglab tcwg-bmk-tx1-06.tcwglab + Hostname 192.168.18.106 +Host tcwg-tx1-08.tcwglab tcwg-bmk-tx1-08.tcwglab + Hostname 192.168.18.108 +Host tcwg-tx1-09.tcwglab tcwg-bmk-tx1-09.tcwglab + Hostname 192.168.18.198 + +# ARMv9+SVE benchmarking boxes (Cambridge Lab): +# Cores: 1x Cortex-X2 + 3x Cortex-A710 + 4x Cortex-A510 +# PDU: nvidia-power-cycle.sh; serial: no +# Installation details: https://linaro.atlassian.net/browse/STG-3331 +# Service: ticket for LAB; https://linaro.atlassian.net/issues/?filter=10146 +Host tcwg-qc-01.tcwglab tcwg-bmk-qc-01.tcwglab + Hostname 192.168.17.121 +Host tcwg-qc-02.tcwglab tcwg-bmk-qc-02.tcwglab + Hostname 192.168.17.122 + +# WoA ans WSL2 jenkins builder (Cambridge Lab): # 8x Cortex-A78C +# RDP on port 3389; ssh leads to WSL2 VM (port 22) and to docker "host" +# container on port 2222. +# Service: ticket for LAB; https://linaro.atlassian.net/issues/?filter=10146 +Host tcwg-volterra-13.tcwglab + Hostname 192.168.17.73 + +# === END: TCWG SSH configuration === diff --git a/tcwg-base/home-data/tcwg-buildslave/.ssh/known_hosts b/tcwg-base/home-data/tcwg-buildslave/.ssh/known_hosts new file mode 100644 index 00000000..8ff08f0c --- /dev/null +++ b/tcwg-base/home-data/tcwg-buildslave/.ssh/known_hosts @@ -0,0 +1,96 @@ +# This file is generated automatically with known_hosts-regen.sh. DO NOT EDIT +139.178.84.207 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEwVcZP/lQpACRoeHPRI2JZeMLEUGFgQG+fnwEXITAeZ0ZUgq8998wWtGHtvhTiuSgUEKqZiBLeLRlk7IQjrm6c= +139.178.84.207 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMSyaDoJ0gPcoAMLdxyxSSB54DgB3dbTpC5ONZke+SZ0 +139.178.84.207 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDgeTsNNwPvT4p3eQxzLgmvsBWtcPY/C7olK7ML0tke2J7TKuSyKOYEV32vZGd0mxpAjZyfvxh7NOGp4olzwzhdbdSqn4Ofz227CtdN/uHyKaOao0nh74zHEIdAKfxRHCBEZnsEXUPDhzrR6lkYttBl3qMgODr2Ey6MwQsY4Vbsq443PG0KY+O2114OYO5+YCjpa945e59mcfWextsfNd5KmAhH0YudYnyb8sOhxhcMiYV5MsIkg3huecz4LD1vYDnTSoFiJv7GYx8UQspKqZjP1CPVvlOcRLZRNro2w08oU2GLr0oVUlodmr2UxG3cjrROf2nLic9P8PgzrRbQq7Z6efN7RlR9ZtMhESiO17mfMvNYVNtEHYrdO1ynwryqL4KuzX7HqOEX3uUCaMkn8CXaKnav2Nc70Gz1LNM13+r5usBxkIHAeRxIoLy5/WZSLe1mT6a1y0i/+cuZgr/eBZpyMesMTvFNTzHalzQgF2fdUx3qvZz+hyD6CQs1fJtNM0k= +139.178.86.193 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKd33+qJbJn2lOhmG3H71gPUmhTIOd86X9O2QhB+go+0NkVpRi9xf4DqHPxzbLWthrC80rSlnHC/tjoulZEOcyA= +139.178.86.193 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMpxwD2Iyu1HF5FbaKw+Olxhv1ET3TYfdisT2NJSJQ3D +139.178.86.193 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC/gTPoz+7PQVU4HAMxNjOqZFiCN2zYb/zi0DkFtYeQiIVEagMIzRiVCaUU93YjslElo60lnqI9Iy0Cbj1hGYolBT8UIo8GRLSAJ5T1U419TnwxQV2Kp5Dj+5a+6eEvXpuqPMO66cJE6JH/NnUqYuuDuOaUTQlyRbhPMhu9zBxLT1/M86h9225B40rBiOX6XcxQ9iYH1KJkNwmKmIpXlKfIUWljfeBLVlUlo5Oj921UOnbejBuh9YOEb7/8RQ7xpoAYDafbVO4ALNNZ5fdB5OGESL/HmHS+jz1Ah1XOWj2PbcD/tSCD/fI/CBHL238WTp7icmOyRskyBPK6hC1I6/Z+KQAgLaZHEswQL5sqP3WXCZ8a6TyhRFy2UXjO8JRsuoAACqZ0NT705nbvaSEF86FKInThTd1bId9pd96WjfiV3HU7fUYtS+bSIXQnBeKo1SOi5LCQJeWubawU7TfXcslsNmNYVGRI+8qIBRT30pqoTIbm9YBnS25WwsdqndAi/AU= +139.178.86.199 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBHX0GPbyXy5YKhpdY9mjXL4Fmq2kNOq1cXRw9C06WwhJCmiokmnP5yNPwBC1LepBlwDrUYk070EUgs6uzMWIm3c= +139.178.86.199 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEVVhsqL521BaIrKw3e1mDxgP80GLZewpl2Qn+g7kA5u +139.178.86.199 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDfwx2g5M7/R/YePdn00tVVRhIeBoAA5O8EJLW8srwHCKyU4wWyKC8JnqtXGSPpjOZmtOfw73MRCEsrzRTk/o+Nt/+m2MqjhjLPA4REicAMp5Yt8+RzIY4S4QrxK4F0Ed0cWz6YeyZP/7KUgXXw5Ckl1cTVkuRK3TgtLKbUMrTw1wGkCJ6Fpfv7aXFWDHTRaj1ictULwqBs8VF0naFH78ko0P17ooC4hDO7KfsAcWkSTsSJMUrskYFVBEzU9vRUFkp7kyFu2n/7KGQVqpDccxZ9k3v8xeI6Gu1wV/SkQIlCs/wLVaK9nqzTgFFksBAk3FM1Y/ErptOf7q5SV8kHRdwiNL35rc2O6JrbwUZw+XkZsQkqhg0qPOqgpCImGWUWX8pB63f/Yrt4q6p048OKhXMg7C+F5+Vnljbpx1AA5QSSMHLLmg20s+XZqzjZpFNyCWALFb1CmWSx4oh0onKwv1OBXazbTL7vLUydBzZcaRYHkDij2cwfsDKDBt/8BuSu9Gk= +139.178.86.6 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBP7oqsAM4pK7ItTLsboeh7tBEeCXF+IzuhJQHv5o3pIj4wRt3yMqvpXb22NXXp6BsiY6xtZA1TsHaeb5qWyKJcg= +139.178.86.6 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBCz2CzWXUoqeCbwUpuUrvZDUYLkRCynMiowMdF+vlPx +139.178.86.6 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCIr3/4ocXmKigqwUNhAAr/M5mG1IdIzD84h9n72xenmDe1pcHSfcZLZ3KX7nwS69LrIj0d7fjuDBHcxkrH4kg6bY2fSsINrAUBLbElj8oGVDMOKP98CKaUQGaSsoirg5ZiYvX5Ak2P/E7f7pY9ojxMHCT0Oe4cF1v8aHHgtAhJVxaBgLTxv0Rrr5k0zqFgKyvwht4/8gnyPDVUJ1masKYILbVa+IEJD4gvXw9H1pCOCh22jA5MvHzLzoVdJ4z8GhCwUjkTHJx2Bir7rhUqNJvSdLE9svbYm4OxCMpr/GHaS+4Xg6ReADOaJ+njJ/9e4mYvz7kFEWu7UNtI+AY2R6ZPEjzHL5DXz4rT0ctXQzZ5HBTok75nV1NLIF2w0IOAsFal7DefYVReTLMyMnR1HniiZY9jlN6+ZrBbiqeZi0do2DGkb3HzzNhVBE8lhUmIXf4UwELUsF8jqVAbUOR08YJ7FQWPEH/tSz4km5O9VNv8MDqgRFSKhR7phNa/YFFCy00= +145.40.80.173 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBK2vLkUVJjfGQq5iC7OSR37feVodWTcxzFDw6H2BH4KM66PMkdHgYBmFZgcSGr31vl21UJGlPnAas/wAeetfN+o= +145.40.80.173 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDiGHoZz3lt++sc6dpYgA371g2H78czHkV9MwTigXqXz +145.40.80.173 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDS3zmQLdApWx2EY2YVyt8iAHdgf66qdDEQct/SvQdf3ONXvhQtyVdE03iD3/BTNOdqMmAvZOxpw5PSJkjJS/ANTVKlXsg+QnBtvrVPVtEaYOt6vQlwDH4qLeJ2LS7x4Dl0f4uKseUSIMZkqTyJpUBaYqI2uRdDs0ZIoIQCnK4RsLx9m3SWQrm9yiOotxUZWxnjbwmu3BcOfd7rTSTEpqn3ye0A3fk74xNBeJB6eIazvnCu/AWjLICYMfULZkYlQW5gblfkUoGqvfqN4S52aHn9+RsTv6PExMWQnkGE89+Fs34pYX5ObV4DNZwV4nkLYByFMXSkP7Ya+rP5CbGxUgmWNTZai77hgZflwpCP+XfOYXo/lpBDnVYBKo6jQn4JcqOj4pWDBHZHl6Dp5k37PZRglDq9IioZldCATQ2kp9Z7lVVCtJCS5zhWWMOjXv7GKq1ZnKJdAEHgXTMdrt6OwCTzp2TcIePls3DCiOKM5wKpf/Wck6MQzQT0QjKC5HW0RLs= +147.75.55.117 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBNcl1wRkIhaQLrBRDvolVrqUkn7sQ+PNx/tCGTjt+/Y0naDSS2lT1Mj7O6JjZb9QF2T1EkUMe/bsTHZ5ZK4xzrA= +147.75.55.117 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFt1SBbFC9iaYlCPsTY49Ex5sinT4jCg5FvcjRKcZ+gr +147.75.55.117 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCyRo6YqehgxKfiklciR92paC1JSRuHFsQmTTinwNtPT34VfV6PBEZo5Yg3s11tEIdEMulMwCnllNmjZxHTkQ//IXBWclbObUyUp497Db+q+EHCAsfRJwohPLIpQOsQHcyLxcC6q/PDFsnEYo1vRTszZzBJvqeq365EGF4wmX3F8YSzejsZppoZMnKyfax/Y1/I0eUhOTzD2/m5KjzD5JEtE8efm+G58IT+zR/fEgcGfz/4SsqDbAVJBFDTfy+bIXVIjAyhguOAoXxEVB9wwJE1sZLl9Ky21jspWp8aIlJ8QxdtutAgwMklBuHK92+hxtvsmRu++DQBHPO0dHD1MzbJSyDWfi8XzCA2G7ulzW28r7+w2Jl4daFt1UHM9H54ihafIw7YQGxIGoB9fzx6yOpCmDV3r8o3JOAv1SEJZv8pXz2f++p20qpQZBsxeaYgns/zDCLPNCfUF4RCcsFpsglfxk/WUqF8ebasqqBB+QnY61pJglTSM8sn3LonDXw0bnM= +213.146.141.8 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMKXyjegAfI0hTq5BeyyadSAHqTesU8dJ0bAdkelxD8dlhDbotwgmzcr7zMc1PmqgaIwNG+xbuyaxb/i4ZuSqAs= +213.146.141.8 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIML7xBR/YNUcZdEtUb00jutZdfrrDDGfSdOR966NUhwj +213.146.141.8 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCf/7MgO3+uP90vMFimh7m8zavbz2lp5D0soHaDAFl2vVcLBP3RiYVl5zBRJ+ZCRn1p5/Ps8TluLcN5q65GlFhOSiD5jEQ9zWu3FhRWGdlyxqcH9tLJe7vFM3vahEjMRSsgbNneJYkEeLkceXTuonLaz0kojYe1so0fIHULnmUUxx47BDm9wdOY+TEMvH7Qndlzzb4bFC9uKDw5beWtNsoNExZRCa48KiMbCemE5UY3/kZSwgaGE567WBfSkFw8XTqkfmf8+MH6og1mjozOpUcz3DP/7tua3Q1nvoExO9ZnZjz2qatQ+C2TKXByeGXbgdiEzCW68ilyNawCCt66neolO9hrmWCZV2p4i9ANJLiOM6ndq9eGEooxUWhYxHXeZMrd40qvyjFyOoqoM9W65SIfgYoGLOa+Jj98WEj8K4exX4bgNDkujZlSer4hNu4OlAIDDsGC1PrXFk+2e6Z5RCTEF87Xb6FFjGVZT3yOV6XixiJ2NQdYdAz7LKgijcqBqIE= +213.146.155.110 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBNQwCttokw9xIRj85gVfbQWlmkMTOzyelOgalaxG/wiCyjtjocoCl9E+XofpI0+znHo8Z/bjxOpopjjPvEw6uNI= +213.146.155.110 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFodAlH4aiGQ0ZqOSM20KDYgspzkKkZNaiAUf/pCHdwN +213.146.155.110 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC2NMLStRsAbLAto5RwstHcQWBcDvV6uog+BUapW70fQWIr0vVwJwN+rLVtWB8emBaPqo+kffXIza8li5+1CoptnWPLwf3uLnqb0v5xz2Mxtcl4iS8v+lB1NMBMJ0dcErXb/tCk9XriFRgMd+GYcR3cPSnl2Sx9JDxbrVBs7HxFbTZvXI6uMvxTFAZHT2S7yJZsjyWhAzUdy33g/AXWu/ken2A4wdW18hKJWJ5gwyQ8mHo6vh+xl/+AVlvx4blQTHBvVdTaXg3TCkWmDD8RU9qsAiCEdm4yJBwlkNCHUIx+sbserKGAZmnSM+LDpPfMgCXyEDlfmS+9DxMPRqLL3F8ca0Bn61SABoe0ZICJu/d+e2kcWX0qL0aq5dbu2MXW14Nfxg5QSSgzv4cO89R8TXip4GgF56kPn63oGcpB1WGlbpK0Py0z8fHlDysUk9b1p+zgOnJUv3cdL/8T4aAdITIWl8hYuYGKw+6XfqJIETsrMsll/qDBE1AXc/R7BpNUCG8= +213.146.155.6 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBL1U75+fA6MTKuBc0ENLo2IOqeaAYMrrG7Spcylh8xdbnH5ZrgEHqVpDmS+ad5MGD8a7daN9p5yFgR9hIvocsh4= +213.146.155.6 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICuhOCNwJmaCswoGRIWi1eDafT+iPMoXl3FmiKj+nE+q +213.146.155.6 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDiV2qemtMnLb5Bx8miWCB5nqkHft/0AAeIaKlo3FchESmmeZOwEEIqJwiSKuoxkHzBBmlDx6EAj5yteSEPHFjZbzRwLFqEJf7ZD0p83rJnD0xSNPkGrBlXfqPVoWg11/zj8uy/JfvKUKRNHIdjKfTndVvap2PKT5A0bagcaNTKsYh1GehIdVy3eWfyNxDPPuQ7VCNiW3nwEzRWUQjJKdooPK+BzIz1gOI/KXQpfJwU+QLEu+tUwAUl+K2BsYYOf3nVFDXp8zkwKlv7CPOpPQ5e4XCxBNJmdfz0nR5j847Jw08IicS0ah2ooZbzqWwI/mYrkyNveo/DQt4NJW3cYBN2Hy4I4yslGdH86WSOnMOMwyWZcSxOhQ35Tk3qwOndzXUUGffchXvQ+QF2hN4zZL60Nd1RSl9JWkGrG8yZ4+JHrnNvDVF7J9zZM7I3msstgQ7V16a2OtcuCplmPgUQhLbP/k+6imE7mBjpiemHuZOHjo6fOzKhSmUGUIxspSgxtwU= +[3.223.170.243]:29418 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBDZ6AQ2WyZSO43657/fFpxGgVY73kUwh1R1eXpZp27T6lAI5XFQ7YS8HjQ2O7e4edGSpJHHrqVuZphKpqu11Lz8= +[3.223.170.243]:29418 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDqjPck6EM0H0tlZSKAnleuvhvhhB+jrcGPCt/DD8PB2 +[3.223.170.243]:29418 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCofUDWYYwzE4YWotCffwCxLoRuVCMb6DP+eObwbTPHMe5asK94Y1jPNeK1yUVJIuIAUO8aA6pIq3uLKlusyGLZe1YBpM+7YX3HMOBfCOeOemHFxETlj/HC7islYLYT7Sm/DweiN1kxgP8Q/PhPIA5czCZGHS/+T/VLbMApyyzdTmswaqfgJejyK9juHAcmxT3Tupj2SGOuOamyKfhfsPxGwIchivy/mt7xBTk5cNiSDeLAfMn2rHsilfLjb+IoeE6EvtqG3+rTh+ttulHp2vSeZkK79tuyVWt+XOZjD4RDfk1taW9JjaafkyOW0VCF4gqOMfJU24u88xTCgqkgT1bN +3.223.170.243 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOvq8E5HPzrBlxmckzsE3rz9LAx9c0faEfofALaO+UGC4HAst9fMaZcHaCqu+b8SVY/2VcBvMYMwO1ZPgOn0rXs= +3.223.170.243 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJg3tqy2kRCUbweyn8abttwt3Yoh9c+ncNTzRFe+zSnT +3.223.170.243 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC34bjTOKJIq8MVSeC5gddQlbR0hyvvTZbrpW7KXgCzkLTFZxa05wbz8VC1l7ruPotQBgrICgLYmrbjrASqcY//9OPLDa1Pf/MUIu2F2lA1W/5E3psGYmyC9GTvmjKgu39Rad5ujXMeMLjuzVPCmo+WhewgugDSV4Fcggd6B6YXHGtoE15ctSw4moerUq1+2BXVgFxUyMoGcpSCeLnbvWpmi6xWoGQOSnrQ4Z/VmZ5WZ87vQsiiWEAsqmMOHHacunnSph7uzQXJlHNajdeGnr2NF+EgcmQ0N6vivZDRLmRYuSmizjCOHSRZxSm/0UJC/ewVzp9BwRepiNKWsjb4gTMb +34.229.169.30 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCvoDYbs7ax/5aYtXPFgkBLVGZSV73A6yqC5vKpFwo9dO84ZEbKjEn1UsGrBIbmlTyxOeR0i/YO/7jYmuDwya8k= +34.229.169.30 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOhfsxmFSqRafTEUFsSAmu+rhU7TJqIadigy69shtg7Q +34.229.169.30 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC4rQUZonhfreNKqM7SKKcpYpMUZNgS79hAcZbF62VUQheyoebfJCfvBxwMMdwcXKZgLuqpkYyCzJzjVeWzIr3MN0mJn6ZQuADlPVCNrhQTbSxOU404MLjwkUyy52RAq4nJ2JBwQ+SM3pjjEl+daeoWPpqfZdBI1PewXlsSpLxjTFXAj77sz8Vawu4xBnKW8n42lkINzG+gHPmxQtVXHNM/UQPsq90t8qFTeEg/Puax69Q90KqdQNiCRv1cqQV1kAB9t3AwkuvSgb32cpWCv1eVOXqbUwg4YpWYp6QfmqRra6KYEwG6KhBP3F8UGsYzZ9OWeSgf9i3r5zeJShbFEKY8JA2xleZhCLcKgaN3TDhmrOQwWYUJ6O8VkpkeZGoxt+3Tq8rV5pODnI5tm8m3nOqACYcsioeG4XFIVWc0muonIQSnNFu13mnLvb+uiIjDifyBFIHyZHfKXz7EsstIMXV+KOiRaBcBFpzMVJozcmbbDV6uO7yzrgYy4fLLBIsezU0= +34.244.87.161 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPrB7aWWCaIR0oTtp9NMIP8gx1U/08E8GMpP4SDlVHOBeuycYT9dQJc5x37VKa3WWMyzTbgXDYnTbAB6U2emprs= +34.244.87.161 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE1k89Vqj0069BBdER0pE2WX5wutfvaEk/IdmYaqNrLP +34.244.87.161 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCe9/OJMm+bZHPGJ+rc9WrrKseZGyS3kGAgY2e3/ji7jcNM/PNlk3ttcAUJJmoBd5r1Cj1UMN3zRLQLAtBNKX4DdYEWUJOuT/AtVNsrA4fkGRKvWVH32DR14g8k4FzFEQsLb3CYYGCeK4qT0DsoGrttt3e8F7BEOiw9ThH5GpuMVyZsyf832wHHsWlCP5tFYCIdNT5A7codyAKMIXgN1XIN2aHrtvsi5I+n8Be5Qr2Qaj3A3wfQ7aRTc1clhyVHFW5aPcDOoQslPlXBbHUmW/MKJUhpqphihMHqhFSUEN1d9oOuUKrWlhIGuExmYe3CJ4sZK39OXbRcEp8uYI6pgCuGUDG1RjDj+3vnLjNOKZyCxjNIgsKB/vbFSYyelW6Uijd6JNAAaw3+gYxbwsaCz/yutojPUpedAfYVDVx0/O+qpzLhqzMGsao5ziA4kW/w7feoWmFDcA+T0uxTwxnLs/Y+6vJOIzFdfbVYd4tUTio9yD2UjGVu2lP2ACI53nLFeU8= +34.247.40.177 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFI6OKdllpFDI+F1CBkJNWP/jqxnJxdWYz1Y9kPFv7vUWZyncnJa/9BzaeTfL6sosJP3LNINcrluALVxF4NT/dU= +34.247.40.177 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE6a0BgpDjRvZ28HDfPkToSntvoq+1T5aI5KRilxhEX+ +34.247.40.177 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDB+qxE4yhAOtOf1OwAbSJGr5QNrYwfKaeap4dadn1O4rncxBw/BKwe1z/NAkJwct0amAlpFWZbUGX+T6tAW+iT1WPaSlBj78RR2UfqBl6ChAsdUtUlCEBCQZoNvq69r2ByCiwTsg333vqbmwMBdUGPA7VZNXE5s4IpZzCF/rtSwsHj4mkAOFhZTgpyWpal4L1CU8eRxKshOXgCLxSLpkz2fjFbJtRfMboWJZcKeTrE4OnWDrhV44o3jAGMm/beyy+B0ZDpgdpYFVAKjSKCWvpB5FCQ++s2Ab92Babko8dX/ELf7Pjwi/N7Z6Y+IYJCZ1DlLdmTjFYRcKpwk6bCejdr4IZPXZAoe2tbtENigk1LaS7u+sRUrZGF2O9/WgkbuF8vnxo9Id60zf0teKefnHr95kyCNMG3HiETl3OZRMHUySAlcr2f7BEexPos6MxSM/SDSDHp2E2LR9VgSK1Y+RuBIOFft/Hgvg7vwlOvcq3LIJm5msm7xeqOFYxM3/jKOpc= +# 51.148.40.55:22 SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.3 +51.148.40.55 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBA5AV6b3iGfuCZbQJb3woinW7oJfKXPZTcABlTA1Pbp1gJD/oQ1+om8iiuEx9n3AkrMCMGwAeiJyNLHqwNcG9Y8= +51.148.40.55 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDfJTJpNI5XQJawxfTHN0/D4CVZQoHm5hXizOleND8BAELbjlwU3+Xru8OFXPcANPj8THnbeWA5H2/DD6Fr8zu74Jc5+nHSotssSpsNHlqV/H/CkAQlHLT5YnMrD9u5RCVK3q3reHmzl/GXVB+3/Gwm/TGemdesIz2lzdUQ4WNRKCVDxAbJoSg0+J+mX0CQhxBeYBre3/J/hlhhdU7IGcYVEFEGkJjrK15QqOJftdOCiQWyj7vLTxjcqKh1KgOXrA8KJltjlbyWzSeN5Z9gY+wmLV/105Ed09XjcelYaz3IzKHPpkdRYwB/NXJ6vJkYSyM9IsWIXyTs/iNNzqgoEqU3 +51.148.40.7 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFZDLd4f9cph9A64+kXUpGvuRmInB3HAtHU9T6wVIsp4HkYLLZD59I4lF/u2VLfM7j10XMNPO7ybOJMM+1zIZlM= +51.148.40.7 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDtto5bsPJ3NuXsWtwMR8bsAzLvkBstmF1QP+eC6jUBsCDHMtBW/zAWJYNPDr30vRkV7J8D64Pd91rgjbqF8mOPDlyVlln03dYtOV3hzVuXLZfxodslJsw4lB+ZhxLfcZAKqqFURJEhrJNJmtFBprxFRbdS1iQHJHJohg3zS9zlLFvUpZGWooLFEM2z2NdUfSiR12ePvdW1YsEimJR/b3h1it/Wot0uEB6VONZGyMrrWvsntJV1NdQFxJR8waTz1sBvQQBJGX+SgEXY1CB3AUiF4yIy5WZ/4YCOk0kO9qABvV0Ks357OU5uY5GMgalAy2RJyvceNf6erlR4vwmpdnDH +52.48.47.199 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBACn8WeXlKoxlo6yuUCiBKkMqzihfPSXT8YXRSgzKlb+DuIjUbCDFhDG1shuLZHYoAfPvK2JWbFuLpUUvuT0xSs= +52.48.47.199 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIA5mlYTdVDhmzNre4w3lwI20H+XTMgotCBEF0KvK6CMa +52.48.47.199 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCiMV58ZeUkBVY8AE1QIqU528fu5JcJoWvKmJzxklyu2X+g1SrQ4hlXQWHwdhv+kfZZ4sjqkik7f/DCroZr2SV/sDwSDVS8COTdHf0Fd/ytsRFhzWnMiEOIvIoT99H0CS6gOt0AStI6ceGIX0xICzmnOI/+hO++NWxRdErNXZTsNTfcDZoFUSnXYQh3vSiBNJYzlFjMz/crWSQkLOvzJfnX/JqQA1vk1KPda9YgTFq8XSTpkuVjOKveQyM1gcp1QRVI/zzmyOc3rJDBtPKZJjwz8RHn0qIbVPeLxPWm7Refjf93Q4iZe0ZwiR4Ge4svp78NX9zLlkwmFgUoTnrkDdo5KCav3QzvuZ1QhObC9xz1P5OC3Sb8vhZBXhNUW5vRMKXdLnlhjyTaC9Fw1VW1/qbvOvsplUiXKr7CAzbAXlcw98S4tU42j1XeRz7RQMnSVg6WuKGf/7diJw2TQuvKR71QIoAwl8UKRj8f9fTQrmvSkbPQqU5XHmWyGa1ChJa8NkE= +[54.152.253.35]:29418 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPzkmW4axU/BXRtRkR42I8FVvWjGhB4CUtTC3cSkhu6L0Oo9i+ija/hahkPT0DC+S0k/vEL7s4mC5SrdNCeJO/0= +[54.152.253.35]:29418 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFc6ZLtKFrdDI1dYcnYnfrZ9aZDSEVuYvjrsuGDXE0hj +[54.152.253.35]:29418 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMfTLkTmsbtahAiVJTKXRFbR9MQ/vDH/JPj4QN3XPHJuubxLhUf8WObEBtML7J11uvVM1oDTwM5YG5yjyBnc+85OaQaB9tMPDheGhfMG40F4vxdSnQL29ihyrls0hrFTY9UZ4Y2FmJwYL0rOnGU7iPyNuExQwfg2bkdw67aH9nEGjSd2eXYl2bI4DHujy5GJiV3dR9TlUF0iaSeHVSIX5t9I/BXK+AiSqHTrvwdGGi9XvL6xEWYMOZOpJnCH8Q4OSibsFfQXnCMgIFeO7J/ZMGXqltXOtztgQMr8VvRRD3S+Lcp8yKb5aUjWwoCxb4YzEUbQE04SRVeAGjsfNJcXgT +54.152.253.35 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBONeIVl09BaG0iDOqF/qZjDun8fktYdD0Zl2fRAkSGT6Q7ULAXWJZA7IwstvcSs5w9SRV6x/lNc3CqlHwMFaABc= +54.152.253.35 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJhG84gKI+louuRb3NVPABVjr81G7v1RebFeMNvfPPNv +54.152.253.35 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC8Q8j887I9mBD2va9C7gWl4Cr8agHWxuFHfDUWaqiygI9jA4w2YC7mo5oJMqwUk2DsvPDLuU5Z6yyKSA7Cko+L0MnKfNMzQ8e00ZXGDBq8bh1tRKstFselAFmmg+5DhM9q9HPjpKYzbAxU6rxmdFbSc+ktE0rhtmciThVT3YW3bMs3g+D+6sf6ER9UkSpbdZ7skKFXBHw2t1BWaPrvW4L8GMFAokgXUKOE8e1WZkQuCcseIz8J9Hz1p/liyiiTPVQnjGyleUnUY0pZA3ViB6pS317BH5Kvd8aX8x0vSwCIs30rpkmBam9C0b2uj2jWk3GrmHYjVHebMAW376VSLTZV +[88.99.136.175]:2020 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMA/tHxYJryx7PsMzCnuxYOBbmmMqBf9f0RSZb9qkmzntt5qefSVz+r3XDQ6LRZ5UoduyFyWgdzo6dKU8dd9RD4= +[88.99.136.175]:2020 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOXxLWEYkr0ySiZmxV4UuS3XHobxP7nStX95MOYU2vSa +[88.99.136.175]:2020 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+DSj5pflQQ2Y3zhJD0TnewNmiiRSrmrlTgXABHIuzTdyYag8qrZi+bOar1SLqW7KZRKCs9nPFlJj1/FanCcjDRFZaRLfIP2SfuPdtp7dUy3SvIMEsvFVbbZn3Qt32G6I5XoT+3ijQBJ2dYaVFvAY8K8bloGdzb1APSfD37rt+H+VPHaVUDaE/jkOX3R3EYJdIBFG5NumbvbyjpBfW5XQ7twJDSL+5DQLf7ZcNQyW6JyD5QLNPUdrIyyFb8f+EKl+MiqEes91HzpB3t47wKyEwgSTzt7ta6KCc+14G2E8zzzf8nRs41bHEtPlw+gPz9U97PH1R96pW6loGYF9UPKq1 +[88.99.136.175]:2222 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCAxH/zCl/clVrd2Q8Tai5wea0homs6uPPf57qemRP/MFHOz4cIYKEbEczLD87b8u2dK+qfjKsr33jSmW8NbJbvJZ6bFhVUcpXl2BxAYbFQVZJq5YDsDEmRFbvkjzEjiRGHMKCl8ouh1c5lTLkLAKZMu2cKc7X0sIMqwrwOPn/RE8cCrDYkhxTZy2IJ8O8MrJoXmwjiT5mJpe5y7kGVzzESvHBbhtknLa5HuYuyzU88Zyi8m6LjJc9OOTxPBuXiO1c7Oblq7q2Sjk7X+iDld1+m+uUkI2Bro5P2oxneapx2As6R9IUc3zd+YGWcjSiI1CnCb1EykIBzS+yKDfoPg+M7 +95.216.72.225 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBDoNsO0Ezk8tG93KPIgMWAfbTx8eynh0qPM1y4MUHAhrVWRk8k4KZZGjYJGoEFQ77AGLPChW/6KaXx39aVj72fI= +95.216.72.225 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG29nDm7o/I4IaKFC8JDC+3D6grkEZ+ZB3hFzaBvP/qu +95.216.72.225 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDaQu7WKvLkz2ljwuisd/hRckTML3cs3riRMIsXXeFeWpwI/B1FNC2JOaOao6KiOBw/kvbaaPzC2zQ/izff2TbMdC/L98qBtT3bcZw8Sa4ZkmD89/uec9Ot0gpX0tIl0PWi93NH1LZXYaM+/hLP+ypQ0TZovxr9+ORQEutnLdkedVYCIGRr9EEcQ+QbQ7wd4L2p6YYy0y2cbTGFG5sEj5RpXGKqJ/Zp9JwVYC2VPsr1/y25brgrnXH/7inN7sbh4zhDNFfjnZrbhWlUlnuQM6520+UV7zTMFaPrtEg2BdlCd32QzbcnDprYn82M6x3qxC5mt/RKaK9UK7Pj6kemNbDZzt4L9rJBnYij75PBIkxfK53QzNE40EyVKe+p2e/xmVrsSp1hyLZNkKLeD38qTVxF0j5iziywDvDLdZbYUf3zLLZabD2tfbewO6ruX10+Bxo/rKXD12kAkwp0CrAI2y7deIEI5CYvLUd6FaJAw81jlWdTV2gYONgxrf1f1a6yA1s= +# bkp-01.tcwglab.linaro.org:22 SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.3 +bkp-01.tcwglab.linaro.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBA5AV6b3iGfuCZbQJb3woinW7oJfKXPZTcABlTA1Pbp1gJD/oQ1+om8iiuEx9n3AkrMCMGwAeiJyNLHqwNcG9Y8= +bkp-01.tcwglab.linaro.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDfJTJpNI5XQJawxfTHN0/D4CVZQoHm5hXizOleND8BAELbjlwU3+Xru8OFXPcANPj8THnbeWA5H2/DD6Fr8zu74Jc5+nHSotssSpsNHlqV/H/CkAQlHLT5YnMrD9u5RCVK3q3reHmzl/GXVB+3/Gwm/TGemdesIz2lzdUQ4WNRKCVDxAbJoSg0+J+mX0CQhxBeYBre3/J/hlhhdU7IGcYVEFEGkJjrK15QqOJftdOCiQWyj7vLTxjcqKh1KgOXrA8KJltjlbyWzSeN5Z9gY+wmLV/105Ed09XjcelYaz3IzKHPpkdRYwB/NXJ6vJkYSyM9IsWIXyTs/iNNzqgoEqU3 +[ci.linaro.org]:2020 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMA/tHxYJryx7PsMzCnuxYOBbmmMqBf9f0RSZb9qkmzntt5qefSVz+r3XDQ6LRZ5UoduyFyWgdzo6dKU8dd9RD4= +[ci.linaro.org]:2020 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOXxLWEYkr0ySiZmxV4UuS3XHobxP7nStX95MOYU2vSa +[ci.linaro.org]:2020 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+DSj5pflQQ2Y3zhJD0TnewNmiiRSrmrlTgXABHIuzTdyYag8qrZi+bOar1SLqW7KZRKCs9nPFlJj1/FanCcjDRFZaRLfIP2SfuPdtp7dUy3SvIMEsvFVbbZn3Qt32G6I5XoT+3ijQBJ2dYaVFvAY8K8bloGdzb1APSfD37rt+H+VPHaVUDaE/jkOX3R3EYJdIBFG5NumbvbyjpBfW5XQ7twJDSL+5DQLf7ZcNQyW6JyD5QLNPUdrIyyFb8f+EKl+MiqEes91HzpB3t47wKyEwgSTzt7ta6KCc+14G2E8zzzf8nRs41bHEtPlw+gPz9U97PH1R96pW6loGYF9UPKq1 +[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-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJg3tqy2kRCUbweyn8abttwt3Yoh9c+ncNTzRFe+zSnT +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-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDqjPck6EM0H0tlZSKAnleuvhvhhB+jrcGPCt/DD8PB2 +[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-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJg3tqy2kRCUbweyn8abttwt3Yoh9c+ncNTzRFe+zSnT +dev-private-review.linaro.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC34bjTOKJIq8MVSeC5gddQlbR0hyvvTZbrpW7KXgCzkLTFZxa05wbz8VC1l7ruPotQBgrICgLYmrbjrASqcY//9OPLDa1Pf/MUIu2F2lA1W/5E3psGYmyC9GTvmjKgu39Rad5ujXMeMLjuzVPCmo+WhewgugDSV4Fcggd6B6YXHGtoE15ctSw4moerUq1+2BXVgFxUyMoGcpSCeLnbvWpmi6xWoGQOSnrQ4Z/VmZ5WZ87vQsiiWEAsqmMOHHacunnSph7uzQXJlHNajdeGnr2NF+EgcmQ0N6vivZDRLmRYuSmizjCOHSRZxSm/0UJC/ewVzp9BwRepiNKWsjb4gTMb +git.linaro.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBONeIVl09BaG0iDOqF/qZjDun8fktYdD0Zl2fRAkSGT6Q7ULAXWJZA7IwstvcSs5w9SRV6x/lNc3CqlHwMFaABc= +git.linaro.org ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJhG84gKI+louuRb3NVPABVjr81G7v1RebFeMNvfPPNv +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-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC8Q8j887I9mBD2va9C7gWl4Cr8agHWxuFHfDUWaqiygI9jA4w2YC7mo5oJMqwUk2DsvPDLuU5Z6yyKSA7Cko+L0MnKfNMzQ8e00ZXGDBq8bh1tRKstFselAFmmg+5DhM9q9HPjpKYzbAxU6rxmdFbSc+ktE0rhtmciThVT3YW3bMs3g+D+6sf6ER9UkSpbdZ7skKFXBHw2t1BWaPrvW4L8GMFAokgXUKOE8e1WZkQuCcseIz8J9Hz1p/liyiiTPVQnjGyleUnUY0pZA3ViB6pS317BH5Kvd8aX8x0vSwCIs30rpkmBam9C0b2uj2jWk3GrmHYjVHebMAW376VSLTZV +lab.validation.linaro.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFZDLd4f9cph9A64+kXUpGvuRmInB3HAtHU9T6wVIsp4HkYLLZD59I4lF/u2VLfM7j10XMNPO7ybOJMM+1zIZlM= +lab.validation.linaro.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDtto5bsPJ3NuXsWtwMR8bsAzLvkBstmF1QP+eC6jUBsCDHMtBW/zAWJYNPDr30vRkV7J8D64Pd91rgjbqF8mOPDlyVlln03dYtOV3hzVuXLZfxodslJsw4lB+ZhxLfcZAKqqFURJEhrJNJmtFBprxFRbdS1iQHJHJohg3zS9zlLFvUpZGWooLFEM2z2NdUfSiR12ePvdW1YsEimJR/b3h1it/Wot0uEB6VONZGyMrrWvsntJV1NdQFxJR8waTz1sBvQQBJGX+SgEXY1CB3AUiF4yIy5WZ/4YCOk0kO9qABvV0Ks357OU5uY5GMgalAy2RJyvceNf6erlR4vwmpdnDH +people.linaro.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCvoDYbs7ax/5aYtXPFgkBLVGZSV73A6yqC5vKpFwo9dO84ZEbKjEn1UsGrBIbmlTyxOeR0i/YO/7jYmuDwya8k= +people.linaro.org ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOhfsxmFSqRafTEUFsSAmu+rhU7TJqIadigy69shtg7Q +people.linaro.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC4rQUZonhfreNKqM7SKKcpYpMUZNgS79hAcZbF62VUQheyoebfJCfvBxwMMdwcXKZgLuqpkYyCzJzjVeWzIr3MN0mJn6ZQuADlPVCNrhQTbSxOU404MLjwkUyy52RAq4nJ2JBwQ+SM3pjjEl+daeoWPpqfZdBI1PewXlsSpLxjTFXAj77sz8Vawu4xBnKW8n42lkINzG+gHPmxQtVXHNM/UQPsq90t8qFTeEg/Puax69Q90KqdQNiCRv1cqQV1kAB9t3AwkuvSgb32cpWCv1eVOXqbUwg4YpWYp6QfmqRra6KYEwG6KhBP3F8UGsYzZ9OWeSgf9i3r5zeJShbFEKY8JA2xleZhCLcKgaN3TDhmrOQwWYUJ6O8VkpkeZGoxt+3Tq8rV5pODnI5tm8m3nOqACYcsioeG4XFIVWc0muonIQSnNFu13mnLvb+uiIjDifyBFIHyZHfKXz7EsstIMXV+KOiRaBcBFpzMVJozcmbbDV6uO7yzrgYy4fLLBIsezU0= +[review.linaro.org]:29418 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPzkmW4axU/BXRtRkR42I8FVvWjGhB4CUtTC3cSkhu6L0Oo9i+ija/hahkPT0DC+S0k/vEL7s4mC5SrdNCeJO/0= +[review.linaro.org]:29418 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFc6ZLtKFrdDI1dYcnYnfrZ9aZDSEVuYvjrsuGDXE0hj +[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-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJhG84gKI+louuRb3NVPABVjr81G7v1RebFeMNvfPPNv +review.linaro.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC8Q8j887I9mBD2va9C7gWl4Cr8agHWxuFHfDUWaqiygI9jA4w2YC7mo5oJMqwUk2DsvPDLuU5Z6yyKSA7Cko+L0MnKfNMzQ8e00ZXGDBq8bh1tRKstFselAFmmg+5DhM9q9HPjpKYzbAxU6rxmdFbSc+ktE0rhtmciThVT3YW3bMs3g+D+6sf6ER9UkSpbdZ7skKFXBHw2t1BWaPrvW4L8GMFAokgXUKOE8e1WZkQuCcseIz8J9Hz1p/liyiiTPVQnjGyleUnUY0pZA3ViB6pS317BH5Kvd8aX8x0vSwCIs30rpkmBam9C0b2uj2jWk3GrmHYjVHebMAW376VSLTZV diff --git a/tcwg-base/home-data/tcwg-buildslave/.ssh/known_hosts-regen.sh b/tcwg-base/home-data/tcwg-buildslave/.ssh/known_hosts-regen.sh new file mode 100755 index 00000000..154e2209 --- /dev/null +++ b/tcwg-base/home-data/tcwg-buildslave/.ssh/known_hosts-regen.sh @@ -0,0 +1,78 @@ +#!/bin/bash + +resolve_ips() +{ + local i + while [ "$#" -gt 0 ]; do + i="$1" + shift + # Output the original entry + echo "$i" + # Skip entries that are already IPs + if echo "$i" | grep -q "^[0-9\.]\+\$"; then + continue + fi + host "$i" | grep ".* has address " | sed -e "s/.* has address //" + done +} + +DEST=$(dirname "$0")/known_hosts + +echo "# This file is generated automatically with known_hosts-regen.sh. DO NOT EDIT" > $DEST +( + hosts=( + lab.validation.linaro.org + people.linaro.org + git.linaro.org + git-us.linaro.org + dev-private-git.linaro.org + review.linaro.org + dev-private-review.linaro.org + 34.247.40.177 # tcwg-g3-01 + 34.244.87.161 # tcwg-g3-02 + 52.48.47.199 # tcwg-g3-04 + 213.146.141.69 # tcwg-fx-01 + 213.146.155.110 # tcwg-fx-02 + 213.146.155.6 # tcwg-fx-03 + 213.146.141.8 # tcwg-fx-04 + 139.178.86.199 # tcwg-jade-01 + 139.178.86.6 # tcwg-snow-02 + 139.178.84.207 # tcwg-jade-03 + 145.40.80.173 # tcwg-jade-04 + 147.75.55.117 # tcwg-jade-05 + 139.178.86.193 # tcwg-jade-06 + 95.216.72.225 # tcwg-ex42-01 + ) + ssh-keyscan -t rsa,dsa,ecdsa,ed25519 $(resolve_ips "${hosts[@]}") + + hosts=( + review.linaro.org + dev-private-review.linaro.org + ) + ssh-keyscan -p29418 -t rsa,dsa,ecdsa,ed25519 $(resolve_ips "${hosts[@]}") + + hosts=( + ci.linaro.org + ) + ssh-keyscan -p2020 -t rsa,dsa,ecdsa,ed25519 $(resolve_ips "${hosts[@]}") + + hosts=( + ci.linaro.org + ) + ssh-keyscan -p2222 -t rsa,dsa,ecdsa,ed25519 $(resolve_ips "${hosts[@]}") + + # Finally, hard-code bkp-01.tcwglab's keys, because its ssh port is + # accessible only from ci.linaro.org's IP. + cat <<EOF +# bkp-01.tcwglab.linaro.org:22 SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.3 +bkp-01.tcwglab.linaro.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDfJTJpNI5XQJawxfTHN0/D4CVZQoHm5hXizOleND8BAELbjlwU3+Xru8OFXPcANPj8THnbeWA5H2/DD6Fr8zu74Jc5+nHSotssSpsNHlqV/H/CkAQlHLT5YnMrD9u5RCVK3q3reHmzl/GXVB+3/Gwm/TGemdesIz2lzdUQ4WNRKCVDxAbJoSg0+J+mX0CQhxBeYBre3/J/hlhhdU7IGcYVEFEGkJjrK15QqOJftdOCiQWyj7vLTxjcqKh1KgOXrA8KJltjlbyWzSeN5Z9gY+wmLV/105Ed09XjcelYaz3IzKHPpkdRYwB/NXJ6vJkYSyM9IsWIXyTs/iNNzqgoEqU3 +# bkp-01.tcwglab.linaro.org:22 SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.3 +bkp-01.tcwglab.linaro.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBA5AV6b3iGfuCZbQJb3woinW7oJfKXPZTcABlTA1Pbp1gJD/oQ1+om8iiuEx9n3AkrMCMGwAeiJyNLHqwNcG9Y8= +# bkp-01.tcwglab.linaro.org:22 SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.3 +# 51.148.40.55:22 SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.3 +# 51.148.40.55:22 SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.3 +51.148.40.55 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDfJTJpNI5XQJawxfTHN0/D4CVZQoHm5hXizOleND8BAELbjlwU3+Xru8OFXPcANPj8THnbeWA5H2/DD6Fr8zu74Jc5+nHSotssSpsNHlqV/H/CkAQlHLT5YnMrD9u5RCVK3q3reHmzl/GXVB+3/Gwm/TGemdesIz2lzdUQ4WNRKCVDxAbJoSg0+J+mX0CQhxBeYBre3/J/hlhhdU7IGcYVEFEGkJjrK15QqOJftdOCiQWyj7vLTxjcqKh1KgOXrA8KJltjlbyWzSeN5Z9gY+wmLV/105Ed09XjcelYaz3IzKHPpkdRYwB/NXJ6vJkYSyM9IsWIXyTs/iNNzqgoEqU3 +# 51.148.40.55:22 SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.3 +51.148.40.55 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBA5AV6b3iGfuCZbQJb3woinW7oJfKXPZTcABlTA1Pbp1gJD/oQ1+om8iiuEx9n3AkrMCMGwAeiJyNLHqwNcG9Y8= +EOF +) | sort -u >> $DEST 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..c5e193fa --- /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 through ci.linaro.org + exec ssh -Snone ci.linaro.org nc "$@" +fi diff --git a/tcwg-base/home-data/tcwg-ci-bot/.ssh/authorized_keys b/tcwg-base/home-data/tcwg-ci-bot/.ssh/authorized_keys new file mode 100644 index 00000000..dc644d78 --- /dev/null +++ b/tcwg-base/home-data/tcwg-ci-bot/.ssh/authorized_keys @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCVxF0iAVjNCswiwi81LEiJFyrWsyYGF1MuEaMuAk2iE5Zlvwd/JohWQqUhW4+qwFN5tH0jrNxdbLWSmJUOkqHQWyzV3/MOgVeSN3KIZk5z3o9uRoksJWnulAe8n2InAM4IrUpMd6+PDS0zeFUe+0Tuso5JQUYbwjuioMqCOGB7mjyPUF2+bp7Su1XjXDrFSC2LFQHGVW0v+30N+UXIjmi87avqk7mGLlLZgCJLRUI77XEPZLNsPsNVFFnRKP9uJZySB4TO4V0++2HshGeJE7vWPEMYHw42rXD8DN97KdhiihK4c/2xuhtZbS61Od+8HyBw5mF40L1gLNFYfRADX2I2U0fjq8IindbWIbHmV161nil7VRjJahtKQEiX/++lqOVsKzZ1v3MIqFKLLc7vkbTwtWC9D6cxRZkOLwO7Pma73CUAo+ghBP/TrZ89CWlLFnB2oFMuf+MHUq++u3KmuDRVrgCiC1Y06ooNPUyQuC4nQlYzuAaWWbjxScZ5dH0jeT8= diff --git a/tcwg-base/home-data/thiago.bauermann/.ssh/authorized_keys b/tcwg-base/home-data/thiago.bauermann/.ssh/authorized_keys new file mode 100644 index 00000000..90de4217 --- /dev/null +++ b/tcwg-base/home-data/thiago.bauermann/.ssh/authorized_keys @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDFku2lxWLlkThFzW2EpLmxB7JXRj4XCyLHbkTrcGDRm8myIQoYAMmtrMyHbN5L/nhuIKD6FIpzh5L1b1UTONUTu0BhqNs5KCFc2uFr5jtayAwI/cIB4jgaJ9QFKTvImKQcOSjnPZBXi267dcWBKRHSASZItXiKIXXDeYxM6zA+N629AaaaEd8U7geZmpkDkREa2QKfqTcxKMOHbAncj1g52IWBzfuAGH/8103n3LdzYx4xf/Ijc4LF6gZdsTQnWO2U56GtfjtskSEuY+yuSA/K32Wig5z3bvNk8SRIrEm0ath6FMLC1SFS8dEh/MfsQjOZoi8QG5RPNFqJ2qGk5MFPzl3/47SqazrJ7lbFTai25BtK2gTxdl+233oY2CU7YJPuo5PojWm3m6l2eGytnqSwAyyZrx4QJ+ElubReUoOVSArdE8Flb55mqA471+em1VcYXNZHaKxdfi255UsxtJyT29HXRXuMOCFPS5asxqMwKmQ0Rp/mzBUiVNtbX/PYbzE= work diff --git a/tcwg-base/home-data/thiago.bauermann/.ssh/config b/tcwg-base/home-data/thiago.bauermann/.ssh/config new file mode 120000 index 00000000..5f9d8251 --- /dev/null +++ b/tcwg-base/home-data/thiago.bauermann/.ssh/config @@ -0,0 +1 @@ +../../tcwg-buildslave/.ssh/config
\ No newline at end of file diff --git a/tcwg-base/home-data/thiago.bauermann/.ssh/config.d b/tcwg-base/home-data/thiago.bauermann/.ssh/config.d new file mode 120000 index 00000000..1af9bec1 --- /dev/null +++ b/tcwg-base/home-data/thiago.bauermann/.ssh/config.d @@ -0,0 +1 @@ +../../tcwg-buildslave/.ssh/config.d
\ No newline at end of file diff --git a/tcwg-base/home-data/thiago.bauermann/.ssh/known_hosts b/tcwg-base/home-data/thiago.bauermann/.ssh/known_hosts new file mode 120000 index 00000000..936136a2 --- /dev/null +++ b/tcwg-base/home-data/thiago.bauermann/.ssh/known_hosts @@ -0,0 +1 @@ +../../tcwg-buildslave/.ssh/known_hosts
\ No newline at end of file diff --git a/tcwg-base/home-data/thiago.bauermann/.ssh/ssh-tcwglab-nc.sh b/tcwg-base/home-data/thiago.bauermann/.ssh/ssh-tcwglab-nc.sh new file mode 120000 index 00000000..6eddeb50 --- /dev/null +++ b/tcwg-base/home-data/thiago.bauermann/.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/install-armhf-perf-workaround.sh b/tcwg-base/install-armhf-perf-workaround.sh new file mode 100755 index 00000000..a7b97d0b --- /dev/null +++ b/tcwg-base/install-armhf-perf-workaround.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# In some cases perf report crashes when run from armhf container on +# ARMv8 machine. It's not clear what it causing this, but running under +# valgrind seems to workaround the issue. + +cd /usr/lib/linux-tools + +while read perf_bin; do + if [ -f "$perf_bin.real" ]; then + continue + fi + + mv "$perf_bin" "$perf_bin.real" + cat > "$perf_bin" <<'EOF' +#!/bin/bash + +exec valgrind --log-file=/dev/null -- "$0.real" "$@" +EOF + chmod +x "$perf_bin" +done < <(find -name perf) diff --git a/tcwg-base/install-gcc-latest.sh b/tcwg-base/install-gcc-latest.sh new file mode 100755 index 00000000..a05a588c --- /dev/null +++ b/tcwg-base/install-gcc-latest.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +set -euf -o pipefail +set -x + +if ! which gcc-latest; then + apt-get update + DEBIAN_FRONTEND=noninteractive apt-get install -y software-properties-common + add-apt-repository -y ppa:ubuntu-toolchain-r/test + ver=$(apt-cache search "^gcc-[0-9]+\$" | cut -d- -f2 | sort -g | tail -n1) + DEBIAN_FRONTEND=noninteractive apt-get install -y gcc-$ver g++-$ver + ln -s $(which gcc-$ver) /usr/bin/gcc-latest + ln -s $(which g++-$ver) /usr/bin/g++-latest +fi diff --git a/tcwg-base/new-user.sh b/tcwg-base/new-user.sh new file mode 100755 index 00000000..18cd825f --- /dev/null +++ b/tcwg-base/new-user.sh @@ -0,0 +1,129 @@ +#!/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 [ "$passwd_ent" = "" ] && [ "$home_data" != "" ] && [ "$user" != "" ]; 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 [ "$uid" = "" ] && [ "$passwd_ent" != "" ]; 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_opt="" + if [ x"$home_data" != x"" ]; then + aux_groups=() + for g in $(grep "\(:\|,\)$user\(,\|\$\)" "$home_data/group" \ + | grep -v ":x:x:" | cut -d: -f 1); do + if [ x"$g" = x"$group" ]; then + continue + fi + # FIXME: Also skip groups matching $gid. + aux_groups+=("$g") + done + if [ ${#aux_groups[@]} != 0 ]; then + aux_groups_opt="-G $(echo "${aux_groups[@]}" | tr ' ' ',')" + fi + fi + + action="add" + if $update && getent passwd $user >/dev/null; then + action="mod" + fi + user${action} $group_opt $aux_groups_opt \ + -m -d /home/$user \ + ${uid:+-u $uid} \ + ${comment:+-c "$comment"} \ + ${shell:+-s "$shell"} \ + $user + + for g in "${aux_groups[@]}"; do + if [ "$g" != "tcwg-sudo" ]; then + continue + fi + + sudoers_file=/etc/sudoers.d/$(echo $user | tr "." "-") + # Give users ability to become root, tcwg-infra users. + cat <<EOF > $sudoers_file +$user ALL = NOPASSWD: ALL +$user ALL = (%tcwg-infra) NOPASSWD: ALL +EOF + chmod 0440 $sudoers_file + break + done + + 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 -ab $home_data/$user/ /home/$user/ + fi +fi diff --git a/tcwg-base/nvidia-power-cycle.sh b/tcwg-base/nvidia-power-cycle.sh new file mode 100755 index 00000000..db3b5a12 --- /dev/null +++ b/tcwg-base/nvidia-power-cycle.sh @@ -0,0 +1,67 @@ +#!/bin/bash + +# This script collates PDU routines located in +# support.tcwglab:/usr/local/bin/pcycle-* . + +case "$*" in + "tcwg-qc-"*) + case "$*" in + "tcwg-qc-01") + control_usb_id="usb-Linaro_DebugBoard_3b89375175a4451502020223237060ff-if00" + # console_usb_id="usb-FTDI_FT232R_USB_UART_AU04FPO2-if00-port0" + ;; + "tcwg-qc-02") + control_usb_id="usb-Linaro_DebugBoard_cfe5b51575a4451502020223e22160ff-if00" + # console_usb_id="usb-FTDI_FT232R_USB_UART_AU04FQ0U-if00-port0" + ;; + *) + echo "Unknown board $*" + exit 1 + ;; + esac + exec ssh -p22 root@dev-01.tcwglab tio-power-cycle.exp "$control_usb_id" + ;; + "tcwg-apm-"*|"tcwg-sq-"*|"tcwg-x15-"*) + pdu=tpdu01 + case "$*" in + "tcwg-apm-01") port="18" ;; + "tcwg-apm-02") port="4" ;; + "tcwg-apm-03") port="20" ;; + "tcwg-apm-05") port="7"; pdu="192.168.16.252" ;; + "tcwg-sq-01") port="12" ;; + "tcwg-sq-02") port="13" ;; + "tcwg-x15-01") port="19" ;; + *) + echo "Unknown board $*" + exit 1 + ;; + esac + exec ssh services.tcwglab /usr/local/lab-scripts/snmp_pdu_control \ + --hostname $pdu --port $port --command reboot + ;; + "build-"*|"dev-"*) + case "$*" in + "build-01") ip="192.168.19.23" ;; + "build-02") ip="192.168.19.24" ;; + "build-03") ip="192.168.19.25" ;; + "build-04") ip="192.168.19.26" ;; + "build-05") ip="192.168.19.27" ;; + "build-07") ip="192.168.19.7" ;; + "build-08") ip="192.168.19.8" ;; + "build-09") ip="192.168.19.9" ;; + "build-10") ip="192.168.19.222" ;; + "dev-01") ip="192.168.19.40" ;; + *) + echo "Unknown board $*" + exit 1 + ;; + esac + exec ssh services.tcwglab ipmitool \ + -I lanplus -H $ip -U ADMIN -P ADMIN power cycle + ;; + *) + # nvidia-reset script lives at + # https://git.linaro.org/lava/lava-lab.git/tree/shared/tcwg-scripts/nvidia-reset + exec ssh -p22 dev-01.tcwglab nvidia-reset "$*" + ;; +esac diff --git a/tcwg-base/nvidia-serial.sh b/tcwg-base/nvidia-serial.sh new file mode 100755 index 00000000..2c3433f2 --- /dev/null +++ b/tcwg-base/nvidia-serial.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +case "$*" in + "llvm-tk1-01") port="7001" ;; + "llvm-tk1-02") port="7002" ;; + "llvm-tk1-03") port="7003" ;; + "llvm-tk1-04") port="7004" ;; + "llvm-tk1-05") port="7005" ;; + "llvm-tk1-06") port="7006" ;; + "llvm-tk1-07") port="7007" ;; + "llvm-tk1-08") port="7008" ;; + "llvm-tk1-09") port="7009" ;; + "tcwg-apm-05") port="7017" ;; + "tcwg-sq-01") port="7011" ;; + "tcwg-sq-02") port="7012" ;; + "tcwg-tk1-01") port="7025" ;; + "tcwg-tk1-02") port="7026" ;; + "tcwg-tk1-03") port="7027" ;; + "tcwg-tk1-04") port="7013" ;; + "tcwg-tk1-05") port="7014" ;; + "tcwg-tk1-06") port="7015" ;; + "tcwg-tk1-07") port="7019" ;; + "tcwg-tk1-08") port="7020" ;; + "tcwg-tk1-09") port="7021" ;; + "tcwg-tk1-10") port="7016" ;; + "tcwg-tx1-01") port="7001" ;; + "tcwg-tx1-02") port="7002" ;; + "tcwg-tx1-03") port="7003" ;; + "tcwg-tx1-04") port="7004" ;; + "tcwg-tx1-05") port="7005" ;; + "tcwg-tx1-06") port="7006" ;; + "tcwg-tx1-07") port="7007" ;; + "tcwg-tx1-08") port="7008" ;; + "tcwg-tx1-09") port="7101" ;; + *) + echo "Unknown board $*" + exit 1 +esac + +case "$*" in + *"-apm-"*) serial_host=192.168.16.255 ;; + *"-sq-"*) serial_host=192.168.16.2 ;; + *"-tk1-"*) serial_host=192.168.16.255 ;; + *"-tx1-"*) serial_host=localhost ;; +esac + +exec ssh -p22 -t dev-01.tcwglab telnet "$serial_host" "$port" diff --git a/tcwg-base/postfix-main.cf.in b/tcwg-base/postfix-main.cf.in deleted file mode 100644 index 78a9b695..00000000 --- a/tcwg-base/postfix-main.cf.in +++ /dev/null @@ -1,50 +0,0 @@ -# See /usr/share/postfix/main.cf.dist for a commented, more complete version - - -# Debian specific: Specifying a file name will cause the first -# line of that file to be used as the name. The Debian default -# is /etc/mailname. -#myorigin = /etc/mailname - -smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) -biff = no - -# appending .domain is the MUA's job. -append_dot_mydomain = no - -# Uncomment the next line to generate "delayed mail" warnings -#delay_warning_time = 4h - -readme_directory = no - -# TLS parameters -smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem -smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key -smtpd_use_tls=yes -smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache -smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache - -# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for -# information on enabling SSL in the smtp client. - -smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination -myhostname = @@MYHOSTNAME@@ -alias_maps = hash:/etc/aliases -alias_database = hash:/etc/aliases -myorigin = /etc/mailname -mydestination = @@MYHOSTNAME@@, localhost.localdomain, localhost -relayhost = [@@MAILHOST@@]:@@MAILPORT@@ -mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 -mailbox_size_limit = 0 -recipient_delimiter = + -inet_interfaces = loopback-only -inet_protocols = all - -smtp_sasl_auth_enable = yes -smtp_sasl_security_options = noanonymous -smtp_sasl_password_maps = hash:/etc/postfix/sasl_password -smtp_use_tls = yes -smtp_tls_security_level = encrypt -smtp_tls_note_starttls_offer = yes - -smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt diff --git a/tcwg-base/postfix-sasl_password.in b/tcwg-base/postfix-sasl_password.in deleted file mode 100644 index 580f5cf7..00000000 --- a/tcwg-base/postfix-sasl_password.in +++ /dev/null @@ -1 +0,0 @@ -[@@MAILHOST@@]:@@MAILPORT@@ @@MAILUSER@@:@@MAILPASSWORD@@ diff --git a/tcwg-base/tcwg-build/Dockerfile.in b/tcwg-base/tcwg-build/Dockerfile.in index 9810a860..db34a084 100644 --- a/tcwg-base/tcwg-build/Dockerfile.in +++ b/tcwg-base/tcwg-build/Dockerfile.in @@ -1,16 +1,52 @@ FROM linaro/ci-#{ARCH}-tcwg-base-ubuntu:#{DISTRO} -RUN groupadd -g 9000 tcwg-infra \ - && useradd -m -g tcwg-infra -G kvm -u 11827 tcwg-buildslave \ - && useradd -m -g tcwg-infra -G kvm -u 12326 tcwg-benchmark \ - && echo '%tcwg-infra ALL = NOPASSWD: ALL' > /etc/sudoers.d/jenkins \ - && chmod 0440 /etc/sudoers.d/jenkins \ - && mkdir -p /home/tcwg-buildslave/workspace +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 -p; \ + done </home-data/passwd -COPY tcwg-buildslave /home/tcwg-buildslave -COPY tcwg-benchmark /home/tcwg-benchmark +# We create ccache directory as tcwg-buildslave, because otherwise +# "docker run -v ccache-volume:/home/tcwg-buildslave/.ccache" will create +# it owned by root:root, which will break builds. We set ccache size: +# - 50G is a bare minimum to ccache the gnu/llvm builds +# - The aa64/amd64 build machines have enough disk to support 50G +# - TK1s have small disk, so try to get by with 10G. +RUN sudo -i -u tcwg-buildslave mkdir -p /home/tcwg-buildslave/.ccache \ +#if ARCH_amd64 || ARCH_arm64 + && sudo -i -u tcwg-buildslave ccache -M 50G +#else + && sudo -i -u tcwg-buildslave ccache -M 10G +#endif -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/* +#if ARCH_amd64 +# Install wine. +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/* +#endif + +#if DISTRO_focal +# Add llvm 11 to get llvm-objdump with support for --disassemble-symbols. +# We need this in bmk-scripts.git/symbol_md5sum.sh. +RUN \ + apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + llvm-11 \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* \ + # This will override llvm-objdump installed by tcwg-base's llvm package. + && ln -s `which llvm-objdump-11` /usr/local/bin/llvm-objdump +#endif diff --git a/tcwg-base/tcwg-build/build.sh b/tcwg-base/tcwg-build/build.sh index 8624b7fd..1feb8c41 100755 --- a/tcwg-base/tcwg-build/build.sh +++ b/tcwg-base/tcwg-build/build.sh @@ -2,11 +2,15 @@ set -e +# Can't run multiple copies of this script +exec 9<Dockerfile +flock -x 9 + trap cleanup_exit INT TERM EXIT cleanup_exit() { - rm -rf tcwg-buildslave tcwg-benchmark + : } export LANG=C @@ -16,11 +20,7 @@ name=$(basename ${PWD} | cut -f3- -d '-') image=linaro/ci-${arch}-${name}-ubuntu:${distro} top=$(git rev-parse --show-toplevel) -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 +"$top"/tcwg-base/validate-checksum.sh Dockerfile docker build --tag=$image . echo $image > .docker-tag diff --git a/tcwg-base/tcwg-build/gerrit-branches b/tcwg-base/tcwg-build/gerrit-branches deleted file mode 120000 index 11f6d349..00000000 --- a/tcwg-base/tcwg-build/gerrit-branches +++ /dev/null @@ -1 +0,0 @@ -../gerrit-branches
\ No newline at end of file diff --git a/tcwg-base/tcwg-build/tcwg-benchmark/.ssh/config b/tcwg-base/tcwg-build/tcwg-benchmark/.ssh/config deleted file mode 100644 index 47e5dbf0..00000000 --- a/tcwg-base/tcwg-build/tcwg-benchmark/.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-benchmark/.ssh/known_hosts b/tcwg-base/tcwg-build/tcwg-benchmark/.ssh/known_hosts deleted file mode 100644 index b649d65f..00000000 --- a/tcwg-base/tcwg-build/tcwg-benchmark/.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-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-build/tcwg-test/Dockerfile.in b/tcwg-base/tcwg-build/tcwg-test/Dockerfile.in deleted file mode 100644 index be59e965..00000000 --- a/tcwg-base/tcwg-build/tcwg-test/Dockerfile.in +++ /dev/null @@ -1,7 +0,0 @@ -FROM linaro/ci-#{ARCH}-tcwg-build-ubuntu:#{DISTRO} - -COPY tcwg-buildslave/.ssh /root/.ssh - -RUN chmod 0700 /root/.ssh/ \ - && sed -i -e "/.*PermitRootLogin.*/d" /etc/ssh/sshd_config \ - && echo "PermitRootLogin without-password" >> /etc/ssh/sshd_config diff --git a/tcwg-base/tcwg-build/tcwg-test/build.sh b/tcwg-base/tcwg-build/tcwg-test/build.sh deleted file mode 120000 index 669ce2a6..00000000 --- a/tcwg-base/tcwg-build/tcwg-test/build.sh +++ /dev/null @@ -1 +0,0 @@ -../build.sh
\ No newline at end of file diff --git a/tcwg-base/tcwg-build/tcwg-test/gerrit-branches b/tcwg-base/tcwg-build/tcwg-test/gerrit-branches deleted file mode 120000 index 11f6d349..00000000 --- a/tcwg-base/tcwg-build/tcwg-test/gerrit-branches +++ /dev/null @@ -1 +0,0 @@ -../gerrit-branches
\ No newline at end of file diff --git a/tcwg-base/tcwg-dev/Dockerfile.in b/tcwg-base/tcwg-dev/Dockerfile.in index ecc23f29..c17167a8 100644 --- a/tcwg-base/tcwg-dev/Dockerfile.in +++ b/tcwg-base/tcwg-dev/Dockerfile.in @@ -1,53 +1,34 @@ 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 \ + arcanist \ apt-file \ + elpa-flycheck \ + git-email \ git-gui \ git-svn \ -#if DISTRO_trusty -# if !ARCH_arm64 - gnat \ -# endif -#else - gnat-5 \ -#endif + htop \ + iputils-ping \ + iputils-tracepath \ + ispell \ less \ - locales \ - libgmp-dev \ - libmpc-dev \ - libmpfr-dev \ mc \ + python3-git \ screen \ + software-properties-common \ stgit \ + tig \ 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 \ - && apt-file update +RUN 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"] diff --git a/tcwg-base/tcwg-dev/build.sh b/tcwg-base/tcwg-dev/build.sh index 8729547c..d5d7e1c7 100755 --- a/tcwg-base/tcwg-dev/build.sh +++ b/tcwg-base/tcwg-dev/build.sh @@ -2,6 +2,10 @@ set -e +# Can't run multiple copies of this script +exec 9<Dockerfile +flock -x 9 + trap cleanup_exit INT TERM EXIT cleanup_exit() @@ -16,14 +20,9 @@ name=$(basename ${PWD} | cut -f3- -d '-') image=linaro/ci-${arch}-${name}-ubuntu:${distro} top=$(git rev-parse --show-toplevel) -cat $top/tcwg-base/tcwg-dev/start.sh.tmpl \ - | sed -e "s#@IMAGE@#$image#g" \ - -e "s#@DISTRO@#$distro#g" > start.sh -chmod +x start.sh -cp $top/tcwg-base/tcwg-dev/run.sh.tmpl run.sh +cp $top/tcwg-base/tcwg-dev/start.sh $top/tcwg-base/tcwg-dev/run.sh ./ (cd ..; ./build.sh) -"$top"/tcwg-base/validate-dockerfile.sh Dockerfile -docker pull $image 2>/dev/null || true +"$top"/tcwg-base/validate-checksum.sh Dockerfile docker build --tag=$image . echo $image > .docker-tag diff --git a/tcwg-base/tcwg-dev/gerrit-branches b/tcwg-base/tcwg-dev/gerrit-branches deleted file mode 120000 index 11f6d349..00000000 --- a/tcwg-base/tcwg-dev/gerrit-branches +++ /dev/null @@ -1 +0,0 @@ -../gerrit-branches
\ No newline at end of file diff --git a/tcwg-base/tcwg-dev/run.sh b/tcwg-base/tcwg-dev/run.sh new file mode 100755 index 00000000..5373c566 --- /dev/null +++ b/tcwg-base/tcwg-dev/run.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +set -e + +if [ x"$1" = x"start.sh" ]; then + cat /start.sh + exit 0 +fi + +new-user.sh --update true "$@" + +# /dev/kvm has a random group within the container. Fix it. +if [ -c /dev/kvm ]; then + chgrp tcwg-users /dev/kvm +fi + +exec /usr/sbin/sshd -D diff --git a/tcwg-base/tcwg-dev/run.sh.tmpl b/tcwg-base/tcwg-dev/run.sh.tmpl deleted file mode 100755 index 53bc630f..00000000 --- a/tcwg-base/tcwg-dev/run.sh.tmpl +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash - -set -e - -if [ x"$@" = x"start.sh" ]; then - cat /start.sh - 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 - -exec /usr/sbin/sshd -D diff --git a/tcwg-base/tcwg-dev/start.sh b/tcwg-base/tcwg-dev/start.sh new file mode 100755 index 00000000..70d9998c --- /dev/null +++ b/tcwg-base/tcwg-dev/start.sh @@ -0,0 +1,122 @@ +#!/bin/bash + +set -e + +usage () +{ + cat <<EOF +$0 [OPTIONS] -- IMAGE [NEW_USER_PARAMS] + +Options: + --name CONTAINER_NAME + Name of the container + + --user USER + Username to create inside the container + + --verbose true/false + Whether to run in verbose mode +EOF + exit 1 +} + +name="default" +user="$USER" +verbose=false + +while [ $# -gt 0 ]; do + case $1 in + --name) name="$2"; shift ;; + --user) user="$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 [ 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" +elif 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" +else + # Fallback to sudo otherwise. + DOCKER="sudo docker" +fi + +if [ x"$name" = x"default" ]; then + name="$user-$(echo "$image" | tr "/:" "_")" +fi + +mounts="" + +# Bind-mount $HOME +mounts="$mounts -v /home/$user:/home/$user" +# Bind-mount /home/tcwg-buildslave read-only to get access to +# /home/tcwg-buildslave/snapshots-ref/ +if [ -d "/home/tcwg-buildslave" ]; then + mounts="$mounts -v /home/tcwg-buildslave:/home/tcwg-buildslave:ro" +fi +# Bind-mount ssh host keys. +for key in /etc/ssh/ssh_host_*_key{,.pub}; do + mounts="$mounts -v $key:$key:ro" +done + +# If possible, directly check the kernel config to see if KVM is enabled. +if [ -f /proc/config.gz ] && zgrep -q -e '^CONFIG_KVM=[ym]' /proc/config.gz; then + HOST_HAS_KVM=true +# AWS Ubuntu does not have KVM enabled. +elif uname -a | grep -q -- -aws; then + HOST_HAS_KVM=false +# Otherwise, check if it's a stock Ubuntu kernel. Those have KVM enabled. +elif uname -v | grep -q -- -Ubuntu; then + HOST_HAS_KVM=true +# Otherwise, assume that the host doesn't have /dev/kvm. +else + HOST_HAS_KVM=false +fi + +# Allow KVM use within the container. +if [ "$HOST_HAS_KVM" = "true" ]; then + mounts="$mounts --device=/dev/kvm" +fi + +# Use at most half of all available RAM. +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. +# 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 --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 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" +See https://collaborate.linaro.org/display/TCWG/How+to+setup+personal+dev+environment+using+docker for additional info +EOF diff --git a/tcwg-base/tcwg-dev/start.sh.tmpl b/tcwg-base/tcwg-dev/start.sh.tmpl deleted file mode 100755 index 9a3b3956..00000000 --- a/tcwg-base/tcwg-dev/start.sh.tmpl +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash - -set -e -set -x - -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 groups 2>/dev/null | grep -q docker; then - # Run docker straight up if $USER is in "docker" group. - DOCKER="docker" -else - # Fallback to sudo otherwise. - DOCKER="sudo docker" -fi - -image=@IMAGE@ -name=$USER-@DISTRO@ -# Bind-mount $HOME and /home/tcwg-buildslave (to get access to -# /home/tcwg-buildslave/snapshots-ref/) -mounts="-v $HOME:$HOME -v /home/tcwg-buildslave:/home/tcwg-buildslave:ro" -# Use at most half of all available RAM. -memlimit=$(($(free -g | awk '/^Mem/ { print $2 }') / 2))G -# 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" -# Fetch ssh public key from LDAP. -pubkey="$(/etc/ssh/ssh_keys.py $USER 2>/dev/null || sss_ssh_authorizedkeys $USER 2>/dev/null)" - -$DOCKER pull $image -$DOCKER run --name=$name -dt -p 22 $mounts --memory=$memlimit --pids-limit=5000 $caps $image "$(getent passwd $USER)" "$(id -gn)" "$pubkey" - -port=$($DOCKER port $name 22 | cut -d: -f 2) - -set +x -echo "NOTE: the warning about kernel not supporting swap memory limit is expected" -echo "To connect to container run \"ssh -p $port localhost\"" -echo "To stop container run \"docker stop $name\"" -echo "To restart container run \"docker start $name\"" -echo "To remove container run \"docker rm -fv $name\"" -echo "See https://collaborate.linaro.org/display/TCWG/How+to+setup+personal+dev+environment+using+docker for additional info" diff --git a/tcwg-base/tcwg-dev/tcwg-x2go/Dockerfile.in b/tcwg-base/tcwg-dev/tcwg-x2go/Dockerfile.in index 888e48b8..c0b9c9a9 100644 --- a/tcwg-base/tcwg-dev/tcwg-x2go/Dockerfile.in +++ b/tcwg-base/tcwg-dev/tcwg-x2go/Dockerfile.in @@ -1,7 +1,5 @@ FROM linaro/ci-#{ARCH}-tcwg-dev-ubuntu:#{DISTRO} -COPY start.sh . - RUN apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y \ ubuntu-desktop \ @@ -11,13 +9,12 @@ 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 \ + light-themes \ mate-desktop-environment \ - x2godesktopsharing \ - x2gomatebindings \ + ubuntu-mate-themes \ x2goserver \ x2goserver-xsession \ && apt-get clean \ @@ -29,6 +26,7 @@ RUN add-apt-repository ppa:x2go/stable \ RUN apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y \ ddd \ + xfonts-100dpi \ && apt-get clean \ && rm -rf \ /var/lib/apt/lists/* \ diff --git a/tcwg-base/tcwg-dev/tcwg-x2go/build.sh b/tcwg-base/tcwg-dev/tcwg-x2go/build.sh index 669ce2a6..a528963d 120000..100755 --- a/tcwg-base/tcwg-dev/tcwg-x2go/build.sh +++ b/tcwg-base/tcwg-dev/tcwg-x2go/build.sh @@ -1 +1,20 @@ -../build.sh
\ No newline at end of file +#!/bin/sh + +set -e + +# Can't run multiple copies of this script +exec 9<Dockerfile +flock -x 9 + +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) + +# Pull parent image instead of rebuilding it +docker pull linaro/ci-${arch}-tcwg-dev-ubuntu:${distro} +"$top"/tcwg-base/validate-checksum.sh Dockerfile +docker build --tag=$image . +echo $image > .docker-tag diff --git a/tcwg-base/tcwg-dev/tcwg-x2go/gerrit-branches b/tcwg-base/tcwg-dev/tcwg-x2go/gerrit-branches index 11f6d349..e69de29b 120000..100644 --- a/tcwg-base/tcwg-dev/tcwg-x2go/gerrit-branches +++ b/tcwg-base/tcwg-dev/tcwg-x2go/gerrit-branches @@ -1 +0,0 @@ -../gerrit-branches
\ No newline at end of file diff --git a/tcwg-base/tcwg-host/Dockerfile.in b/tcwg-base/tcwg-host/Dockerfile.in new file mode 100644 index 00000000..7b5f1e0b --- /dev/null +++ b/tcwg-base/tcwg-host/Dockerfile.in @@ -0,0 +1,48 @@ +FROM linaro/ci-#{ARCH}-tcwg-base-ubuntu:#{DISTRO} + +#if ARCH_amd64 +# Install static user-mode QEMU for running SVE LLVM buildbots via QEMU +# on x86_64 machines. We bind-mount qemu-aarch64-static binary inside +# the aarch64 tcwg-llvmbot container, and all specify it as container +# entrypoint. This allows us to run aarch64 container with SVE support. +# We do this only for Focal, since Bionic's QEMU version has no SVE support. +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + qemu-user-static \ + && apt-get clean \ + && rm -rf \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* +#endif + +COPY docker-stats docker-wrapper tcwg-build.sh /usr/local/bin/ +COPY docker-wrapper /usr/local/bin/docker + +COPY run.sh start.sh / + +# Allow privileged containers to access services on the bare machine. +# See run_on_bare_machine and run.sh for details. +COPY run_on_bare_machine /usr/local/bin/ +RUN ln -sf /usr/local/bin/run_on_bare_machine /usr/sbin/sysctl \ + && ln -sf /usr/local/bin/run_on_bare_machine /usr/bin/systemctl \ + && ln -sf /usr/local/bin/run_on_bare_machine /usr/bin/timedatectl \ + && ln -sf /usr/local/bin/run_on_bare_machine /usr/sbin/reboot + +# These are compatibility links for prepare-board.sh to find cpupower in the same +# place when running "start_board" on bare machine and inside host container. +# These are for TK1s and TX1s. +RUN true \ + && ln -s /usr/lib/linux-tools/4.18.0-13-generic /usr/lib/linux-tools/3.10.40 \ + && ln -s /usr/lib/linux-tools/4.18.0-13-generic /usr/lib/linux-tools/4.4.38-tegra + +ENV TINI_VERSION v0.18.0 +ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini-#{ARCH} /sbin/tini +RUN chmod +x /sbin/tini + +#if ARCH_amd64 || ARCH_arm64 +ENTRYPOINT ["/sbin/tini", "--", "/run.sh"] +#else +ENTRYPOINT ["/sbin/tini", "--", "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..002e699a --- /dev/null +++ b/tcwg-base/tcwg-host/build.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +set -e + +# Can't run multiple copies of this script +exec 9<Dockerfile +flock -x 9 + +trap cleanup_exit INT TERM EXIT + +cleanup_exit() +{ + rm -rf docker-stats docker-wrapper run.sh start.sh tcwg-build.sh run_on_bare_machine +} + +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 \ + $top/tcwg-base/tcwg-host/tcwg-build.sh \ + $top/tcwg-base/tcwg-host/run_on_bare_machine ./ + +(cd ..; ./build.sh) +"$top"/tcwg-base/validate-checksum.sh Dockerfile +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..caff313a --- /dev/null +++ b/tcwg-base/tcwg-host/docker-wrapper @@ -0,0 +1,97 @@ +#!/bin/bash + +set -euf -o pipefail + +# This wrapper for docker client adds support for "maybepull" command +# to workaround dockerhub's limits on pull requests. "Maybepull" command +# will look at timestamps of when images were last pulled, and will +# pull the image only when it has been over 24h from the last pull. +# Note that behavior of the usual "pull" command is not changed. +# +# We also track image last-used date to not needlessly cleanup images +# in jenkins-scripts/tcwg-cleanup-stale-containers.sh . + +stamp_dir=/home/shared/docker + +if ! [ -d "$stamp_dir" ]; then + sudo mkdir -p "$stamp_dir" || mkdir -p "$stamp_dir" + sudo chmod 0777 "$stamp_dir" || chmod 0777 "$stamp_dir" +fi + +cmd="${1-}" +shift 1 + +image="" +case "$cmd" in + "maybepull"|"pull") + # Skip parameters starting with "-" and next parameter will be image. + for opt in "$@"; do + case "$opt" in + "-"*) ;; + *) + image="$opt" + break + ;; + esac + done + ;; + "run") + # "docker run" has more complex option handling than we want to deal + # with, so find parameter that looks like a TCWG image. + # This only affects stamp files, so is harmless if we get it wrong. + for opt in "$@"; do + case "$opt" in + "linaro/ci-"*"-tcwg-"*"-ubuntu"*) + image="$opt" + break + ;; + esac + done + ;; +esac + +if [ x"$image" != x"" ]; then + # We use two stamp files per image: + # - $image_stamp.pull -- time of last image pull + # - $image_stamp.use -- time of last image use + image_stamp="$stamp_dir/$(echo "$image" | tr "/:" "_")" +fi + +# We attempt to run all our builds using current versions of docker images. +# Unfortunately, now that dockerhub limits pull requests, we need to be more +# considerate to when we pull the image or attempt to use a local copy. +# Also note that "docker run" below will automatically pull the image if there +# is no local copy. +if [ x"$image" != x"" ] && [ x"$cmd" = x"maybepull" ]; then + # For starters, let's try to pull images once a day. This guarantees + # that any change to master docker images will be deployed within a day. + pull_if_older_than=$(($(date +%s) - 1*24*60*60)) + # Use negative comparison to handle non-existent stamp files. + if ! [ "$(stat -c %Z "$image_stamp.pull" 2>/dev/null)" \ + -gt $pull_if_older_than ] 2>/dev/null; then + cmd="pull" + else + exit 0 + fi +fi + +sudo /usr/bin/docker "$cmd" "$@" + +case "$image:$cmd" in + :*) ;; + *:"pull") + # Remove the stamp to avoid permission issues (we have rwx permissions + # for all on the directory, so we can always remove a file, but only + # owner can modify files. + # Also touch .use stamp to compensate for inaccurate detection of + # images from "docker run" above. + rm -f "$image_stamp.pull" "$image_stamp.use" + touch "$image_stamp.pull" "$image_stamp.use" + ;; + *:"run") + # Update the time of image use, so that we don't remove the image in + # tcwg-cleanup-stale-containers. + rm -f "$image_stamp.use" + touch "$image_stamp.use" + ;; +esac diff --git a/tcwg-base/tcwg-host/qc-reboot.sh b/tcwg-base/tcwg-host/qc-reboot.sh new file mode 100755 index 00000000..48579fea --- /dev/null +++ b/tcwg-base/tcwg-host/qc-reboot.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +set -euf -o pipefail + +# Reboot script for tcwg-qc-*.tcwglab machines. +# See https://linaro.atlassian.net/browse/STG-3331 for background. +# +# !!! This script should be installed on BARE machine under +# /usr/local/sbin/reboot -- this location is searched by PATH first. + +qbootctl=/root/qbootctl/build/qbootctl +try=0 + +while true; do + try=$(($try + 1)) + echo "Try #$try" + + qbootctl_ok=true + + for cmd in "-n a" "-n b" "-m a" "-n a" "-m b" "-n b"; do + if $qbootctl $cmd 2>&1 | grep Failed; then + qbootctl_ok=false + break + fi + done + + if $qbootctl_ok; then + break + fi + + # Loop until we complete the whole reboot sequence. +done + +echo "SUCCESS: Rebooting" +/usr/sbin/reboot diff --git a/tcwg-base/tcwg-host/run.sh b/tcwg-base/tcwg-host/run.sh new file mode 100755 index 00000000..a1a4b953 --- /dev/null +++ b/tcwg-base/tcwg-host/run.sh @@ -0,0 +1,159 @@ +#!/bin/bash + +set -e + +if [ x"$1" = x"start.sh" ]; then + cat /start.sh + exit 0 +fi + +group="$1" +node="$2" + +case "$node" in + host) + # Create authorized_keys.orig if necessary + if ! [ -f /root/.ssh/authorized_keys.orig ]; then + if ! [ -f /root/.ssh/authorized_keys ]; then + if ! [ -d /root/.ssh ]; then + mkdir -p /root/.ssh + chmod 0700 /root/.ssh + fi + touch /root/.ssh/authorized_keys + fi + cp /root/.ssh/authorized_keys /root/.ssh/authorized_keys.orig + fi + + # Prepare root keys in a temporary file so that we don't start + # creating a new authorized_keys for root, and fail midway leaving + # an empty authorized_keys (e.g., due to running out of disk space). + root_keys=$(mktemp) + ( + echo "# Original root keys:" + cat /root/.ssh/authorized_keys.orig + ) > $root_keys + + if [ x"$(docker inspect --format='{{.HostConfig.Privileged}}' host)" \ + = x"true" ]; then + key=$(mktemp) + rm -f $key $key.pub + # Use key type ed22519 since some of our benchmarking boards have + # old distros and don't accept default key type. + ssh-keygen -f $key -t ed25519 -N "" -q + sed -i -e "s#^key=.*#key=$key#" /usr/local/bin/run_on_bare_machine + + # Install key for run_on_bare_machine both in new and existing + # root keys. We this in existing root keys to run timedatectl. + for auth_keys in $root_keys /root/.ssh/authorized_keys; do + ( + echo + echo "# Temporary key for granting privileged host container access to the bare machine" + cat $key.pub + ) >> $auth_keys + done + + # Now that we have run_on_bare_machine setup, synchronize the date + # to avoid unjustified certificate errors + timedatectl set-ntp true + fi + ;; +esac + +# Fetch the latest copy of /home-data/ to avoid using old user files +# when [re]starting container from an old image. "Jenkins" and "host" +# containers bind-mount /home, and we need to have a unified view of +# what the latest version of user files is. +( + tmpdir=$(mktemp -d) + git clone --depth 1 --single-branch https://git.linaro.org/ci/dockerfiles.git $tmpdir + rsync -aL --del $tmpdir/tcwg-base/home-data/ /home-data/ + rm -rf $tmpdir +) + +if [ x"$group" = x"all" ]; then + group=".*" + root_group="tcwg-root" +elif grep -q "^$group-root:x:x:" /home-data/group; then + root_group="$group-root" +else + root_group="tcwg-root" +fi + +root_users="" + +while read line; do + user=$(echo "$line" | cut -d: -f 1) + if grep "^$group:x:[0-9]" /home-data/group | cut -d: -f 4 \ + | grep "\(^\|,\)$user\(,\|\$\)" >/dev/null; then + new-user.sh --update true --passwd "$line" & + res=0; wait $! || res=$? + if [ x"$res" != x"0" ]; then + echo "WARNING: User configuration failed: $line" + elif grep "^$root_group:x:x:" /home-data/group | cut -d: -f 4 \ + | grep "\(^\|,\)$user\(,\|\$\)" >/dev/null; then + # Make list of users allowed to ssh as root. + root_users="$root_users $user" + fi + else + echo "INFO: Not adding user $user because they are not in the group $group." + fi +done </home-data/passwd + +case "$node" in + host) + # Install ssh keys of $root_users into root's account. + # Note that this is intended to grant $root_users root access + # to the bare machine -- /root is bind-mounted from bare machine + # to "host" container. + ( + for user in $root_users; do + echo + echo "# $user keys:" + cat /home-data/$user/.ssh/authorized_keys + done + echo + ) >> $root_keys + + # Now install new root keys. + mv $root_keys /root/.ssh/authorized_keys + + # tcwg-start-container.sh needs /root/docker-wrapper to test + # and recover docker service on benchmarking boards. + # Copy docker-stats for troubleshooting purposes. + cp -t /root/ /usr/local/bin/docker-wrapper /usr/local/bin/docker-stats + + # Configure and start ssh server + sed -i -e "/.*Port.*/d" /etc/ssh/sshd_config + echo "Port 2222" >> /etc/ssh/sshd_config + exec /usr/sbin/sshd -D + ;; + tcwg-bmk-*) user=tcwg-benchmark ;; + *) user=tcwg-buildslave ;; +esac + +case "$node" in + # create a LNT server on tcwg-ex42-01 + tcwg-lnt-*) + port=$((8080 + ${node##*-})) + jenkins_scripts_dir=$(mktemp -d) + sudo -i -u $user git clone \ + https://git.linaro.org/toolchain/jenkins-scripts.git \ + $jenkins_scripts_dir + $jenkins_scripts_dir/tcwg-start-container.sh \ + --container $node-lnt --image linaro/ci-amd64-tcwg-lnt-ubuntu:jammy \ + --additional_options \ + "-p $port:80 -v /home/$user/$node:/home/$user/$node" \ + -- linaro/ci-amd64-tcwg-lnt-ubuntu:jammy $node + rm -rf "$jenkins_scripts_dir" + ;; +esac + +sudo -i -u $user rm -rf /home/$user/jenkins-workdir-$node +sudo -i -u $user mkdir /home/$user/jenkins-workdir-$node +sudo -i -u $user curl -o /home/$user/jenkins-workdir-$node/agent.jar \ + https://ci.linaro.org/jnlpJars/agent.jar + +exec sudo -i -u $user java -jar /home/$user/jenkins-workdir-$node/agent.jar \ + -jnlpUrl https://ci.linaro.org/computer/$node/slave-agent.jnlp \ + -noReconnect -secret @jenkins/$node.secret \ + -workDir /home/$user/jenkins-workdir-$node diff --git a/tcwg-base/tcwg-host/run_on_bare_machine b/tcwg-base/tcwg-host/run_on_bare_machine new file mode 100755 index 00000000..a30ff5aa --- /dev/null +++ b/tcwg-base/tcwg-host/run_on_bare_machine @@ -0,0 +1,10 @@ +#!/bin/bash + +key=NOKEY +if [ "$key" = "NOKEY" ]; then + # $key is overrided by "sed" in tcwg-base/tcwg-host/run.sh . + echo "WARNING: $0 is supported only for privileged host containers." + exit 1 +fi + +exec ssh -oStrictHostKeyChecking=no -i "$key" -p22 root@localhost "$(basename $0)" "$@" diff --git a/tcwg-base/tcwg-host/start.sh b/tcwg-base/tcwg-host/start.sh new file mode 100755 index 00000000..fb80b292 --- /dev/null +++ b/tcwg-base/tcwg-host/start.sh @@ -0,0 +1,186 @@ +#!/bin/bash + +set -e + +usage () +{ + cat <<EOF +$0 [OPTIONS] -- IMAGE [GROUP [NODE]] + +Options: + --verbose true/false + Whether to run in verbose mode + + IMAGE + Docker tcwg-host image + + GROUP + User group to configure access to; or "all" + + NODE + Jenkins node ID to connect as; or "host" +EOF + exit 1 +} + +group="all" +node="host" +verbose=false +additional_options="" + +while [ $# -gt 0 ]; do + case $1 in + --verbose) verbose="$2"; shift ;; + --additional_options) additional_options="$2"; shift ;; + --) shift; break ;; + *) echo "ERROR: Wrong option: $1"; usage ;; + esac + shift +done + +image="$1" +group="${2-$group}" +node="${3-$node}" + +if $verbose; then + set -x +fi + +if [ x"$image" = x"" ]; then + echo "ERROR: image name not provided" + usage +fi + +if [ 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" +elif 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" +else + # Fallback to sudo otherwise. + DOCKER="sudo docker" +fi + +mounts="" +# Bind-mount user HOMEs. +mounts="$mounts -v /home:/home" +# Bind-mount root's home so that run.sh can grant $root_users access +# to bare machine. +mounts="$mounts -v /root:/root" +# Bind-mount docker socket and binary to give access to docker. +mounts="$mounts -v /var/run/docker.sock:/var/run/docker.sock" +mounts="$mounts -v /usr/bin/docker:/usr/bin/docker" +# Bind-mount ssh host keys. +for key in /etc/ssh/ssh_host_*_key{,.pub}; do + mounts="$mounts -v $key:$key:ro" +done + +# Use at most half of all available RAM. +memlimit=$(free -m | awk '/^Mem/ { print $2 }') +memlimit=$(($memlimit / 2))m + +case "$(uname -r):$(uname -m):$($DOCKER --version | cut -d" " -f3)" in + *:armv7l:18*|\ + 4.4.38-tegra:aarch64:18*) + # Somewhere between docker-ce 19.03.5 and 19.03.6 docker bridge network + # got broken on, at least, armhf with 3.10 kernel (aka TK1s). + # At the same time to run ubuntu:focal we need docker-ce 19.03.9-ish + # due to seccomp not supporting some of the syscalls. + # We have two options: + # 1. Use old docker and workaround ubuntu:focal's seccomp problem by + # disabling it via --privileged option. + # 2. Use new docker and workaround broken bridge network by using + # --network host. + # In the case of tcwg-tk1-* and tcwg-tx1-* boards, which are used + # for jenkins CI, we need the bridge network, so we choose (1). + workaround="--privileged" + ;; + *:aarch64:[0-9].*|\ + *:aarch64:1[0-9].*|\ + *:aarch64:2[0123].*) + # On aarch64 servers (which we generally use both in aarch64 + # and aarch32 modes), we require a recent-enough docker. + # Docker from Ubuntu 20.04 had problems with some syscalls in + # aarch32 mode, leading to wrong regression reports when + # running glibc tests in aarch32 mode. (version 24.0.5 from + # Ubuntu 22.04.3 is OK) + msg="Docker too old: $($DOCKER --version). Upgrade to 24.0.5+" + # If we are running on the bare machine, make this an error, a + # warning otherwise. + if [ -f /.dockerenv ]; then + echo "WARNING: $msg" + else + echo "ERROR: $msg" + exit 1 + fi + ;; +esac + +# Enable WSL-Interop inside containers. This allows us to build toolchains +# inside docker containers inside WSL2 environments, and still have ability +# to run generated win32 executables. +# If this doesn't work, make WSL2 version is 2.0.14 or later; WSL 2.0.9 +# has a bug preventing interop outside of the "main init" process tree. +case "$(uname -r)" in + *"-WSL2") mounts="$mounts -v /init:/init:ro -v /run/WSL:/run/WSL" ;; +esac + +# Since we're starting a host container, take the opportunity to ensure that GDB +# can attach to test programs when running the testsuite, and that core files +# are being correctly stored in the filesystem. +( + # Use "sudo sysctl" because there's no guarantee that this script is + # running as root. And there's no guarantee that "sudo sysctl" will + # actually work but, at least, it will get the attention of + # the developer. + set +e + ptrace_scope=$(sudo sysctl -n kernel.yama.ptrace_scope) + res=$? + ptrace_scope_config="" + # If sysctl above failed (e.g., because this is a non-privileged + # jenkins container), then do not attempt to change system configuration. + if [ $res = 0 ] && [ "$ptrace_scope" != 0 ]; then + set -e + sudo sysctl -we kernel.yama.ptrace_scope=0 + ptrace_scope_config="kernel.yama.ptrace_scope = 0" + fi + + core_pattern=$(sudo sysctl -n kernel.core_pattern) + res=$? + core_pattern_config="" + # If sysctl above failed (e.g., because this is a non-privileged + # jenkins container), then do not attempt to change system configuration. + if [ $res = 0 ] && echo "$core_pattern" | grep -q -v -e '^core'; then + set -e + sudo sysctl -we kernel.core_pattern=core.%e.%p.%h.%t + core_pattern_config=" +# %e: executable filename +# %p: PID +# %h: hostname +# %t: UNIX time of dump +kernel.core_pattern = core.%e.%p.%h.%t" + fi + + # If there's an Apport service running, then it will restore its own + # kernel.core_pattern on reboot, irrespective of the sysctl configuration + # file. Therefore, we need to disable it. + if systemctl --quiet is-active apport.service; then + systemctl stop apport.service + systemctl disable apport.service + fi + + # If any sysctl change was made, persist it in a configuration file. + if [ -n "$ptrace_scope_config" ] || [ -n "$core_pattern_config" ]; then + sudo tee /etc/sysctl.d/90-tcwg.conf > /dev/null <<EOF +$ptrace_scope_config +$core_pattern_config +EOF + sudo chmod 644 /etc/sysctl.d/90-tcwg.conf + fi +) + +$DOCKER run -dt --name=$node --network host --restart=unless-stopped $mounts \ + --memory=$memlimit --pids-limit=5000 $workaround $additional_options \ + $image "$group" "$node" diff --git a/tcwg-base/tcwg-host/tcwg-build.sh b/tcwg-base/tcwg-host/tcwg-build.sh new file mode 100755 index 00000000..4faf5418 --- /dev/null +++ b/tcwg-base/tcwg-host/tcwg-build.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +set -euf -o pipefail + +# Helper script to quickly enter CI build containers. + +if [ $# != 0 ]; then + grep=(grep "$@") +else + grep=(grep "^[0-9]\+-") +fi + +cnt=($(docker ps --format "{{.Names}}" | "${grep[@]}")) + +if [ "${#cnt[@]}" != 1 ]; then + echo "ERROR: Containers matching '${grep[*]}':" + printf "%s\n" "${cnt[@]}" + echo "ERROR: Must be exactly one matching container" + exit 1 +fi + +cmd=(docker exec -it "${cnt[@]}" su - tcwg-buildslave) +echo "${cmd[@]}" +exec "${cmd[@]}" diff --git a/tcwg-base/tcwg-llvmbot/Dockerfile.in b/tcwg-base/tcwg-llvmbot/Dockerfile.in index 1d0d65d4..2b5081a1 100644 --- a/tcwg-base/tcwg-llvmbot/Dockerfile.in +++ b/tcwg-base/tcwg-llvmbot/Dockerfile.in @@ -1,45 +1,89 @@ FROM linaro/ci-#{ARCH}-tcwg-base-ubuntu:#{DISTRO} +RUN echo "deb https://apt.buildkite.com/buildkite-agent stable main" | tee /etc/apt/sources.list.d/buildkite-agent.list \ + && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 32A37959C2FA5C3C99EFBC32A79206696452D198 + RUN apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y \ - buildbot \ + binutils-gold \ + buildkite-agent \ + cpio \ + gfortran \ + htop \ + iotop \ +# Add locales used for testing libcxx + language-pack-en \ + language-pack-fr \ + language-pack-ja \ + language-pack-ru \ + language-pack-zh-hans \ + libjson-perl \ + libtinfo-dev \ +# We build clang+llvm releases on Ubuntu Bionic, which has libtinfo.so.5, +# and we link against it. +# Ubuntu Focal by default installs libtinfo6 (aka libtinfo.so.6), and +# our clang+llvm releases don't work on Ubuntu Focal unless we install +# legacy libtinfo5 (aka libtinfo.so.5). +# We should no longer need libtinfo5 when we switch building releases to +# Ubuntu Focal or later. + libtinfo5 \ + linux-tools-common \ + python3-buildbot-worker \ + tmux \ +# uuidgen is used by the flang driver script. Not installed by default on focal. + uuid-runtime \ +# Although the base image has python3-venv installed, this does not give +# you 'virtualenv'. Instead you must do 'python3 -m venv'. However the test +# suite calls virtualenv with --python=python3, so we're ok to use the Python2 +# version here. + virtualenv \ && apt-get clean \ && rm -rf \ /var/lib/apt/lists/* \ /tmp/* \ /var/tmp/* -COPY buildslave/ llvm-config-buildslave/ -RUN cd ./llvm-config-buildslave/ \ - && HOME=$(pwd) ./llvm-setup \ - && ./cleanup-users \ - && cd ../.. \ - && rm -rf \ - llvm-config-buildslave/ \ - /var/lib/apt/lists/* \ - /tmp/* \ - /var/tmp/* \ - && sudo -i -u buildslave mkdir /home/buildslave/buildslave +# Libcxx needs some locales that are not generated by default +RUN printf "fr_CA ISO-8859-1\ncs_CZ ISO-8859-2" >> /etc/locale.gen \ + && mkdir /usr/local/share/i1en/ \ + && printf "fr_CA ISO-8859-1\ncs_CZ ISO-8859-2" >> /usr/local/share/i1en/SUPPORTED \ + && locale-gen -# Add ninja with support for memory-threshold job limitation. -RUN git clone -b master https://github.com/maxim-kuvyrkov/ninja.git \ +# Add ninja with support for matching concurrency to available CPU allowance. +RUN git clone -b limit-on-cpu https://github.com/maxim-kuvyrkov/ninja.git \ && cd ninja \ - && ./configure.py --bootstrap && ./ninja all && ./ninja_test \ - && mv ninja /usr/local/bin/ninja.bin \ + && python3 ./configure.py --bootstrap && ./ninja all && ./ninja_test \ + && mv ninja /usr/local/bin/ninja.limit-on-cpu \ + && cd .. \ + && rm -rf ninja \ + && git clone -b master https://github.com/maxim-kuvyrkov/ninja.git \ + && cd ninja \ + && python3 ./configure.py --bootstrap && ./ninja all && ./ninja_test \ + && mv ninja /usr/local/bin/ninja.limit-on-psi \ && cd .. \ && rm -rf ninja -# Add current clang for libcxx bots. -RUN \ #if ARCH_arm64 - clang_ver=clang+llvm-5.0.1-aarch64-linux-gnu \ -#else /* ARCH_armhf */ - clang_ver=clang+llvm-5.0.1-armv7a-linux-gnueabihf \ +# AArch64 bots run MLIR tests for SVE and SME using qemu-user-static. +# Armv7-M libcxx bots use qemu-system-arm for emulation. +# SME support was added in 7.1.0 and other Arm (32 bit) bugs were +# fixed between then and 8.1.3. +RUN qemu_ver=8.1.3 \ + && wget --progress=dot:giga https://download.qemu.org/qemu-${qemu_ver}.tar.xz \ + && tar -xvf qemu-${qemu_ver}.tar.xz \ + && cd qemu-${qemu_ver} \ + && ./configure --prefix=/usr/local --target-list=aarch64-linux-user,arm-softmmu \ + && make -j$(nproc) \ + && make install \ + && rm -rf qemu-${qemu_ver}.tar.xz qemu-${qemu_ver}/ #endif - && cd /usr/local \ - && wget --progress=dot:giga http://releases.llvm.org/5.0.1/$clang_ver.tar.xz \ - && tar xf $clang_ver.tar.xz \ - && rm $clang_ver.tar.xz + +RUN new-user.sh --user tcwg-buildbot \ + # Initialize .ccache dir, so that we mount ccache docker volumes with + # correct permissions. + && sudo -i -u tcwg-buildbot mkdir -p /home/tcwg-buildbot/.ccache \ + # Allow non root users to access the buildkite config files + && chmod -R a+rw /etc/buildkite-agent/ VOLUME /home diff --git a/tcwg-base/tcwg-llvmbot/build.sh b/tcwg-base/tcwg-llvmbot/build.sh index 9181795d..7a6c3c14 100755 --- a/tcwg-base/tcwg-llvmbot/build.sh +++ b/tcwg-base/tcwg-llvmbot/build.sh @@ -2,11 +2,15 @@ set -e +# Can't run multiple copies of this script +exec 9<Dockerfile +flock -x 9 + trap cleanup_exit INT TERM EXIT cleanup_exit() { - rm -rf start.sh run.sh buildslave/ + rm -rf start.sh run.sh } export LANG=C @@ -18,22 +22,7 @@ top=$(git rev-parse --show-toplevel) cp $top/tcwg-base/$name/start.sh $top/tcwg-base/$name/run.sh ./ -# llvm-config repo is hosted on [secure] dev-private-git.l.o, so we -# can't clone it in here or in "RUN" command. The docker image -# deployment job arranges clone of llvm-config repo at the following -# location. -if [ x"$USER" = x"buildslave" ]; then - user="tcwg-buildslave" - # Add host key for dev-private-review.linaro.org - # Trying to get a login shell from gerrit will fail, so "|| true" - ssh -o StrictHostKeyChecking=no -p29418 $user@dev-private-review.linaro.org > /dev/null 2>&1 || true -else - user="$USER" -fi -git archive --remote ssh://$user@dev-private-review.linaro.org:29418/tcwg/llvm-config refs/heads/master buildslave/ | tar xf - - (cd ..; ./build.sh) -"$top"/tcwg-base/validate-dockerfile.sh Dockerfile -docker pull $image 2>/dev/null || true +"$top"/tcwg-base/validate-checksum.sh Dockerfile docker build --tag=$image . echo $image > .docker-tag diff --git a/tcwg-base/tcwg-llvmbot/gerrit-branches b/tcwg-base/tcwg-llvmbot/gerrit-branches deleted file mode 100644 index fb49cdf8..00000000 --- a/tcwg-base/tcwg-llvmbot/gerrit-branches +++ /dev/null @@ -1,3 +0,0 @@ -master -tcwg-staging -tcwg-llvmprod diff --git a/tcwg-base/tcwg-llvmbot/run.sh b/tcwg-base/tcwg-llvmbot/run.sh index e22b1fda..67277d9d 100755 --- a/tcwg-base/tcwg-llvmbot/run.sh +++ b/tcwg-base/tcwg-llvmbot/run.sh @@ -2,157 +2,195 @@ set -e -bare_metal_bot_p () -{ - case "$1" in - "linaro-tk1-"*) return 0 ;; - "linaro-apm-02"|"linaro-apm-05") return 1 ;; - "linaro-apm-"*) return 0 ;; - *) return 1 ;; - esac -} - if [ x"$1" = x"start.sh" ]; then cat /start.sh exit 0 fi -if ! [ -f ~buildslave/buildslave/buildbot.tac ]; then - # Connect to silent master. - # Reconnecting to main master should be done by hand. - sudo -i -u buildslave buildslave create-slave --umask=022 ~buildslave/buildslave "$@" +worker_dir=/home/tcwg-buildbot/worker +if [ x"$1" != x"buildkite" ]; then + if [ -f $worker_dir/buildbot.tac ]; then + : + else + sudo -i -u tcwg-buildbot buildbot-worker create-worker $worker_dir "$@" + fi fi -case "$(uname -m)" in - aarch64) - clang_ver=clang+llvm-5.0.1-aarch64-linux-gnu - ;; - *) - clang_ver=clang+llvm-5.0.1-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/5.0.1/$clang_ver.tar.xz - tar xf $clang_ver.tar.xz - ) +if [[ $2 == *"latest-gcc"* ]] ; then + install-gcc-latest.sh + cc=gcc-latest + cxx=g++-latest +else + release_num=17.0.6 + case "$(uname -m)" in + aarch64) + release_arch=aarch64-linux-gnu + lib_arch=aarch64-unknown-linux-gnu + ;; + *) + release_arch=armv7a-linux-gnueabihf + # It is intentional that this is v7l not v7a. + lib_arch=armv7l-unknown-linux-gnueabihf + ;; + esac + release_path=/usr/local/clang+llvm-${release_num}-${release_arch} + cc=$release_path/bin/clang + cxx=$release_path/bin/clang++ + + # Libcxx picolibc build requires these tools. + ln -f -s $release_path/bin/ld.lld /usr/local/bin/ld.lld + ln -f -s $release_path/bin/llvm-as /usr/local/bin/llvm-as + ln -f -s $release_path/bin/llvm-ar /usr/local/bin/llvm-ar + ln -f -s $release_path/bin/llvm-strip /usr/local/bin/llvm-strip + + # Starting with clang-11 we need clang's libs in ld.so's search path; + # otherwise we get failure to find libc++.so. + echo "$release_path/lib/$lib_arch" > /etc/ld.so.conf.d/clang.conf + ldconfig 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. cat > /usr/local/bin/cc <<EOF #!/bin/sh + +# This sed strips directories after $worker_dir/\$builder_dir; e.g., +# $worker_dir/clang-aarch64-sve-vls/stage1/llvm becomes +# $worker_dir/clang-aarch64-sve-vls . +basedir=\$(pwd | sed -e "s#\($worker_dir/[^/]\+\)/.*#\1#") +if [ "\$basedir" != "\$(pwd)" ]; then + # We are inside a subdirectory of a buildbot builder directory, e.g., + # /home/tcwg-buildbot/worker/clang-aarch64-sve-vls-2stage/stage1 . + # We set CCACHE_BASEDIR to "merge" ccache entries among different buildbot + # builders, so that multiple bots can share the results of their builds. + export CCACHE_BASEDIR="\$basedir" +fi +EOF +cp /usr/local/bin/cc /usr/local/bin/c++ + +cat >> /usr/local/bin/cc <<EOF exec ccache $cc "\$@" EOF chmod +x /usr/local/bin/cc -cat > /usr/local/bin/c++ <<EOF -#!/bin/sh +cat >> /usr/local/bin/c++ <<EOF exec ccache $cxx "\$@" EOF chmod +x /usr/local/bin/c++ -case "$2" in - *-lld|linaro-apm-04) - # LLD buildbot needs to find ld.lld for stage1 build. - ln -f -s /usr/bin/ld.bfd /usr/local/bin/ld.lld +if [ x"$1" != x"buildkite" ]; then + cat <<EOF | sudo -i -u tcwg-buildbot tee $worker_dir/info/admin +Linaro Toolchain Working Group <linaro-toolchain@lists.linaro.org> +EOF +fi + +n_cores=$(nproc --all) +case "$n_cores" in + 4) + hw="NVIDIA TK1 ${n_cores}x Cortex-A15" + ;; + 48) + hw="Fujitsu FX700 ${n_cores}x A64FX" + ;; + 160) + hw="Ampere Mt. Jade ${n_cores}x Neoverse-N1 provided by Equinix" ;; *) - rm -f /usr/local/bin/ld.lld + hw="${n_cores}x ARMv8" ;; esac -cat <<EOF | sudo -i -u buildslave tee ~buildslave/buildslave/info/admin -Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org> -EOF +if [ -f /sys/fs/cgroup/cpu.pressure ] \ + || ! [ -f /sys/fs/cgroup/cpuacct/cpuacct.stat ]; then + # This is for kernel 4.20 and newer, which replaces + # /sys/fs/cgroup/cpuacct/cpuacct.stat with /sys/fs/cgroup/cpu.pressure. + # Branch limit-on-psi gracefully handles absence of cpu.pressure, so + # it's OK to use it for [weird] cases when both cpu.pressure and + # cpuacct.stat are missing. + ninja_bin=/usr/local/bin/ninja.limit-on-psi +else + # This is for older kernels. + ninja_bin=/usr/local/bin/ninja.limit-on-cpu + # See https://github.com/maxim-kuvyrkov/ninja/commit/8fa112c0104d4cfd0bad0eb62e4cec03f7b51e14 + # and https://github.com/maxim-kuvyrkov/ninja/commit/c3eb25f42c3ba5a0c57c482ecdd8051167fcbb61 + # about this ugliness. + if [ -f /proc/config.gz ]; then + # CONFIG_HZ is set to 1000 on TK1s, which, luckily, provide /proc/config.gz. + zcat /proc/config.gz | grep "^CONFIG_HZ=" | sed -e "s/^CONFIG_HZ=//" + else + # CONFIG_HZ is set to 250 on all other current systems that we use for + # LLVM buildbots (this seems to be the current Ubuntu default). + echo "250" + fi > /etc/ninja_schedstat_hz +fi -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-tk1-*) hw="NVIDIA TK1 ${n_cores}-core Cortex-A15" ;; + linaro-tk1-*) + # TK1s have CPU hot-plug, so ninja might detect smaller number of cores + # available for parallelism. Explicitly set "default" parallelism. + ninja_bin="$ninja_bin -j$n_cores" + ;; esac +cat > /usr/local/bin/ninja <<EOF +#!/bin/sh +exec $ninja_bin -l-10 "\$@" +EOF +chmod +x /usr/local/bin/ninja + if [ -f /sys/fs/cgroup/memory/memory.limit_in_bytes ]; then mem_limit=$((($(cat /sys/fs/cgroup/memory/memory.limit_in_bytes) + 512*1024*1024) / (1024*1024*1024))) else mem_limit=$((($(cat /proc/meminfo | grep MemTotal | sed -e "s/[^0-9]\+\([0-9]\+\)[^0-9]\+/\1/") + 512*1024) / (1024*1024))) fi -cat <<EOF | sudo -i -u buildslave tee ~buildslave/buildslave/info/host +if [ x"$1" != x"buildkite" ]; then + cat <<EOF | sudo -i -u tcwg-buildbot tee $worker_dir/info/host $hw; RAM ${mem_limit}GB OS: $(lsb_release -ds) Kernel: $(uname -rv) Compiler: $(cc --version | head -n 1) -Linker: $(ld --version | head -n 1) +System Linker: $(ld --version | head -n 1) C Library: $(ldd --version | head -n 1) +CMake: $(cmake --version | head -n 1) EOF +fi -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 -#!/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 +# Handle LNT performance bot. +case "$2" in + linaro-tk1-02) + # Borrowed from bmk-scripts.git/perfdatadir2csv.sh + perf_bin="/usr/lib/linux-tools/$(uname -r)/perf" + if ! [ -e "$perf_bin" ]; then + perf_bin="$(find /usr/lib/linux-tools/ -name perf | tail -n 1)" + if ! [ -e "$perf_bin" ]; then + echo "ERROR: Cannot find perf binary" + exit 1 + fi + fi + cat > /usr/local/bin/perf <<EOF #!/bin/sh -exec /usr/local/bin/ninja.bin -j$n_cores -l $((2*$n_cores)) -m 50 -M 50 -D 5000 "\$@" +exec $perf_bin "\$@" EOF -fi -chmod +x /usr/local/bin/ninja - -sudo -i -u buildslave buildslave restart ~buildslave/buildslave + chmod +x /usr/local/bin/perf + ;; +esac -if bare_metal_bot_p "$2"; then - exit 0 +if [ x"$1" = x"buildkite" ]; then + # Add load testing bots. Trigger these by modifying the Buildkite + # config in a Phabricator review. + if [[ $2 == *"-test" ]]; then + queue="libcxx-builders-linaro-arm-test" + # Production buildkite bots. + else + queue="libcxx-builders-linaro-arm" + fi + + exec sudo -i -u tcwg-buildbot buildkite-agent start \ + --name $2 \ + --token $3 \ + --tags "queue=$queue,arch=$(arch)" \ + --build-path $worker_dir +else + exec sudo -i -u tcwg-buildbot buildbot-worker restart --nodaemon $worker_dir fi - -exec /usr/sbin/sshd -D diff --git a/tcwg-base/tcwg-llvmbot/start.sh b/tcwg-base/tcwg-llvmbot/start.sh index 5c620ee4..3072bcc8 100755 --- a/tcwg-base/tcwg-llvmbot/start.sh +++ b/tcwg-base/tcwg-llvmbot/start.sh @@ -2,21 +2,36 @@ set -ex -image="$1" -buildmaster="$2" -slavename="$3" -password="$4" - usage () { - echo "$@" cat <<EOF -Usage: $0 <buildmaster> <buildslave> <password> - E.g., $0 lab.llvm.org:9994 linaro-apm-05 PASSWORD +Usage: $0 -- <image> <buildmaster> <buildbot> <password> + E.g., $0 -- linaro/ci-arm64-tcwg-llvmbot-ubuntu:focal lab.llvm.org:9994 linaro-apm-05 PASSWORD + + For buildkite, set <buildmaster> to "buildkite" and + <password> to your buildkite token. EOF - exit 1 + exit 0 } +while [ $# -gt 0 ]; do + case $1 in + --help) usage ;; + # This script does not support any -- options but the other tcwg-build/dev/host + # do and they end up passed to us as well. We assume they come before a " -- " + # after which we get the options we care about. + --) shift; break ;; + *) shift ;; + esac + shift +done + +# Now we've dropped everything up to and including the " -- ". +image="$1" +buildmaster="$2" +botname="$3" +password="$4" + if groups 2>/dev/null | grep -q docker; then # Run docker straight up if $USER is in "docker" group. DOCKER="docker" @@ -25,6 +40,49 @@ else DOCKER="sudo docker" fi +# List of supported build bots. +# Please keep synced with tcwg-update-llvmbot-containers.sh. +case "$botname" in + linaro-lldb-arm-ubuntu) ;; + linaro-lldb-aarch64-ubuntu) ;; + linaro-aarch64-libcxx-*) ;; + linaro-armv8-libcxx-*) ;; + linaro-clang-armv7-lnt) ;; + linaro-clang-armv7-2stage) ;; + linaro-clang-armv7-global-isel) ;; + linaro-clang-armv7-vfpv3-2stage) ;; + linaro-clang-armv8-quick) ;; + linaro-clang-armv8-lld-2stage) ;; + linaro-clang-aarch64-quick) ;; + linaro-clang-aarch64-lld-2stage) ;; + linaro-clang-aarch64-global-isel) ;; + linaro-clang-aarch64-full-2stage) ;; + linaro-flang-aarch64-dylib) ;; + linaro-flang-aarch64-sharedlibs) ;; + linaro-flang-aarch64-out-of-tree) ;; + linaro-flang-aarch64-debug-reverse-iteration) ;; + linaro-flang-aarch64-latest-clang) ;; + linaro-flang-aarch64-release) ;; + linaro-flang-aarch64-rel-assert) ;; + linaro-flang-aarch64-latest-gcc) ;; + linaro-tk1-*) ;; + linaro-g3-*) ;; + *) + echo "WARNING: Unknown botname $botname" + ;; +esac + +case "$botname:$image" in + *-aarch64-*:*-arm64-*) ;; + linaro-g3-*:*-arm64-*) ;; + *-arm*-*:*-armhf-*) ;; + linaro-tk1-*:*-armhf-*) ;; + *) + echo "ERROR: $botname 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" @@ -34,44 +92,172 @@ case "$buildmaster" in mastername="silent" masterurl="lab.llvm.org:9994" ;; + "buildkite") + mastername="buildkite" + masterurl="buildkite" + ;; *) mastername="custom" masterurl="$buildmaster" esac -# CXX, LLD and LNT bots need additional configuration, and -# are not supported yet. -case "$mastername:$slavename:$(hostname):$image" in - # No restrictions for custom masters: - custom:*:*:*) ;; - # Almost no restrictions for the silent master: - silent:*:linaro-armv8-*:*) ;; - silent:*:r*-a*:*) ;; - # Restrictions for the normal master: - normal:*:linaro-armv8-*:*) ;; - normal:*:r*-a*:*-arm64-*) ;; - *) - usage "ERROR: Wrong mastername:slavename:hostname:image combination: $mastername:$slavename:$(hostname):$image" - ;; +case "$buildmaster" in + "normal") hostname="$botname" ;; + *) hostname="$mastername-$botname" ;; +esac + +# Set relative CPU weight of containers running. +case "$botname" in + # lldb 100x usual. + *-lldb-*) cpu_shares=100000 ;; + # quick bots 10x usual. + *-quick) cpu_shares=10000 ;; + # Fixed core bots at 200x usual, so they always get their cores. + *-libcxx-*|\ + *-armv8-lld-2stage|\ + *-aarch64-full-2stage|\ + *-aarch64-lld-2stage|\ + *-armv7-vfpv3-2stage|\ + *-armv7-2stage|\ + *-aarch64-global-isel|\ + *-armv7-global-isel) + cpu_shares=200000 ;; + *) cpu_shares=1000 ;; +esac + +# For many bots we give them a fixed set of CPU numers. +# This means that "nproc" and other automatic parallelism +# is constant. This prevents testing issues due to varying +# resource levels. +# Note: Other containers can use these cores if they are idle +# so this is not reserving them, it's just limiting where +# these container's processes can go. +case "$botname" in + ## jade -04 + # libcxx bots, 8 cores each. + *armv8-libcxx-01) cpuset_cpus="--cpuset-cpus=0-7" ;; + *armv8-libcxx-02) cpuset_cpus="--cpuset-cpus=8-15" ;; + *armv8-libcxx-03) cpuset_cpus="--cpuset-cpus=16-23" ;; + *armv8-libcxx-04) cpuset_cpus="--cpuset-cpus=24-31" ;; + *aarch64-libcxx-01) cpuset_cpus="--cpuset-cpus=32-39" ;; + *aarch64-libcxx-02) cpuset_cpus="--cpuset-cpus=40-47" ;; + *aarch64-libcxx-03) cpuset_cpus="--cpuset-cpus=48-55" ;; + # This builds flang, 30 cores. + *-aarch64-full-2stage) cpuset_cpus="--cpuset-cpus=56-85" ;; + + ## jade-01 + # 2 stage bots, 15 cores each. + *-armv8-lld-2stage) cpuset_cpus="--cpuset-cpus=0-14" ;; + *-aarch64-lld-2stage) cpuset_cpus="--cpuset-cpus=15-29" ;; + *-armv7-vfpv3-2stage) cpuset_cpus="--cpuset-cpus=30-44" ;; + *-armv7-2stage) cpuset_cpus="--cpuset-cpus=45-59" ;; + # Global Isel bots, 15 cores each due to instability in Clangd + # tests without fixed cores. + *-aarch64-global-isel) cpuset_cpus="--cpuset-cpus=60-74" ;; + *-armv7-global-isel) cpuset_cpus="--cpuset-cpus=75-89" ;; + *) cpuset_cpus="" ;; esac -case "$slavename" in - linaro-armv8-*) - # Use 64G out of 128G. - memlimit="64" +mounts="" +# Bind-mount ssh host keys. +for key in /etc/ssh/ssh_host_*_key{,.pub}; do + mounts="$mounts -v $key:$key:ro" +done + +# Add ccache mount. We differentiate ccache mounts on image arch and OS. +# Using same cache for different architectures would needlessly pollute cache +# (i.e., armhf and aarch64 images use different system compilers). +# Using same cache for different OS versions can cause problems due to +# different ccache versions. +ccache_id=$(echo "$image" | sed -e "s#linaro/ci-\(.*\)-tcwg-llvmbot-ubuntu:\(.*\)\$#\1-\2#") +mounts="$mounts -v ccache-$ccache_id:/home/tcwg-buildbot/.ccache" + +memlimit=$(free -m | awk '/^Mem/ { print $2 }') +network="" +case "$botname" in + linaro-tk1-*) + # Use at most 90% of RAM on TK1s + memlimit=$(($memlimit * 9 / 10))m + # The tk1 default 3.10 kernel places the [sigpage] segment between the + # [heap] and [stack] segment which causes failures on to some programs + # (more information on https://projects.linaro.org/browse/UM-70). The + # unlimited statck mitigates a failure in stage2 clang due high stack + # usage. + caps_system="--ulimit stack=-1" + # Somewhere between docker-ce 19.03.5 and 19.03.6 docker bridge network + # got broken on, at least, armhf with 3.10 kernel (aka TK1s). + # At the same time to run ubuntu:focal we need docker-ce 19.03.9-ish + # due to seccomp not supporting some of the syscalls. + # We have two options: + # 1. Use old docker and workaround ubuntu:focal's seccomp problem by + # disabling it via --privileged option. + # 2. Use new docker and workaround broken bridge network by using + # --network host. + # In the case of LLVM bots we don't need bridge network, so we choose + # option (2). + network="--network host" + # Using host network also requires us to use the actual host name. + # Otherwise "sudo" in /run.sh complains about unknown host. + hostname=$(hostname) + ;; + linaro-g3-*|*-lldb-aarch64-ubuntu) + # SVE bots have a whole instance to themselves, just make sure we have + # some headroom for admin. LLDB has an instance to itself. + 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 +case "$botname" in + *-lld-2stage|*-aarch64-full-2stage) + # LLD bots have been requiring high PIDs limit for as long as they + # have been setup. + # + # Buildbot client in AArch64 full bot has started to sporadically + # crash after migration of bots from D05 to Mt. Jade machine with error + # "cgroup: fork rejected by pids controller in /docker/FOOBAR" + # This is, apparently, due to + # LeakSanitizer-AddressSanitizer-aarch64::many_threads_detach.cpp + # test, which creates 10000 threads. + # This affects AArch64 bots that enable compiler-rt: + # - linaro-aarch64-lld + # - linaro-aarch64-full + # + # I can't readily explain why we haven't seen this problem on D05 + # machine. One possibility is that kernel scheduled threads + # differently on 64-core D05 and 160-core Mt. Jade machines. + # And that D05 was lucky to never see more than, say, 3000-4000 + # concurrent threads, but Mt. Jade manages to see, say, 4000-5000 + # threads. + pids_limit="15000" ;; + *) pids_limit="5000" ;; +esac # IPC_LOCK is required for some implementations of ssh-agent (e.g., MATE's). # SYS_PTRACE is required for debugger work. # seccomp:unconfined is required to disable ASLR for sanitizer tests. -caps="--cap-add=IPC_LOCK --cap-add=SYS_PTRACE --security-opt seccomp:unconfined" +caps="--cap-add=IPC_LOCK --cap-add=SYS_PTRACE --security-opt seccomp:unconfined $caps_system" -$DOCKER run --name=$mastername-$slavename --hostname=$mastername-$slavename --restart=unless-stopped -dt -p 22 --memory=${memlimit}G --pids-limit=5000 $caps "$image" "$masterurl" "$slavename" "$password" +if [ x"$(uname -m)" = x"x86_64" ]; then + # Copy QEMU binary to $HOME, which is bind-mounted from host. This way + # we'll have QEMU bind-mount equally accessible from the main host and + # from host/jenkins containers, from which we are starting tcwg-llvmbot + # containers. + # The host needs to have binfmt-misc magic configured for this to work. + # With the magic configured, all we need is to provide qemu-aarch64-static + # binary in PATH inside the container, and it'll be automatically picked up + # for execution of aarch64 binaries. + qemu_bin=$(mktemp -p $HOME) + cp "$(which qemu-aarch64-static)" "$qemu_bin" + chmod +x "$qemu_bin" + mounts="$mounts -v $qemu_bin:/bin/qemu-aarch64-static" +fi + +# Use --init so that PID 1 is docker-init which will reap zombie processes for us +$DOCKER run --name=$mastername-$botname --hostname=$hostname $network --restart=unless-stopped -dt --cpu-shares=$cpu_shares $cpuset_cpus $mounts --memory=$memlimit --pids-limit=$pids_limit --init $caps "$image" "$masterurl" "$botname" "$password" + +if [ x"$(uname -m)" = x"x86_64" ]; then + rm -f "$qemu_bin" +fi diff --git a/tcwg-base/tcwg-lnt/Dockerfile.in b/tcwg-base/tcwg-lnt/Dockerfile.in new file mode 100644 index 00000000..d94d408d --- /dev/null +++ b/tcwg-base/tcwg-lnt/Dockerfile.in @@ -0,0 +1,14 @@ +FROM linaro/ci-#{ARCH}-tcwg-base-ubuntu:#{DISTRO} + +RUN new-user.sh --user tcwg-buildslave \ + && sudo -i -u tcwg-buildslave mkdir bin +COPY lnt.sh /home/tcwg-buildslave/bin + +COPY run.sh start.sh / + +ENV TINI_VERSION v0.18.0 +ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini-#{ARCH} /sbin/tini +RUN chmod +x /sbin/tini + +ENTRYPOINT ["/sbin/tini", "--", "/run.sh"] +CMD ["start.sh"] diff --git a/tcwg-base/tcwg-lnt/build.sh b/tcwg-base/tcwg-lnt/build.sh new file mode 100755 index 00000000..518ff4a7 --- /dev/null +++ b/tcwg-base/tcwg-lnt/build.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +set -e + +# Can't run multiple copies of this script +exec 9<Dockerfile +flock -x 9 + +trap cleanup_exit INT TERM EXIT + +cleanup_exit() +{ + rm -rf lnt.sh 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-lnt/lnt.sh \ + $top/tcwg-base/tcwg-lnt/run.sh \ + $top/tcwg-base/tcwg-lnt/start.sh ./ + +#(cd ..; ./build.sh) +docker pull linaro/ci-${arch}-tcwg-base-ubuntu:${distro} +"$top"/tcwg-base/validate-checksum.sh Dockerfile +docker build --tag=$image . +echo $image > .docker-tag diff --git a/tcwg-base/tcwg-lnt/lnt.sh b/tcwg-base/tcwg-lnt/lnt.sh new file mode 100755 index 00000000..e48c9181 --- /dev/null +++ b/tcwg-base/tcwg-lnt/lnt.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +set -euf -o pipefail + +. @LNTSERVER@/sandbox/bin/activate +exec lnt "$@" diff --git a/tcwg-base/tcwg-lnt/run.sh b/tcwg-base/tcwg-lnt/run.sh new file mode 100755 index 00000000..d703c62f --- /dev/null +++ b/tcwg-base/tcwg-lnt/run.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +set -e + +if [ x"$1" = x"start.sh" ]; then + cat /start.sh + exit 0 +fi + +config="$1" + +user=tcwg-buildslave +scripts=/home/$user/jenkins-scripts + +sudo -i -u $user sed -i -e "s#@LNTSERVER@#/home/$user/$config/lntserver#" \ + bin/lnt.sh +sudo -i -u $user rm -rf $scripts +sudo -i -u $user git clone \ + https://git.linaro.org/toolchain/jenkins-scripts.git $scripts +exec sudo -i -u $user $scripts/tcwg-lnt/create-server.sh $config diff --git a/tcwg-base/tcwg-lnt/start.sh b/tcwg-base/tcwg-lnt/start.sh new file mode 100755 index 00000000..7a365e80 --- /dev/null +++ b/tcwg-base/tcwg-lnt/start.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +set -euf -o pipefail + +usage () +{ + cat <<EOF +$0 [OPTIONS] -- IMAGE CONFIG + +Options: + --verbose true/false + Whether to run in verbose mode + + IMAGE + Docker tcwg-host image + + CONFIG + LNT config +EOF + exit 1 +} + +verbose=false +additional_options="" + +while [ $# -gt 0 ]; do + case $1 in + --verbose) verbose="$2"; shift ;; + --additional_options) additional_options="$2"; shift ;; + --) shift; break ;; + *) echo "ERROR: Wrong option: $1"; usage ;; + esac + shift +done + +image="$1" +config="$2" + +if $verbose; then + set -x +fi + +if [ x"$image" = x"" ]; then + echo "ERROR: image name not provided" + usage +fi + +# Use at most half of all available RAM. +memlimit=$(free -m | awk '/^Mem/ { print $2 }') +memlimit=$(($memlimit / 2))m + +docker run -dt --name=$config-lnt --restart=unless-stopped \ + --memory=$memlimit --pids-limit=5000 $additional_options \ + $image "$config" diff --git a/tcwg-base/tio-power-cycle.exp b/tcwg-base/tio-power-cycle.exp new file mode 100755 index 00000000..ecb801c2 --- /dev/null +++ b/tcwg-base/tio-power-cycle.exp @@ -0,0 +1,51 @@ +#!/usr/bin/expect + +#### +# +# Procedure fully described in https://linaro.atlassian.net/browse/STG-5251 +# +# Example of command line : +# tio_power_control.exp usb-Linaro_DebugBoard_cfe5b51575a4451502020223e22160ff-if00 +# +#### + +set serial_name [lindex $argv 0] + + +## Connecting to the serial of the QcomLT DebugBoard +spawn tio /dev/serial/by-id/$serial_name -b 115200 +expect "Connected\r" + +# -- print power info : "s" +send -- "s\r" + +## 1. Disconnect the power : "p" +send -- "p\r" + +## 2. Wait for few seconds +sleep 2 +send -- "s\r" + +## 3. Connect the power : "P" +send -- "P\r" + +## 4. Wait for few seconds +sleep 1 +send -- "s\r" + +## 5. Trigger power button +## 5.a. set the PWR_BTN header signal to high level : "B" +send -- "B\r" + +## 5.b. Wait for a second +sleep 1 + +## 5.c. set the PWR_BTN header signal to low level : "b" +send -- "b\r" + +# Wait few seconds before exiting +sleep 2 +send -- "s\r" + +expect eof + diff --git a/tcwg-base/validate-checksum.sh b/tcwg-base/validate-checksum.sh new file mode 100755 index 00000000..09d0b897 --- /dev/null +++ b/tcwg-base/validate-checksum.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +# NOTE: THIS SCRIPT HAS COPIES IN THE FOLLOWING REPOS: +# - CI/DOCKERFILES.GIT AND +# - CI/JOB/CONFIGS.GIT +# REMEMBER TO SYNCHRONIZE ALL COPIES ON CHANGES. + +set -eu + +generate=false + +usage () +{ + echo "Syntax: $0 [--generate true/false] <generated_file>" 1>&2 + exit 1 +} + +while [ $# -gt 0 ]; do + case "$1" in + --generate) generate="$2"; shift ;; + --*) echo "ERROR: Wrong option: $1"; usage ;; + *) break ;; + esac + shift +done + +if [ x"${1+set}" != x"set" ]; then + usage +fi + +GENED_FILE="$1" + +if $generate; then + MD5=$(md5sum "$GENED_FILE" | awk '{ print $1; }') + echo "# checksum: $MD5" >> "$GENED_FILE" +else + EXPECTED_MD5=$(tail -n1 "$GENED_FILE" | awk '{ print $3; }') + ACTUAL_MD5=$(head -n -1 "$GENED_FILE" | md5sum | awk '{ print $1; }') + + if [ "$EXPECTED_MD5" != "$ACTUAL_MD5" ]; then + echo "ERROR: $GENED_FILE has been modified since it was auto-generated." + echo "Note: Current dir is $(pwd)" + exit 1 + fi +fi diff --git a/tcwg-base/validate-dockerfile.sh b/tcwg-base/validate-dockerfile.sh deleted file mode 100755 index bddea9b3..00000000 --- a/tcwg-base/validate-dockerfile.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash - -set -eu - -if [ "${1+set}" = "set" ]; then - true -else - echo "Syntax: $0 <dockerfile>" 1>&2 - exit 1 -fi - -DOCKERFILE=$1 - -EXPECTED_MD5=$(tail -n1 "$DOCKERFILE" | awk '{ print $3; }') -ACTUAL_MD5=$(head -n -1 "$DOCKERFILE" | md5sum |awk '{ print $1; }') - -if [ "$EXPECTED_MD5" = "$ACTUAL_MD5" ]; then - true -else - echo "ERROR: $DOCKERFILE has been modified since it was auto-generated." - echo "Note: Current dir is $(pwd)" - exit 1 -fi - diff --git a/tensorflow-arm64-build/.gitignore b/tensorflow-arm64-build/.gitignore new file mode 100644 index 00000000..a01ee289 --- /dev/null +++ b/tensorflow-arm64-build/.gitignore @@ -0,0 +1 @@ +.*.swp diff --git a/tensorflow-arm64-build/Dockerfile b/tensorflow-arm64-build/Dockerfile new file mode 100644 index 00000000..ddbc36ac --- /dev/null +++ b/tensorflow-arm64-build/Dockerfile @@ -0,0 +1,70 @@ +################################################################################ +FROM ubuntu:20.04 as builder +################################################################################ + +# Install devtoolset build dependencies +COPY setup.packages.sh setup.packages.sh +COPY builder.packages.txt builder.packages.txt +RUN /setup.packages.sh /builder.packages.txt + +# Install devtoolset-9 in /dt10 with glibc 2.17 and libstdc++ 4.8, for building +# manylinux2014-compatible packages. +COPY builder.devtoolset/fixlinks_aarch64.sh /fixlinks.sh +COPY builder.devtoolset/rpm-patch.sh /rpm-patch.sh +COPY builder.devtoolset/build_devtoolset.sh /build_devtoolset.sh +COPY builder.devtoolset/gcc9-fixups.patch /gcc9-fixups.patch +COPY builder.devtoolset/stringop_trunc.patch /stringop_trunc.patch +RUN /build_devtoolset.sh devtoolset-10 /dt10 + +# Build later version of patchelf that is not so buggy +COPY builder.patchelf/build_patchelf.sh /build_patchelf.sh +COPY apt.conf /etc/apt/ +RUN /build_patchelf.sh + +################################################################################ +FROM ubuntu:20.04 as devel +################################################################################ +COPY --from=builder /dt10 /dt10 +COPY --from=builder /patchelf/patchelf_0.14.3-1_arm64.deb /patchelf/patchelf_0.14.3-1_arm64.deb + +# Install devtoolset devel dependencies +COPY setup.sources.sh /setup.sources.sh +COPY setup.packages.sh /setup.packages.sh +COPY devel.packages.txt /devel.packages.txt +RUN /setup.sources.sh && /setup.packages.sh /devel.packages.txt + +# Install various tools. +# - bats: bash unit testing framework +# NOTE: v1.6.0 seems to have a bug that made "git" in setup_file break +# - bazelisk: always use the correct bazel version +# - buildifier: clean bazel build deps +# - buildozer: clean bazel build deps +RUN git clone --branch v1.7.0 https://github.com/bats-core/bats-core.git && bats-core/install.sh /usr/local && rm -rf bats-core +RUN wget https://github.com/bazelbuild/bazelisk/releases/download/v1.12.0/bazelisk-linux-arm64 -O /usr/local/bin/bazel && chmod +x /usr/local/bin/bazel +RUN wget https://github.com/bazelbuild/buildtools/releases/download/4.2.5/buildifier-linux-arm64 -O /usr/local/bin/buildifier && chmod +x /usr/local/bin/buildifier +RUN wget https://github.com/bazelbuild/buildtools/releases/download/4.2.5/buildozer-linux-arm64 -O /usr/local/bin/buildozer && chmod +x /usr/local/bin/buildozer + +RUN groupadd -g 1001 buildslave && useradd -m -u 1001 -g buildslave buildslave +RUN mkdir -p /tf/venv +RUN chown -R buildslave:buildslave /tf +RUN dpkg -i /patchelf/patchelf_0.14.3-1_arm64.deb + +# All lines past this point are reset when $CACHEBUSTER is set. We need this +# for Python specifically because we install some nightly packages which are +# likely to change daily. +ARG CACHEBUSTER=0 +RUN echo $CACHEBUSTER + +# Setup build and environment +COPY devel.usertools /usertools +COPY devel.bashrc /root/.bashrc +COPY ld.so.conf /dt10/etc/ + +# Setup Python environment. +COPY setup.python.sh /setup.python.sh +COPY devel.requirements.txt /devel.requirements.txt +RUN /setup.python.sh python3.9 devel.requirements.txt +RUN /setup.python.sh python3.10 devel.requirements.txt +RUN /setup.python.sh python3.11 devel.requirements.txt +RUN /setup.python.sh python3.12 devel.requirements.txt + diff --git a/tensorflow-arm64-build/apt.conf b/tensorflow-arm64-build/apt.conf new file mode 100644 index 00000000..eae58f8b --- /dev/null +++ b/tensorflow-arm64-build/apt.conf @@ -0,0 +1 @@ +APT::Default-Release "focal"; diff --git a/tensorflow-arm64-build/build.sh b/tensorflow-arm64-build/build.sh new file mode 100755 index 00000000..ff22ccec --- /dev/null +++ b/tensorflow-arm64-build/build.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +set -e + +export LANG=C + +release_tag=2.17 + +docker build --pull \ + --tag=linaro/tensorflow-arm64-build:latest-multipython \ + --tag=linaro/tensorflow-arm64-build:${release_tag}-multipython . +mkdir -p tagdir-multipython +echo linaro/tensorflow-arm64-build:latest-multipython > tagdir-multipython/.docker-tag +mkdir -p tagdir-${release_tag}-multipython +echo linaro/tensorflow-arm64-build:${release_tag}-multipython > tagdir-${release_tag}-multipython/.docker-tag diff --git a/tensorflow-arm64-build/builder.devtoolset/build_devtoolset.sh b/tensorflow-arm64-build/builder.devtoolset/build_devtoolset.sh new file mode 100755 index 00000000..2cf77d61 --- /dev/null +++ b/tensorflow-arm64-build/builder.devtoolset/build_devtoolset.sh @@ -0,0 +1,157 @@ +#!/bin/bash -eu +# Copyright 2016 The TensorFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== +# +# Builds a devtoolset cross-compiler targeting manylinux2014 (glibc 2.17 / libstdc++ 4.8). + +VERSION="$1" +TARGET="$2" + +case "${VERSION}" in +devtoolset-9) + LIBSTDCXX_VERSION="6.0.28" + LIBSTDCXX_ABI="new" + ;; +devtoolset-10) + LIBSTDCXX_VERSION="6.0.28" + LIBSTDCXX_ABI="new" + ;; +*) + echo "Usage: $0 {devtoolset-9|devtoolset-10} <target-directory> <arch>" + echo "Use 'devtoolset-9' to build a manylinux2014 compatible toolchain" + exit 1 + ;; +esac + +mkdir -p "${TARGET}" + +mkdir -p ${TARGET}/usr/include + +# Put the current kernel headers from ubuntu in place. +ln -s "/usr/include/linux" "${TARGET}/usr/include/linux" +ln -s "/usr/include/asm-generic" "${TARGET}/usr/include/asm-generic" +ln -s "/usr/include/aarch64-linux-gnu/asm" "${TARGET}/usr/include/asm" + +# Download glibc's shared and development libraries based on the value of the +# `VERSION` parameter. +# Note: 'Templatizing' this and the other conditional branches would require +# defining several variables (version, os, path) making it difficult to maintain +# and extend for future modifications. +mkdir -p glibc-src +mkdir -p glibc-build +cd glibc-src +wget "https://vault.centos.org/centos/7/os/Source/SPackages/glibc-2.17-317.el7.src.rpm" +rpm2cpio "glibc-2.17-317.el7.src.rpm" |cpio -idmv +tar -xvzf "glibc-2.17-c758a686.tar.gz" --strip 1 +tar -xvzf "glibc-2.17-c758a686-releng.tar.gz" --strip 1 +sed -i '/patch0060/d' glibc.spec +/rpm-patch.sh "glibc.spec" +rm -f "glibc-2.17-317.el7.src.rpm" "glibc-2.17-c758a686.tar.gz" "glibc-2.17-c758a686-releng.tar.gz" +patch -p1 < /gcc9-fixups.patch +patch -p1 < /stringop_trunc.patch +cd ../glibc-build +../glibc-src/configure --prefix=/usr --disable-werror --enable-obsolete-rpc --disable-profile +make -j$(nproc) +make install DESTDIR=${TARGET} +cd .. + +# Symlinks in the binary distribution are set up for installation in /usr, we +# need to fix up all the links to stay within /${TARGET}. +/fixlinks.sh "/${TARGET}" + +# Patch to allow non-glibc 2.12 compatible builds to work. +sed -i '54i#define TCP_USER_TIMEOUT 18' "/${TARGET}/usr/include/netinet/tcp.h" + +# Download specific version of libstdc++ shared library based on the value of +# the `VERSION` parameter + # Download binary libstdc++ 4.8 shared library release +wget "http://old-releases.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/libstdc++6_4.8.1-10ubuntu8_arm64.deb" && \ + unar "libstdc++6_4.8.1-10ubuntu8_arm64.deb" && \ + tar -C "${TARGET}" -xvzf "libstdc++6_4.8.1-10ubuntu8_arm64/data.tar.gz" "./usr/lib/aarch64-linux-gnu/libstdc++.so.6.0.18" && \ + rm -rf "libstdc++6_4.8.1-10ubuntu8_arm64.deb" "libstdc++6_4.8.1-10ubuntu8_arm64" + +mkdir -p "${TARGET}-src" +cd "${TARGET}-src" + +# Build a devtoolset cross-compiler based on our glibc 2.12/glibc 2.17 sysroot setup. +case "${VERSION}" in +devtoolset-9) + wget "https://vault.centos.org/centos/7/sclo/Source/rh/devtoolset-9-gcc-9.3.1-2.2.el7.src.rpm" + rpm2cpio "devtoolset-9-gcc-9.3.1-2.2.el7.src.rpm" |cpio -idmv + tar -xvf "gcc-9.3.1-20200408.tar.xz" --strip 1 + ;; +devtoolset-10) + wget "https://vault.centos.org/centos/7/sclo/Source/rh/devtoolset-10-gcc-10.2.1-11.2.el7.src.rpm" + rpm2cpio "devtoolset-10-gcc-10.2.1-11.2.el7.src.rpm" |cpio -idmv + tar -xvf "gcc-10.2.1-20210130.tar.xz" --strip 1 + ;; +esac + +# Apply the devtoolset patches to gcc. +/rpm-patch.sh "gcc.spec" + +./contrib/download_prerequisites + +mkdir -p "${TARGET}-build" +cd "${TARGET}-build" + +"${TARGET}-src/configure" \ + --prefix="${TARGET}/usr" \ + --with-sysroot="/${TARGET}" \ + --disable-bootstrap \ + --disable-libmpx \ + --enable-libsanitizer \ + --disable-libunwind-exceptions \ + --disable-libunwind-exceptions \ + --disable-lto \ + --disable-multilib \ + --enable-__cxa_atexit \ + --enable-gnu-indirect-function \ + --enable-gnu-unique-object \ + --enable-initfini-array \ + --enable-languages="c,c++" \ + --enable-linker-build-id \ + --enable-plugin \ + --enable-shared \ + --enable-threads=posix \ + --with-default-libstdcxx-abi=${LIBSTDCXX_ABI} \ + --with-gcc-major-version-only \ + --with-linker-hash-style="gnu" \ + && \ + make -j$(nproc) && \ + make install + + +# Create the devtoolset libstdc++ linkerscript that links dynamically against +# the system libstdc++ 4.4 and provides all other symbols statically. +# Note that the installation path for libstdc++ here is ${TARGET}/usr/lib64/ +mv "${TARGET}/usr/lib64/libstdc++.so.${LIBSTDCXX_VERSION}" \ + "${TARGET}/usr/lib64/libstdc++.so.${LIBSTDCXX_VERSION}.backup" +echo -e "OUTPUT_FORMAT(elf64-littleaarch64)\nINPUT ( libstdc++.so.6.0.18 -lstdc++_nonshared44 )" \ + > "${TARGET}/usr/lib64/libstdc++.so.${LIBSTDCXX_VERSION}" +cp "./aarch64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++_nonshared44.a" \ + "${TARGET}/usr/lib64" + + +# Link in architecture specific includes from the system; note that we cannot +# link in the whole aarch64-linux-gnu folder, as otherwise we're overlaying +# system gcc paths that we do not want to find. +# TODO(klimek): Automate linking in all non-gcc / non-kernel include +# directories. +mkdir -p "${TARGET}/usr/include/aarch64-linux-gnu" +PYTHON_VERSIONS=("python3.9" "python3.10" "python3.11" "python3.12") +for v in "${PYTHON_VERSIONS[@]}"; do + ln -s "/usr/local/include/${v}" "${TARGET}/usr/include/aarch64-linux-gnu/${v}" +done diff --git a/tensorflow-arm64-build/builder.devtoolset/fixlinks_aarch64.sh b/tensorflow-arm64-build/builder.devtoolset/fixlinks_aarch64.sh new file mode 100755 index 00000000..09a5f985 --- /dev/null +++ b/tensorflow-arm64-build/builder.devtoolset/fixlinks_aarch64.sh @@ -0,0 +1,28 @@ +#!/bin/bash +# Copyright 2016 The TensorFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== +# +# Re-direct all links in $1 that are relative to be canonical + +BASE="$1" +find "${BASE}" -type l | \ + while read l ; do + if [[ "$(readlink "$l")" == \.\./* ]]; then + CANONICAL="$(readlink "$l")"; + rm "$l"; + ln -s "${CANONICAL}" "$l" + fi + done + diff --git a/tensorflow-arm64-build/builder.devtoolset/gcc9-fixups.patch b/tensorflow-arm64-build/builder.devtoolset/gcc9-fixups.patch new file mode 100644 index 00000000..7b9bbf35 --- /dev/null +++ b/tensorflow-arm64-build/builder.devtoolset/gcc9-fixups.patch @@ -0,0 +1,270 @@ +diff --git a/iconv/gconv.h b/iconv/gconv.h +index 3f9112e..8e60197 100644 +--- a/iconv/gconv.h ++++ b/iconv/gconv.h +@@ -174,7 +174,7 @@ typedef struct __gconv_info + { + size_t __nsteps; + struct __gconv_step *__steps; +- __extension__ struct __gconv_step_data __data __flexarr; ++ __extension__ struct __gconv_step_data __data[0]; + } *__gconv_t; + + #endif /* gconv.h */ +diff --git a/include/libc-symbols.h b/include/libc-symbols.h +index c555bf2..143b26d 100644 +--- a/include/libc-symbols.h ++++ b/include/libc-symbols.h +@@ -107,6 +107,11 @@ + # endif + #endif + ++#ifndef __attribute_copy__ ++/* Provide an empty definition when cdefs.h is not included. */ ++# define __attribute_copy__(arg) ++#endif ++ + #ifndef __ASSEMBLER__ + /* GCC understands weak symbols and aliases; use its interface where + possible, instead of embedded assembly language. */ +@@ -114,7 +119,8 @@ + /* Define ALIASNAME as a strong alias for NAME. */ + # define strong_alias(name, aliasname) _strong_alias(name, aliasname) + # define _strong_alias(name, aliasname) \ +- extern __typeof (name) aliasname __attribute__ ((alias (#name))); ++ extern __typeof (name) aliasname __attribute__ ((alias (#name))) \ ++ __attribute_copy__ (name); + + /* This comes between the return type and function name in + a function definition to make that definition weak. */ +@@ -125,14 +131,16 @@ + If weak aliases are not available, this defines a strong alias. */ + # define weak_alias(name, aliasname) _weak_alias (name, aliasname) + # define _weak_alias(name, aliasname) \ +- extern __typeof (name) aliasname __attribute__ ((weak, alias (#name))); ++ extern __typeof (name) aliasname __attribute__ ((weak, alias (#name))) \ ++ __attribute_copy__ (name); + + /* Same as WEAK_ALIAS, but mark symbol as hidden. */ + # define weak_hidden_alias(name, aliasname) \ + _weak_hidden_alias (name, aliasname) + # define _weak_hidden_alias(name, aliasname) \ + extern __typeof (name) aliasname \ +- __attribute__ ((weak, alias (#name), __visibility__ ("hidden"))); ++ __attribute__ ((weak, alias (#name), __visibility__ ("hidden"))) \ ++ __attribute_copy__ (name); + + /* Declare SYMBOL as weak undefined symbol (resolved to 0 if not defined). */ + # define weak_extern(symbol) _weak_extern (weak symbol) +@@ -528,7 +536,8 @@ for linking") + # define __hidden_ver1(local, internal, name) \ + extern __typeof (name) __EI_##name __asm__(__hidden_asmname (#internal)); \ + extern __typeof (name) __EI_##name \ +- __attribute__((alias (__hidden_asmname (#local)))) ++ __attribute__((alias (__hidden_asmname (#local)))) \ ++ __attribute_copy__ (name) + # define hidden_ver(local, name) __hidden_ver1(local, __GI_##name, name); + # define hidden_data_ver(local, name) hidden_ver(local, name) + # define hidden_def(name) __hidden_ver1(__GI_##name, name, name); +@@ -541,7 +550,8 @@ for linking") + # define __hidden_nolink1(local, internal, name, version) \ + __hidden_nolink2 (local, internal, name, version) + # define __hidden_nolink2(local, internal, name, version) \ +- extern __typeof (name) internal __attribute__ ((alias (#local))); \ ++ extern __typeof (name) internal __attribute__ ((alias (#local))) \ ++ __attribute_copy__ (name); \ + __hidden_nolink3 (local, internal, #name "@" #version) + # define __hidden_nolink3(local, internal, vername) \ + __asm__ (".symver " #internal ", " vername); +diff --git a/locale/weightwc.h b/locale/weightwc.h +index e966c03..22ab790 100644 +--- a/locale/weightwc.h ++++ b/locale/weightwc.h +@@ -79,19 +79,19 @@ findidx (const wint_t **cpp, size_t len) + if (cp[cnt] != usrc[cnt]) + break; + +- if (cnt < nhere - 1) ++ if (cnt < nhere - 1 || cnt == len) + { + cp += 2 * nhere; + continue; + } + +- if (cp[nhere - 1] > usrc[nhere -1]) ++ if (cp[nhere - 1] > usrc[nhere - 1]) + { + cp += 2 * nhere; + continue; + } + +- if (cp[2 * nhere - 1] < usrc[nhere -1]) ++ if (cp[2 * nhere - 1] < usrc[nhere - 1]) + { + cp += 2 * nhere; + continue; +diff --git a/locale/xlocale.h b/locale/xlocale.h +index 98c080b..843bd45 100644 +--- a/locale/xlocale.h ++++ b/locale/xlocale.h +@@ -20,6 +20,9 @@ + #ifndef _XLOCALE_H + #define _XLOCALE_H 1 + ++#ifndef _BITS_TYPES___LOCALE_T_H ++#define _BITS_TYPES___LOCALE_T_H 1 ++ + /* Structure for reentrant locale using functions. This is an + (almost) opaque type for the user level programs. The file and + this data structure is not standardized. Don't rely on it. It can +@@ -41,4 +44,6 @@ typedef struct __locale_struct + /* POSIX 2008 makes locale_t official. */ + typedef __locale_t locale_t; + ++#endif /* bits/types/__locale_t.h */ ++ + #endif /* xlocale.h */ +diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h +index d1cb3dd..30482a1 100644 +--- a/misc/sys/cdefs.h ++++ b/misc/sys/cdefs.h +@@ -423,4 +423,14 @@ + # endif + #endif + ++/* Undefine (also defined in libc-symbols.h). */ ++#undef __attribute_copy__ ++#if __GNUC_PREREQ (9, 0) ++/* Copies attributes from the declaration or type referenced by ++ the argument. */ ++# define __attribute_copy__(arg) __attribute__ ((__copy__ (arg))) ++#else ++# define __attribute_copy__(arg) ++#endif ++ + #endif /* sys/cdefs.h */ +diff --git a/stdlib/setenv.c b/stdlib/setenv.c +index 45efe2e..06bfab0 100644 +--- a/stdlib/setenv.c ++++ b/stdlib/setenv.c +@@ -319,6 +319,7 @@ unsetenv (const char *name) + + ep = __environ; + if (ep != NULL) ++ { + while (*ep != NULL) + if (!strncmp (*ep, name, len) && (*ep)[len] == '=') + { +@@ -332,6 +333,7 @@ unsetenv (const char *name) + } + else + ++ep; ++ } + + UNLOCK; + +diff --git a/support/Makefile b/support/Makefile +index a253698..2f4e2a9 100644 +--- a/support/Makefile ++++ b/support/Makefile +@@ -167,13 +167,6 @@ CFLAGS-support_paths.c = \ + -DINSTDIR_PATH=\"$(prefix)\" \ + -DLIBDIR_PATH=\"$(libdir)\" + +-ifeq (,$(CXX)) +-LINKS_DSO_PROGRAM = links-dso-program-c +-else +-LINKS_DSO_PROGRAM = links-dso-program +-LDLIBS-links-dso-program = -lstdc++ -lgcc -lgcc_s $(libunwind) +-endif +- + LDLIBS-test-container = $(libsupport) + + others += test-container +@@ -182,9 +175,6 @@ others-noinstall += test-container + others += shell-container echo-container true-container + others-noinstall += shell-container echo-container true-container + +-others += $(LINKS_DSO_PROGRAM) +-others-noinstall += $(LINKS_DSO_PROGRAM) +- + $(objpfx)test-container : $(libsupport) + $(objpfx)shell-container : $(libsupport) + $(objpfx)echo-container : $(libsupport) +diff --git a/support/links-dso-program.cc b/support/links-dso-program.cc +index 8ff3155..f9d2b77 100644 +--- a/support/links-dso-program.cc ++++ b/support/links-dso-program.cc +@@ -3,6 +3,11 @@ + backported. */ + #define _ISOMAC 1 + ++#define __GLIBC_USE(F) __GLIBC_USE_ ## F ++ ++# define __attribute_alloc_size__(params) \ ++ __attribute__ ((__alloc_size__ params)) ++ + #include <iostream> + + using namespace std; +diff --git a/sysdeps/aarch64/dl-machine.h b/sysdeps/aarch64/dl-machine.h +index 185402f..bbdeae0 100644 +--- a/sysdeps/aarch64/dl-machine.h ++++ b/sysdeps/aarch64/dl-machine.h +@@ -49,23 +49,11 @@ elf_machine_load_address (void) + /* To figure out the load address we use the definition that for any symbol: + dynamic_addr(symbol) = static_addr(symbol) + load_addr + +- The choice of symbol is arbitrary. The static address we obtain +- by constructing a non GOT reference to the symbol, the dynamic +- address of the symbol we compute using adrp/add to compute the +- symbol's address relative to the PC. */ +- +- ElfW(Addr) static_addr; +- ElfW(Addr) dynamic_addr; +- +- asm (" \n\ +- adrp %1, _dl_start; \n\ +- add %1, %1, #:lo12:_dl_start \n\ +- ldr %w0, 1f \n\ +- b 2f \n\ +-1: .word _dl_start \n\ +-2: \n\ +- " : "=r" (static_addr), "=r" (dynamic_addr)); +- return dynamic_addr - static_addr; ++ _DYNAMIC sysmbol is used here as its link-time address stored in ++ the special unrelocated first GOT entry. */ ++ ++ extern ElfW(Dyn) _DYNAMIC[] attribute_hidden; ++ return (ElfW(Addr)) &_DYNAMIC - elf_machine_dynamic (); + } + + /* Set up the loaded object described by L so its unrelocated PLT +diff --git a/sysdeps/ieee754/dbl-64/k_rem_pio2.c b/sysdeps/ieee754/dbl-64/k_rem_pio2.c +index fcf956a..e2c5d29 100644 +--- a/sysdeps/ieee754/dbl-64/k_rem_pio2.c ++++ b/sysdeps/ieee754/dbl-64/k_rem_pio2.c +@@ -172,7 +172,8 @@ int __kernel_rem_pio2(double *x, double *y, int e0, int nx, int prec, const int3 + + /* compute q[0],q[1],...q[jk] */ + for (i=0;i<=jk;i++) { +- for(j=0,fw=0.0;j<=jx;j++) fw += x[j]*f[jx+i-j]; q[i] = fw; ++ for(j=0,fw=0.0;j<=jx;j++) fw += x[j]*f[jx+i-j]; ++ q[i] = fw; + } + + jz = jk; +diff --git a/sysdeps/ieee754/flt-32/k_rem_pio2f.c b/sysdeps/ieee754/flt-32/k_rem_pio2f.c +index e54a067..215b0e0 100644 +--- a/sysdeps/ieee754/flt-32/k_rem_pio2f.c ++++ b/sysdeps/ieee754/flt-32/k_rem_pio2f.c +@@ -65,7 +65,8 @@ int __kernel_rem_pio2f(float *x, float *y, int e0, int nx, int prec, const int32 + + /* compute q[0],q[1],...q[jk] */ + for (i=0;i<=jk;i++) { +- for(j=0,fw=0.0;j<=jx;j++) fw += x[j]*f[jx+i-j]; q[i] = fw; ++ for(j=0,fw=0.0;j<=jx;j++) fw += x[j]*f[jx+i-j]; ++ q[i] = fw; + } + + jz = jk; diff --git a/tensorflow-arm64-build/builder.devtoolset/rpm-patch.sh b/tensorflow-arm64-build/builder.devtoolset/rpm-patch.sh new file mode 100755 index 00000000..892ae2af --- /dev/null +++ b/tensorflow-arm64-build/builder.devtoolset/rpm-patch.sh @@ -0,0 +1,28 @@ +#!/bin/bash -eu +# Copyright 2016 The TensorFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== +# +# Given an RPM spec file $1, apply its patches. + +SPEC="$1" +grep '%patch' "${SPEC}" |while read cmd ; do + N=$(echo "${cmd}" |sed 's,%patch\([0-9]\+\).*,\1,') + file=$(grep "Patch$N:" "${SPEC}" |sed 's,.*: ,,') + parg=$(echo "${cmd}" |sed 's,.*\(-p[0-9]\).*,\1,') + if [[ ! "${file}" =~ doxygen && "${cmd}" != \#* ]]; then + echo "patch ${parg} -s < ${file}" + patch ${parg} -s < "${file}" + fi +done diff --git a/tensorflow-arm64-build/builder.devtoolset/stringop_trunc.patch b/tensorflow-arm64-build/builder.devtoolset/stringop_trunc.patch new file mode 100644 index 00000000..bd9e5533 --- /dev/null +++ b/tensorflow-arm64-build/builder.devtoolset/stringop_trunc.patch @@ -0,0 +1,1204 @@ +diff --git a/bits/utmp.h b/bits/utmp.h +index 775123d..bf28c6d 100644 +--- a/bits/utmp.h ++++ b/bits/utmp.h +@@ -1,5 +1,5 @@ +-/* The `struct utmp' type, describing entries in the utmp file. Generic/BSDish +- Copyright (C) 1993, 1996, 1997 Free Software Foundation, Inc. ++/* The `struct utmp' type, describing entries in the utmp file. ++ Copyright (C) 1993-2022 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or +@@ -14,7 +14,7 @@ + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see +- <http://www.gnu.org/licenses/>. */ ++ <https://www.gnu.org/licenses/>. */ + + #ifndef _UTMP_H + # error "Never include <bits/utmp.h> directly; use <utmp.h> instead." +@@ -24,11 +24,13 @@ + #include <time.h> + + +-#define UT_NAMESIZE 8 +-#define UT_LINESIZE 8 +-#define UT_HOSTSIZE 16 ++#define UT_LINESIZE 32 ++#define UT_NAMESIZE 32 ++#define UT_HOSTSIZE 256 + + ++/* The structure describing an entry in the database of ++ previous logins. */ + struct lastlog + { + time_t ll_time; +@@ -36,12 +38,16 @@ struct lastlog + char ll_host[UT_HOSTSIZE]; + }; + ++/* The structure describing an entry in the user accounting database. */ + struct utmp + { +- char ut_line[UT_LINESIZE]; +- char ut_user[UT_NAMESIZE]; ++ char ut_line[UT_LINESIZE] ++ __attribute_nonstring__; /* Devicename. */ ++ char ut_user[UT_NAMESIZE] ++ __attribute_nonstring__; /* Username. */ + #define ut_name ut_user +- char ut_host[UT_HOSTSIZE]; ++ char ut_host[UT_HOSTSIZE] ++ __attribute_nonstring__; /* Hostname for remote login. */ + long int ut_time; + }; + +diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h +index 30482a1..551d5fd 100644 +--- a/misc/sys/cdefs.h ++++ b/misc/sys/cdefs.h +@@ -391,6 +391,15 @@ + + #include <bits/wordsize.h> + ++#if __GNUC_PREREQ (8, 0) ++/* Describes a char array whose address can safely be passed as the first ++ argument to strncpy and strncat, as the char array is not necessarily ++ a NUL-terminated string. */ ++# define __attribute_nonstring__ __attribute__ ((__nonstring__)) ++#else ++# define __attribute_nonstring__ ++#endif ++ + #if defined __LONG_DOUBLE_MATH_OPTIONAL && defined __NO_LONG_DOUBLE_MATH + # define __LDBL_COMPAT 1 + # ifdef __REDIRECT +diff --git a/nis/nss_nisplus/nisplus-parser.c b/nis/nss_nisplus/nisplus-parser.c +index a4d76fb..41600f0 100644 +--- a/nis/nss_nisplus/nisplus-parser.c ++++ b/nis/nss_nisplus/nisplus-parser.c +@@ -82,7 +82,7 @@ _nss_nisplus_parse_pwent (nis_result *result, struct passwd *pw, + + char *numstr = NISOBJVAL (2, obj); + len = NISOBJLEN (2, obj); +- if (len == 0 && numstr[len - 1] != '\0') ++ if (len == 0 || numstr[len - 1] != '\0') + { + if (len >= room_left) + goto no_more_room; +@@ -98,7 +98,7 @@ _nss_nisplus_parse_pwent (nis_result *result, struct passwd *pw, + + numstr = NISOBJVAL (3, obj); + len = NISOBJLEN (3, obj); +- if (len == 0 && numstr[len - 1] != '\0') ++ if (len == 0 || numstr[len - 1] != '\0') + { + if (len >= room_left) + goto no_more_room; +diff --git a/string/bits/string2.h b/string/bits/string2.h +index c9bf593..f461fc1 100644 +--- a/string/bits/string2.h ++++ b/string/bits/string2.h +@@ -47,29 +47,7 @@ + #endif + + #if _STRING_ARCH_unaligned +-/* If we can do unaligned memory accesses we must know the endianess. */ +-# include <endian.h> + # include <bits/types.h> +- +-# if __BYTE_ORDER == __LITTLE_ENDIAN +-# define __STRING2_SMALL_GET16(src, idx) \ +- (((const unsigned char *) (const char *) (src))[idx + 1] << 8 \ +- | ((const unsigned char *) (const char *) (src))[idx]) +-# define __STRING2_SMALL_GET32(src, idx) \ +- (((((const unsigned char *) (const char *) (src))[idx + 3] << 8 \ +- | ((const unsigned char *) (const char *) (src))[idx + 2]) << 8 \ +- | ((const unsigned char *) (const char *) (src))[idx + 1]) << 8 \ +- | ((const unsigned char *) (const char *) (src))[idx]) +-# else +-# define __STRING2_SMALL_GET16(src, idx) \ +- (((const unsigned char *) (const char *) (src))[idx] << 8 \ +- | ((const unsigned char *) (const char *) (src))[idx + 1]) +-# define __STRING2_SMALL_GET32(src, idx) \ +- (((((const unsigned char *) (const char *) (src))[idx] << 8 \ +- | ((const unsigned char *) (const char *) (src))[idx + 1]) << 8 \ +- | ((const unsigned char *) (const char *) (src))[idx + 2]) << 8 \ +- | ((const unsigned char *) (const char *) (src))[idx + 3]) +-# endif + #else + /* These are a few types we need for the optimizations if we cannot + use unaligned memory accesses. */ +@@ -94,148 +72,11 @@ __STRING2_COPY_TYPE (8); + + /* Set N bytes of S to C. */ + #if !defined _HAVE_STRING_ARCH_memset +-# if !__GNUC_PREREQ (3, 0) +-# if _STRING_ARCH_unaligned +-# define memset(s, c, n) \ +- (__extension__ (__builtin_constant_p (n) && (n) <= 16 \ +- ? ((n) == 1 \ +- ? __memset_1 (s, c) \ +- : __memset_gc (s, c, n)) \ +- : (__builtin_constant_p (c) && (c) == '\0' \ +- ? ({ void *__s = (s); __bzero (__s, n); __s; }) \ +- : memset (s, c, n)))) +- +-# define __memset_1(s, c) ({ void *__s = (s); \ +- *((__uint8_t *) __s) = (__uint8_t) c; __s; }) +- +-# define __memset_gc(s, c, n) \ +- ({ void *__s = (s); \ +- union { \ +- unsigned int __ui; \ +- unsigned short int __usi; \ +- unsigned char __uc; \ +- } *__u = __s; \ +- __uint8_t __c = (__uint8_t) (c); \ +- \ +- /* This `switch' statement will be removed at compile-time. */ \ +- switch ((unsigned int) (n)) \ +- { \ +- case 15: \ +- __u->__ui = __c * 0x01010101; \ +- __u = __extension__ ((void *) __u + 4); \ +- case 11: \ +- __u->__ui = __c * 0x01010101; \ +- __u = __extension__ ((void *) __u + 4); \ +- case 7: \ +- __u->__ui = __c * 0x01010101; \ +- __u = __extension__ ((void *) __u + 4); \ +- case 3: \ +- __u->__usi = (unsigned short int) __c * 0x0101; \ +- __u = __extension__ ((void *) __u + 2); \ +- __u->__uc = (unsigned char) __c; \ +- break; \ +- \ +- case 14: \ +- __u->__ui = __c * 0x01010101; \ +- __u = __extension__ ((void *) __u + 4); \ +- case 10: \ +- __u->__ui = __c * 0x01010101; \ +- __u = __extension__ ((void *) __u + 4); \ +- case 6: \ +- __u->__ui = __c * 0x01010101; \ +- __u = __extension__ ((void *) __u + 4); \ +- case 2: \ +- __u->__usi = (unsigned short int) __c * 0x0101; \ +- break; \ +- \ +- case 13: \ +- __u->__ui = __c * 0x01010101; \ +- __u = __extension__ ((void *) __u + 4); \ +- case 9: \ +- __u->__ui = __c * 0x01010101; \ +- __u = __extension__ ((void *) __u + 4); \ +- case 5: \ +- __u->__ui = __c * 0x01010101; \ +- __u = __extension__ ((void *) __u + 4); \ +- case 1: \ +- __u->__uc = (unsigned char) __c; \ +- break; \ +- \ +- case 16: \ +- __u->__ui = __c * 0x01010101; \ +- __u = __extension__ ((void *) __u + 4); \ +- case 12: \ +- __u->__ui = __c * 0x01010101; \ +- __u = __extension__ ((void *) __u + 4); \ +- case 8: \ +- __u->__ui = __c * 0x01010101; \ +- __u = __extension__ ((void *) __u + 4); \ +- case 4: \ +- __u->__ui = __c * 0x01010101; \ +- case 0: \ +- break; \ +- } \ +- \ +- __s; }) +-# else +-# define memset(s, c, n) \ +- (__extension__ (__builtin_constant_p (c) && (c) == '\0' \ +- ? ({ void *__s = (s); __bzero (__s, n); __s; }) \ +- : memset (s, c, n))) +-# endif +-# endif +- +-/* GCC < 3.0 optimizes memset(s, 0, n) but not bzero(s, n). +- The optimization is broken before EGCS 1.1. +- GCC 3.0+ has __builtin_bzero as well, but at least till GCC 3.4 +- if it decides to call the library function, it calls memset +- and not bzero. */ +-# if __GNUC_PREREQ (2, 91) +-# define __bzero(s, n) __builtin_memset (s, '\0', n) +-# endif +- ++# define __bzero(s, n) __builtin_memset (s, '\0', n) + #endif + +- +-/* Copy N bytes from SRC to DEST, returning pointer to byte following the +- last copied. */ +-#ifdef __USE_GNU +-# if !defined _HAVE_STRING_ARCH_mempcpy || defined _FORCE_INLINES +-# ifndef _HAVE_STRING_ARCH_mempcpy +-# if __GNUC_PREREQ (3, 4) +-# define __mempcpy(dest, src, n) __builtin_mempcpy (dest, src, n) +-# elif __GNUC_PREREQ (3, 0) +-# define __mempcpy(dest, src, n) \ +- (__extension__ (__builtin_constant_p (src) && __builtin_constant_p (n) \ +- && __string2_1bptr_p (src) && n <= 8 \ +- ? __builtin_memcpy (dest, src, n) + (n) \ +- : __mempcpy (dest, src, n))) +-# else +-# define __mempcpy(dest, src, n) \ +- (__extension__ (__builtin_constant_p (src) && __builtin_constant_p (n) \ +- && __string2_1bptr_p (src) && n <= 8 \ +- ? __mempcpy_small (dest, __mempcpy_args (src), n) \ +- : __mempcpy (dest, src, n))) +-# endif +-/* In glibc we use this function frequently but for namespace reasons +- we have to use the name `__mempcpy'. */ +-# define mempcpy(dest, src, n) __mempcpy (dest, src, n) +-# endif +- +-# if !__GNUC_PREREQ (3, 0) || defined _FORCE_INLINES +-# if _STRING_ARCH_unaligned +-# ifndef _FORCE_INLINES +-# define __mempcpy_args(src) \ +- ((const char *) (src))[0], ((const char *) (src))[2], \ +- ((const char *) (src))[4], ((const char *) (src))[6], \ +- __extension__ __STRING2_SMALL_GET16 (src, 0), \ +- __extension__ __STRING2_SMALL_GET16 (src, 4), \ +- __extension__ __STRING2_SMALL_GET32 (src, 0), \ +- __extension__ __STRING2_SMALL_GET32 (src, 4) +-# endif +-__STRING_INLINE void *__mempcpy_small (void *, char, char, char, char, +- __uint16_t, __uint16_t, __uint32_t, +- __uint32_t, size_t); ++#if defined _FORCE_INLINES ++# if _STRING_ARCH_unaligned + __STRING_INLINE void * + __mempcpy_small (void *__dest1, + char __src0_1, char __src2_1, char __src4_1, char __src6_1, +@@ -298,44 +139,7 @@ __mempcpy_small (void *__dest1, + } + return (void *) __u; + } +-# else +-# ifndef _FORCE_INLINES +-# define __mempcpy_args(src) \ +- ((const char *) (src))[0], \ +- __extension__ ((__STRING2_COPY_ARR2) \ +- { { ((const char *) (src))[0], ((const char *) (src))[1] } }), \ +- __extension__ ((__STRING2_COPY_ARR3) \ +- { { ((const char *) (src))[0], ((const char *) (src))[1], \ +- ((const char *) (src))[2] } }), \ +- __extension__ ((__STRING2_COPY_ARR4) \ +- { { ((const char *) (src))[0], ((const char *) (src))[1], \ +- ((const char *) (src))[2], ((const char *) (src))[3] } }), \ +- __extension__ ((__STRING2_COPY_ARR5) \ +- { { ((const char *) (src))[0], ((const char *) (src))[1], \ +- ((const char *) (src))[2], ((const char *) (src))[3], \ +- ((const char *) (src))[4] } }), \ +- __extension__ ((__STRING2_COPY_ARR6) \ +- { { ((const char *) (src))[0], ((const char *) (src))[1], \ +- ((const char *) (src))[2], ((const char *) (src))[3], \ +- ((const char *) (src))[4], ((const char *) (src))[5] } }), \ +- __extension__ ((__STRING2_COPY_ARR7) \ +- { { ((const char *) (src))[0], ((const char *) (src))[1], \ +- ((const char *) (src))[2], ((const char *) (src))[3], \ +- ((const char *) (src))[4], ((const char *) (src))[5], \ +- ((const char *) (src))[6] } }), \ +- __extension__ ((__STRING2_COPY_ARR8) \ +- { { ((const char *) (src))[0], ((const char *) (src))[1], \ +- ((const char *) (src))[2], ((const char *) (src))[3], \ +- ((const char *) (src))[4], ((const char *) (src))[5], \ +- ((const char *) (src))[6], ((const char *) (src))[7] } }) +-# endif +-__STRING_INLINE void *__mempcpy_small (void *, char, __STRING2_COPY_ARR2, +- __STRING2_COPY_ARR3, +- __STRING2_COPY_ARR4, +- __STRING2_COPY_ARR5, +- __STRING2_COPY_ARR6, +- __STRING2_COPY_ARR7, +- __STRING2_COPY_ARR8, size_t); ++# else + __STRING_INLINE void * + __mempcpy_small (void *__dest, char __src1, + __STRING2_COPY_ARR2 __src2, __STRING2_COPY_ARR3 __src3, +@@ -382,8 +186,6 @@ __mempcpy_small (void *__dest, char __src1, + } + return __extension__ ((void *) __u + __srclen); + } +-# endif +-# endif + # endif + #endif + +@@ -391,44 +193,17 @@ __mempcpy_small (void *__dest, char __src1, + /* Return pointer to C in S. */ + #ifndef _HAVE_STRING_ARCH_strchr + extern void *__rawmemchr (const void *__s, int __c); +-# if __GNUC_PREREQ (3, 2) + # define strchr(s, c) \ + (__extension__ (__builtin_constant_p (c) && !__builtin_constant_p (s) \ + && (c) == '\0' \ + ? (char *) __rawmemchr (s, c) \ + : __builtin_strchr (s, c))) +-# else +-# define strchr(s, c) \ +- (__extension__ (__builtin_constant_p (c) && (c) == '\0' \ +- ? (char *) __rawmemchr (s, c) \ +- : strchr (s, c))) +-# endif + #endif + + + /* Copy SRC to DEST. */ +-#if (!defined _HAVE_STRING_ARCH_strcpy && !__GNUC_PREREQ (3, 0)) \ +- || defined _FORCE_INLINES +-# if !defined _HAVE_STRING_ARCH_strcpy && !__GNUC_PREREQ (3, 0) +-# define strcpy(dest, src) \ +- (__extension__ (__builtin_constant_p (src) \ +- ? (__string2_1bptr_p (src) && strlen (src) + 1 <= 8 \ +- ? __strcpy_small (dest, __strcpy_args (src), \ +- strlen (src) + 1) \ +- : (char *) memcpy (dest, src, strlen (src) + 1)) \ +- : strcpy (dest, src))) +-# endif +- ++#if defined _FORCE_INLINES + # if _STRING_ARCH_unaligned +-# ifndef _FORCE_INLINES +-# define __strcpy_args(src) \ +- __extension__ __STRING2_SMALL_GET16 (src, 0), \ +- __extension__ __STRING2_SMALL_GET16 (src, 4), \ +- __extension__ __STRING2_SMALL_GET32 (src, 0), \ +- __extension__ __STRING2_SMALL_GET32 (src, 4) +-# endif +-__STRING_INLINE char *__strcpy_small (char *, __uint16_t, __uint16_t, +- __uint32_t, __uint32_t, size_t); + __STRING_INLINE char * + __strcpy_small (char *__dest, + __uint16_t __src0_2, __uint16_t __src4_2, +@@ -482,42 +257,6 @@ __strcpy_small (char *__dest, + return __dest; + } + # else +-# ifndef _FORCE_INLINES +-# define __strcpy_args(src) \ +- __extension__ ((__STRING2_COPY_ARR2) \ +- { { ((const char *) (src))[0], '\0' } }), \ +- __extension__ ((__STRING2_COPY_ARR3) \ +- { { ((const char *) (src))[0], ((const char *) (src))[1], \ +- '\0' } }), \ +- __extension__ ((__STRING2_COPY_ARR4) \ +- { { ((const char *) (src))[0], ((const char *) (src))[1], \ +- ((const char *) (src))[2], '\0' } }), \ +- __extension__ ((__STRING2_COPY_ARR5) \ +- { { ((const char *) (src))[0], ((const char *) (src))[1], \ +- ((const char *) (src))[2], ((const char *) (src))[3], \ +- '\0' } }), \ +- __extension__ ((__STRING2_COPY_ARR6) \ +- { { ((const char *) (src))[0], ((const char *) (src))[1], \ +- ((const char *) (src))[2], ((const char *) (src))[3], \ +- ((const char *) (src))[4], '\0' } }), \ +- __extension__ ((__STRING2_COPY_ARR7) \ +- { { ((const char *) (src))[0], ((const char *) (src))[1], \ +- ((const char *) (src))[2], ((const char *) (src))[3], \ +- ((const char *) (src))[4], ((const char *) (src))[5], \ +- '\0' } }), \ +- __extension__ ((__STRING2_COPY_ARR8) \ +- { { ((const char *) (src))[0], ((const char *) (src))[1], \ +- ((const char *) (src))[2], ((const char *) (src))[3], \ +- ((const char *) (src))[4], ((const char *) (src))[5], \ +- ((const char *) (src))[6], '\0' } }) +-# endif +-__STRING_INLINE char *__strcpy_small (char *, __STRING2_COPY_ARR2, +- __STRING2_COPY_ARR3, +- __STRING2_COPY_ARR4, +- __STRING2_COPY_ARR5, +- __STRING2_COPY_ARR6, +- __STRING2_COPY_ARR7, +- __STRING2_COPY_ARR8, size_t); + __STRING_INLINE char * + __strcpy_small (char *__dest, + __STRING2_COPY_ARR2 __src2, __STRING2_COPY_ARR3 __src3, +@@ -570,44 +309,15 @@ __strcpy_small (char *__dest, + + /* Copy SRC to DEST, returning pointer to final NUL byte. */ + #ifdef __USE_GNU +-# if !defined _HAVE_STRING_ARCH_stpcpy || defined _FORCE_INLINES +-# ifndef _HAVE_STRING_ARCH_stpcpy +-# if __GNUC_PREREQ (3, 4) +-# define __stpcpy(dest, src) __builtin_stpcpy (dest, src) +-# elif __GNUC_PREREQ (3, 0) +-# define __stpcpy(dest, src) \ +- (__extension__ (__builtin_constant_p (src) \ +- ? (__string2_1bptr_p (src) && strlen (src) + 1 <= 8 \ +- ? __builtin_strcpy (dest, src) + strlen (src) \ +- : ((char *) (__mempcpy) (dest, src, strlen (src) + 1) \ +- - 1)) \ +- : __stpcpy (dest, src))) +-# else +-# define __stpcpy(dest, src) \ +- (__extension__ (__builtin_constant_p (src) \ +- ? (__string2_1bptr_p (src) && strlen (src) + 1 <= 8 \ +- ? __stpcpy_small (dest, __stpcpy_args (src), \ +- strlen (src) + 1) \ +- : ((char *) (__mempcpy) (dest, src, strlen (src) + 1) \ +- - 1)) \ +- : __stpcpy (dest, src))) +-# endif ++# ifndef _HAVE_STRING_ARCH_stpcpy ++# define __stpcpy(dest, src) __builtin_stpcpy (dest, src) + /* In glibc we use this function frequently but for namespace reasons + we have to use the name `__stpcpy'. */ +-# define stpcpy(dest, src) __stpcpy (dest, src) +-# endif ++# define stpcpy(dest, src) __stpcpy (dest, src) ++# endif + +-# if !__GNUC_PREREQ (3, 0) || defined _FORCE_INLINES +-# if _STRING_ARCH_unaligned +-# ifndef _FORCE_INLINES +-# define __stpcpy_args(src) \ +- __extension__ __STRING2_SMALL_GET16 (src, 0), \ +- __extension__ __STRING2_SMALL_GET16 (src, 4), \ +- __extension__ __STRING2_SMALL_GET32 (src, 0), \ +- __extension__ __STRING2_SMALL_GET32 (src, 4) +-# endif +-__STRING_INLINE char *__stpcpy_small (char *, __uint16_t, __uint16_t, +- __uint32_t, __uint32_t, size_t); ++# ifndef _FORCE_INLINES ++# if _STRING_ARCH_unaligned + __STRING_INLINE char * + __stpcpy_small (char *__dest, + __uint16_t __src0_2, __uint16_t __src4_2, +@@ -665,43 +375,7 @@ __stpcpy_small (char *__dest, + } + return &__u->__c; + } +-# else +-# ifndef _FORCE_INLINES +-# define __stpcpy_args(src) \ +- __extension__ ((__STRING2_COPY_ARR2) \ +- { { ((const char *) (src))[0], '\0' } }), \ +- __extension__ ((__STRING2_COPY_ARR3) \ +- { { ((const char *) (src))[0], ((const char *) (src))[1], \ +- '\0' } }), \ +- __extension__ ((__STRING2_COPY_ARR4) \ +- { { ((const char *) (src))[0], ((const char *) (src))[1], \ +- ((const char *) (src))[2], '\0' } }), \ +- __extension__ ((__STRING2_COPY_ARR5) \ +- { { ((const char *) (src))[0], ((const char *) (src))[1], \ +- ((const char *) (src))[2], ((const char *) (src))[3], \ +- '\0' } }), \ +- __extension__ ((__STRING2_COPY_ARR6) \ +- { { ((const char *) (src))[0], ((const char *) (src))[1], \ +- ((const char *) (src))[2], ((const char *) (src))[3], \ +- ((const char *) (src))[4], '\0' } }), \ +- __extension__ ((__STRING2_COPY_ARR7) \ +- { { ((const char *) (src))[0], ((const char *) (src))[1], \ +- ((const char *) (src))[2], ((const char *) (src))[3], \ +- ((const char *) (src))[4], ((const char *) (src))[5], \ +- '\0' } }), \ +- __extension__ ((__STRING2_COPY_ARR8) \ +- { { ((const char *) (src))[0], ((const char *) (src))[1], \ +- ((const char *) (src))[2], ((const char *) (src))[3], \ +- ((const char *) (src))[4], ((const char *) (src))[5], \ +- ((const char *) (src))[6], '\0' } }) +-# endif +-__STRING_INLINE char *__stpcpy_small (char *, __STRING2_COPY_ARR2, +- __STRING2_COPY_ARR3, +- __STRING2_COPY_ARR4, +- __STRING2_COPY_ARR5, +- __STRING2_COPY_ARR6, +- __STRING2_COPY_ARR7, +- __STRING2_COPY_ARR8, size_t); ++# else + __STRING_INLINE char * + __stpcpy_small (char *__dest, + __STRING2_COPY_ARR2 __src2, __STRING2_COPY_ARR3 __src3, +@@ -748,27 +422,11 @@ __stpcpy_small (char *__dest, + } + return __dest + __srclen - 1; + } +-# endif + # endif + # endif + #endif + + +-/* Copy no more than N characters of SRC to DEST. */ +-#ifndef _HAVE_STRING_ARCH_strncpy +-# if __GNUC_PREREQ (3, 2) +-# define strncpy(dest, src, n) __builtin_strncpy (dest, src, n) +-# else +-# define strncpy(dest, src, n) \ +- (__extension__ (__builtin_constant_p (src) && __builtin_constant_p (n) \ +- ? (strlen (src) + 1 >= ((size_t) (n)) \ +- ? (char *) memcpy (dest, src, n) \ +- : strncpy (dest, src, n)) \ +- : strncpy (dest, src, n))) +-# endif +-#endif +- +- + /* Append no more than N characters from SRC onto DEST. */ + #ifndef _HAVE_STRING_ARCH_strncat + # ifdef _USE_STRING_ARCH_strchr +@@ -780,380 +438,29 @@ __stpcpy_small (char *__dest, + : (*((char *) __mempcpy (strchr (__dest, '\0'), \ + src, n)) = '\0', __dest)) \ + : strncat (dest, src, n); })) +-# elif __GNUC_PREREQ (3, 2) +-# define strncat(dest, src, n) __builtin_strncat (dest, src, n) + # else +-# define strncat(dest, src, n) \ +- (__extension__ (__builtin_constant_p (src) && __builtin_constant_p (n) \ +- ? (strlen (src) < ((size_t) (n)) \ +- ? strcat (dest, src) \ +- : strncat (dest, src, n)) \ +- : strncat (dest, src, n))) +-# endif +-#endif +- +- +-/* Compare characters of S1 and S2. */ +-#ifndef _HAVE_STRING_ARCH_strcmp +-# if __GNUC_PREREQ (3, 2) +-# define strcmp(s1, s2) \ +- __extension__ \ +- ({ size_t __s1_len, __s2_len; \ +- (__builtin_constant_p (s1) && __builtin_constant_p (s2) \ +- && (__s1_len = strlen (s1), __s2_len = strlen (s2), \ +- (!__string2_1bptr_p (s1) || __s1_len >= 4) \ +- && (!__string2_1bptr_p (s2) || __s2_len >= 4)) \ +- ? __builtin_strcmp (s1, s2) \ +- : (__builtin_constant_p (s1) && __string2_1bptr_p (s1) \ +- && (__s1_len = strlen (s1), __s1_len < 4) \ +- ? (__builtin_constant_p (s2) && __string2_1bptr_p (s2) \ +- ? __builtin_strcmp (s1, s2) \ +- : __strcmp_cg (s1, s2, __s1_len)) \ +- : (__builtin_constant_p (s2) && __string2_1bptr_p (s2) \ +- && (__s2_len = strlen (s2), __s2_len < 4) \ +- ? (__builtin_constant_p (s1) && __string2_1bptr_p (s1) \ +- ? __builtin_strcmp (s1, s2) \ +- : __strcmp_gc (s1, s2, __s2_len)) \ +- : __builtin_strcmp (s1, s2)))); }) +-# else +-# define strcmp(s1, s2) \ +- __extension__ \ +- ({ size_t __s1_len, __s2_len; \ +- (__builtin_constant_p (s1) && __builtin_constant_p (s2) \ +- && (__s1_len = strlen (s1), __s2_len = strlen (s2), \ +- (!__string2_1bptr_p (s1) || __s1_len >= 4) \ +- && (!__string2_1bptr_p (s2) || __s2_len >= 4)) \ +- ? memcmp ((const char *) (s1), (const char *) (s2), \ +- (__s1_len < __s2_len ? __s1_len : __s2_len) + 1) \ +- : (__builtin_constant_p (s1) && __string2_1bptr_p (s1) \ +- && (__s1_len = strlen (s1), __s1_len < 4) \ +- ? (__builtin_constant_p (s2) && __string2_1bptr_p (s2) \ +- ? __strcmp_cc (s1, s2, __s1_len) \ +- : __strcmp_cg (s1, s2, __s1_len)) \ +- : (__builtin_constant_p (s2) && __string2_1bptr_p (s2) \ +- && (__s2_len = strlen (s2), __s2_len < 4) \ +- ? (__builtin_constant_p (s1) && __string2_1bptr_p (s1) \ +- ? __strcmp_cc (s1, s2, __s2_len) \ +- : __strcmp_gc (s1, s2, __s2_len)) \ +- : strcmp (s1, s2)))); }) ++# define strncat(dest, src, n) __builtin_strncat (dest, src, n) + # endif +- +-# define __strcmp_cc(s1, s2, l) \ +- (__extension__ ({ int __result = \ +- (((const unsigned char *) (const char *) (s1))[0] \ +- - ((const unsigned char *) (const char *)(s2))[0]); \ +- if (l > 0 && __result == 0) \ +- { \ +- __result = (((const unsigned char *) \ +- (const char *) (s1))[1] \ +- - ((const unsigned char *) \ +- (const char *) (s2))[1]); \ +- if (l > 1 && __result == 0) \ +- { \ +- __result = \ +- (((const unsigned char *) \ +- (const char *) (s1))[2] \ +- - ((const unsigned char *) \ +- (const char *) (s2))[2]); \ +- if (l > 2 && __result == 0) \ +- __result = \ +- (((const unsigned char *) \ +- (const char *) (s1))[3] \ +- - ((const unsigned char *) \ +- (const char *) (s2))[3]); \ +- } \ +- } \ +- __result; })) +- +-# define __strcmp_cg(s1, s2, l1) \ +- (__extension__ ({ const unsigned char *__s2 = \ +- (const unsigned char *) (const char *) (s2); \ +- int __result = \ +- (((const unsigned char *) (const char *) (s1))[0] \ +- - __s2[0]); \ +- if (l1 > 0 && __result == 0) \ +- { \ +- __result = (((const unsigned char *) \ +- (const char *) (s1))[1] - __s2[1]); \ +- if (l1 > 1 && __result == 0) \ +- { \ +- __result = (((const unsigned char *) \ +- (const char *) (s1))[2] - __s2[2]); \ +- if (l1 > 2 && __result == 0) \ +- __result = (((const unsigned char *) \ +- (const char *) (s1))[3] \ +- - __s2[3]); \ +- } \ +- } \ +- __result; })) +- +-# define __strcmp_gc(s1, s2, l2) \ +- (__extension__ ({ const unsigned char *__s1 = \ +- (const unsigned char *) (const char *) (s1); \ +- register int __result = \ +- __s1[0] - ((const unsigned char *) \ +- (const char *) (s2))[0]; \ +- if (l2 > 0 && __result == 0) \ +- { \ +- __result = (__s1[1] \ +- - ((const unsigned char *) \ +- (const char *) (s2))[1]); \ +- if (l2 > 1 && __result == 0) \ +- { \ +- __result = \ +- (__s1[2] - ((const unsigned char *) \ +- (const char *) (s2))[2]); \ +- if (l2 > 2 && __result == 0) \ +- __result = \ +- (__s1[3] \ +- - ((const unsigned char *) \ +- (const char *) (s2))[3]); \ +- } \ +- } \ +- __result; })) +-#endif +- +- +-/* Compare N characters of S1 and S2. */ +-#ifndef _HAVE_STRING_ARCH_strncmp +-# define strncmp(s1, s2, n) \ +- (__extension__ (__builtin_constant_p (n) \ +- && ((__builtin_constant_p (s1) \ +- && strlen (s1) < ((size_t) (n))) \ +- || (__builtin_constant_p (s2) \ +- && strlen (s2) < ((size_t) (n)))) \ +- ? strcmp (s1, s2) : strncmp (s1, s2, n))) + #endif + + + /* Return the length of the initial segment of S which + consists entirely of characters not in REJECT. */ +-#if !defined _HAVE_STRING_ARCH_strcspn || defined _FORCE_INLINES +-# ifndef _HAVE_STRING_ARCH_strcspn +-# if __GNUC_PREREQ (3, 2) +-# define strcspn(s, reject) \ +- __extension__ \ +- ({ char __r0, __r1, __r2; \ +- (__builtin_constant_p (reject) && __string2_1bptr_p (reject) \ +- ? ((__builtin_constant_p (s) && __string2_1bptr_p (s)) \ +- ? __builtin_strcspn (s, reject) \ +- : ((__r0 = ((const char *) (reject))[0], __r0 == '\0') \ +- ? strlen (s) \ +- : ((__r1 = ((const char *) (reject))[1], __r1 == '\0') \ +- ? __strcspn_c1 (s, __r0) \ +- : ((__r2 = ((const char *) (reject))[2], __r2 == '\0') \ +- ? __strcspn_c2 (s, __r0, __r1) \ +- : (((const char *) (reject))[3] == '\0' \ +- ? __strcspn_c3 (s, __r0, __r1, __r2) \ +- : __builtin_strcspn (s, reject)))))) \ +- : __builtin_strcspn (s, reject)); }) +-# else +-# define strcspn(s, reject) \ +- __extension__ \ +- ({ char __r0, __r1, __r2; \ +- (__builtin_constant_p (reject) && __string2_1bptr_p (reject) \ +- ? ((__r0 = ((const char *) (reject))[0], __r0 == '\0') \ +- ? strlen (s) \ +- : ((__r1 = ((const char *) (reject))[1], __r1 == '\0') \ +- ? __strcspn_c1 (s, __r0) \ +- : ((__r2 = ((const char *) (reject))[2], __r2 == '\0') \ +- ? __strcspn_c2 (s, __r0, __r1) \ +- : (((const char *) (reject))[3] == '\0' \ +- ? __strcspn_c3 (s, __r0, __r1, __r2) \ +- : strcspn (s, reject))))) \ +- : strcspn (s, reject)); }) +-# endif +-# endif +- +-__STRING_INLINE size_t __strcspn_c1 (const char *__s, int __reject); +-__STRING_INLINE size_t +-__strcspn_c1 (const char *__s, int __reject) +-{ +- size_t __result = 0; +- while (__s[__result] != '\0' && __s[__result] != __reject) +- ++__result; +- return __result; +-} +- +-__STRING_INLINE size_t __strcspn_c2 (const char *__s, int __reject1, +- int __reject2); +-__STRING_INLINE size_t +-__strcspn_c2 (const char *__s, int __reject1, int __reject2) +-{ +- size_t __result = 0; +- while (__s[__result] != '\0' && __s[__result] != __reject1 +- && __s[__result] != __reject2) +- ++__result; +- return __result; +-} +- +-__STRING_INLINE size_t __strcspn_c3 (const char *__s, int __reject1, +- int __reject2, int __reject3); +-__STRING_INLINE size_t +-__strcspn_c3 (const char *__s, int __reject1, int __reject2, +- int __reject3) +-{ +- size_t __result = 0; +- while (__s[__result] != '\0' && __s[__result] != __reject1 +- && __s[__result] != __reject2 && __s[__result] != __reject3) +- ++__result; +- return __result; +-} ++#ifndef _HAVE_STRING_ARCH_strcspn ++# define strcspn(s, reject) __builtin_strcspn (s, reject) + #endif + + + /* Return the length of the initial segment of S which + consists entirely of characters in ACCEPT. */ +-#if !defined _HAVE_STRING_ARCH_strspn || defined _FORCE_INLINES +-# ifndef _HAVE_STRING_ARCH_strspn +-# if __GNUC_PREREQ (3, 2) +-# define strspn(s, accept) \ +- __extension__ \ +- ({ char __a0, __a1, __a2; \ +- (__builtin_constant_p (accept) && __string2_1bptr_p (accept) \ +- ? ((__builtin_constant_p (s) && __string2_1bptr_p (s)) \ +- ? __builtin_strspn (s, accept) \ +- : ((__a0 = ((const char *) (accept))[0], __a0 == '\0') \ +- ? ((void) (s), (size_t) 0) \ +- : ((__a1 = ((const char *) (accept))[1], __a1 == '\0') \ +- ? __strspn_c1 (s, __a0) \ +- : ((__a2 = ((const char *) (accept))[2], __a2 == '\0') \ +- ? __strspn_c2 (s, __a0, __a1) \ +- : (((const char *) (accept))[3] == '\0' \ +- ? __strspn_c3 (s, __a0, __a1, __a2) \ +- : __builtin_strspn (s, accept)))))) \ +- : __builtin_strspn (s, accept)); }) +-# else +-# define strspn(s, accept) \ +- __extension__ \ +- ({ char __a0, __a1, __a2; \ +- (__builtin_constant_p (accept) && __string2_1bptr_p (accept) \ +- ? ((__a0 = ((const char *) (accept))[0], __a0 == '\0') \ +- ? ((void) (s), (size_t) 0) \ +- : ((__a1 = ((const char *) (accept))[1], __a1 == '\0') \ +- ? __strspn_c1 (s, __a0) \ +- : ((__a2 = ((const char *) (accept))[2], __a2 == '\0') \ +- ? __strspn_c2 (s, __a0, __a1) \ +- : (((const char *) (accept))[3] == '\0' \ +- ? __strspn_c3 (s, __a0, __a1, __a2) \ +- : strspn (s, accept))))) \ +- : strspn (s, accept)); }) +-# endif +-# endif +- +-__STRING_INLINE size_t __strspn_c1 (const char *__s, int __accept); +-__STRING_INLINE size_t +-__strspn_c1 (const char *__s, int __accept) +-{ +- size_t __result = 0; +- /* Please note that __accept never can be '\0'. */ +- while (__s[__result] == __accept) +- ++__result; +- return __result; +-} +- +-__STRING_INLINE size_t __strspn_c2 (const char *__s, int __accept1, +- int __accept2); +-__STRING_INLINE size_t +-__strspn_c2 (const char *__s, int __accept1, int __accept2) +-{ +- size_t __result = 0; +- /* Please note that __accept1 and __accept2 never can be '\0'. */ +- while (__s[__result] == __accept1 || __s[__result] == __accept2) +- ++__result; +- return __result; +-} +- +-__STRING_INLINE size_t __strspn_c3 (const char *__s, int __accept1, +- int __accept2, int __accept3); +-__STRING_INLINE size_t +-__strspn_c3 (const char *__s, int __accept1, int __accept2, int __accept3) +-{ +- size_t __result = 0; +- /* Please note that __accept1 to __accept3 never can be '\0'. */ +- while (__s[__result] == __accept1 || __s[__result] == __accept2 +- || __s[__result] == __accept3) +- ++__result; +- return __result; +-} ++#ifndef _HAVE_STRING_ARCH_strspn ++# define strspn(s, accept) __builtin_strspn (s, accept) + #endif + + + /* Find the first occurrence in S of any character in ACCEPT. */ +-#if !defined _HAVE_STRING_ARCH_strpbrk || defined _FORCE_INLINES +-# ifndef _HAVE_STRING_ARCH_strpbrk +-# if __GNUC_PREREQ (3, 2) +-# define strpbrk(s, accept) \ +- __extension__ \ +- ({ char __a0, __a1, __a2; \ +- (__builtin_constant_p (accept) && __string2_1bptr_p (accept) \ +- ? ((__builtin_constant_p (s) && __string2_1bptr_p (s)) \ +- ? __builtin_strpbrk (s, accept) \ +- : ((__a0 = ((const char *) (accept))[0], __a0 == '\0') \ +- ? ((void) (s), (char *) NULL) \ +- : ((__a1 = ((const char *) (accept))[1], __a1 == '\0') \ +- ? __builtin_strchr (s, __a0) \ +- : ((__a2 = ((const char *) (accept))[2], __a2 == '\0') \ +- ? __strpbrk_c2 (s, __a0, __a1) \ +- : (((const char *) (accept))[3] == '\0' \ +- ? __strpbrk_c3 (s, __a0, __a1, __a2) \ +- : __builtin_strpbrk (s, accept)))))) \ +- : __builtin_strpbrk (s, accept)); }) +-# else +-# define strpbrk(s, accept) \ +- __extension__ \ +- ({ char __a0, __a1, __a2; \ +- (__builtin_constant_p (accept) && __string2_1bptr_p (accept) \ +- ? ((__a0 = ((const char *) (accept))[0], __a0 == '\0') \ +- ? ((void) (s), (char *) NULL) \ +- : ((__a1 = ((const char *) (accept))[1], __a1 == '\0') \ +- ? strchr (s, __a0) \ +- : ((__a2 = ((const char *) (accept))[2], __a2 == '\0') \ +- ? __strpbrk_c2 (s, __a0, __a1) \ +- : (((const char *) (accept))[3] == '\0' \ +- ? __strpbrk_c3 (s, __a0, __a1, __a2) \ +- : strpbrk (s, accept))))) \ +- : strpbrk (s, accept)); }) +-# endif +-# endif +- +-__STRING_INLINE char *__strpbrk_c2 (const char *__s, int __accept1, +- int __accept2); +-__STRING_INLINE char * +-__strpbrk_c2 (const char *__s, int __accept1, int __accept2) +-{ +- /* Please note that __accept1 and __accept2 never can be '\0'. */ +- while (*__s != '\0' && *__s != __accept1 && *__s != __accept2) +- ++__s; +- return *__s == '\0' ? NULL : (char *) (size_t) __s; +-} +- +-__STRING_INLINE char *__strpbrk_c3 (const char *__s, int __accept1, +- int __accept2, int __accept3); +-__STRING_INLINE char * +-__strpbrk_c3 (const char *__s, int __accept1, int __accept2, int __accept3) +-{ +- /* Please note that __accept1 to __accept3 never can be '\0'. */ +- while (*__s != '\0' && *__s != __accept1 && *__s != __accept2 +- && *__s != __accept3) +- ++__s; +- return *__s == '\0' ? NULL : (char *) (size_t) __s; +-} +-#endif +- +- +-/* Find the first occurrence of NEEDLE in HAYSTACK. Newer gcc versions +- do this itself. */ +-#if !defined _HAVE_STRING_ARCH_strstr && !__GNUC_PREREQ (2, 97) +-# define strstr(haystack, needle) \ +- (__extension__ (__builtin_constant_p (needle) && __string2_1bptr_p (needle) \ +- ? (((const char *) (needle))[0] == '\0' \ +- ? (char *) (size_t) (haystack) \ +- : (((const char *) (needle))[1] == '\0' \ +- ? strchr (haystack, \ +- ((const char *) (needle))[0]) \ +- : strstr (haystack, needle))) \ +- : strstr (haystack, needle))) ++#ifndef _HAVE_STRING_ARCH_strpbrk ++# define strpbrk(s, accept) __builtin_strpbrk (s, accept) + #endif + + +diff --git a/string/strncat.c b/string/strncat.c +index dcfb04d..a9cb913 100644 +--- a/string/strncat.c ++++ b/string/strncat.c +@@ -1,4 +1,4 @@ +-/* Copyright (C) 1991,1997,2011 Free Software Foundation, Inc. ++/* Copyright (C) 1991-2022 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or +@@ -13,14 +13,10 @@ + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see +- <http://www.gnu.org/licenses/>. */ ++ <https://www.gnu.org/licenses/>. */ + + #include <string.h> + +-#ifdef _LIBC +-# include <memcopy.h> +-#endif +- + #ifndef STRNCAT + # undef strncat + # define STRNCAT strncat +@@ -29,54 +25,16 @@ + char * + STRNCAT (char *s1, const char *s2, size_t n) + { +- char c; + char *s = s1; + + /* Find the end of S1. */ +- do +- c = *s1++; +- while (c != '\0'); +- +- /* Make S1 point before next character, so we can increment +- it while memory is read (wins on pipelined cpus). */ +- s1 -= 2; ++ s1 += strlen (s1); + +- if (n >= 4) +- { +- size_t n4 = n >> 2; +- do +- { +- c = *s2++; +- *++s1 = c; +- if (c == '\0') +- return s; +- c = *s2++; +- *++s1 = c; +- if (c == '\0') +- return s; +- c = *s2++; +- *++s1 = c; +- if (c == '\0') +- return s; +- c = *s2++; +- *++s1 = c; +- if (c == '\0') +- return s; +- } while (--n4 > 0); +- n &= 3; +- } ++ size_t ss = __strnlen (s2, n); + +- while (n > 0) +- { +- c = *s2++; +- *++s1 = c; +- if (c == '\0') +- return s; +- n--; +- } +- +- if (c != '\0') +- *++s1 = '\0'; ++ s1[ss] = '\0'; ++ memcpy (s1, s2, ss); + + return s; + } ++ +diff --git a/string/strncpy.c b/string/strncpy.c +index 19d501e..83fb610 100644 +--- a/string/strncpy.c ++++ b/string/strncpy.c +@@ -1,4 +1,4 @@ +-/* Copyright (C) 1991, 1997, 2003 Free Software Foundation, Inc. ++/* Copyright (C) 1991-2022 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or +@@ -13,75 +13,22 @@ + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see +- <http://www.gnu.org/licenses/>. */ ++ <https://www.gnu.org/licenses/>. */ + + #include <string.h> +-#include <memcopy.h> + + #undef strncpy + + #ifndef STRNCPY +-#define STRNCPY strncpy ++ #define STRNCPY strncpy + #endif + + char * + STRNCPY (char *s1, const char *s2, size_t n) + { +- char c; +- char *s = s1; +- +- --s1; +- +- if (n >= 4) +- { +- size_t n4 = n >> 2; +- +- for (;;) +- { +- c = *s2++; +- *++s1 = c; +- if (c == '\0') +- break; +- c = *s2++; +- *++s1 = c; +- if (c == '\0') +- break; +- c = *s2++; +- *++s1 = c; +- if (c == '\0') +- break; +- c = *s2++; +- *++s1 = c; +- if (c == '\0') +- break; +- if (--n4 == 0) +- goto last_chars; +- } +- n = n - (s1 - s) - 1; +- if (n == 0) +- return s; +- goto zero_fill; +- } +- +- last_chars: +- n &= 3; +- if (n == 0) +- return s; +- +- do +- { +- c = *s2++; +- *++s1 = c; +- if (--n == 0) +- return s; +- } +- while (c != '\0'); +- +- zero_fill: +- do +- *++s1 = '\0'; +- while (--n > 0); +- +- return s; ++ size_t size = __strnlen (s2, n); ++ if (size != n) ++ memset (s1 + size, '\0', n - size); ++ return memcpy (s1, s2, size); + } + libc_hidden_builtin_def (strncpy) +diff --git a/sysdeps/gnu/bits/utmp.h b/sysdeps/gnu/bits/utmp.h +index aed2750..434a533 100644 +--- a/sysdeps/gnu/bits/utmp.h ++++ b/sysdeps/gnu/bits/utmp.h +@@ -59,10 +59,14 @@ struct utmp + { + short int ut_type; /* Type of login. */ + pid_t ut_pid; /* Process ID of login process. */ +- char ut_line[UT_LINESIZE]; /* Devicename. */ +- char ut_id[4]; /* Inittab ID. */ +- char ut_user[UT_NAMESIZE]; /* Username. */ +- char ut_host[UT_HOSTSIZE]; /* Hostname for remote login. */ ++ char ut_line[UT_LINESIZE] ++ __attribute_nonstring__; /* Devicename. */ ++ char ut_id[4] ++ __attribute_nonstring__; /* Inittab ID. */ ++ char ut_user[UT_NAMESIZE] ++ __attribute_nonstring__; /* Username. */ ++ char ut_host[UT_HOSTSIZE] ++ __attribute_nonstring__; /* Hostname for remote login. */ + struct exit_status ut_exit; /* Exit status of a process marked + as DEAD_PROCESS. */ + /* The ut_session and ut_tv fields must be the same size when compiled +diff --git a/sysdeps/gnu/bits/utmpx.h b/sysdeps/gnu/bits/utmpx.h +index f8716ca..13d84e4 100644 +--- a/sysdeps/gnu/bits/utmpx.h ++++ b/sysdeps/gnu/bits/utmpx.h +@@ -56,10 +56,14 @@ struct utmpx + { + short int ut_type; /* Type of login. */ + __pid_t ut_pid; /* Process ID of login process. */ +- char ut_line[__UT_LINESIZE]; /* Devicename. */ +- char ut_id[4]; /* Inittab ID. */ +- char ut_user[__UT_NAMESIZE]; /* Username. */ +- char ut_host[__UT_HOSTSIZE]; /* Hostname for remote login. */ ++ char ut_line[__UT_LINESIZE] ++ __attribute_nonstring__; /* Devicename. */ ++ char ut_id[4] ++ __attribute_nonstring__; /* Inittab ID. */ ++ char ut_user[__UT_NAMESIZE] ++ __attribute_nonstring__; /* Username. */ ++ char ut_host[__UT_HOSTSIZE] ++ __attribute_nonstring__; /* Hostname for remote login. */ + struct __exit_status ut_exit; /* Exit status of a process marked + as DEAD_PROCESS. */ + +diff --git a/sysdeps/unix/sysv/linux/if_index.c b/sysdeps/unix/sysv/linux/if_index.c +index 8ba5eae..b620d21 100644 +--- a/sysdeps/unix/sysv/linux/if_index.c ++++ b/sysdeps/unix/sysv/linux/if_index.c +@@ -38,12 +38,19 @@ __if_nametoindex (const char *ifname) + return 0; + #else + struct ifreq ifr; ++ if (strlen (ifname) >= IFNAMSIZ) ++ { ++ __set_errno (ENODEV); ++ return 0; ++ } ++ ++ strncpy (ifr.ifr_name, ifname, sizeof (ifr.ifr_name)); ++ + int fd = __opensock (); + + if (fd < 0) + return 0; + +- strncpy (ifr.ifr_name, ifname, sizeof (ifr.ifr_name)); + if (__ioctl (fd, SIOCGIFINDEX, &ifr) < 0) + { + int saved_errno = errno; +diff --git a/timezone/zic.c b/timezone/zic.c +index a5202a1..772d081 100644 +--- a/timezone/zic.c ++++ b/timezone/zic.c +@@ -1609,7 +1609,7 @@ writezone(const char *const name, const char *const string) + } + #define DO(field) ((void) fwrite(tzh.field, sizeof tzh.field, 1, fp)) + tzh = tzh0; +- (void) strncpy(tzh.tzh_magic, TZ_MAGIC, sizeof tzh.tzh_magic); ++ memcpy(tzh.tzh_magic, TZ_MAGIC, sizeof tzh.tzh_magic); + tzh.tzh_version[0] = ZIC_VERSION; + convert(eitol(thistypecnt), tzh.tzh_ttisgmtcnt); + convert(eitol(thistypecnt), tzh.tzh_ttisstdcnt); diff --git a/tensorflow-arm64-build/builder.packages.txt b/tensorflow-arm64-build/builder.packages.txt new file mode 100644 index 00000000..3a0d2cd1 --- /dev/null +++ b/tensorflow-arm64-build/builder.packages.txt @@ -0,0 +1,35 @@ +# Packages needed to install Python from source +# See https://github.com/pyenv/pyenv/wiki#suggested-build-environment +build-essential +curl +libbz2-dev +libffi-dev +liblzma-dev +libncurses5-dev +libreadline-dev +libsqlite3-dev +libssl-dev +libxml2-dev +libxmlsec1-dev +llvm +make +tk-dev +wget +xz-utils +zlib1g-dev +git + +# Packages needed to build devtoolset +file +flex +g++ +make +patch +rpm2cpio +unar +wget +xz-utils +cpio +gawk +texinfo +gettext diff --git a/tensorflow-arm64-build/builder.patchelf/build_patchelf.sh b/tensorflow-arm64-build/builder.patchelf/build_patchelf.sh new file mode 100755 index 00000000..898e1b53 --- /dev/null +++ b/tensorflow-arm64-build/builder.patchelf/build_patchelf.sh @@ -0,0 +1,14 @@ +#!/bin/bash -eu + +# Need a newer version of patchelf as the installed version is buggy in 20.04 +# so get patchelf source from 22.04 ie 'jammy' and build it to avoid dependency +# problems that would occur with a binary package + +mkdir -p /patchelf +cd /patchelf +echo deb-src http://ports.ubuntu.com/ubuntu-ports/ jammy universe>>/etc/apt/sources.list +apt-get update +apt-get -y build-dep patchelf/jammy +apt-get -b source patchelf/jammy + +# This will leave a .deb file for installation in a later stage diff --git a/tensorflow-arm64-build/devel.bashrc b/tensorflow-arm64-build/devel.bashrc new file mode 100644 index 00000000..755d4878 --- /dev/null +++ b/tensorflow-arm64-build/devel.bashrc @@ -0,0 +1,26 @@ +# Copyright 2021 The TensorFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# ============================================================================== + +# Do not print anything if this is not being used interactively +[ -z "$PS1" ] && return + +# Set up attractive prompt +export PS1="\[\e[31m\]tf-docker\[\e[m\] \[\e[33m\]\w\[\e[m\] > " +export TERM=xterm-256color +alias grep="grep --color=auto" +alias ls="ls --color=auto" +# Fix nvidia-docker +ldconfig diff --git a/tensorflow-arm64-build/devel.packages.txt b/tensorflow-arm64-build/devel.packages.txt new file mode 100644 index 00000000..a0215c97 --- /dev/null +++ b/tensorflow-arm64-build/devel.packages.txt @@ -0,0 +1,44 @@ +# Other build-related tools +autoconf +automake +build-essential +ca-certificates +cmake +llvm-17 +clang-17 +clang-format-12 +lld-17 +colordiff +curl +ffmpeg +gdb +git +jq +less +libcurl3-dev +libcurl4-openssl-dev +libfreetype6-dev +libhdf5-serial-dev +libomp-17-dev +libssl-dev +libtool +libxml2-dev +libxslt1-dev +libzmq3-dev +mlocate +moreutils +openjdk-11-jdk +openjdk-11-jre-headless +patchelf +pkg-config +python3-dev +python3-setuptools +rsync +software-properties-common +sudo +swig +unzip +vim +wget +zip +zlib1g-dev diff --git a/tensorflow-arm64-build/devel.requirements.txt b/tensorflow-arm64-build/devel.requirements.txt new file mode 100644 index 00000000..388a34ad --- /dev/null +++ b/tensorflow-arm64-build/devel.requirements.txt @@ -0,0 +1,5 @@ +portpicker ~= 1.6.0 +setuptools >= 68.2.2 +# For wheel verification, and uploading +auditwheel ~= 5.4.0 +twine ~= 4.0.2 diff --git a/tensorflow-arm64-build/devel.usertools/aarch64.bazelrc b/tensorflow-arm64-build/devel.usertools/aarch64.bazelrc new file mode 100644 index 00000000..f41974b5 --- /dev/null +++ b/tensorflow-arm64-build/devel.usertools/aarch64.bazelrc @@ -0,0 +1,86 @@ +# This bazelrc can build a CPU-supporting TF package. + +# Convenient cache configurations +# Use a cache directory mounted to /tf/cache. Very useful! +build:sigbuild_local_cache --disk_cache=/tf/cache +# Use the public-access TF DevInfra cache (read only) +build:sigbuild_remote_cache --remote_cache="https://storage.googleapis.com/tensorflow-devinfra-bazel-cache/manylinux2014" --remote_upload_local_results=false +# Change the value of CACHEBUSTER when upgrading the toolchain, or when testing +# different compilation methods. E.g. for a PR to test a new CUDA version, set +# the CACHEBUSTER to the PR number. +build --action_env=CACHEBUSTER=20220325 + +# Use Python 3.X as installed in container image +build --action_env PYTHON_BIN_PATH="/usr/local/bin/python3" +build --python_path="/usr/local/bin/python3" + +# Build TensorFlow v2 +build --define=tf_api_version=2 --action_env=TF2_BEHAVIOR=1 + +# Prevent double-compilation of some TF code, ref. b/183279666 (internal) +# > TF's gen_api_init_files has a genrule to run the core TensorFlow code +# > on the host machine. If we don't have --distinct_host_configuration=false, +# > the core TensorFlow code will be built once for the host and once for the +# > target platform. +# See also https://docs.bazel.build/versions/master/guide.html#build-configurations-and-cross-compilation +build --distinct_host_configuration=false + +# Store performance profiling log in the mounted artifact directory. +# The profile can be viewed by visiting chrome://tracing in a Chrome browser. +# See https://docs.bazel.build/versions/main/skylark/performance.html#performance-profiling +build --profile=/tf/pkg/profile.json.gz + +# Use the rebuilt gcc toolchain to compile for manylinux2014 +build --crosstool_top="@ml2014_aarch64_config_aarch64//crosstool:toolchain" +test --crosstool_top="@ml2014_aarch64_config_aarch64//crosstool:toolchain" + +build --copt="-mtune=generic" --copt="-march=armv8-a" --copt="-O3" + +# Test-related settings below this point. +test --build_tests_only --keep_going --test_output=errors --verbose_failures=true +test --test_timeout=500,900,-1,-1 +# Give only the list of failed tests at the end of the log +test --test_summary=short + +# "nonpip" tests are regular py_test tests. +# Pass --config=nonpip to run the same suite of tests. If you want to run just +# one test for investigation, you don't need --config=nonpip; just run the +# bazel test invocation as normal. +test:nonpip_filters --test_tag_filters=-no_oss,-oss_serial,-gpu,-tpu,-benchmark-test,-v1only,-no_aarch64,-no_oss_py38,-no_oss_py39,-no_oss_py310 +test:nonpip_filters --build_tag_filters=-no_oss,-oss_serial,-gpu,-tpu,-benchmark-test,-v1only,-no_aarch64,-no_oss_py38,-no_oss_py39,-no_oss_py310 +test:nonpip_filters --test_lang_filters=py --flaky_test_attempts=3 --test_size_filters=small,medium +test:nonpip --config=nonpip_filters -- //tensorflow/... -//tensorflow/python/integration_testing/... -//tensorflow/compiler/tf2tensorrt/... -//tensorflow/compiler/xrt/... -//tensorflow/core/tpu/... -//tensorflow/lite/... -//tensorflow/tools/toolchains/... + +# "pip tests" run a similar suite of tests the "nonpip" tests, but do something +# odd to attempt to validate the quality of the pip package. The wheel is +# installed into a virtual environment, and then that venv is used to run all +# bazel tests with a special flag "--define=no_tensorflow_py_deps=true", which +# drops all the bazel dependencies for each py_test; this makes all the tests +# use the wheel's TensorFlow installation instead of the one made available +# through bazel. This must be done in a different root directory, //bazel_pip/..., +# because "import tensorflow" run from the root directory would instead import +# the folder instead of the venv package. +# +# Pass --config=pip to run the same suite of tests. If you want to run just one +# test for investigation, you'll need --config=pip_venv instead, and then you +# can specify whichever target you want. +test:pip_venv --action_env PYTHON_BIN_PATH="/bazel_pip/bin/python3" +test:pip_venv --action_env PYTHON_LIB_PATH="/bazel_pip/lib/python3/site-packages" +test:pip_venv --python_path="/bazel_pip/bin/python3" +test:pip_venv --define=no_tensorflow_py_deps=true +test:pip --config=pip_venv +# Yes, we don't exclude the gpu tests on pip for some reason. +test:pip_filters --test_tag_filters=-nopip,-no_pip,-no_oss,-oss_serial,-v1only,-no_aarch64,-no_oss_py38,-no_oss_py39,-no_oss_py310 +test:pip_filters --build_tag_filters=-nopip,-no_pip,-no_oss,-oss_serial,-v1only,-no_aarch64,-no_oss_py38,-no_oss_py39,-no_oss_py310 +test:pip_filters --test_lang_filters=py --flaky_test_attempts=3 --test_size_filters=small,medium +test:pip --config=pip_filters -- //bazel_pip/tensorflow/... -//bazel_pip/tensorflow/python/integration_testing/... -//bazel_pip/tensorflow/compiler/tf2tensorrt/... -//bazel_pip/tensorflow/compiler/xrt/... -//bazel_pip/tensorflow/core/tpu/... -//bazel_pip/tensorflow/lite/... -//tensorflow/tools/toolchains/... + +# For building libtensorflow archives +test:libtensorflow_test -- //tensorflow/tools/lib_package:libtensorflow_test //tensorflow/tools/lib_package:libtensorflow_java_test +build:libtensorflow_build -- //tensorflow/tools/lib_package:libtensorflow.tar.gz //tensorflow/tools/lib_package:libtensorflow_jni.tar.gz //tensorflow/java:libtensorflow.jar //tensorflow/java:libtensorflow-src.jar //tensorflow/tools/lib_package:libtensorflow_proto.zip + +# For continuous builds +test:pycpp_filters --test_tag_filters=-no_oss,-oss_serial,-gpu,-tpu,-benchmark-test,-v1only,-no_aarch64,-no_oss_py38,-no_oss_py39,-no_oss_py310 +test:pycpp_filters --build_tag_filters=-no_oss,-oss_serial,-gpu,-tpu,-benchmark-test,-v1only,-no_aarch64,-no_oss_py38,-no_oss_py39,-no_oss_py310 +test:pycpp_filters --test_lang_filters=cc,py --flaky_test_attempts=3 --test_size_filters=small,medium +test:pycpp --config=pycpp_filters -- //tensorflow/... -//tensorflow/python/integration_testing/... -//tensorflow/compiler/tf2tensorrt/... -//tensorflow/compiler/xrt/... -//tensorflow/core/tpu/... -//tensorflow/lite/... -//tensorflow/tools/toolchains/... diff --git a/tensorflow-arm64-build/devel.usertools/aarch64_clang.bazelrc b/tensorflow-arm64-build/devel.usertools/aarch64_clang.bazelrc new file mode 100644 index 00000000..cde53db4 --- /dev/null +++ b/tensorflow-arm64-build/devel.usertools/aarch64_clang.bazelrc @@ -0,0 +1,100 @@ +# This bazelrc can build a CPU-supporting TF package. + +# Convenient cache configurations +# Use a cache directory mounted to /tf/cache. Very useful! +build:sigbuild_local_cache --disk_cache=/tf/cache +# Use the public-access TF DevInfra cache (read only) +build:sigbuild_remote_cache --remote_cache="https://storage.googleapis.com/tensorflow-devinfra-bazel-cache/manylinux2014" --remote_upload_local_results=false +# Change the value of CACHEBUSTER when upgrading the toolchain, or when testing +# different compilation methods. E.g. for a PR to test a new CUDA version, set +# the CACHEBUSTER to the PR number. +build --action_env=CACHEBUSTER=20220325 + +# Use Python 3.X as installed in container image +build --action_env PYTHON_BIN_PATH="/usr/local/bin/python3" +build --python_path="/usr/local/bin/python3" + +# Build TensorFlow v2 +build --define=tf_api_version=2 --action_env=TF2_BEHAVIOR=1 + +# Use lld as the linker +build --linkopt="-fuse-ld=lld" +build --linkopt="-lm" +build --linkopt="-Wl,--undefined-version" +build --host_linkopt="-fuse-ld=lld" +build --host_linkopt="-lm" +build --host_linkopt="-Wl,--undefined-version" + +# Prevent double-compilation of some TF code, ref. b/183279666 (internal) +# > TF's gen_api_init_files has a genrule to run the core TensorFlow code +# > on the host machine. If we don't have --distinct_host_configuration=false, +# > the core TensorFlow code will be built once for the host and once for the +# > target platform. +# See also https://docs.bazel.build/versions/master/guide.html#build-configurations-and-cross-compilation +build --distinct_host_configuration=false + +# Disable clang extension that rejects type definitions within offsetof. +# This was added in clang-16 by https://reviews.llvm.org/D133574. +# Can be removed once upb is updated, since a type definition is used within +# offset of in the current version of ubp. +# See https://github.com/protocolbuffers/upb/blob/9effcbcb27f0a665f9f345030188c0b291e32482/upb/upb.c#L183. +build --copt=-Wno-gnu-offsetof-extensions + +# Store performance profiling log in the mounted artifact directory. +# The profile can be viewed by visiting chrome://tracing in a Chrome browser. +# See https://docs.bazel.build/versions/main/skylark/performance.html#performance-profiling +build --profile=/tf/pkg/profile.json.gz + +# Use the rebuilt gcc toolchain to compile for manylinux2014 +build --crosstool_top="@ml2014_clang_aarch64_config_aarch64//crosstool:toolchain" + +build --copt="-mtune=generic" --copt="-march=armv8-a" --copt="-O3" + +# Test-related settings below this point. +test --build_tests_only --keep_going --test_output=errors --verbose_failures=true +test --test_timeout=500,900,-1,-1 +# Give only the list of failed tests at the end of the log +test --test_summary=short + +# "nonpip" tests are regular py_test tests. +# Pass --config=nonpip to run the same suite of tests. If you want to run just +# one test for investigation, you don't need --config=nonpip; just run the +# bazel test invocation as normal. +test:nonpip_filters --test_tag_filters=-no_oss,-oss_serial,-gpu,-tpu,-benchmark-test,-v1only,-no_aarch64,-no_oss_py38,-no_oss_py39,-no_oss_py310 +test:nonpip_filters --build_tag_filters=-no_oss,-oss_serial,-gpu,-tpu,-benchmark-test,-v1only,-no_aarch64,-no_oss_py38,-no_oss_py39,-no_oss_py310 +test:nonpip_filters --test_lang_filters=py --flaky_test_attempts=3 --test_size_filters=small,medium +test:nonpip --config=nonpip_filters -- //tensorflow/... -//tensorflow/python/integration_testing/... -//tensorflow/compiler/tf2tensorrt/... -//tensorflow/compiler/xrt/... -//tensorflow/core/tpu/... -//tensorflow/lite/... -//tensorflow/tools/toolchains/... + +# "pip tests" run a similar suite of tests the "nonpip" tests, but do something +# odd to attempt to validate the quality of the pip package. The wheel is +# installed into a virtual environment, and then that venv is used to run all +# bazel tests with a special flag "--define=no_tensorflow_py_deps=true", which +# drops all the bazel dependencies for each py_test; this makes all the tests +# use the wheel's TensorFlow installation instead of the one made available +# through bazel. This must be done in a different root directory, //bazel_pip/..., +# because "import tensorflow" run from the root directory would instead import +# the folder instead of the venv package. +# +# Pass --config=pip to run the same suite of tests. If you want to run just one +# test for investigation, you'll need --config=pip_venv instead, and then you +# can specify whichever target you want. +test:pip_venv --action_env PYTHON_BIN_PATH="/bazel_pip/bin/python3" +test:pip_venv --action_env PYTHON_LIB_PATH="/bazel_pip/lib/python3/site-packages" +test:pip_venv --python_path="/bazel_pip/bin/python3" +test:pip_venv --define=no_tensorflow_py_deps=true +test:pip --config=pip_venv +# Yes, we don't exclude the gpu tests on pip for some reason. +test:pip_filters --test_tag_filters=-nopip,-no_pip,-no_oss,-oss_serial,-v1only,-no_aarch64,-no_oss_py38,-no_oss_py39,-no_oss_py310 +test:pip_filters --build_tag_filters=-nopip,-no_pip,-no_oss,-oss_serial,-v1only,-no_aarch64,-no_oss_py38,-no_oss_py39,-no_oss_py310 +test:pip_filters --test_lang_filters=py --flaky_test_attempts=3 --test_size_filters=small,medium +test:pip --config=pip_filters -- //bazel_pip/tensorflow/... -//bazel_pip/tensorflow/python/integration_testing/... -//bazel_pip/tensorflow/compiler/tf2tensorrt/... -//bazel_pip/tensorflow/compiler/xrt/... -//bazel_pip/tensorflow/core/tpu/... -//bazel_pip/tensorflow/lite/... -//tensorflow/tools/toolchains/... + +# For building libtensorflow archives +test:libtensorflow_test -- //tensorflow/tools/lib_package:libtensorflow_test //tensorflow/tools/lib_package:libtensorflow_java_test +build:libtensorflow_build -- //tensorflow/tools/lib_package:libtensorflow.tar.gz //tensorflow/tools/lib_package:libtensorflow_jni.tar.gz //tensorflow/java:libtensorflow.jar //tensorflow/java:libtensorflow-src.jar //tensorflow/tools/lib_package:libtensorflow_proto.zip + +# For continuous builds +test:pycpp_filters --test_tag_filters=-no_oss,-oss_serial,-gpu,-tpu,-benchmark-test,-v1only,-no_aarch64,-no_oss_py38,-no_oss_py39,-no_oss_py310 +test:pycpp_filters --build_tag_filters=-no_oss,-oss_serial,-gpu,-tpu,-benchmark-test,-v1only,-no_aarch64,-no_oss_py38,-no_oss_py39,-no_oss_py310 +test:pycpp_filters --test_lang_filters=cc,py --flaky_test_attempts=3 --test_size_filters=small,medium +test:pycpp --config=pycpp_filters -- //tensorflow/... -//tensorflow/python/integration_testing/... -//tensorflow/compiler/tf2tensorrt/... -//tensorflow/compiler/xrt/... -//tensorflow/core/tpu/... -//tensorflow/lite/... -//tensorflow/tools/toolchains/... diff --git a/tensorflow-arm64-build/devel.usertools/code_check_changed_files.bats b/tensorflow-arm64-build/devel.usertools/code_check_changed_files.bats new file mode 100644 index 00000000..78e5b19e --- /dev/null +++ b/tensorflow-arm64-build/devel.usertools/code_check_changed_files.bats @@ -0,0 +1,76 @@ +# vim: filetype=bash +# +# Copyright 2022 The TensorFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== + +setup_file() { + cd /tf/tensorflow + bazel version # Start the bazel server + # Without this, git errors if /tf/tensorflow directory owner is different + git config --global --add safe.directory /tf/tensorflow + # Note that you could generate a list of all the affected targets with e.g.: + # bazel query $(paste -sd "+" $BATS_FILE_TMPDIR/changed_files) --keep_going + # Only shows Added, Changed, Modified, Renamed, and Type-changed files + if [[ "$(git rev-parse --abbrev-ref HEAD)" = "pull_branch" ]]; then + # TF's CI runs 'git fetch origin "pull/PR#/merge:pull_branch"' + # To get the as-merged branch during the CI tests + git diff --diff-filter ACMRT --name-only pull_branch^ pull_branch > $BATS_FILE_TMPDIR/changed_files + else + # If the branch is not present, then diff against origin/master + git diff --diff-filter ACMRT --name-only origin/master > $BATS_FILE_TMPDIR/changed_files + fi +} + +# Note: this is excluded on the full code base, since any submitted code must +# have passed Google's internal style guidelines. +@test "Check buildifier formatting on BUILD files" { + echo "buildifier formatting is recommended. Here are the suggested fixes:" + echo "=============================" + grep -e 'BUILD' $BATS_FILE_TMPDIR/changed_files \ + | xargs buildifier -v -mode=diff -diff_command="git diff --no-index" +} + +# Note: this is excluded on the full code base, since any submitted code must +# have passed Google's internal style guidelines. +@test "Check formatting for C++ files" { + skip "clang-format doesn't match internal clang-format checker" + echo "clang-format is recommended. Here are the suggested changes:" + echo "=============================" + grep -e '\.h$' -e '\.cc$' $BATS_FILE_TMPDIR/changed_files > $BATS_TEST_TMPDIR/files || true + if [[ ! -s $BATS_TEST_TMPDIR/files ]]; then return 0; fi + xargs -a $BATS_TEST_TMPDIR/files -i -n1 -P $(nproc --all) \ + bash -c 'clang-format-12 --style=Google {} | git diff --no-index {} -' \ + | tee $BATS_TEST_TMPDIR/needs_help.txt + echo "You can use clang-format --style=Google -i <file> to apply changes to a file." + [[ ! -s $BATS_TEST_TMPDIR/needs_help.txt ]] +} + +# Note: this is excluded on the full code base, since any submitted code must +# have passed Google's internal style guidelines. +@test "Check pylint for Python files" { + echo "Python formatting is recommended. Here are the pylint errors:" + echo "=============================" + grep -e "\.py$" $BATS_FILE_TMPDIR/changed_files > $BATS_TEST_TMPDIR/files || true + if [[ ! -s $BATS_TEST_TMPDIR/files ]]; then return 0; fi + xargs -a $BATS_TEST_TMPDIR/files -n1 -P $(nproc --all) \ + python -m pylint --rcfile=tensorflow/tools/ci_build/pylintrc --score false \ + | grep -v "**** Module" \ + | tee $BATS_TEST_TMPDIR/needs_help.txt + [[ ! -s $BATS_TEST_TMPDIR/needs_help.txt ]] +} + +teardown_file() { + bazel shutdown +} diff --git a/tensorflow-arm64-build/devel.usertools/code_check_full.bats b/tensorflow-arm64-build/devel.usertools/code_check_full.bats new file mode 100644 index 00000000..99e2e0d5 --- /dev/null +++ b/tensorflow-arm64-build/devel.usertools/code_check_full.bats @@ -0,0 +1,307 @@ +# vim: filetype=bash +# +# Copyright 2022 The TensorFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== +setup_file() { + cd /tf/tensorflow + bazel version # Start the bazel server +} + +# Do a bazel query specifically for the licenses checker. It searches for +# targets matching the provided query, which start with // or @ but not +# //tensorflow (so it looks for //third_party, //external, etc.), and then +# gathers the list of all packages (i.e. directories) which contain those +# targets. +license_query() { + bazel cquery --experimental_cc_shared_library "$1" --keep_going \ + | grep -e "^//" -e "^@" \ + | grep -E -v "^//tensorflow" \ + | sed -e 's|:.*||' \ + | sort -u +} + +# Verify that, given a build target and a license-list generator target, all of +# the dependencies of that target which include a license notice file are then +# included when generating that license. Necessary because the license targets +# in TensorFlow are manually enumerated rather than generated automatically. +do_external_licenses_check(){ + BUILD_TARGET="$1" + LICENSES_TARGET="$2" + + # grep patterns for targets which are allowed to be missing from the licenses + cat > $BATS_TEST_TMPDIR/allowed_to_be_missing <<EOF +@absl_py//absl +@bazel_tools//platforms +@bazel_tools//third_party/ +@bazel_tools//tools +@local +@com_google_absl//absl +@org_tensorflow// +@com_github_googlecloudplatform_google_cloud_cpp//google +@com_github_grpc_grpc//src/compiler +@platforms//os +@ruy// +EOF + + # grep patterns for targets which are allowed to be extra licenses + cat > $BATS_TEST_TMPDIR/allowed_to_be_extra <<EOF +//third_party/mkl +//third_party/mkl_dnn +@absl_py// +@bazel_tools//src +@bazel_tools//platforms +@bazel_tools//tools/ +@org_tensorflow//tensorflow +@com_google_absl// +//external +@local +@com_github_googlecloudplatform_google_cloud_cpp// +@embedded_jdk// +^//$ +@ruy// +EOF + + license_query "attr('licenses', 'notice', deps($BUILD_TARGET))" > $BATS_TEST_TMPDIR/expected_licenses + license_query "deps($LICENSES_TARGET)" > $BATS_TEST_TMPDIR/actual_licenses + + # Column 1 is left only, Column 2 is right only, Column 3 is shared lines + # Select lines unique to actual_licenses, i.e. extra licenses. + comm -1 -3 $BATS_TEST_TMPDIR/expected_licenses $BATS_TEST_TMPDIR/actual_licenses | grep -v -f $BATS_TEST_TMPDIR/allowed_to_be_extra > $BATS_TEST_TMPDIR/actual_extra_licenses || true + # Select lines unique to expected_licenses, i.e. missing licenses + comm -2 -3 $BATS_TEST_TMPDIR/expected_licenses $BATS_TEST_TMPDIR/actual_licenses | grep -v -f $BATS_TEST_TMPDIR/allowed_to_be_missing > $BATS_TEST_TMPDIR/actual_missing_licenses || true + + if [[ -s $BATS_TEST_TMPDIR/actual_extra_licenses ]]; then + echo "Please remove the following extra licenses from $LICENSES_TARGET:" + cat $BATS_TEST_TMPDIR/actual_extra_licenses + fi + + if [[ -s $BATS_TEST_TMPDIR/actual_missing_licenses ]]; then + echo "Please include the missing licenses for the following packages in $LICENSES_TARGET:" + cat $BATS_TEST_TMPDIR/actual_missing_licenses + fi + + # Fail if either of the two "extras" or "missing" lists are present. If so, + # then the user will see the above error messages. + [[ ! -s $BATS_TEST_TMPDIR/actual_extra_licenses ]] && [[ ! -s $BATS_TEST_TMPDIR/actual_missing_licenses ]] +} + +@test "Pip package generated license includes all dependencies' licenses" { + do_external_licenses_check \ + "//tensorflow/tools/pip_package:wheel" \ + "//tensorflow/tools/pip_package:licenses" +} + +@test "Libtensorflow generated license includes all dependencies' licenses" { + do_external_licenses_check \ + "//tensorflow:libtensorflow.so" \ + "//tensorflow/tools/lib_package:clicenses_generate" +} + +@test "Java library generated license includes all dependencies' licenses" { + do_external_licenses_check \ + "//tensorflow/java:libtensorflow_jni.so" \ + "//tensorflow/tools/lib_package:jnilicenses_generate" +} + +# This test ensures that all the targets built into the Python package include +# their dependencies. It's a rewritten version of the "smoke test", an older +# Python script that was very difficult to understand. See +# https://github.com/tensorflow/tensorflow/blob/master/tensorflow/tools/pip_package/pip_smoke_test.py +@test "Pip package includes all required //tensorflow dependencies" { + # grep patterns for packages whose dependencies can be ignored + cat > $BATS_TEST_TMPDIR/ignore_deps_for_these_packages <<EOF +//tensorflow/lite +//tensorflow/compiler/mlir/lite +//tensorflow/compiler/mlir/tfrt +//tensorflow/core/runtime_fallback +//tensorflow/core/tfrt +//tensorflow/python/kernel_tests/signal +//tensorflow/examples +//tensorflow/tools/android +//tensorflow/python/eager/benchmarks +EOF + + # grep patterns for files and targets which don't need to be in the pip + # package, ever. + cat > $BATS_TEST_TMPDIR/ignore_these_deps <<EOF +benchmark +_test$ +_test.py$ +_test_cpu$ +_test_cpu.py$ +_test_gpu$ +_test_gpu.py$ +_test_lib$ +//tensorflow/cc/saved_model:saved_model_test_files +//tensorflow/cc/saved_model:saved_model_half_plus_two +//tensorflow:no_tensorflow_py_deps +//tensorflow/tools/pip_package:win_pip_package_marker +//tensorflow/core:image_testdata +//tensorflow/core/lib/lmdb:lmdb_testdata +//tensorflow/core/lib/lmdb/testdata:lmdb_testdata +//tensorflow/core/kernels/cloud:bigquery_reader_ops +//tensorflow/python:extra_py_tests_deps +//tensorflow/python:mixed_precision +//tensorflow/python:tf_optimizer +//tensorflow/python:compare_test_proto_py +//tensorflow/python/framework:test_ops_2 +//tensorflow/python/framework:test_file_system.so +//tensorflow/python/debug:grpc_tensorflow_server.par +//tensorflow/python/feature_column:vocabulary_testdata +//tensorflow/python/util:nest_test_main_lib +//tensorflow/lite/experimental/examples/lstm:rnn_cell +//tensorflow/lite/experimental/examples/lstm:rnn_cell.py +//tensorflow/lite/experimental/examples/lstm:unidirectional_sequence_lstm_test +//tensorflow/lite/experimental/examples/lstm:unidirectional_sequence_lstm_test.py +//tensorflow/lite/python:interpreter +//tensorflow/lite/python:interpreter_test +//tensorflow/lite/python:interpreter.py +//tensorflow/lite/python:interpreter_test.py +EOF + + # Get the full list of files and targets which get included into the pip + # package + bazel query --keep_going 'deps(//tensorflow/tools/pip_package:wheel)' | sort -u > $BATS_TEST_TMPDIR/pip_deps + # Find all Python py_test targets not tagged "no_pip" or "manual", excluding + # any targets in ignored packages. Combine this list of targets into a bazel + # query list (e.g. the list becomes "target+target2+target3") + bazel query --keep_going 'kind(py_test, //tensorflow/python/...) - attr("tags", "no_pip|manual", //tensorflow/python/...)' | grep -v -f $BATS_TEST_TMPDIR/ignore_deps_for_these_packages | paste -sd "+" - > $BATS_TEST_TMPDIR/deps + # Find all one-step dependencies of those tests which are from //tensorflow + # (since external deps will come from Python-level pip dependencies), + # excluding dependencies and files that are known to be unneccessary. + # This creates a list of targets under //tensorflow that are required for + # TensorFlow python tests. + bazel query --keep_going "deps($(cat $BATS_TEST_TMPDIR/deps), 1)" | grep "^//tensorflow" | grep -v -f $BATS_TEST_TMPDIR/ignore_these_deps | sort -u > $BATS_TEST_TMPDIR/required_deps + + + # Find if any required dependencies are missing from the list of dependencies + # included in the pip package. + # (comm: Column 1 is left, Column 2 is right, Column 3 is shared lines) + comm -2 -3 $BATS_TEST_TMPDIR/required_deps $BATS_TEST_TMPDIR/pip_deps > $BATS_TEST_TMPDIR/missing_deps || true + + if [[ -s $BATS_TEST_TMPDIR/missing_deps ]]; then + cat <<EOF +One or more test dependencies are not in the pip package. +If these test dependencies need to be in the TensorFlow pip package, please +add them to //tensorflow/tools/pip_package/BUILD. Otherwise, add the no_pip tag +to the test, or change code_check_full.bats in the SIG Build repository. That's +https://github.com/tensorflow/tensorflow/blob/master/tensorflow/tools/tf_sig_build_dockerfiles/devel.usertools/code_check_full.bats +Here are the affected tests: +EOF + while read dep; do + echo "For dependency $dep:" + # For every missing dependency, find the tests which directly depend on + # it, and print that list for debugging. Not really clear if this is + # helpful since the only examples I've seen are enormous. + bazel query "rdeps(kind(py_test, $(cat $BATS_TEST_TMPDIR/deps)), $dep, 1)" + done < $BATS_TEST_TMPDIR/missing_deps + exit 1 + fi +} + +# The Python package is not allowed to depend on any CUDA packages. +@test "Pip package doesn't depend on CUDA" { + bazel cquery \ + --experimental_cc_shared_library \ + --@local_config_cuda//:enable_cuda \ + "somepath(//tensorflow/tools/pip_package:wheel, " \ + "@local_config_cuda//cuda:cudart + "\ + "@local_config_cuda//cuda:cudart + "\ + "@local_config_cuda//cuda:cuda_driver + "\ + "@local_config_cuda//cuda:cudnn + "\ + "@local_config_cuda//cuda:curand + "\ + "@local_config_cuda//cuda:cusolver + "\ + "@local_config_tensorrt//:tensorrt)" --keep_going > $BATS_TEST_TMPDIR/out + + cat <<EOF +There was a path found connecting //tensorflow/tools/pip_package:wheel +to a banned CUDA dependency. Here's the output from bazel query: +EOF + cat $BATS_TEST_TMPDIR/out + [[ ! -s $BATS_TEST_TMPDIR/out ]] +} + +@test "Pip package doesn't depend on CUDA for static builds (i.e. Windows)" { + bazel cquery \ + --experimental_cc_shared_library \ + --@local_config_cuda//:enable_cuda \ + --define framework_shared_object=false \ + "somepath(//tensorflow/tools/pip_package:wheel, " \ + "@local_config_cuda//cuda:cudart + "\ + "@local_config_cuda//cuda:cudart + "\ + "@local_config_cuda//cuda:cuda_driver + "\ + "@local_config_cuda//cuda:cudnn + "\ + "@local_config_cuda//cuda:curand + "\ + "@local_config_cuda//cuda:cusolver + "\ + "@local_config_tensorrt//:tensorrt)" --keep_going > $BATS_TEST_TMPDIR/out + + cat <<EOF +There was a path found connecting //tensorflow/tools/pip_package:wheel +to a banned CUDA dependency when '--define framework_shared_object=false' is set. +This means that a CUDA target was probably included via an is_static condition, +used when targeting platforms like Windows where we build statically instead +of dynamically. Here's the output from bazel query: +EOF + cat $BATS_TEST_TMPDIR/out + [[ ! -s $BATS_TEST_TMPDIR/out ]] +} + +@test "All tensorflow.org/code links point to real files" { + for i in $(grep -onI 'https://www.tensorflow.org/code/[a-zA-Z0-9/._-]\+' -r tensorflow); do + target=$(echo $i | sed 's!.*https://www.tensorflow.org/code/!!g') + + if [[ ! -f $target ]] && [[ ! -d $target ]]; then + echo "$i" >> errors.txt + fi + if [[ -e errors.txt ]]; then + echo "Broken links found:" + cat errors.txt + rm errors.txt + false + fi + done +} + +@test "No duplicate files on Windows" { + cat <<EOF +Please rename files so there are no repeats. For example, README.md and +Readme.md would be the same file on Windows. In this test, you would get a +warning for "readme.md" because it makes everything lowercase. There are +repeats of these filename(s) with different casing: +EOF + find . | tr '[A-Z]' '[a-z]' | sort | uniq -d | tee $BATS_FILE_TMPDIR/repeats + [[ ! -s $BATS_FILE_TMPDIR/repeats ]] +} + +# It's unclear why, but running this on //tensorflow/... is faster than running +# only on affected targets, usually. There are targets in //tensorflow/lite that +# don't pass --nobuild, so they're on their own. +# +# Although buildifier checks for formatting as well, "bazel build nobuild" +# checks for cross-file issues like bad includes or missing BUILD definitions. +# +# We can't test on the windows toolchains because they're using a legacy +# toolchain format (or something) that specifies the toolchain directly instead +# of as a "repository". They can't be valid on Linux because Linux can't do +# anything with a Windows-only toolchain, and bazel errors if trying to build +# that directory. +@test "bazel nobuild passes on all of TF except TF Lite and win toolchains" { + bazel build --experimental_cc_shared_library --nobuild --keep_going -- //tensorflow/... -//tensorflow/lite/... -//tensorflow/tools/toolchains/win/... -//tensorflow/tools/toolchains/win_1803/... +} + + +teardown_file() { + bazel shutdown +} diff --git a/tensorflow-arm64-build/devel.usertools/get_test_list.sh b/tensorflow-arm64-build/devel.usertools/get_test_list.sh new file mode 100755 index 00000000..3a0cc330 --- /dev/null +++ b/tensorflow-arm64-build/devel.usertools/get_test_list.sh @@ -0,0 +1,24 @@ +#!/bin/bash +# +# Copyright 2022 The TensorFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== +# +# Usage: get_test_list.sh OUTPUT BAZEL_TEST_COMMAND... +# Writes the list of tests that would be run from BAZEL_TEST_COMMAND to OUTPUT. +# Hides all extra output and always exits with success for now. + +OUTPUT=$1 +shift +"$@" --test_summary=short --check_tests_up_to_date 2>/dev/null | sort -u | awk '{print $1}' | grep "^//" | tee $OUTPUT diff --git a/tensorflow-arm64-build/devel.usertools/rename_and_verify_wheels.sh b/tensorflow-arm64-build/devel.usertools/rename_and_verify_wheels.sh new file mode 100755 index 00000000..788602d5 --- /dev/null +++ b/tensorflow-arm64-build/devel.usertools/rename_and_verify_wheels.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +# +# Check and rename wheels with auditwheel. Inserts the platform tags like +# "manylinux_xyz" into the wheel filename. +set -euxo pipefail + +for wheel in /tf/pkg/*.whl; do + echo "Checking and renaming $wheel..." + time python3 -m auditwheel repair --plat manylinux2014_aarch64 "$wheel" --wheel-dir /tf/pkg 2>&1 | tee check.txt + + # We don't need the original wheel if it was renamed + new_wheel=$(grep --extended-regexp --only-matching '/tf/pkg/\S+.whl' check.txt) + if [[ "$new_wheel" != "$wheel" ]]; then + rm "$wheel" + wheel="$new_wheel" + fi + + TF_WHEEL="$wheel" bats /usertools/wheel_verification.bats --timing +done diff --git a/tensorflow-arm64-build/devel.usertools/repack_libtensorflow.sh b/tensorflow-arm64-build/devel.usertools/repack_libtensorflow.sh new file mode 100755 index 00000000..0f549bf0 --- /dev/null +++ b/tensorflow-arm64-build/devel.usertools/repack_libtensorflow.sh @@ -0,0 +1,64 @@ +#!/bin/bash +# +# Copyright 2022 The TensorFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# ============================================================================== +# +# Repacks libtensorflow tarballs into $DIR with provided $TARBALL_SUFFIX, +# and also repacks libtensorflow-src.jar into a standardized format. + +# Helper function to copy a srcjar after moving any source files +# directly under the root to the "maven-style" src/main/java layout +# +# Source files generated by annotation processors appear directly +# under the root of srcjars jars created by bazel, rather than under +# the maven-style src/main/java subdirectory. +# +# Bazel manages annotation generated source as follows: First, it +# calls javac with options that create generated files under a +# bazel-out directory. Next, it archives the generated source files +# into a srcjar directly under the root. There doesn't appear to be a +# simple way to parameterize this from bazel, hence this helper to +# "normalize" the srcjar layout. +# +# Arguments: +# src_jar - path to the original srcjar +# dest_jar - path to the destination +# Returns: +# None +function cp_normalized_srcjar() { + src_jar="$1" + dest_jar="$2" + tmp_dir=$(mktemp -d) + cp "${src_jar}" "${tmp_dir}/orig.jar" + pushd "${tmp_dir}" + # Extract any src/ files + jar -xf "${tmp_dir}/orig.jar" src/ + # Extract any org/ files under src/main/java + (mkdir -p src/main/java && cd src/main/java && jar -xf "${tmp_dir}/orig.jar" org/) + # Repackage src/ + jar -cMf "${tmp_dir}/new.jar" src + popd + cp "${tmp_dir}/new.jar" "${dest_jar}" + rm -rf "${tmp_dir}" +} +DIR=$1 +TARBALL_SUFFIX=$2 +mkdir -p "$DIR" +cp bazel-bin/tensorflow/tools/lib_package/libtensorflow.tar.gz "${DIR}/libtensorflow${TARBALL_SUFFIX}.tar.gz" +cp bazel-bin/tensorflow/tools/lib_package/libtensorflow_jni.tar.gz "${DIR}/libtensorflow_jni${TARBALL_SUFFIX}.tar.gz" +cp bazel-bin/tensorflow/java/libtensorflow.jar "${DIR}" +cp_normalized_srcjar bazel-bin/tensorflow/java/libtensorflow-src.jar "${DIR}/libtensorflow-src.jar" +cp bazel-bin/tensorflow/tools/lib_package/libtensorflow_proto.zip "${DIR}" diff --git a/tensorflow-arm64-build/devel.usertools/setup_venv_test.sh b/tensorflow-arm64-build/devel.usertools/setup_venv_test.sh new file mode 100755 index 00000000..db05f3d3 --- /dev/null +++ b/tensorflow-arm64-build/devel.usertools/setup_venv_test.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +# +# Copyright 2022 The TensorFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== +set -euxo pipefail + +# Run this from inside the tensorflow github directory. +# Usage: setup_venv_test.sh venv_and_symlink_name "glob pattern for one wheel file" +# Example: setup_venv_test.sh bazel_pip "/tf/pkg/*.whl" +# +# This will create a venv with that wheel file installed in it, and a symlink +# in ./venv_and_symlink_name/tensorflow to ./tensorflow. We use this for the +# "pip" tests. + +python -m venv /$1 +mkdir -p $1 +rm -f ./$1/tensorflow +ln -s $(ls /$1/lib) /$1/lib/python3 +ln -s ../tensorflow $1/tensorflow +# extglob is necessary for @(a|b) pattern matching +# see "extglob" in the bash manual page ($ man bash) +bash -O extglob -c "/$1/bin/pip install $2" +/$1/bin/pip install -r /usertools/test.requirements.txt diff --git a/tensorflow-arm64-build/devel.usertools/squash_testlogs.py b/tensorflow-arm64-build/devel.usertools/squash_testlogs.py new file mode 100755 index 00000000..49c6c2d5 --- /dev/null +++ b/tensorflow-arm64-build/devel.usertools/squash_testlogs.py @@ -0,0 +1,116 @@ +#!/usr/bin/env python3 +# pylint:disable=protected-access +# +# Copyright 2022 The TensorFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== +"""Merge all JUnit test.xml files in one directory into one. + +Usage: squash_testlogs.py START_DIRECTORY OUTPUT_FILE + +Example: squash_testlogs.py /tf/pkg/testlogs /tf/pkg/merged.xml + +Recursively find all the JUnit test.xml files in one directory, and merge any +of them that contain failures into one file. The TensorFlow DevInfra team +uses this to generate a simple overview of an entire pip and nonpip test +invocation, since the normal logs that Bazel creates are too large for the +internal invocation viewer. +""" +import collections +import os +import re +import subprocess +import sys +from junitparser import JUnitXml + +result = JUnitXml() +try: + files = subprocess.check_output( + ["grep", "-rlE", '(failures|errors)="[1-9]', sys.argv[1]]) +except subprocess.CalledProcessError as e: + print("No failures found to log!") + exit(0) + +# For test cases, only show the ones that failed that have text (a log) +seen = collections.Counter() +runfiles_matcher = re.compile(r"(/.*\.runfiles/)") + + +for f in files.strip().splitlines(): + # Just ignore any failures, they're probably not important + try: + r = JUnitXml.fromfile(f) + except Exception as e: # pylint: disable=broad-except + print("Ignoring this XML parse failure in {}: ".format(f), str(e)) + + source_file = re.search(r"/(bazel_pip|tensorflow)/.*", + f.decode("utf-8")).group(0) + for testsuite in r: + testsuite._elem.set("source_file", source_file) + # Remove empty testcases + for p in testsuite._elem.xpath(".//testcase"): + if not len(p): # pylint: disable=g-explicit-length-test + testsuite._elem.remove(p) + # Change "testsuite > testcase,system-out" to "testsuite > testcase > error" + for p in testsuite._elem.xpath(".//system-out"): + for c in p.getparent().xpath(".//error | .//failure"): + c.text = p.text + p.getparent().remove(p) + # Remove duplicate results of the same exact test (e.g. due to retry + # attempts) + for p in testsuite._elem.xpath(".//error | .//failure"): + # Sharded tests have target names like this: + # WindowOpsTest.test_tflite_convert0 (<function hann_window at + # 0x7fc61728dd40>, 10, False, tf.float32) + # Where 0x... is a thread ID (or something) that is not important for + # debugging, but breaks this "number of failures" counter because it's + # different for repetitions of the same test. We use re.sub(r"0x\w+") + # to remove it. + key = re.sub(r"0x\w+", "", p.getparent().get("name", "")) + p.text + if key in seen: + testsuite._elem.remove(p.getparent()) + seen[key] += 1 + # Remove this testsuite if it doesn't have anything in it any more + if len(testsuite) == 0: # pylint: disable=g-explicit-length-test + r._elem.remove(testsuite._elem) + if len(r) > 0: # pylint: disable=g-explicit-length-test + result += r + +# Insert the number of failures for each test to help identify flakes +# need to clarify for shard +for p in result._elem.xpath(".//error | .//failure"): + key = re.sub(r"0x\w+", "", p.getparent().get("name", "")) + p.text + p.text = runfiles_matcher.sub("[testroot]/", p.text) + source_file = p.getparent().getparent().get("source_file", "") + p.text += f"\nNOTE: From {source_file}" + if "bazel_pip" in source_file: + p.text += ("\nNOTE: This is a --config=pip test. Remove 'bazel_pip' to find" + " the file.") + n_failures = seen[key] + p.text += f"\nNOTE: Number of failures for this test: {seen[key]}." + p.text += "\n Most TF jobs run tests three times to root out flakes." + if seen[key] == 3: + p.text += ("\n Since there were three failures, this is not flaky, and" + " it") + p.text += "\n probably caused the Kokoro invocation to fail." + else: + p.text += ("\n Since there were not three failures, this is probably a" + " flake.") + p.text += ("\n Flakes make this pkg/pip_and_nonpip_tests target show " + "as failing,") + p.text += "\n but do not make the Kokoro invocation fail." + +os.makedirs(os.path.dirname(sys.argv[2]), exist_ok=True) +result.update_statistics() +result.write(sys.argv[2]) diff --git a/tensorflow-arm64-build/devel.usertools/test.requirements.txt b/tensorflow-arm64-build/devel.usertools/test.requirements.txt new file mode 100644 index 00000000..b7343979 --- /dev/null +++ b/tensorflow-arm64-build/devel.usertools/test.requirements.txt @@ -0,0 +1,6 @@ +# Test dependencies for pip tests +grpcio ~= 1.42.0 +portpicker ~= 1.5.2 +scipy ~= 1.7.3 +jax ~= 0.2.26 +jaxlib ~= 0.1.75 diff --git a/tensorflow-arm64-build/devel.usertools/wheel_verification.bats b/tensorflow-arm64-build/devel.usertools/wheel_verification.bats new file mode 100644 index 00000000..3f83d9a5 --- /dev/null +++ b/tensorflow-arm64-build/devel.usertools/wheel_verification.bats @@ -0,0 +1,73 @@ +# Copyright 2022 The TensorFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== +# Suite of verification tests for the SINGLE TensorFlow wheel in /tf/pkg +# or whatever path is set as $TF_WHEEL. + +setup_file() { + cd /tf/pkg + if [[ -z "$TF_WHEEL" ]]; then + export TF_WHEEL=$(find /tf/pkg -iname "*.whl") + fi +} + +teardown_file() { + rm -rf /tf/venv +} + +@test "Wheel is manylinux2014 (manylinux_2_17) compliant" { + python3 -m auditwheel show "$TF_WHEEL" > audit.txt + grep --quiet -zoP 'is consistent with the following platform tag:\n"manylinux_2_17_(aarch|x86_)64"\.' audit.txt +} + +@test "Wheel conforms to upstream size limitations" { + WHEEL_MEGABYTES=$(stat --format %s "$TF_WHEEL" | awk '{print int($1/(1024*1024))}') + # Googlers: search for "test_tf_whl_size" + case "$TF_WHEEL" in + # CPU: + *cpu*manylinux*) LARGEST_OK_SIZE=220 ;; + # GPU: + *manylinux*) LARGEST_OK_SIZE=580 ;; + # Unknown: + *) + echo "The wheel's name is in an unknown format." + exit 1 + ;; + esac + # >&3 forces output in bats even if the test passes. See + # https://bats-core.readthedocs.io/en/stable/writing-tests.html#printing-to-the-terminal + echo "# Size of $TF_WHEEL is $WHEEL_MEGABYTES / $LARGEST_OK_SIZE megabytes." >&3 + test "$WHEEL_MEGABYTES" -le "$LARGEST_OK_SIZE" +} + +# Note: this runs before the tests further down the file, so TF is installed in +# the venv and the venv is active when those tests run. The venv gets cleaned +# up in teardown_file() above. +@test "Wheel is installable" { + python3 -m venv /tf/venv + source /tf/venv/bin/activate + python3 -m pip install --upgrade setuptools wheel + python3 -m pip install "$TF_WHEEL" +} + +@test "TensorFlow is importable" { + source /tf/venv/bin/activate + python3 -c 'import tensorflow as tf; t1=tf.constant([1,2,3,4]); t2=tf.constant([5,6,7,8]); print(tf.add(t1,t2).shape)' +} + +# Is this still useful? +@test "TensorFlow has Keras" { + source /tf/venv/bin/activate + python3 -c 'import sys; import tensorflow as tf; sys.exit(0 if "keras" in tf.keras.__name__ else 1)' +} diff --git a/tensorflow-arm64-build/ld.so.conf b/tensorflow-arm64-build/ld.so.conf new file mode 100644 index 00000000..a6ca9e09 --- /dev/null +++ b/tensorflow-arm64-build/ld.so.conf @@ -0,0 +1 @@ +/lib64 diff --git a/tensorflow-arm64-build/setup.packages.sh b/tensorflow-arm64-build/setup.packages.sh new file mode 100755 index 00000000..f808cf7d --- /dev/null +++ b/tensorflow-arm64-build/setup.packages.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash +# +# Copyright 2022 The TensorFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== +# +# setup.packages.sh: Given a list of Ubuntu packages, install them and clean up. +# Usage: setup.packages.sh <package_list.txt> +set -e + +# Prevent apt install tzinfo from asking our location (assumes UTC) +export DEBIAN_FRONTEND=noninteractive + +apt-get update +# Remove commented lines and blank lines +apt-get install -y --no-install-recommends $(sed -e '/^\s*#.*$/d' -e '/^\s*$/d' "$1" | sort -u) +rm -rf /var/lib/apt/lists/* diff --git a/tensorflow-arm64-build/setup.python.sh b/tensorflow-arm64-build/setup.python.sh new file mode 100755 index 00000000..735f5931 --- /dev/null +++ b/tensorflow-arm64-build/setup.python.sh @@ -0,0 +1,60 @@ +#!/usr/bin/env bash +# +# Copyright 2022 The TensorFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== +# +# setup.python.sh: Install a specific Python version and packages for it. +# Usage: setup.python.sh <pyversion> <requirements.txt> +set -xe + +source ~/.bashrc +VERSION=$1 +REQUIREMENTS=$2 + +add-apt-repository ppa:deadsnakes/ppa +# Install Python packages for this container's version +cat >pythons.txt <<EOF +$VERSION +$VERSION-dev +$VERSION-venv +$VERSION-distutils +EOF +/setup.packages.sh pythons.txt + +# Re-link pyconfig.h from aarch64-linux-gnu into the devtoolset directory +# for any Python version present +pushd /usr/include/aarch64-linux-gnu +for f in $(ls | grep python); do + # set up symlink for devtoolset-10 + rm -f /dt10/usr/include/aarch64-linux-gnu/$f + ln -s /usr/include/aarch64-linux-gnu/$f /dt10/usr/include/aarch64-linux-gnu/$f +done +popd + +# Python 3.10 include headers fix: +# sysconfig.get_path('include') incorrectly points to /usr/local/include/python +# map /usr/include/python3.10 to /usr/local/include/python3.10 +if [[ ! -f "/usr/local/include/$VERSION" ]]; then + ln -sf /usr/include/$VERSION /usr/local/include/$VERSION +fi + +# Install pip +curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py +/usr/bin/$VERSION get-pip.py +/usr/bin/$VERSION -m pip install --no-cache-dir --upgrade pip +/usr/bin/$VERSION -m pip install -U setuptools + +# Disable the cache dir to save image space, and install packages +/usr/bin/$VERSION -m pip install --no-cache-dir -r $REQUIREMENTS -U diff --git a/tensorflow-arm64-build/setup.sources.sh b/tensorflow-arm64-build/setup.sources.sh new file mode 100755 index 00000000..ea8dc376 --- /dev/null +++ b/tensorflow-arm64-build/setup.sources.sh @@ -0,0 +1,45 @@ +#!/usr/bin/env bash +# +# Copyright 2022 The TensorFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== +# +# setup.python.sh: Install a specific Python version and packages for it. +# Usage: setup.python.sh <pyversion> <requirements.txt> + +# Sets up custom apt sources for our TF images. + +# Prevent apt install tzinfo from asking our location (assumes UTC) +export DEBIAN_FRONTEND=noninteractive + +# Set up shared custom sources +apt-get update +apt-get install -y gnupg ca-certificates + +# Deadsnakes: https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa +apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F23C5A6CF475977595C89F51BA6932366A755776 + +# LLVM/Clang: https://apt.llvm.org/ +apt-key adv --fetch-keys https://apt.llvm.org/llvm-snapshot.gpg.key + +# Set up custom sources +cat >/etc/apt/sources.list.d/custom.list <<SOURCES +# More Python versions: Deadsnakes +deb http://ppa.launchpad.net/deadsnakes/ppa/ubuntu focal main +deb-src http://ppa.launchpad.net/deadsnakes/ppa/ubuntu focal main + +# LLVM/Clang 17 repository +deb http://apt.llvm.org/focal/ llvm-toolchain-focal-17 main +deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal-17 main +SOURCES diff --git a/trusty-amd64-tcwg-base/Dockerfile b/trusty-amd64-tcwg-base/Dockerfile deleted file mode 100644 index 989b01b4..00000000 --- a/trusty-amd64-tcwg-base/Dockerfile +++ /dev/null @@ -1,130 +0,0 @@ -# Auto generated from tcwg-base/Dockerfile.in. Do not edit. -FROM ubuntu:trusty - -RUN (url="http://archive.ubuntu.com/ubuntu/"; \ - ubuntu=trusty; \ - for i in $ubuntu $ubuntu-updates $ubuntu-backports $ubuntu-security; do \ - for j in deb deb-src; do \ - echo "$j $url $i main restricted universe multiverse"; \ - done; \ - echo; \ - done) > /etc/apt/sources.list \ - && dpkg --add-architecture i386 \ - && apt-get update \ - && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y devscripts \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ - alien \ - autoconf \ - autogen \ - automake \ - bc \ - 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 \ - g++-multilib \ - gawk \ - gdb \ - gdbserver \ - git \ - git-review \ - groff \ - less \ - libexpat1-dev \ - libglib2.0-dev \ - liblzma-dev \ - libncurses5-dev \ - libpython2.7-dev \ - libreadline-dev \ - libssl-dev \ - libtcnative-1 \ - libtool \ - linux-tools-generic \ - lzop \ - make \ - mingw-w64 \ - mingw32 \ - net-tools \ - netcat \ - nfs-kernel-server \ - ninja-build \ - openjdk-7-jdk \ - openssh-server \ - pkg-config \ - python-dev \ - python-virtualenv \ - postfix \ - pxz \ - qemu-system-arm \ - qemu-user \ - rsync \ - subversion \ - sudo \ - tclsh \ - texinfo \ - texlive-fonts-recommended \ - texlive-latex-recommended \ - time \ - valgrind \ - vim \ - wget \ - wine \ - 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 "/.*MaxSesssions.*/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 - -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 \ - && 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.$$ - -# 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: 6cf2d3a7a502cfb1f51aaba92249556e diff --git a/trusty-amd64-tcwg-base/gerrit-branches b/trusty-amd64-tcwg-base/gerrit-branches deleted file mode 120000 index 3cbaca1d..00000000 --- a/trusty-amd64-tcwg-base/gerrit-branches +++ /dev/null @@ -1 +0,0 @@ -../tcwg-base/gerrit-branches
\ No newline at end of file diff --git a/trusty-amd64-tcwg-base/trusty-amd64-tcwg-build/Dockerfile b/trusty-amd64-tcwg-base/trusty-amd64-tcwg-build/Dockerfile deleted file mode 100644 index 38ea264b..00000000 --- a/trusty-amd64-tcwg-base/trusty-amd64-tcwg-build/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -# Auto generated from tcwg-base/tcwg-build/Dockerfile.in. Do not edit. -FROM linaro/ci-amd64-tcwg-base-ubuntu:trusty - -RUN groupadd -g 9000 tcwg-infra \ - && useradd -m -g tcwg-infra -G kvm -u 11827 tcwg-buildslave \ - && useradd -m -g tcwg-infra -G kvm -u 12326 tcwg-benchmark \ - && echo '%tcwg-infra ALL = NOPASSWD: ALL' > /etc/sudoers.d/jenkins \ - && chmod 0440 /etc/sudoers.d/jenkins \ - && 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: 9ce6e312f075378dc2980f5a8431ac7a diff --git a/trusty-amd64-tcwg-base/trusty-amd64-tcwg-build/gerrit-branches b/trusty-amd64-tcwg-base/trusty-amd64-tcwg-build/gerrit-branches deleted file mode 120000 index 628350a5..00000000 --- a/trusty-amd64-tcwg-base/trusty-amd64-tcwg-build/gerrit-branches +++ /dev/null @@ -1 +0,0 @@ -../../tcwg-base/tcwg-build/gerrit-branches
\ No newline at end of file diff --git a/trusty-amd64-tcwg-base/trusty-amd64-tcwg-dev/Dockerfile b/trusty-amd64-tcwg-base/trusty-amd64-tcwg-dev/Dockerfile deleted file mode 100644 index 2294e57b..00000000 --- a/trusty-amd64-tcwg-base/trusty-amd64-tcwg-dev/Dockerfile +++ /dev/null @@ -1,49 +0,0 @@ -# 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 \ - git-gui \ - git-svn \ - gnat \ - less \ - locales \ - libgmp-dev \ - libmpc-dev \ - libmpfr-dev \ - mc \ - screen \ - 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 \ - && 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 - -ENTRYPOINT ["/run.sh"] -CMD ["start.sh"] -# checksum: 6ebcfe89f577b9b89996da9aace4394f diff --git a/trusty-amd64-tcwg-base/trusty-amd64-tcwg-dev/gerrit-branches b/trusty-amd64-tcwg-base/trusty-amd64-tcwg-dev/gerrit-branches deleted file mode 120000 index cd148228..00000000 --- a/trusty-amd64-tcwg-base/trusty-amd64-tcwg-dev/gerrit-branches +++ /dev/null @@ -1 +0,0 @@ -../../tcwg-base/tcwg-dev/gerrit-branches
\ No newline at end of file diff --git a/trusty-arm64-tcwg-base/Dockerfile b/trusty-arm64-tcwg-base/Dockerfile deleted file mode 100644 index a7dea549..00000000 --- a/trusty-arm64-tcwg-base/Dockerfile +++ /dev/null @@ -1,111 +0,0 @@ -# Auto generated from tcwg-base/Dockerfile.in. Do not edit. -FROM linaro/base-arm64-ubuntu:trusty - -RUN (url="http://ports.ubuntu.com/ubuntu-ports/"; \ - ubuntu=trusty; \ - for i in $ubuntu $ubuntu-updates $ubuntu-backports $ubuntu-security; do \ - for j in deb deb-src; do \ - echo "$j $url $i main restricted universe multiverse"; \ - done; \ - echo; \ - done) > /etc/apt/sources.list \ - && apt-get update \ - && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y devscripts \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ - alien \ - autoconf \ - autogen \ - automake \ - bc \ - 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 \ - liblzma-dev \ - libncurses5-dev \ - libpython2.7-dev \ - libreadline-dev \ - libssl-dev \ - libtcnative-1 \ - libtool \ - linux-tools-generic \ - lzop \ - make \ - net-tools \ - netcat \ - ninja-build \ - openjdk-7-jdk \ - openssh-server \ - python-dev \ - python-virtualenv \ - postfix \ - pxz \ - qemu-system-arm \ - qemu-user \ - rsync \ - subversion \ - sudo \ - tclsh \ - texinfo \ - texlive-fonts-recommended \ - texlive-latex-recommended \ - time \ - valgrind \ - vim \ - 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 "/.*MaxSesssions.*/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 - -# 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: c0eca062aa8000976bdccdb2438e4bad diff --git a/trusty-arm64-tcwg-base/gerrit-branches b/trusty-arm64-tcwg-base/gerrit-branches deleted file mode 120000 index 3cbaca1d..00000000 --- a/trusty-arm64-tcwg-base/gerrit-branches +++ /dev/null @@ -1 +0,0 @@ -../tcwg-base/gerrit-branches
\ No newline at end of file diff --git a/trusty-arm64-tcwg-base/trusty-arm64-tcwg-build/Dockerfile b/trusty-arm64-tcwg-base/trusty-arm64-tcwg-build/Dockerfile deleted file mode 100644 index 0f672b1b..00000000 --- a/trusty-arm64-tcwg-base/trusty-arm64-tcwg-build/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -# Auto generated from tcwg-base/tcwg-build/Dockerfile.in. Do not edit. -FROM linaro/ci-arm64-tcwg-base-ubuntu:trusty - -RUN groupadd -g 9000 tcwg-infra \ - && useradd -m -g tcwg-infra -G kvm -u 11827 tcwg-buildslave \ - && useradd -m -g tcwg-infra -G kvm -u 12326 tcwg-benchmark \ - && echo '%tcwg-infra ALL = NOPASSWD: ALL' > /etc/sudoers.d/jenkins \ - && chmod 0440 /etc/sudoers.d/jenkins \ - && 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: 5de8c4d4fdc7b8b350210c347928cfee diff --git a/trusty-arm64-tcwg-base/trusty-arm64-tcwg-build/gerrit-branches b/trusty-arm64-tcwg-base/trusty-arm64-tcwg-build/gerrit-branches deleted file mode 120000 index 628350a5..00000000 --- a/trusty-arm64-tcwg-base/trusty-arm64-tcwg-build/gerrit-branches +++ /dev/null @@ -1 +0,0 @@ -../../tcwg-base/tcwg-build/gerrit-branches
\ No newline at end of file diff --git a/trusty-arm64-tcwg-base/trusty-arm64-tcwg-build/trusty-arm64-tcwg-test/Dockerfile b/trusty-arm64-tcwg-base/trusty-arm64-tcwg-build/trusty-arm64-tcwg-test/Dockerfile deleted file mode 100644 index 55869b62..00000000 --- a/trusty-arm64-tcwg-base/trusty-arm64-tcwg-build/trusty-arm64-tcwg-test/Dockerfile +++ /dev/null @@ -1,9 +0,0 @@ -# Auto generated from tcwg-base/tcwg-build/tcwg-test/Dockerfile.in. Do not edit. -FROM linaro/ci-arm64-tcwg-build-ubuntu:trusty - -COPY tcwg-buildslave/.ssh /root/.ssh - -RUN chmod 0700 /root/.ssh/ \ - && sed -i -e "/.*PermitRootLogin.*/d" /etc/ssh/sshd_config \ - && echo "PermitRootLogin without-password" >> /etc/ssh/sshd_config -# checksum: dc8c825d9bfcc23ca4d58280831726a6 diff --git a/trusty-arm64-tcwg-base/trusty-arm64-tcwg-build/trusty-arm64-tcwg-test/build.sh b/trusty-arm64-tcwg-base/trusty-arm64-tcwg-build/trusty-arm64-tcwg-test/build.sh deleted file mode 120000 index 44bceb16..00000000 --- a/trusty-arm64-tcwg-base/trusty-arm64-tcwg-build/trusty-arm64-tcwg-test/build.sh +++ /dev/null @@ -1 +0,0 @@ -../../../tcwg-base/tcwg-build/tcwg-test/build.sh
\ No newline at end of file diff --git a/trusty-arm64-tcwg-base/trusty-arm64-tcwg-build/trusty-arm64-tcwg-test/gerrit-branches b/trusty-arm64-tcwg-base/trusty-arm64-tcwg-build/trusty-arm64-tcwg-test/gerrit-branches deleted file mode 120000 index 4bcb423c..00000000 --- a/trusty-arm64-tcwg-base/trusty-arm64-tcwg-build/trusty-arm64-tcwg-test/gerrit-branches +++ /dev/null @@ -1 +0,0 @@ -../../../tcwg-base/tcwg-build/tcwg-test/gerrit-branches
\ No newline at end of file diff --git a/trusty-arm64-tcwg-base/trusty-arm64-tcwg-dev/Dockerfile b/trusty-arm64-tcwg-base/trusty-arm64-tcwg-dev/Dockerfile deleted file mode 100644 index 1f2e2d0d..00000000 --- a/trusty-arm64-tcwg-base/trusty-arm64-tcwg-dev/Dockerfile +++ /dev/null @@ -1,48 +0,0 @@ -# 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 \ - git-gui \ - git-svn \ - less \ - locales \ - libgmp-dev \ - libmpc-dev \ - libmpfr-dev \ - mc \ - screen \ - 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 \ - && 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 - -ENTRYPOINT ["/run.sh"] -CMD ["start.sh"] -# checksum: df2f7edfa6eb02b085cac309faf50ad3 diff --git a/trusty-arm64-tcwg-base/trusty-arm64-tcwg-dev/gerrit-branches b/trusty-arm64-tcwg-base/trusty-arm64-tcwg-dev/gerrit-branches deleted file mode 120000 index cd148228..00000000 --- a/trusty-arm64-tcwg-base/trusty-arm64-tcwg-dev/gerrit-branches +++ /dev/null @@ -1 +0,0 @@ -../../tcwg-base/tcwg-dev/gerrit-branches
\ No newline at end of file diff --git a/trusty-armhf-tcwg-base/Dockerfile b/trusty-armhf-tcwg-base/Dockerfile deleted file mode 100644 index e2761feb..00000000 --- a/trusty-armhf-tcwg-base/Dockerfile +++ /dev/null @@ -1,111 +0,0 @@ -# Auto generated from tcwg-base/Dockerfile.in. Do not edit. -FROM linaro/base-armhf-ubuntu:trusty - -RUN (url="http://ports.ubuntu.com/ubuntu-ports/"; \ - ubuntu=trusty; \ - for i in $ubuntu $ubuntu-updates $ubuntu-backports $ubuntu-security; do \ - for j in deb deb-src; do \ - echo "$j $url $i main restricted universe multiverse"; \ - done; \ - echo; \ - done) > /etc/apt/sources.list \ - && apt-get update \ - && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y devscripts \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ - alien \ - autoconf \ - autogen \ - automake \ - bc \ - 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 \ - liblzma-dev \ - libncurses5-dev \ - libpython2.7-dev \ - libreadline-dev \ - libssl-dev \ - libtcnative-1 \ - libtool \ - linux-tools-generic \ - lzop \ - make \ - net-tools \ - netcat \ - ninja-build \ - openjdk-7-jdk \ - openssh-server \ - python-dev \ - python-virtualenv \ - postfix \ - pxz \ - qemu-system-arm \ - qemu-user \ - rsync \ - subversion \ - sudo \ - tclsh \ - texinfo \ - texlive-fonts-recommended \ - texlive-latex-recommended \ - time \ - valgrind \ - vim \ - 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 "/.*MaxSesssions.*/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 - -# 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 ["linux32", "/usr/sbin/sshd", "-D"] -# checksum: 37d0f23df417dc59345e85c618fc4437 diff --git a/trusty-armhf-tcwg-base/gerrit-branches b/trusty-armhf-tcwg-base/gerrit-branches deleted file mode 120000 index 3cbaca1d..00000000 --- a/trusty-armhf-tcwg-base/gerrit-branches +++ /dev/null @@ -1 +0,0 @@ -../tcwg-base/gerrit-branches
\ No newline at end of file diff --git a/trusty-armhf-tcwg-base/trusty-armhf-tcwg-build/Dockerfile b/trusty-armhf-tcwg-base/trusty-armhf-tcwg-build/Dockerfile deleted file mode 100644 index 1c9e64dc..00000000 --- a/trusty-armhf-tcwg-base/trusty-armhf-tcwg-build/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -# Auto generated from tcwg-base/tcwg-build/Dockerfile.in. Do not edit. -FROM linaro/ci-armhf-tcwg-base-ubuntu:trusty - -RUN groupadd -g 9000 tcwg-infra \ - && useradd -m -g tcwg-infra -G kvm -u 11827 tcwg-buildslave \ - && useradd -m -g tcwg-infra -G kvm -u 12326 tcwg-benchmark \ - && echo '%tcwg-infra ALL = NOPASSWD: ALL' > /etc/sudoers.d/jenkins \ - && chmod 0440 /etc/sudoers.d/jenkins \ - && 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: e601ad462d4a4a23f9e950d78de0aa5d diff --git a/trusty-armhf-tcwg-base/trusty-armhf-tcwg-build/gerrit-branches b/trusty-armhf-tcwg-base/trusty-armhf-tcwg-build/gerrit-branches deleted file mode 120000 index 628350a5..00000000 --- a/trusty-armhf-tcwg-base/trusty-armhf-tcwg-build/gerrit-branches +++ /dev/null @@ -1 +0,0 @@ -../../tcwg-base/tcwg-build/gerrit-branches
\ No newline at end of file diff --git a/trusty-armhf-tcwg-base/trusty-armhf-tcwg-build/trusty-armhf-tcwg-test/Dockerfile b/trusty-armhf-tcwg-base/trusty-armhf-tcwg-build/trusty-armhf-tcwg-test/Dockerfile deleted file mode 100644 index 15ea46ce..00000000 --- a/trusty-armhf-tcwg-base/trusty-armhf-tcwg-build/trusty-armhf-tcwg-test/Dockerfile +++ /dev/null @@ -1,9 +0,0 @@ -# Auto generated from tcwg-base/tcwg-build/tcwg-test/Dockerfile.in. Do not edit. -FROM linaro/ci-armhf-tcwg-build-ubuntu:trusty - -COPY tcwg-buildslave/.ssh /root/.ssh - -RUN chmod 0700 /root/.ssh/ \ - && sed -i -e "/.*PermitRootLogin.*/d" /etc/ssh/sshd_config \ - && echo "PermitRootLogin without-password" >> /etc/ssh/sshd_config -# checksum: 9583d23d885b59e3b3a3f2e6b3e44c38 diff --git a/trusty-armhf-tcwg-base/trusty-armhf-tcwg-build/trusty-armhf-tcwg-test/build.sh b/trusty-armhf-tcwg-base/trusty-armhf-tcwg-build/trusty-armhf-tcwg-test/build.sh deleted file mode 120000 index 44bceb16..00000000 --- a/trusty-armhf-tcwg-base/trusty-armhf-tcwg-build/trusty-armhf-tcwg-test/build.sh +++ /dev/null @@ -1 +0,0 @@ -../../../tcwg-base/tcwg-build/tcwg-test/build.sh
\ No newline at end of file diff --git a/trusty-armhf-tcwg-base/trusty-armhf-tcwg-build/trusty-armhf-tcwg-test/gerrit-branches b/trusty-armhf-tcwg-base/trusty-armhf-tcwg-build/trusty-armhf-tcwg-test/gerrit-branches deleted file mode 120000 index 4bcb423c..00000000 --- a/trusty-armhf-tcwg-base/trusty-armhf-tcwg-build/trusty-armhf-tcwg-test/gerrit-branches +++ /dev/null @@ -1 +0,0 @@ -../../../tcwg-base/tcwg-build/tcwg-test/gerrit-branches
\ No newline at end of file diff --git a/trusty-armhf-tcwg-base/trusty-armhf-tcwg-dev/Dockerfile b/trusty-armhf-tcwg-base/trusty-armhf-tcwg-dev/Dockerfile deleted file mode 100644 index 6f5af073..00000000 --- a/trusty-armhf-tcwg-base/trusty-armhf-tcwg-dev/Dockerfile +++ /dev/null @@ -1,49 +0,0 @@ -# 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 \ - git-gui \ - git-svn \ - gnat \ - less \ - locales \ - libgmp-dev \ - libmpc-dev \ - libmpfr-dev \ - mc \ - screen \ - 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 \ - && 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 - -ENTRYPOINT ["linux32", "/run.sh"] -CMD ["start.sh"] -# checksum: 3ebcf08c631348a6ee99ee7b0a574c23 diff --git a/trusty-armhf-tcwg-base/trusty-armhf-tcwg-dev/gerrit-branches b/trusty-armhf-tcwg-base/trusty-armhf-tcwg-dev/gerrit-branches deleted file mode 120000 index cd148228..00000000 --- a/trusty-armhf-tcwg-base/trusty-armhf-tcwg-dev/gerrit-branches +++ /dev/null @@ -1 +0,0 @@ -../../tcwg-base/tcwg-dev/gerrit-branches
\ No newline at end of file diff --git a/trusty-i386-tcwg-base/Dockerfile b/trusty-i386-tcwg-base/Dockerfile deleted file mode 100644 index 7b626ff3..00000000 --- a/trusty-i386-tcwg-base/Dockerfile +++ /dev/null @@ -1,130 +0,0 @@ -# Auto generated from tcwg-base/Dockerfile.in. Do not edit. -FROM linaro/base-i386-ubuntu:trusty - -RUN (url="http://archive.ubuntu.com/ubuntu/"; \ - ubuntu=trusty; \ - for i in $ubuntu $ubuntu-updates $ubuntu-backports $ubuntu-security; do \ - for j in deb deb-src; do \ - echo "$j $url $i main restricted universe multiverse"; \ - done; \ - echo; \ - done) > /etc/apt/sources.list \ - && apt-get update \ - && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \ - && dpkg-divert --local --rename --add /sbin/initctl \ - && ln -s /bin/true /sbin/initctl \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y devscripts \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ - alien \ - autoconf \ - autogen \ - automake \ - bc \ - 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 \ - g++-multilib \ - gawk \ - gdb \ - gdbserver \ - git \ - git-review \ - groff \ - less \ - libexpat1-dev \ - libglib2.0-dev \ - liblzma-dev \ - libncurses5-dev \ - libpython2.7-dev \ - libreadline-dev \ - libssl-dev \ - libtcnative-1 \ - libtool \ - linux-tools-generic \ - lzop \ - make \ - mingw-w64 \ - mingw32 \ - net-tools \ - netcat \ - ninja-build \ - openjdk-7-jdk \ - openssh-server \ - pkg-config \ - python-dev \ - python-virtualenv \ - postfix \ - pxz \ - qemu-system-arm \ - qemu-user \ - rsync \ - subversion \ - sudo \ - tclsh \ - texinfo \ - texlive-fonts-recommended \ - texlive-latex-recommended \ - time \ - valgrind \ - vim \ - wget \ - wine \ - 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 "/.*MaxSesssions.*/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 - -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 \ - && 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.$$ - -# 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 ["linux32", "/usr/sbin/sshd", "-D"] -# checksum: bfa366e193b3821fca47f1da60c0af0e diff --git a/trusty-i386-tcwg-base/gerrit-branches b/trusty-i386-tcwg-base/gerrit-branches deleted file mode 120000 index 3cbaca1d..00000000 --- a/trusty-i386-tcwg-base/gerrit-branches +++ /dev/null @@ -1 +0,0 @@ -../tcwg-base/gerrit-branches
\ No newline at end of file diff --git a/trusty-i386-tcwg-base/trusty-i386-tcwg-build/Dockerfile b/trusty-i386-tcwg-base/trusty-i386-tcwg-build/Dockerfile deleted file mode 100644 index dd271c4c..00000000 --- a/trusty-i386-tcwg-base/trusty-i386-tcwg-build/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -# Auto generated from tcwg-base/tcwg-build/Dockerfile.in. Do not edit. -FROM linaro/ci-i386-tcwg-base-ubuntu:trusty - -RUN groupadd -g 9000 tcwg-infra \ - && useradd -m -g tcwg-infra -G kvm -u 11827 tcwg-buildslave \ - && useradd -m -g tcwg-infra -G kvm -u 12326 tcwg-benchmark \ - && echo '%tcwg-infra ALL = NOPASSWD: ALL' > /etc/sudoers.d/jenkins \ - && chmod 0440 /etc/sudoers.d/jenkins \ - && 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: d1a93f00cce488976b44c87865c32888 diff --git a/trusty-i386-tcwg-base/trusty-i386-tcwg-build/gerrit-branches b/trusty-i386-tcwg-base/trusty-i386-tcwg-build/gerrit-branches deleted file mode 120000 index 628350a5..00000000 --- a/trusty-i386-tcwg-base/trusty-i386-tcwg-build/gerrit-branches +++ /dev/null @@ -1 +0,0 @@ -../../tcwg-base/tcwg-build/gerrit-branches
\ No newline at end of file diff --git a/utopic-amd64-art/Dockerfile b/utopic-amd64-art/Dockerfile index 1e134b03..4048f537 100644 --- a/utopic-amd64-art/Dockerfile +++ b/utopic-amd64-art/Dockerfile @@ -36,9 +36,11 @@ RUN dpkg --add-architecture i386 \ openssh-client \ openssh-server \ patch \ + parallel \ python-mako \ python-networkx \ python-requests \ + python3-requests \ rsync \ scons \ time \ @@ -50,9 +52,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/utopic-amd64-art/build.sh b/utopic-amd64-art/build.sh index c4f6cc75..45869147 100755 --- a/utopic-amd64-art/build.sh +++ b/utopic-amd64-art/build.sh @@ -16,6 +16,6 @@ ARCHITECTURE=$(basename ${PWD} | cut -f2 -d '-') cp -a ../setup-sshd . -image=linaro/ci-${ARCHITECTURE}-art-ubuntu:${DISTRIBUTION} +image=linaro/jenkins-${ARCHITECTURE}-art-ubuntu:${DISTRIBUTION} docker build --pull --tag=$image . echo $image > .docker-tag diff --git a/xenial-amd64-chromium/Dockerfile b/xenial-amd64-chromium/Dockerfile deleted file mode 100644 index af250b75..00000000 --- a/xenial-amd64-chromium/Dockerfile +++ /dev/null @@ -1,60 +0,0 @@ -FROM ubuntu:xenial - -COPY *.list *.key /etc/apt/sources.list.d/ - -RUN dpkg --add-architecture i386 \ - && echo 'deb http://archive.ubuntu.com/ubuntu/ xenial multiverse' > /etc/apt/sources.list.d/multiverse.list \ - && echo 'deb http://archive.ubuntu.com/ubuntu/ xenial-proposed main' > /etc/apt/sources.list.d/xenial-proposed.list \ - && echo 'Package: *' > /etc/apt/preferences.d/proposed-updates \ - && echo 'Pin: release a=xenial-proposed' >> /etc/apt/preferences.d/proposed-updates \ - && echo 'Pin-Priority: 400' >> /etc/apt/preferences.d/proposed-updates \ - && 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 \ - && apt-key add /etc/apt/sources.list.d/*.key \ - && apt-get update \ - && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y locales \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ - ca-certificates \ - curl \ - file \ - git \ - lsb-release \ - make \ - openjdk-8-jdk \ - openssh-server \ - python-requests \ - sudo \ - wget \ - lib32z1/xenial-proposed \ - lib32z1-dev/xenial-proposed \ - zlib1g/xenial-proposed \ - zlib1g:i386/xenial-proposed \ - zlib1g-dev:i386/xenial-proposed \ - && wget -q \ - http://de.archive.ubuntu.com/ubuntu/pool/main/m/make-dfsg/make_3.81-8.2ubuntu3_amd64.deb \ - && dpkg -i --force-all *.deb \ - && apt-mark hold make \ - && apt-get clean - -RUN useradd -m 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://chromium.googlesource.com/chromium/src/build/+/master/install-build-deps.sh?format=TEXT | base64 -d > /home/buildslave/bin/install-build-deps.sh \ - && chmod a+x /home/buildslave/bin/* \ - && git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git /home/buildslave/depot_tools \ - && echo 'PATH="/home/buildslave/depot_tools:$PATH"' >> /home/buildslave/.profile \ - && chown -R buildslave:buildslave /home/buildslave/bin /home/buildslave/depot_tools \ - && echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula boolean true | debconf-set-selections \ - && bash /home/buildslave/bin/install-build-deps.sh --no-syms --no-chromeos-fonts --no-prompt \ - && apt-get clean \ - && rm -rf \ - /etc/apt/sources.list.d/*.key \ - /var/lib/apt/lists/* \ - /tmp/* \ - /var/tmp/* \ - *.deb - -EXPOSE 22 -CMD ["/usr/sbin/sshd", "-D"] diff --git a/xenial-amd64-tcwg-base/Dockerfile b/xenial-amd64-tcwg-base/Dockerfile deleted file mode 100644 index 874823bc..00000000 --- a/xenial-amd64-tcwg-base/Dockerfile +++ /dev/null @@ -1,129 +0,0 @@ -# Auto generated from tcwg-base/Dockerfile.in. Do not edit. -FROM ubuntu:xenial - -RUN (url="http://archive.ubuntu.com/ubuntu/"; \ - ubuntu=xenial; \ - for i in $ubuntu $ubuntu-updates $ubuntu-backports $ubuntu-security; do \ - for j in deb deb-src; do \ - echo "$j $url $i main restricted universe multiverse"; \ - done; \ - echo; \ - done) > /etc/apt/sources.list \ - && dpkg --add-architecture i386 \ - && apt-get update \ - && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y devscripts \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ - alien \ - autoconf \ - autogen \ - automake \ - bc \ - 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 \ - g++-multilib \ - gawk \ - gdb \ - gdbserver \ - git \ - git-review \ - groff \ - less \ - libexpat1-dev \ - libglib2.0-dev \ - liblzma-dev \ - libncurses5-dev \ - libpython2.7-dev \ - libreadline-dev \ - libssl-dev \ - libtcnative-1 \ - libtool \ - linux-tools-generic \ - lzop \ - make \ - mingw-w64 \ - net-tools \ - netcat \ - nfs-kernel-server \ - ninja-build \ - openjdk-8-jdk \ - openssh-server \ - pkg-config \ - python-dev \ - postfix \ - pxz \ - qemu-system-arm \ - qemu-user \ - rsync \ - subversion \ - sudo \ - tclsh \ - texinfo \ - texlive-fonts-recommended \ - texlive-latex-recommended \ - time \ - valgrind \ - vim \ - virtualenv \ - wget \ - wine \ - 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 "/.*MaxSesssions.*/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 - -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 \ - && 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.$$ - -# 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: 48814af3cc6c29ab8bb78e937ee860b5 diff --git a/xenial-amd64-tcwg-base/gerrit-branches b/xenial-amd64-tcwg-base/gerrit-branches deleted file mode 120000 index 3cbaca1d..00000000 --- a/xenial-amd64-tcwg-base/gerrit-branches +++ /dev/null @@ -1 +0,0 @@ -../tcwg-base/gerrit-branches
\ No newline at end of file diff --git a/xenial-amd64-tcwg-base/xenial-amd64-tcwg-build/Dockerfile b/xenial-amd64-tcwg-base/xenial-amd64-tcwg-build/Dockerfile deleted file mode 100644 index 8106b7bc..00000000 --- a/xenial-amd64-tcwg-base/xenial-amd64-tcwg-build/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -# Auto generated from tcwg-base/tcwg-build/Dockerfile.in. Do not edit. -FROM linaro/ci-amd64-tcwg-base-ubuntu:xenial - -RUN groupadd -g 9000 tcwg-infra \ - && useradd -m -g tcwg-infra -G kvm -u 11827 tcwg-buildslave \ - && useradd -m -g tcwg-infra -G kvm -u 12326 tcwg-benchmark \ - && echo '%tcwg-infra ALL = NOPASSWD: ALL' > /etc/sudoers.d/jenkins \ - && chmod 0440 /etc/sudoers.d/jenkins \ - && 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: 710acbfdcccff739b76435ef75be994e diff --git a/xenial-amd64-tcwg-base/xenial-amd64-tcwg-build/gerrit-branches b/xenial-amd64-tcwg-base/xenial-amd64-tcwg-build/gerrit-branches deleted file mode 120000 index 628350a5..00000000 --- a/xenial-amd64-tcwg-base/xenial-amd64-tcwg-build/gerrit-branches +++ /dev/null @@ -1 +0,0 @@ -../../tcwg-base/tcwg-build/gerrit-branches
\ No newline at end of file diff --git a/xenial-amd64-tcwg-base/xenial-amd64-tcwg-dev/Dockerfile b/xenial-amd64-tcwg-base/xenial-amd64-tcwg-dev/Dockerfile deleted file mode 100644 index 618500ac..00000000 --- a/xenial-amd64-tcwg-base/xenial-amd64-tcwg-dev/Dockerfile +++ /dev/null @@ -1,49 +0,0 @@ -# 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 \ - git-gui \ - git-svn \ - gnat-5 \ - less \ - locales \ - libgmp-dev \ - libmpc-dev \ - libmpfr-dev \ - mc \ - screen \ - 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 \ - && 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 - -ENTRYPOINT ["/run.sh"] -CMD ["start.sh"] -# checksum: dcc5804aedae03114b28d305dcbc2904 diff --git a/xenial-amd64-tcwg-base/xenial-amd64-tcwg-dev/gerrit-branches b/xenial-amd64-tcwg-base/xenial-amd64-tcwg-dev/gerrit-branches deleted file mode 120000 index cd148228..00000000 --- a/xenial-amd64-tcwg-base/xenial-amd64-tcwg-dev/gerrit-branches +++ /dev/null @@ -1 +0,0 @@ -../../tcwg-base/tcwg-dev/gerrit-branches
\ No newline at end of file diff --git a/xenial-amd64/Dockerfile b/xenial-amd64/Dockerfile index 84acbc35..d26b4122 100644 --- a/xenial-amd64/Dockerfile +++ b/xenial-amd64/Dockerfile @@ -7,6 +7,7 @@ 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 ppa:openjdk-r/ppa \ && apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \ && DEBIAN_FRONTEND=noninteractive apt-get install -y devscripts \ @@ -22,6 +23,7 @@ RUN dpkg --add-architecture i386 \ ccache \ clang \ clang-format-3.8 \ + clang-tidy-3.8 \ curl \ debhelper \ debian-archive-keyring \ @@ -50,11 +52,12 @@ RUN dpkg --add-architecture i386 \ linaro-image-tools \ lsb-release \ make \ - openjdk-8-jdk \ + openjdk-11-jdk \ openssh-server \ python-mako \ python-networkx \ python-requests \ + python3-requests \ pxz \ qemu-user-static \ rsync \ diff --git a/xenial-amd64/build.sh b/xenial-amd64/build.sh index 1203ab3b..1fc5b660 100755 --- a/xenial-amd64/build.sh +++ b/xenial-amd64/build.sh @@ -17,6 +17,6 @@ ARCHITECTURE=$(basename ${PWD} | cut -f2 -d '-') cp -a ../linaro-overlay-repo.list ../linaro-overlay-repo.key . sed -e "s|@DISTRIBUTION@|${DISTRIBUTION}|" -i *.list -image=linaro/ci-${ARCHITECTURE}-ubuntu:${DISTRIBUTION} +image=linaro/jenkins-${ARCHITECTURE}-ubuntu:${DISTRIBUTION} docker build --pull --tag=$image . echo $image > .docker-tag diff --git a/xenial-arm64-gitlab/Dockerfile b/xenial-arm64-gitlab/Dockerfile new file mode 100644 index 00000000..65208e96 --- /dev/null +++ b/xenial-arm64-gitlab/Dockerfile @@ -0,0 +1,95 @@ +FROM ubuntu:bionic as builder + +# Install required packages +RUN apt-get update -q \ + && DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends \ + build-essential \ + autoconf \ + automake \ + autopoint \ + zlib1g-dev \ + byacc \ + cmake \ + python-pip \ + git \ + gcc \ + g++ \ + gcc-6 \ + g++-6 \ + libssl1.0-dev \ + libyaml-dev \ + libffi-dev \ + libreadline-dev \ + libgdbm-dev \ + libncurses5-dev \ + make \ + bzip2 \ + curl \ + ca-certificates \ + locales \ + openssh-server \ + libexpat1-dev \ + gettext \ + libz-dev \ + fakeroot \ + python-dev \ + python-setuptools \ + ccache \ + distcc \ + unzip \ + tzdata \ + apt-transport-https \ + gnupg + +RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen +RUN locale-gen en_US.UTF-8 +ENV LANG en_US.UTF-8 +ENV LANGUAGE en_US:en +ENV LC_ALL en_US.UTF-8 + +RUN pip install awscli + +ENV GO_VERSION 1.13.9 +RUN curl -fsSL "https://storage.googleapis.com/golang/go${GO_VERSION}.linux-arm64.tar.gz" \ + | tar -xzC /usr/local \ + && ln -sf /usr/local/go/bin/go /usr/local/go/bin/gofmt /usr/local/go/bin/godoc /usr/local/bin/ + +ENV RUBY_VERSION 2.6.5 +RUN curl -fsSL "https://cache.ruby-lang.org/pub/ruby/2.6/ruby-${RUBY_VERSION}.tar.gz" \ + | tar -xzC /tmp \ + && cd /tmp/ruby-${RUBY_VERSION} \ + && ./configure --disable-install-rdoc --disable-install-doc --disable-install-capi\ + && make \ + && make install + +ENV RUBYGEMS_VERSION 2.6.13 +RUN /usr/local/bin/gem update --system ${RUBYGEMS_VERSION} --no-document + +ENV BUNDLER_VERSION 1.17.3 +RUN /usr/local/bin/gem install bundler --version ${BUNDLER_VERSION} --no-document + +ENV LICENSE_FINDER_VERSION 3.1.1 +RUN /usr/local/bin/gem install license_finder --version ${LICENSE_FINDER_VERSION} --no-document + +ENV NODE_VERSION 12.4.0 +RUN curl -fsSL "https://nodejs.org/download/release/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-arm64.tar.gz" \ + | tar --strip-components 1 -xzC /usr/local/ \ + && node --version + +ENV YARN_VERSION 1.16.0 +RUN mkdir /usr/local/yarn \ + && curl -fsSL "https://yarnpkg.com/downloads/${YARN_VERSION}/yarn-v${YARN_VERSION}.tar.gz" \ + | tar -xzC /usr/local/yarn --strip 1 \ + && ln -sf /usr/local/yarn/bin/yarn /usr/local/bin/ \ + && yarn --version + +RUN mkdir -p /opt/gitlab /var/cache/omnibus ~/.ssh + +RUN git config --global user.email "packages@gitlab.com" +RUN git config --global user.name "GitLab Inc." + +RUN rm -rf /tmp/* + +FROM ubuntu:bionic +MAINTAINER GitLab Inc. <support@gitlab.com> +COPY --from=builder / / diff --git a/xenial-arm64-gitlab/build.sh b/xenial-arm64-gitlab/build.sh new file mode 100755 index 00000000..8cded612 --- /dev/null +++ b/xenial-arm64-gitlab/build.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +set -e + +image=linaro/gitlab-arm64 + +docker build --pull --tag=$image . +echo $image > .docker-tag diff --git a/xenial-arm64-tcwg-base/Dockerfile b/xenial-arm64-tcwg-base/Dockerfile deleted file mode 100644 index cf0be40f..00000000 --- a/xenial-arm64-tcwg-base/Dockerfile +++ /dev/null @@ -1,112 +0,0 @@ -# Auto generated from tcwg-base/Dockerfile.in. Do not edit. -FROM linaro/base-arm64-ubuntu:xenial - -RUN (url="http://ports.ubuntu.com/ubuntu-ports/"; \ - ubuntu=xenial; \ - for i in $ubuntu $ubuntu-updates $ubuntu-backports $ubuntu-security; do \ - for j in deb deb-src; do \ - echo "$j $url $i main restricted universe multiverse"; \ - done; \ - echo; \ - done) > /etc/apt/sources.list \ - && apt-get update \ - && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y devscripts \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ - alien \ - autoconf \ - autogen \ - automake \ - bc \ - 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 \ - liblzma-dev \ - libncurses5-dev \ - libpython2.7-dev \ - libreadline-dev \ - libssl-dev \ - libtcnative-1 \ - libtool \ - linux-tools-generic \ - lzop \ - make \ - net-tools \ - netcat \ - nfs-kernel-server \ - ninja-build \ - openjdk-8-jdk \ - openssh-server \ - python-dev \ - postfix \ - pxz \ - qemu-system-arm \ - qemu-user \ - rsync \ - subversion \ - sudo \ - tclsh \ - texinfo \ - texlive-fonts-recommended \ - texlive-latex-recommended \ - time \ - 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 "/.*MaxSesssions.*/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 - -# 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: 398e83d368854d72506e7530116ff57a diff --git a/xenial-arm64-tcwg-base/gerrit-branches b/xenial-arm64-tcwg-base/gerrit-branches deleted file mode 120000 index 3cbaca1d..00000000 --- a/xenial-arm64-tcwg-base/gerrit-branches +++ /dev/null @@ -1 +0,0 @@ -../tcwg-base/gerrit-branches
\ No newline at end of file diff --git a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/Dockerfile b/xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/Dockerfile deleted file mode 100644 index e6e943c7..00000000 --- a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -# Auto generated from tcwg-base/tcwg-build/Dockerfile.in. Do not edit. -FROM linaro/ci-arm64-tcwg-base-ubuntu:xenial - -RUN groupadd -g 9000 tcwg-infra \ - && useradd -m -g tcwg-infra -G kvm -u 11827 tcwg-buildslave \ - && useradd -m -g tcwg-infra -G kvm -u 12326 tcwg-benchmark \ - && echo '%tcwg-infra ALL = NOPASSWD: ALL' > /etc/sudoers.d/jenkins \ - && chmod 0440 /etc/sudoers.d/jenkins \ - && 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: 32a27b3b729064776a076ccd5199b8e2 diff --git a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/gerrit-branches b/xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/gerrit-branches deleted file mode 120000 index 628350a5..00000000 --- a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/gerrit-branches +++ /dev/null @@ -1 +0,0 @@ -../../tcwg-base/tcwg-build/gerrit-branches
\ No newline at end of file diff --git a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/xenial-arm64-tcwg-test/Dockerfile b/xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/xenial-arm64-tcwg-test/Dockerfile deleted file mode 100644 index ef1ce192..00000000 --- a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/xenial-arm64-tcwg-test/Dockerfile +++ /dev/null @@ -1,9 +0,0 @@ -# Auto generated from tcwg-base/tcwg-build/tcwg-test/Dockerfile.in. Do not edit. -FROM linaro/ci-arm64-tcwg-build-ubuntu:xenial - -COPY tcwg-buildslave/.ssh /root/.ssh - -RUN chmod 0700 /root/.ssh/ \ - && sed -i -e "/.*PermitRootLogin.*/d" /etc/ssh/sshd_config \ - && echo "PermitRootLogin without-password" >> /etc/ssh/sshd_config -# checksum: 9d6f202aa1c9a2f4391cb0687d75c45a diff --git a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/xenial-arm64-tcwg-test/build.sh b/xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/xenial-arm64-tcwg-test/build.sh deleted file mode 120000 index 44bceb16..00000000 --- a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/xenial-arm64-tcwg-test/build.sh +++ /dev/null @@ -1 +0,0 @@ -../../../tcwg-base/tcwg-build/tcwg-test/build.sh
\ No newline at end of file diff --git a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/xenial-arm64-tcwg-test/gerrit-branches b/xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/xenial-arm64-tcwg-test/gerrit-branches deleted file mode 120000 index 4bcb423c..00000000 --- a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-build/xenial-arm64-tcwg-test/gerrit-branches +++ /dev/null @@ -1 +0,0 @@ -../../../tcwg-base/tcwg-build/tcwg-test/gerrit-branches
\ No newline at end of file diff --git a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-dev/Dockerfile b/xenial-arm64-tcwg-base/xenial-arm64-tcwg-dev/Dockerfile deleted file mode 100644 index 4534b5cc..00000000 --- a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-dev/Dockerfile +++ /dev/null @@ -1,49 +0,0 @@ -# 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 \ - git-gui \ - git-svn \ - gnat-5 \ - less \ - locales \ - libgmp-dev \ - libmpc-dev \ - libmpfr-dev \ - mc \ - screen \ - 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 \ - && 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 - -ENTRYPOINT ["/run.sh"] -CMD ["start.sh"] -# checksum: 0e9607cbb3dd157d553ffebd26d6a411 diff --git a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-dev/gerrit-branches b/xenial-arm64-tcwg-base/xenial-arm64-tcwg-dev/gerrit-branches deleted file mode 120000 index cd148228..00000000 --- a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-dev/gerrit-branches +++ /dev/null @@ -1 +0,0 @@ -../../tcwg-base/tcwg-dev/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 deleted file mode 100644 index a5327736..00000000 --- a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-llvmbot/Dockerfile +++ /dev/null @@ -1,48 +0,0 @@ -# Auto generated from tcwg-base/tcwg-llvmbot/Dockerfile.in. Do not edit. -FROM linaro/ci-arm64-tcwg-base-ubuntu:xenial - -RUN apt-get update \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y \ - buildbot \ - && apt-get clean \ - && rm -rf \ - /var/lib/apt/lists/* \ - /tmp/* \ - /var/tmp/* - -COPY buildslave/ llvm-config-buildslave/ -RUN cd ./llvm-config-buildslave/ \ - && HOME=$(pwd) ./llvm-setup \ - && ./cleanup-users \ - && cd ../.. \ - && rm -rf \ - llvm-config-buildslave/ \ - /var/lib/apt/lists/* \ - /tmp/* \ - /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 \ - && cd /usr/local \ - && wget --progress=dot:giga http://releases.llvm.org/5.0.1/$clang_ver.tar.xz \ - && tar xf $clang_ver.tar.xz \ - && rm $clang_ver.tar.xz - -VOLUME /home - -COPY run.sh . -COPY start.sh . - -ENTRYPOINT ["/run.sh"] -CMD ["start.sh"] -# checksum: e518582a2a434e66d9c9388c0bd2fa91 diff --git a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-llvmbot/gerrit-branches b/xenial-arm64-tcwg-base/xenial-arm64-tcwg-llvmbot/gerrit-branches deleted file mode 120000 index b8865f78..00000000 --- a/xenial-arm64-tcwg-base/xenial-arm64-tcwg-llvmbot/gerrit-branches +++ /dev/null @@ -1 +0,0 @@ -../../tcwg-base/tcwg-llvmbot/gerrit-branches
\ No newline at end of file diff --git a/xenial-arm64/Dockerfile b/xenial-arm64/Dockerfile deleted file mode 100644 index 58ad1d38..00000000 --- a/xenial-arm64/Dockerfile +++ /dev/null @@ -1,65 +0,0 @@ -FROM linaro/base-arm64-ubuntu:xenial - -COPY *.list *.key /etc/apt/sources.list.d/ - -RUN echo 'deb http://ports.ubuntu.com/ubuntu-ports xenial main universe' > /etc/apt/sources.list \ - && apt-key add /etc/apt/sources.list.d/*.key \ - && apt-get update \ - && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y devscripts \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ - abootimg \ - acpica-tools \ - android-tools-fsutils \ - autoconf \ - automake \ - bc \ - bison \ - build-essential \ - ccache \ - curl \ - debhelper \ - debian-archive-keyring \ - debian-keyring \ - device-tree-compiler \ - doxygen \ - fakeroot \ - flex \ - gcc \ - gdisk \ - git \ - kernel-wedge \ - kpartx \ - lava-tool \ - libtool \ - libvirt-bin \ - linaro-image-tools \ - lsb-release \ - openjdk-8-jdk \ - openssh-server \ - python-requests \ - qemu-user-static \ - sudo \ - time \ - u-boot-tools \ - uuid-dev \ - virtinst \ - wget \ - zip \ - zsync \ - && apt-get clean \ - && rm -rf \ - /etc/apt/sources.list.d/*.key \ - /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 - -VOLUME ["/var/lib/libvirt"] - -EXPOSE 22 -CMD ["/usr/sbin/sshd", "-D"] diff --git a/xenial-armhf-tcwg-base/Dockerfile b/xenial-armhf-tcwg-base/Dockerfile deleted file mode 100644 index bd40b0da..00000000 --- a/xenial-armhf-tcwg-base/Dockerfile +++ /dev/null @@ -1,112 +0,0 @@ -# Auto generated from tcwg-base/Dockerfile.in. Do not edit. -FROM linaro/base-armhf-ubuntu:xenial - -RUN (url="http://ports.ubuntu.com/ubuntu-ports/"; \ - ubuntu=xenial; \ - for i in $ubuntu $ubuntu-updates $ubuntu-backports $ubuntu-security; do \ - for j in deb deb-src; do \ - echo "$j $url $i main restricted universe multiverse"; \ - done; \ - echo; \ - done) > /etc/apt/sources.list \ - && apt-get update \ - && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y devscripts \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ - alien \ - autoconf \ - autogen \ - automake \ - bc \ - 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 \ - liblzma-dev \ - libncurses5-dev \ - libpython2.7-dev \ - libreadline-dev \ - libssl-dev \ - libtcnative-1 \ - libtool \ - linux-tools-generic \ - lzop \ - make \ - net-tools \ - netcat \ - nfs-kernel-server \ - ninja-build \ - openjdk-8-jdk \ - openssh-server \ - python-dev \ - postfix \ - pxz \ - qemu-system-arm \ - qemu-user \ - rsync \ - subversion \ - sudo \ - tclsh \ - texinfo \ - texlive-fonts-recommended \ - texlive-latex-recommended \ - time \ - 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 "/.*MaxSesssions.*/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 - -# 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 ["linux32", "/usr/sbin/sshd", "-D"] -# checksum: 629c67d4f4a70927879832d6301c4462 diff --git a/xenial-armhf-tcwg-base/build.sh b/xenial-armhf-tcwg-base/build.sh deleted file mode 120000 index 67d8934e..00000000 --- a/xenial-armhf-tcwg-base/build.sh +++ /dev/null @@ -1 +0,0 @@ -../tcwg-base/build.sh
\ No newline at end of file diff --git a/xenial-armhf-tcwg-base/gerrit-branches b/xenial-armhf-tcwg-base/gerrit-branches deleted file mode 120000 index 3cbaca1d..00000000 --- a/xenial-armhf-tcwg-base/gerrit-branches +++ /dev/null @@ -1 +0,0 @@ -../tcwg-base/gerrit-branches
\ No newline at end of file diff --git a/xenial-armhf-tcwg-base/xenial-armhf-tcwg-build/Dockerfile b/xenial-armhf-tcwg-base/xenial-armhf-tcwg-build/Dockerfile deleted file mode 100644 index 958c9360..00000000 --- a/xenial-armhf-tcwg-base/xenial-armhf-tcwg-build/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -# Auto generated from tcwg-base/tcwg-build/Dockerfile.in. Do not edit. -FROM linaro/ci-armhf-tcwg-base-ubuntu:xenial - -RUN groupadd -g 9000 tcwg-infra \ - && useradd -m -g tcwg-infra -G kvm -u 11827 tcwg-buildslave \ - && useradd -m -g tcwg-infra -G kvm -u 12326 tcwg-benchmark \ - && echo '%tcwg-infra ALL = NOPASSWD: ALL' > /etc/sudoers.d/jenkins \ - && chmod 0440 /etc/sudoers.d/jenkins \ - && 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: 484fd5849721dbc7371264157f143624 diff --git a/xenial-armhf-tcwg-base/xenial-armhf-tcwg-build/build.sh b/xenial-armhf-tcwg-base/xenial-armhf-tcwg-build/build.sh deleted file mode 120000 index 50162e02..00000000 --- a/xenial-armhf-tcwg-base/xenial-armhf-tcwg-build/build.sh +++ /dev/null @@ -1 +0,0 @@ -../../tcwg-base/tcwg-build/build.sh
\ No newline at end of file diff --git a/xenial-armhf-tcwg-base/xenial-armhf-tcwg-build/gerrit-branches b/xenial-armhf-tcwg-base/xenial-armhf-tcwg-build/gerrit-branches deleted file mode 120000 index 628350a5..00000000 --- a/xenial-armhf-tcwg-base/xenial-armhf-tcwg-build/gerrit-branches +++ /dev/null @@ -1 +0,0 @@ -../../tcwg-base/tcwg-build/gerrit-branches
\ No newline at end of file diff --git a/xenial-armhf-tcwg-base/xenial-armhf-tcwg-build/xenial-armhf-tcwg-test/Dockerfile b/xenial-armhf-tcwg-base/xenial-armhf-tcwg-build/xenial-armhf-tcwg-test/Dockerfile deleted file mode 100644 index 9f4b650f..00000000 --- a/xenial-armhf-tcwg-base/xenial-armhf-tcwg-build/xenial-armhf-tcwg-test/Dockerfile +++ /dev/null @@ -1,9 +0,0 @@ -# Auto generated from tcwg-base/tcwg-build/tcwg-test/Dockerfile.in. Do not edit. -FROM linaro/ci-armhf-tcwg-build-ubuntu:xenial - -COPY tcwg-buildslave/.ssh /root/.ssh - -RUN chmod 0700 /root/.ssh/ \ - && sed -i -e "/.*PermitRootLogin.*/d" /etc/ssh/sshd_config \ - && echo "PermitRootLogin without-password" >> /etc/ssh/sshd_config -# checksum: 3f70f196ffb86f43cdc7369b271c8c1d diff --git a/xenial-armhf-tcwg-base/xenial-armhf-tcwg-build/xenial-armhf-tcwg-test/build.sh b/xenial-armhf-tcwg-base/xenial-armhf-tcwg-build/xenial-armhf-tcwg-test/build.sh deleted file mode 120000 index 44bceb16..00000000 --- a/xenial-armhf-tcwg-base/xenial-armhf-tcwg-build/xenial-armhf-tcwg-test/build.sh +++ /dev/null @@ -1 +0,0 @@ -../../../tcwg-base/tcwg-build/tcwg-test/build.sh
\ No newline at end of file diff --git a/xenial-armhf-tcwg-base/xenial-armhf-tcwg-build/xenial-armhf-tcwg-test/gerrit-branches b/xenial-armhf-tcwg-base/xenial-armhf-tcwg-build/xenial-armhf-tcwg-test/gerrit-branches deleted file mode 120000 index 4bcb423c..00000000 --- a/xenial-armhf-tcwg-base/xenial-armhf-tcwg-build/xenial-armhf-tcwg-test/gerrit-branches +++ /dev/null @@ -1 +0,0 @@ -../../../tcwg-base/tcwg-build/tcwg-test/gerrit-branches
\ No newline at end of file diff --git a/xenial-armhf-tcwg-base/xenial-armhf-tcwg-dev/Dockerfile b/xenial-armhf-tcwg-base/xenial-armhf-tcwg-dev/Dockerfile deleted file mode 100644 index 1bbdba71..00000000 --- a/xenial-armhf-tcwg-base/xenial-armhf-tcwg-dev/Dockerfile +++ /dev/null @@ -1,49 +0,0 @@ -# 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 \ - git-gui \ - git-svn \ - gnat-5 \ - less \ - locales \ - libgmp-dev \ - libmpc-dev \ - libmpfr-dev \ - mc \ - screen \ - 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 \ - && 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 - -ENTRYPOINT ["linux32", "/run.sh"] -CMD ["start.sh"] -# checksum: ece1982cfb0a9675f6cb4af314a31779 diff --git a/xenial-armhf-tcwg-base/xenial-armhf-tcwg-dev/gerrit-branches b/xenial-armhf-tcwg-base/xenial-armhf-tcwg-dev/gerrit-branches deleted file mode 120000 index cd148228..00000000 --- a/xenial-armhf-tcwg-base/xenial-armhf-tcwg-dev/gerrit-branches +++ /dev/null @@ -1 +0,0 @@ -../../tcwg-base/tcwg-dev/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 deleted file mode 100644 index 00ed72eb..00000000 --- a/xenial-armhf-tcwg-base/xenial-armhf-tcwg-llvmbot/Dockerfile +++ /dev/null @@ -1,48 +0,0 @@ -# Auto generated from tcwg-base/tcwg-llvmbot/Dockerfile.in. Do not edit. -FROM linaro/ci-armhf-tcwg-base-ubuntu:xenial - -RUN apt-get update \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y \ - buildbot \ - && apt-get clean \ - && rm -rf \ - /var/lib/apt/lists/* \ - /tmp/* \ - /var/tmp/* - -COPY buildslave/ llvm-config-buildslave/ -RUN cd ./llvm-config-buildslave/ \ - && HOME=$(pwd) ./llvm-setup \ - && ./cleanup-users \ - && cd ../.. \ - && rm -rf \ - llvm-config-buildslave/ \ - /var/lib/apt/lists/* \ - /tmp/* \ - /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 \ - && cd /usr/local \ - && wget --progress=dot:giga http://releases.llvm.org/5.0.1/$clang_ver.tar.xz \ - && tar xf $clang_ver.tar.xz \ - && rm $clang_ver.tar.xz - -VOLUME /home - -COPY run.sh . -COPY start.sh . - -ENTRYPOINT ["linux32", "/run.sh"] -CMD ["start.sh"] -# checksum: 478e345cb93c7e7a70535a26606fb9ed diff --git a/xenial-armhf-tcwg-base/xenial-armhf-tcwg-llvmbot/gerrit-branches b/xenial-armhf-tcwg-base/xenial-armhf-tcwg-llvmbot/gerrit-branches deleted file mode 120000 index b8865f78..00000000 --- a/xenial-armhf-tcwg-base/xenial-armhf-tcwg-llvmbot/gerrit-branches +++ /dev/null @@ -1 +0,0 @@ -../../tcwg-base/tcwg-llvmbot/gerrit-branches
\ No newline at end of file diff --git a/xenial-armhf/Dockerfile b/xenial-armhf/Dockerfile index 0d96cde0..198ea4e8 100644 --- a/xenial-armhf/Dockerfile +++ b/xenial-armhf/Dockerfile @@ -37,6 +37,7 @@ RUN echo 'deb http://ports.ubuntu.com/ubuntu-ports xenial main universe' > /etc/ openjdk-8-jdk \ openssh-server \ python-requests \ + python3-requests \ qemu-user-static \ sudo \ time \ diff --git a/xenial-armhf/build.sh b/xenial-armhf/build.sh index 1203ab3b..1fc5b660 100755 --- a/xenial-armhf/build.sh +++ b/xenial-armhf/build.sh @@ -17,6 +17,6 @@ ARCHITECTURE=$(basename ${PWD} | cut -f2 -d '-') cp -a ../linaro-overlay-repo.list ../linaro-overlay-repo.key . sed -e "s|@DISTRIBUTION@|${DISTRIBUTION}|" -i *.list -image=linaro/ci-${ARCHITECTURE}-ubuntu:${DISTRIBUTION} +image=linaro/jenkins-${ARCHITECTURE}-ubuntu:${DISTRIBUTION} docker build --pull --tag=$image . echo $image > .docker-tag diff --git a/xenial-i386-tcwg-base/Dockerfile b/xenial-i386-tcwg-base/Dockerfile deleted file mode 100644 index d49fa71b..00000000 --- a/xenial-i386-tcwg-base/Dockerfile +++ /dev/null @@ -1,130 +0,0 @@ -# Auto generated from tcwg-base/Dockerfile.in. Do not edit. -FROM linaro/base-i386-ubuntu:xenial - -RUN (url="http://archive.ubuntu.com/ubuntu/"; \ - ubuntu=xenial; \ - for i in $ubuntu $ubuntu-updates $ubuntu-backports $ubuntu-security; do \ - for j in deb deb-src; do \ - echo "$j $url $i main restricted universe multiverse"; \ - done; \ - echo; \ - done) > /etc/apt/sources.list \ - && apt-get update \ - && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \ - && dpkg-divert --local --rename --add /sbin/initctl \ - && ln -s /bin/true /sbin/initctl \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y devscripts \ - && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ - alien \ - autoconf \ - autogen \ - automake \ - bc \ - 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 \ - g++-multilib \ - gawk \ - gdb \ - gdbserver \ - git \ - git-review \ - groff \ - less \ - libexpat1-dev \ - libglib2.0-dev \ - liblzma-dev \ - libncurses5-dev \ - libpython2.7-dev \ - libreadline-dev \ - libssl-dev \ - libtcnative-1 \ - libtool \ - linux-tools-generic \ - lzop \ - make \ - mingw-w64 \ - net-tools \ - netcat \ - nfs-kernel-server \ - ninja-build \ - openjdk-8-jdk \ - openssh-server \ - pkg-config \ - python-dev \ - postfix \ - pxz \ - qemu-system-arm \ - qemu-user \ - rsync \ - subversion \ - sudo \ - tclsh \ - texinfo \ - texlive-fonts-recommended \ - texlive-latex-recommended \ - time \ - valgrind \ - vim \ - virtualenv \ - wget \ - wine \ - 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 "/.*MaxSesssions.*/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 - -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 \ - && 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.$$ - -# 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 ["linux32", "/usr/sbin/sshd", "-D"] -# checksum: 79365fd7d8ee7258430265a506cbfed1 diff --git a/xenial-i386-tcwg-base/build.sh b/xenial-i386-tcwg-base/build.sh deleted file mode 120000 index 67d8934e..00000000 --- a/xenial-i386-tcwg-base/build.sh +++ /dev/null @@ -1 +0,0 @@ -../tcwg-base/build.sh
\ No newline at end of file diff --git a/xenial-i386-tcwg-base/gerrit-branches b/xenial-i386-tcwg-base/gerrit-branches deleted file mode 120000 index 3cbaca1d..00000000 --- a/xenial-i386-tcwg-base/gerrit-branches +++ /dev/null @@ -1 +0,0 @@ -../tcwg-base/gerrit-branches
\ No newline at end of file diff --git a/xenial-i386-tcwg-base/xenial-i386-tcwg-build/Dockerfile b/xenial-i386-tcwg-base/xenial-i386-tcwg-build/Dockerfile deleted file mode 100644 index e2354abc..00000000 --- a/xenial-i386-tcwg-base/xenial-i386-tcwg-build/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -# Auto generated from tcwg-base/tcwg-build/Dockerfile.in. Do not edit. -FROM linaro/ci-i386-tcwg-base-ubuntu:xenial - -RUN groupadd -g 9000 tcwg-infra \ - && useradd -m -g tcwg-infra -G kvm -u 11827 tcwg-buildslave \ - && useradd -m -g tcwg-infra -G kvm -u 12326 tcwg-benchmark \ - && echo '%tcwg-infra ALL = NOPASSWD: ALL' > /etc/sudoers.d/jenkins \ - && chmod 0440 /etc/sudoers.d/jenkins \ - && 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: d3ad0282af3e17dd2bc7562dcf7c3bd9 diff --git a/xenial-i386-tcwg-base/xenial-i386-tcwg-build/build.sh b/xenial-i386-tcwg-base/xenial-i386-tcwg-build/build.sh deleted file mode 120000 index 50162e02..00000000 --- a/xenial-i386-tcwg-base/xenial-i386-tcwg-build/build.sh +++ /dev/null @@ -1 +0,0 @@ -../../tcwg-base/tcwg-build/build.sh
\ No newline at end of file diff --git a/xenial-i386-tcwg-base/xenial-i386-tcwg-build/gerrit-branches b/xenial-i386-tcwg-base/xenial-i386-tcwg-build/gerrit-branches deleted file mode 120000 index 628350a5..00000000 --- a/xenial-i386-tcwg-base/xenial-i386-tcwg-build/gerrit-branches +++ /dev/null @@ -1 +0,0 @@ -../../tcwg-base/tcwg-build/gerrit-branches
\ No newline at end of file diff --git a/xenial-i386-tcwg-base/xenial-i386-tcwg-dev/Dockerfile b/xenial-i386-tcwg-base/xenial-i386-tcwg-dev/Dockerfile deleted file mode 100644 index d0603797..00000000 --- a/xenial-i386-tcwg-base/xenial-i386-tcwg-dev/Dockerfile +++ /dev/null @@ -1,49 +0,0 @@ -# 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 \ - git-gui \ - git-svn \ - gnat-5 \ - less \ - locales \ - libgmp-dev \ - libmpc-dev \ - libmpfr-dev \ - mc \ - screen \ - 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 \ - && 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 - -ENTRYPOINT ["linux32", "/run.sh"] -CMD ["start.sh"] -# checksum: d4713d03be137a74e7d172adec5fd118 diff --git a/xenial-i386-tcwg-base/xenial-i386-tcwg-dev/build.sh b/xenial-i386-tcwg-base/xenial-i386-tcwg-dev/build.sh deleted file mode 120000 index e8571a37..00000000 --- a/xenial-i386-tcwg-base/xenial-i386-tcwg-dev/build.sh +++ /dev/null @@ -1 +0,0 @@ -../../tcwg-base/tcwg-dev/build.sh
\ No newline at end of file diff --git a/xenial-i386-tcwg-base/xenial-i386-tcwg-dev/gerrit-branches b/xenial-i386-tcwg-base/xenial-i386-tcwg-dev/gerrit-branches deleted file mode 120000 index cd148228..00000000 --- a/xenial-i386-tcwg-base/xenial-i386-tcwg-dev/gerrit-branches +++ /dev/null @@ -1 +0,0 @@ -../../tcwg-base/tcwg-dev/gerrit-branches
\ No newline at end of file |