Mesa (master): gitlab-ci: Use separate arm64 build/test docker images

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Nov 6 12:30:11 UTC 2019


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

Author: Michel Dänzer <mdaenzer at redhat.com>
Date:   Mon Nov  4 09:54:09 2019 +0100

gitlab-ci: Use separate arm64 build/test docker images

The image used for test jobs is only about 1/6 as big as before, which
may help avoid some issues with some of the test boards.

Inspired by https://gitlab.freedesktop.org/mesa/mesa/issues/2046 .

v2:
* Leave LIBDRM_VERSION at 2.4.99 (Daniel Stone)
* Delete more build artifacts from dEQP tree (Daniel Stone)
v3:
* Set LD_LIBRARY_PATH for ldd

Acked-by: Daniel Stone <daniels at collabora.com> # v2
Reviewed-by: Eric Anholt <eric at anholt.net> # Except for the ldd line

---

 .gitlab-ci.yml                          |  17 ++++-
 .gitlab-ci/debian-arm64-install.sh      |  63 ------------------
 .gitlab-ci/debian-arm64-test-install.sh | 109 ++++++++++++++++++++++++++++++++
 3 files changed, 123 insertions(+), 66 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 0c1a59ba334..3c9b41d0414 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -15,12 +15,14 @@
 variables:
   UPSTREAM_REPO: mesa/mesa
   DEBIAN_TAG: "2019-10-30"
-  DEBIAN_ARM64_TAG: "arm64v8-2019-10-23"
+  DEBIAN_ARM64_TAG: "arm64v8-2019-11-06"
+  DEBIAN_ARM64_TEST_TAG: "arm64v8-test-2019-11-06"
   STRETCH_TAG: "2019-09-18"
   DEBIAN_VERSION: buster-slim
   STRETCH_VERSION: stretch-slim
   DEBIAN_IMAGE: "$CI_REGISTRY_IMAGE/debian/$DEBIAN_VERSION:$DEBIAN_TAG"
   DEBIAN_ARM64_IMAGE: "$CI_REGISTRY_IMAGE/debian/$DEBIAN_VERSION:$DEBIAN_ARM64_TAG"
+  DEBIAN_ARM64_TEST_IMAGE: "$CI_REGISTRY_IMAGE/debian/$DEBIAN_VERSION:$DEBIAN_ARM64_TEST_TAG"
   STRETCH_IMAGE: "$CI_REGISTRY_IMAGE/debian/$STRETCH_VERSION:$STRETCH_TAG"
 
 include:
@@ -118,6 +120,14 @@ debian-10:arm64:
     DEBIAN_TAG: "$DEBIAN_ARM64_TAG"
     DEBIAN_EXEC: 'bash .gitlab-ci/debian-arm64-install.sh'
 
+debian-10-test:arm64:
+  extends:
+    - .debian at container-ifnot-exists@arm64v8
+    - .container
+  variables:
+    DEBIAN_TAG: "$DEBIAN_ARM64_TEST_TAG"
+    DEBIAN_EXEC: 'bash .gitlab-ci/debian-arm64-test-install.sh'
+
 
 # BUILD
 
@@ -463,6 +473,7 @@ scons-old-llvm:
     # Note: Build dir (and thus install) may be dirty due to GIT_STRATEGY
     - rm -rf install
     - tar -xf artifacts/install.tar
+    - LD_LIBRARY_PATH=install/lib ldd install/lib/{*,dri/swrast_dri}.so
     - ./artifacts/deqp-runner.sh
   artifacts:
     when: on_failure
@@ -507,7 +518,7 @@ test-softpipe-gles3-limited:
 
 arm64_a630_gles2:
   extends: .deqp-test
-  image: $DEBIAN_ARM64_IMAGE
+  image: $DEBIAN_ARM64_TEST_IMAGE
   variables:
     DEQP_VER: gles2
     DEQP_RENDERER_MATCH: "FD630"
@@ -520,7 +531,7 @@ arm64_a630_gles2:
     - meson-arm64
   needs:
     - meson-arm64
