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@intel.com> # v1
This commit is contained in:
parent
c5aa2711a4
commit
163ec5d808
|
@ -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@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
|
||||
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
pip3 install 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
|
||||
|
||||
|
@ -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
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue