From b4d3ae22697ec97c4ffb017aac8eeed4aad7fb74 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Michel=20D=C3=A4nzer?= Date: Mon, 4 Nov 2019 09:54:09 +0100 Subject: [PATCH] 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 # v2 Reviewed-by: Eric Anholt # 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(-) create mode 100644 .gitlab-ci/debian-arm64-test-install.sh 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@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@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@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 -- 2.30.2