Mesa (master): ci: Switch the baremetal runner to be an x86 docker image.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon May 18 19:58:52 UTC 2020


Module: Mesa
Branch: master
Commit: 68b3b5bcab95f34073fcde7fe671cb25975218b0
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=68b3b5bcab95f34073fcde7fe671cb25975218b0

Author: Eric Anholt <eric at anholt.net>
Date:   Wed May 13 11:08:08 2020 -0700

ci: Switch the baremetal runner to be an x86 docker image.

The runner is an x86 system, so running the ARM image meant doing
everything at runtime under qemu, and for the xz of the test rootfs that
was quite expensive.  Also, we can rebuild x86 images much faster than we
can rebuild arm images for container development, which will help unblock
some of the other feature parity work I have to do versus the old docker
system that cheza is using.

Reviewed-by: Christian Gmeiner <christian.gmeiner at gmail.com>
Reviewed-by: Tomeu Vizoso <tomeu.vizoso at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5033>

---

 .gitlab-ci.yml                             | 18 +++++-
 .gitlab-ci/container/x86_cross_arm_test.sh | 95 ++++++++++++++++++++++++++++++
 2 files changed, 112 insertions(+), 1 deletion(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 6e1ff7d2b10..33649095cba 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -186,6 +186,20 @@ arm_build:
   needs:
     - arm_build
 
+# x86 image with ARM rootfses for baremetal testing.
+x86_cross_arm_test:
+  extends: x86_build
+  variables:
+    FDO_DISTRIBUTION_TAG: &x86_cross_arm_test "2020-05-13"
+
+.use-x86_cross_arm_test:
+  variables:
+    TAG: *x86_cross_arm_test
+  image: "$CI_REGISTRY_IMAGE/debian/x86_cross_arm_test:$TAG"
+  needs:
+    - x86_cross_arm_test
+
+
 # Debian 10 based ARM test image
 arm_test:
   extends: arm_build
@@ -822,7 +836,7 @@ arm64_a630_gles31_options:
 arm64_a306_gles2:
   extends:
     - .baremetal-test
-    - .use-arm_build
+    - .use-x86_cross_arm_test
     - .freedreno-rules
   variables:
     BM_KERNEL: /lava-files/Image.gz
@@ -838,6 +852,8 @@ arm64_a306_gles2:
   script:
     - .gitlab-ci/bare-metal/fastboot.sh
   needs:
+    - x86_cross_arm_test
+    - arm_build
     - meson-arm64
   tags:
     - google-freedreno-db410c
diff --git a/.gitlab-ci/container/x86_cross_arm_test.sh b/.gitlab-ci/container/x86_cross_arm_test.sh
new file mode 100644
index 00000000000..6ae96bf3708
--- /dev/null
+++ b/.gitlab-ci/container/x86_cross_arm_test.sh
@@ -0,0 +1,95 @@
+#!/bin/bash
+
+set -e
+set -o xtrace
+
+# etnaviv will eventually need armhf too.
+CROSS_ARCHITECTURES="arm64"
+
+for arch in $CROSS_ARCHITECTURES; do
+    dpkg --add-architecture $arch
+done
+
+############### Install packages for building
+apt-get install -y ca-certificates
+sed -i -e 's/http:\/\/deb/https:\/\/deb/g' /etc/apt/sources.list
+echo 'deb https://deb.debian.org/debian buster-backports main' >/etc/apt/sources.list.d/backports.list
+apt-get update
+
+apt-get install -y --no-remove \
+        abootimg \
+        android-sdk-ext4-utils \
+        bc \
+        bison \
+        bzip2 \
+        ccache \
+        cmake \
+        cpio \
+        g++ \
+        debootstrap \
+        fastboot \
+        flex \
+        git \
+        meson \
+        netcat \
+        python3-distutils \
+        python3-minimal \
+        python3-serial \
+        python3.7 \
+        pkg-config \
+        procps \
+        unzip
+
+# Cross-build test deps
+for arch in $CROSS_ARCHITECTURES; do
+    apt-get install -y --no-remove \
+        crossbuild-essential-${arch} \
+        libdrm-dev:${arch} \
+        libegl1-mesa-dev:${arch} \
+        libelf-dev:${arch} \
+        libexpat1-dev:${arch} \
+        libffi-dev:${arch} \
+        libgbm-dev:${arch} \
+        libgles2-mesa-dev:${arch} \
+        libpng-dev:${arch} \
+        libstdc++6:${arch} \
+        libtinfo-dev:${arch} \
+        libegl1-mesa-dev:${arch} \
+        libvulkan-dev:${arch}
+
+    mkdir /var/cache/apt/archives/${arch}
+done
+
+. .gitlab-ci/container/container_pre_build.sh
+
+############### Create rootfs
+
+for arch in $CROSS_ARCHITECTURES; do
+  . .gitlab-ci/create-cross-file.sh $arch
+
+  DEBIAN_ARCH=$arch . .gitlab-ci/container/lava_arm.sh
+done
+
+############### Uninstall the build software
+
+ccache --show-stats
+
+apt-get purge -y \
+        bc \
+        bison \
+        bzip2 \
+        ccache \
+        cmake \
+        g++ \
+        flex \
+        git \
+        meson \
+        pkg-config \
+        python3-distutils \
+        procps
+
+for arch in $CROSS_ARCHITECTURES; do
+    apt-get purge -y ".*:${arch}"
+done
+
+apt-get autoremove -y --purge



More information about the mesa-commit mailing list