Mesa (master): gitlab-ci: Use native aarch64 runner for ARM build jobs
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Oct 22 11:06:19 UTC 2019
Module: Mesa
Branch: master
Commit: 163ec5d808189f54028860e23406e6be60423028
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=163ec5d808189f54028860e23406e6be60423028
Author: Michel Dänzer <mdaenzer at redhat.com>
Date: Tue Oct 8 19:46:11 2019 +0200
gitlab-ci: Use native aarch64 runner for ARM build jobs
This allows running the regression tests.
One downside is that we can't easily build the Vulkan overlay layer,
because only x86 binaries of the glslang validator are available. If
that's important, we could either use those binaries via qemu, or build
it from source.
v2:
* Add :amd64 suffix to existing debian-9/10 job names (Eric Engestrom)
Acked-by: Eric Engestrom <eric.engestrom at intel.com> # v1
---
.gitlab-ci.yml | 59 ++++++++++++----------
...ian-test-install.sh => debian-arm64-install.sh} | 35 ++++++++-----
.gitlab-ci/debian-install.sh | 6 ++-
3 files changed, 59 insertions(+), 41 deletions(-)
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 6ee6e02ca2c..7cde2945b58 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -14,8 +14,8 @@
# repository's registry will be used there as well.
variables:
UPSTREAM_REPO: mesa/mesa
- DEBIAN_TAG: "2019-10-16"
- DEBIAN_ARM64_TAG: "arm64v8-2019-08-09"
+ DEBIAN_TAG: "2019-10-22"
+ DEBIAN_ARM64_TAG: "arm64v8-2019-10-22"
STRETCH_TAG: "2019-09-18"
DEBIAN_VERSION: buster-slim
STRETCH_VERSION: stretch-slim
@@ -67,39 +67,38 @@ stages:
# no need to pull the whole repo to build the container image
GIT_STRATEGY: none
-debian-10:
+debian-10:amd64:
extends:
- .debian at container-ifnot-exists
- .container
variables:
DEBIAN_EXEC: 'bash .gitlab-ci/debian-install.sh'
-.use-debian-10:
+.use-debian-10:amd64:
image: $DEBIAN_IMAGE
needs:
- - debian-10
+ - debian-10:amd64
-debian-9:
- extends: debian-10
+debian-9:amd64:
+ extends: debian-10:amd64
variables:
DEBIAN_TAG: $STRETCH_TAG
DEBIAN_VERSION: $STRETCH_VERSION
DEBIAN_IMAGE: $STRETCH_IMAGE
DEBIAN_EXEC: 'bash .gitlab-ci/debian-stretch-install.sh'
-.use-debian-9:
+.use-debian-9:amd64:
image: $STRETCH_IMAGE
needs:
- - debian-9
+ - debian-9:amd64
-# Builds a Docker image with the native environment and VK-GL-CTS for testing.
-test-container:arm64:
+debian-10:arm64:
extends:
- .debian at container-ifnot-exists@arm64v8
- .container
variables:
DEBIAN_TAG: "$DEBIAN_ARM64_TAG"
- DEBIAN_EXEC: 'bash .gitlab-ci/debian-test-install.sh'
+ DEBIAN_EXEC: 'bash .gitlab-ci/debian-arm64-install.sh'
# BUILD
@@ -141,14 +140,14 @@ test-container:arm64:
.meson-build:
extends:
- .build
- - .use-debian-10
+ - .use-debian-10:amd64
script:
- .gitlab-ci/meson-build.sh
.scons-build:
extends:
- .build
- - .use-debian-10
+ - .use-debian-10:amd64
variables:
SCONSFLAGS: "-j4"
script:
@@ -187,7 +186,6 @@ meson-main:
.meson-cross:
extends:
- .meson-build
- - .ci-deqp-artifacts
variables:
UNWIND: "false"
DRI_LOADERS: >
@@ -206,22 +204,29 @@ meson-main:
-D gallium-nine=false
-D llvm=false
-meson-armhf:
+.meson-arm:
extends: .meson-cross
+ image: $DEBIAN_ARM64_IMAGE
variables:
- CROSS: armhf
VULKAN_DRIVERS: freedreno
GALLIUM_DRIVERS: "etnaviv,freedreno,kmsro,lima,nouveau,panfrost,tegra,v3d,vc4"
- # Disable the tests since we're cross compiling.
EXTRA_OPTION: >
- -D build-tests=false
-D I-love-half-baked-turnips=true
- -D vulkan-overlay-layer=true
+ needs:
+ - debian-10:arm64
+ tags:
+ - aarch64
+
+meson-armhf:
+ extends: .meson-arm
+ variables:
+ CROSS: armhf
meson-arm64:
- extends: meson-armhf
+ extends:
+ - .meson-arm
+ - .ci-deqp-artifacts
variables:
- CROSS: arm64
BUILDTYPE: "debugoptimized"
# NOTE: Building SWR is 2x (yes two) times slower than all the other
@@ -300,7 +305,7 @@ meson-clover:
meson-clover-old-llvm:
extends:
- meson-clover
- - .use-debian-9
+ - .use-debian-9:amd64
variables:
UNWIND: "false"
DRI_LOADERS: >
@@ -378,7 +383,7 @@ scons:
scons-old-llvm:
extends:
- scons
- - .use-debian-9
+ - .use-debian-9:amd64
script:
- LLVM_VERSION=3.9 .gitlab-ci/scons-build.sh
- LLVM_VERSION=4.0 .gitlab-ci/scons-build.sh
@@ -393,7 +398,7 @@ scons-old-llvm:
.deqp-test:
extends:
- .test
- - .use-debian-10
+ - .use-debian-10:amd64
variables:
DEQP_SKIPS: deqp-default-skips.txt
script:
@@ -410,7 +415,7 @@ scons-old-llvm:
- meson-main
needs:
- meson-main
- - debian-10
+ - debian-10:amd64
test-llvmpipe-gles2:
parallel: 4
@@ -457,7 +462,7 @@ arm64_a630_gles2:
- meson-arm64
needs:
- meson-arm64
- - test-container:arm64
+ - debian-10:arm64
arm64_a630_gles31:
extends: arm64_a630_gles2
diff --git a/.gitlab-ci/debian-test-install.sh b/.gitlab-ci/debian-arm64-install.sh
similarity index 77%
rename from .gitlab-ci/debian-test-install.sh
rename to .gitlab-ci/debian-arm64-install.sh
index 85817d161f0..1dac7b99593 100644
--- a/.gitlab-ci/debian-test-install.sh
+++ b/.gitlab-ci/debian-arm64-install.sh
@@ -6,36 +6,49 @@ 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
+dpkg --add-architecture armhf
apt-get update
apt-get -y install \
bc \
bison \
bzip2 \
+ ccache \
cmake \
+ crossbuild-essential-armhf \
curl \
flex \
g++ \
gettext \
git \
- libelf1 \
- libexpat1 \
+ libdrm-dev \
+ libdrm-dev:armhf \
+ libelf-dev \
+ libelf-dev:armhf \
+ libexpat1-dev \
+ libexpat1-dev:armhf \
libgbm-dev \
libgles2-mesa-dev \
libpng-dev \
libssl-dev \
+ meson \
ninja-build \
pkg-config \
procps \
python \
- python3-pip \
- python3-setuptools \
- unzip \
+ python3-mako \
wget \
zlib1g-dev
-export LIBDRM_VERSION=libdrm-2.4.99
+############### Generate cross build file for Meson
+
+cross_file="/cross_file-armhf.txt"
+/usr/share/meson/debcrossgen --arch armhf -o "$cross_file"
+# Explicitly set ccache path for cross compilers
+sed -i "s|/usr/bin/\([^-]*\)-linux-gnu\([^-]*\)-g|/usr/lib/ccache/\\1-linux-gnu\\2-g|g" "$cross_file"
+# Don't need wrapper for armhf executables
+sed -i -e '/\[properties\]/a\' -e "needs_exe_wrapper = False" "$cross_file"
-pip3 install meson
+export LIBDRM_VERSION=libdrm-2.4.99
############### Build libdrm
@@ -96,12 +109,10 @@ rm -rf /VK-GL-CTS
############### Uninstall the build software
apt-get purge -y \
- bison \
cmake \
- flex \
- g++ \
- gcc \
git \
- ninja-build
+ libgbm-dev \
+ libgles2-mesa-dev \
+ wget
apt-get autoremove -y --purge
diff --git a/.gitlab-ci/debian-install.sh b/.gitlab-ci/debian-install.sh
index 8a74b2877da..774b8e02128 100644
--- a/.gitlab-ci/debian-install.sh
+++ b/.gitlab-ci/debian-install.sh
@@ -5,7 +5,7 @@ set -o xtrace
export DEBIAN_FRONTEND=noninteractive
-CROSS_ARCHITECTURES="armhf arm64 i386"
+CROSS_ARCHITECTURES="i386"
for arch in $CROSS_ARCHITECTURES; do
dpkg --add-architecture $arch
done
@@ -216,9 +216,11 @@ for arch in $CROSS_ARCHITECTURES; do
/usr/share/meson/debcrossgen --arch "$arch" -o "$cross_file"
# Explicitly set ccache path for cross compilers
sed -i "s|/usr/bin/\([^-]*\)-linux-gnu\([^-]*\)-g|/usr/lib/ccache/\\1-linux-gnu\\2-g|g" "$cross_file"
- # Work around a bug in debcrossgen that should be fixed in the next release
if [ "$arch" = "i386" ]; then
+ # Work around a bug in debcrossgen that should be fixed in the next release
sed -i "s|cpu_family = 'i686'|cpu_family = 'x86'|g" "$cross_file"
+ # Don't need wrapper for i386 executables
+ sed -i -e '/\[properties\]/a\' -e "needs_exe_wrapper = False" "$cross_file"
fi
done
More information about the mesa-commit
mailing list