aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitlab-ci.yml3
-rw-r--r--.gitlab-ci/cross-xfail-i3861
-rwxr-xr-x.gitlab-ci/meson-build.sh27
-rw-r--r--src/gallium/tests/unit/meson.build4
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