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@intel.com> # v1
# 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
# no need to pull the whole repo to build the container image
GIT_STRATEGY: none
-debian-10:
+debian-10:amd64:
extends:
- .debian@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@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
.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:
.meson-cross:
extends:
- .meson-build
- - .ci-deqp-artifacts
variables:
UNWIND: "false"
DRI_LOADERS: >
-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
meson-clover-old-llvm:
extends:
- meson-clover
- - .use-debian-9
+ - .use-debian-9:amd64
variables:
UNWIND: "false"
DRI_LOADERS: >
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
.deqp-test:
extends:
- .test
- - .use-debian-10
+ - .use-debian-10:amd64
variables:
DEQP_SKIPS: deqp-default-skips.txt
script:
- meson-main
needs:
- meson-main
- - debian-10
+ - debian-10:amd64
test-llvmpipe-gles2:
parallel: 4
- meson-arm64
needs:
- meson-arm64
- - test-container:arm64
+ - debian-10:arm64
arm64_a630_gles31:
extends: arm64_a630_gles2
--- /dev/null
+#!/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
+dpkg --add-architecture armhf
+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 \
+ meson \
+ ninja-build \
+ pkg-config \
+ procps \
+ python \
+ python3-mako \
+ wget \
+ zlib1g-dev
+
+############### 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"
+
+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
+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
export DEBIAN_FRONTEND=noninteractive
-CROSS_ARCHITECTURES="armhf arm64 i386"
+CROSS_ARCHITECTURES="i386"
for arch in $CROSS_ARCHITECTURES; do
dpkg --add-architecture $arch
done
/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
+++ /dev/null
-#!/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
-apt-get update
-apt-get -y install \
- bc \
- bison \
- bzip2 \
- cmake \
- curl \
- flex \
- g++ \
- gettext \
- git \
- libelf1 \
- libexpat1 \
- libgbm-dev \
- libgles2-mesa-dev \
- libpng-dev \
- libssl-dev \
- ninja-build \
- pkg-config \
- procps \
- python \
- python3-pip \
- python3-setuptools \
- unzip \
- wget \
- zlib1g-dev
-
-export LIBDRM_VERSION=libdrm-2.4.99
-
-pip3 install meson
-
-############### 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
-du -sh *
-rm -rf /VK-GL-CTS
-
-############### Uninstall the build software
-
-apt-get purge -y \
- bison \
- cmake \
- flex \
- g++ \
- gcc \
- git \
- ninja-build
-
-apt-get autoremove -y --purge