-    - debian-10:arm64
+    - debian-10-test:arm64
 
 arm64_a630_gles31:
   extends: arm64_a630_gles2
diff --git a/.gitlab-ci/debian-arm64-install.sh b/.gitlab-ci/debian-arm64-install.sh
index 40edd783a30..95647fd64ee 100644
--- a/.gitlab-ci/debian-arm64-install.sh
+++ b/.gitlab-ci/debian-arm64-install.sh
@@ -12,31 +12,21 @@ apt-get update
 apt-get -y install \
 	bc \
 	bison \
-	bzip2 \
 	ccache \
-	cmake \
 	crossbuild-essential-armhf \
-	curl \
 	flex \
 	g++ \
 	gettext \
-	git \
-	libdrm-dev \
 	libdrm-dev:armhf \
 	libelf-dev \
 	libelf-dev:armhf \
 	libexpat1-dev \
 	libexpat1-dev:armhf \
-	libgbm-dev \
-	libgles2-mesa-dev \
-	libpng-dev \
 	libssl-dev \
 	llvm-7-dev:armhf \
 	llvm-8-dev \
 	meson \
-	ninja-build \
 	pkg-config \
-	procps \
 	python \
 	python3-mako \
 	wget \
@@ -60,62 +50,9 @@ tar -xvf $LIBDRM_VERSION.tar.bz2 && rm $LIBDRM_VERSION.tar.bz2
 cd $LIBDRM_VERSION; meson build/ -Detnaviv=true; ninja -C build/ install; cd ..
 rm -rf $LIBDRM_VERSION
 
-############### Build dEQP
-
-git config --global user.email "mesa at example.com"
-git config --global user.name "Mesa CI"
-# XXX: Use --depth 1 once we can drop the cherry-picks.
-git clone \
-    https://github.com/KhronosGroup/VK-GL-CTS.git \
-    -b opengl-es-cts-3.2.5.1 \
-    /VK-GL-CTS
-cd /VK-GL-CTS
-# Fix surfaceless build
-git cherry-pick -x 22f41e5e321c6dcd8569c4dad91bce89f06b3670
-git cherry-pick -x 1daa8dff73161ea60ead965bd6c9f2a0a2165648
-
-# surfaceless links against libkms and such despite not using it.
-sed -i '/gbm/d' targets/surfaceless/surfaceless.cmake
-sed -i '/libkms/d' targets/surfaceless/surfaceless.cmake
-sed -i '/libgbm/d' targets/surfaceless/surfaceless.cmake
-
-# --insecure is due to SSL cert failures hitting sourceforge for zlib and
-# libpng (sigh).  The archives get their checksums checked anyway, and git
-# always goes through ssh or https.
-python3 external/fetch_sources.py --insecure
-
-mkdir -p /deqp
-cd /deqp
-cmake -G Ninja \
-      -DDEQP_TARGET=surfaceless               \
-      -DCMAKE_BUILD_TYPE=Release              \
-      /VK-GL-CTS
-ninja
-
-# Copy out the mustpass lists we want from a bunch of other junk.
-mkdir /deqp/mustpass
-for gles in gles2 gles3 gles31; do
-    cp \
-        /deqp/external/openglcts/modules/gl_cts/data/mustpass/gles/aosp_mustpass/3.2.5.x/$gles-master.txt \
-        /deqp/mustpass/$gles-master.txt
-done
-
-rm -rf /deqp/external
-rm -rf /deqp/modules/internal
-rm -rf /deqp/executor
-rm -rf /deqp/execserver
-rm -rf /deqp/modules/egl
-rm -rf /deqp/framework
-du -sh *
-rm -rf /VK-GL-CTS
-
 ############### Uninstall the build software
 
 apt-get purge -y \
-        cmake \
-        git \
-        libgbm-dev \
-        libgles2-mesa-dev \
         wget
 
 apt-get autoremove -y --purge
diff --git a/.gitlab-ci/debian-arm64-test-install.sh b/.gitlab-ci/debian-arm64-test-install.sh
new file mode 100644
index 00000000000..bc7233e4bdc
--- /dev/null
+++ b/.gitlab-ci/debian-arm64-test-install.sh
@@ -0,0 +1,109 @@
+#!/bin/bash
+
+set -e
+set -o xtrace
+
+############### Install packages for building
+apt-get -y install 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 -y install \
+	bzip2 \
+	cmake \
+	g++ \
+	gcc \
+	git \
+	libc6-dev \
+	libexpat1 \
+	libgbm-dev \
+	libgbm-dev \
+	libgles2-mesa-dev \
+	libllvm8 \
+	libpng16-16 \
+	libpng-dev \
+	meson \
+	pkg-config \
+	procps \
+	python \
+	wget \
+	zlib1g
+
+export             LIBDRM_VERSION=libdrm-2.4.99
+
+############### Build libdrm
+
+wget https://dri.freedesktop.org/libdrm/$LIBDRM_VERSION.tar.bz2
+tar -xvf $LIBDRM_VERSION.tar.bz2 && rm $LIBDRM_VERSION.tar.bz2
+cd $LIBDRM_VERSION; meson build/ -Detnaviv=true; ninja -C build/ install; cd ..
+rm -rf $LIBDRM_VERSION
+
+############### Build dEQP
+
+git config --global user.email "mesa at example.com"
+git config --global user.name "Mesa CI"
+# XXX: Use --depth 1 once we can drop the cherry-picks.
+git clone \
+    https://github.com/KhronosGroup/VK-GL-CTS.git \
+    -b opengl-es-cts-3.2.5.1 \
+    /VK-GL-CTS
+cd /VK-GL-CTS
+# Fix surfaceless build
+git cherry-pick -x 22f41e5e321c6dcd8569c4dad91bce89f06b3670
+git cherry-pick -x 1daa8dff73161ea60ead965bd6c9f2a0a2165648
+
+# surfaceless links against libkms and such despite not using it.
+sed -i '/gbm/d' targets/surfaceless/surfaceless.cmake
+sed -i '/libkms/d' targets/surfaceless/surfaceless.cmake
+sed -i '/libgbm/d' targets/surfaceless/surfaceless.cmake
+
+# --insecure is due to SSL cert failures hitting sourceforge for zlib and
+# libpng (sigh).  The archives get their checksums checked anyway, and git
+# always goes through ssh or https.
+python3 external/fetch_sources.py --insecure
+
+mkdir -p /deqp
+cd /deqp
+cmake -G Ninja \
+      -DDEQP_TARGET=surfaceless               \
+      -DCMAKE_BUILD_TYPE=Release              \
+      /VK-GL-CTS
+ninja
+
+# Copy out the mustpass lists we want from a bunch of other junk.
+mkdir /deqp/mustpass
+for gles in gles2 gles3 gles31; do
+    cp \
+        /deqp/external/openglcts/modules/gl_cts/data/mustpass/gles/aosp_mustpass/3.2.5.x/$gles-master.txt \
+        /deqp/mustpass/$gles-master.txt
+done
+
+rm -rf /deqp/external
+rm -rf /deqp/modules/internal
+rm -rf /deqp/executor
+rm -rf /deqp/execserver
+rm -rf /deqp/modules/egl
+rm -rf /deqp/framework
+find -iname '*cmake*' -o -name '*ninja*' -o -name '*.o' -o -name '*.a' | xargs rm -rf
+strip modules/*/deqp-*
+du -sh *
+rm -rf /VK-GL-CTS
+
+############### Uninstall the build software
+
+apt-get purge -y \
+        bzip2 \
+        cmake \
+        g++ \
+        gcc \
+        git \
+        libc6-dev \
+        libgbm-dev \
+        libgles2-mesa-dev \
+        libpng-dev \
+        meson \
+        pkg-config \
+        python \
+        wget
+
+apt-get autoremove -y --purge




More information about the mesa-commit mailing list