Mesa (master): ci: Run tests on i386 cross builds
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Sep 17 19:18:58 UTC 2019
Module: Mesa
Branch: master
Commit: 6ec1259423fdbf491813f8b5db9af2fe022e8a86
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6ec1259423fdbf491813f8b5db9af2fe022e8a86
Author: Adam Jackson <ajax at redhat.com>
Date: Mon Sep 16 20:44:12 2019 -0400
ci: Run tests on i386 cross builds
Yes, some tests fail, but we can turn those into XFAILs at meson time.
Better to keep the things that work working than not cover them at all.
Unfortunately XPASS results will not cause the build to fail until we
update CI to meson 0.51 or newer.
Reviewed-by: Daniel Stone <daniels at collabora.com>
---
.gitlab-ci.yml | 3 ---
.gitlab-ci/cross-xfail-i386 | 1 +
.gitlab-ci/meson-build.sh | 27 +++++++++++++++++++++++++--
src/gallium/tests/unit/meson.build | 4 +++-
4 files changed, 29 insertions(+), 6 deletions(-)
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 579afee96f6..db99a1f76da 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -312,10 +312,7 @@ meson-i386:
VULKAN_DRIVERS: intel
DRI_DRIVERS: "swrast"
GALLIUM_DRIVERS: "iris"
- # Disable i386 tests, because u_format_tests gets precision
- # failures in dxtn unpacking
EXTRA_OPTION: >
- -D build-tests=false
-D vulkan-overlay-layer=true
-D llvm=false
-D osmesa=classic
diff --git a/.gitlab-ci/cross-xfail-i386 b/.gitlab-ci/cross-xfail-i386
new file mode 100644
index 00000000000..b4a3ea4d989
--- /dev/null
+++ b/.gitlab-ci/cross-xfail-i386
@@ -0,0 +1 @@
+u_format_test
diff --git a/.gitlab-ci/meson-build.sh b/.gitlab-ci/meson-build.sh
index 7e74095c4bb..cd0b62e4767 100755
--- a/.gitlab-ci/meson-build.sh
+++ b/.gitlab-ci/meson-build.sh
@@ -14,9 +14,32 @@ else
touch native.file
fi
+CROSS_FILE=/cross_file-"$CROSS".txt
+
+# cross-xfail-$CROSS, if it exists, contains a list of tests that are expected
+# to fail for the $CROSS configuration, one per line. you can then mark those
+# tests in their meson.build with:
+#
+# test(...,
+# should_fail: meson.get_cross_property('xfail', '').contains(t),
+# )
+#
+# where t is the name of the test, and the '' is the string to search when
+# not cross-compiling (which is empty, because for amd64 everything is
+# expected to pass).
+if [ -n "$CROSS" ]; then
+ CROSS_XFAIL=.gitlab-ci/cross-xfail-"$CROSS"
+ if [ -s "$CROSS_XFAIL" ]; then
+ sed -i \
+ -e '/\[properties\]/a\' \
+ -e "xfail = '$(tr '\n' , < $CROSS_XFAIL)'" \
+ "$CROSS_FILE"
+ fi
+fi
+
rm -rf _build
meson _build --native-file=native.file \
- ${CROSS+--cross /cross_file-$CROSS.txt} \
+ ${CROSS+--cross "$CROSS_FILE"} \
-D prefix=`pwd`/install \
-D libdir=lib \
-D buildtype=${BUILDTYPE:-debug} \
@@ -45,7 +68,7 @@ rm -rf install/include
# Strip the drivers in the artifacts to cut 80% of the artifacts size.
if [ -n "$CROSS" ]; then
- STRIP=`sed -n -E "s/strip\s*=\s*'(.*)'/\1/p" /cross_file-$CROSS.txt`
+ STRIP=`sed -n -E "s/strip\s*=\s*'(.*)'/\1/p" "$CROSS_FILE"`
if [ -z "$STRIP" ]; then
echo "Failed to find strip command in cross file"
exit 1
diff --git a/src/gallium/tests/unit/meson.build b/src/gallium/tests/unit/meson.build
index afde9840c37..976218f22b7 100644
--- a/src/gallium/tests/unit/meson.build
+++ b/src/gallium/tests/unit/meson.build
@@ -31,6 +31,8 @@ foreach t : ['pipe_barrier_test', 'u_cache_test', 'u_half_test',
)
# u_cache_test is slow, and translate_test fails.
if not ['u_cache_test', 'translate_test'].contains(t)
- test(t, exe, suite: 'gallium')
+ test(t, exe, suite: 'gallium',
+ should_fail : meson.get_cross_property('xfail', '').contains(t),
+ )
endif
endforeach
More information about the mesa-commit
mailing list