gitlab-ci: Add ppc64el and s390x cross-build jobs

Using LLVM 8 for ppc64el and 7 for s390x (which hits some coroutine
related issues with LLVM 8).

There are some test failures we need to ignore for now. Also, the
timeout needs to be bumped from the default 30s for some tests, because
they can take longer under emulation.

Reviewed-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3643>
This commit is contained in:
Michel Dänzer 2020-01-30 18:21:15 +01:00 committed by Marge Bot
parent a443f81f26
commit 65610ec774
11 changed files with 67 additions and 7 deletions

View File

@ -112,7 +112,7 @@ x86_build:
- .debian@container-ifnot-exists
- .container
variables:
DEBIAN_TAG: &x86_build "2020-01-14"
DEBIAN_TAG: &x86_build "2020-02-05"
.use-x86_build:
variables:
@ -312,6 +312,7 @@ meson-main:
-D gallium-va=false
-D gallium-xa=false
-D gallium-nine=false
LLVM_VERSION: "8"
.meson-arm:
extends:
@ -342,7 +343,6 @@ meson-arm64:
- .meson-arm
- .ci-deqp-artifacts
variables:
LLVM_VERSION: "8"
VULKAN_DRIVERS: "freedreno,amd"
script:
- .gitlab-ci/meson-build.sh
@ -467,6 +467,25 @@ meson-i386:
-D osmesa=classic
-D werror=true
meson-s390x:
extends:
- .meson-cross
variables:
CROSS: s390x
GALLIUM_DRIVERS: "swrast"
LLVM_VERSION: "7"
script:
- dpkg -i /var/cache/apt/archives/$CROSS/*.deb
- .gitlab-ci/meson-build.sh
meson-ppc64el:
extends:
- meson-s390x
variables:
CROSS: ppc64el
GALLIUM_DRIVERS: "nouveau,swrast,virgl"
LLVM_VERSION: "8"
meson-mingw32-x86_64:
extends: .meson-build
variables:

View File

@ -5,7 +5,7 @@ set -o xtrace
export DEBIAN_FRONTEND=noninteractive
CROSS_ARCHITECTURES="i386"
CROSS_ARCHITECTURES="i386 ppc64el s390x"
for arch in $CROSS_ARCHITECTURES; do
dpkg --add-architecture $arch
done
@ -75,13 +75,12 @@ apt-get install -y --no-remove \
libxvmc-dev \
libxxf86vm-dev \
llvm-6.0-dev \
llvm-7-dev \
llvm-8-dev \
llvm-9-dev \
meson \
pkg-config \
python-mako \
python3-mako \
qemu-user \
scons \
x11proto-dri2-dev \
x11proto-gl-dev \
@ -96,8 +95,32 @@ for arch in $CROSS_ARCHITECTURES; do
libdrm-dev:${arch} \
libelf-dev:${arch} \
libexpat1-dev:${arch}
if [ "$arch" = "s390x" ]; then
LLVM_VERSION=7
else
LLVM_VERSION=8
fi
if [ "$arch" != "i386" ]; then
mkdir /var/cache/apt/archives/${arch}
apt-get install -y --no-remove \
libffi-dev:${arch} \
libllvm${LLVM_VERSION}:${arch} \
libstdc++6:${arch} \
libtinfo-dev:${arch} \
# Download llvm-* packages, but don't install them yet, since they can
# only be installed for one architecture at a time
apt-get install -o Dir::Cache::archives=/var/cache/apt/archives/$arch --download-only -y --no-remove \
llvm-${LLVM_VERSION}-dev:${arch}
fi
done
apt-get install -y --no-remove \
llvm-7-dev \
llvm-8-dev \
# for 64bit windows cross-builds
apt-get install -y --no-remove \
libz-mingw-w64-dev \
@ -193,9 +216,10 @@ for arch in $CROSS_ARCHITECTURES; do
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
# Rely on qemu-user being configured in binfmt_misc on the host
sed -i -e '/\[properties\]/a\' -e "needs_exe_wrapper = False" "$cross_file"
done

View File

@ -0,0 +1,4 @@
lp_test_arit
roundeven
u_format_test
u_half_test

View File

@ -0,0 +1,5 @@
load_store_vectorizer
lp_test_arit
lp_test_format
lp_test_printf
u_format_test

View File

@ -83,6 +83,7 @@ if with_any_opengl and with_tests and host_machine.system() != 'windows'
'--@0@'.format(m),
],
suite : ['compiler', 'glcpp'],
timeout: 60,
)
endforeach
endif

View File

@ -88,6 +88,7 @@ test(
),
],
suite : ['compiler', 'glsl'],
timeout: 60,
)
test(

View File

@ -349,6 +349,7 @@ if with_tests
dependencies : [dep_thread, idep_gtest, idep_nir, idep_mesautil],
),
suite : ['compiler', 'nir'],
should_fail : meson.get_cross_property('xfail', '').contains('load_store_vectorizer'),
)
test(

View File

@ -125,6 +125,8 @@ if with_tests and with_gallium_softpipe and with_llvm
link_with : [libllvmpipe, libgallium],
),
suite : ['llvmpipe'],
should_fail : meson.get_cross_property('xfail', '').contains(t),
timeout: 120,
)
endforeach
endif

View File

@ -248,6 +248,7 @@ if with_tests
dependencies : [dep_m],
),
suite : ['util'],
should_fail : meson.get_cross_property('xfail', '').contains('roundeven'),
)
# FIXME: this test crashes on windows

View File

@ -27,4 +27,5 @@ test(
include_directories : inc_common,
),
suite : ['util'],
timeout: 60,
)

View File

@ -27,4 +27,5 @@ test(
include_directories : inc_common,
),
suite : ['util'],
timeout: 60,
)