diff options
-rw-r--r-- | .gitlab-ci.yml | 3 | ||||
-rw-r--r-- | .gitlab-ci/cross-xfail-i386 | 1 | ||||
-rwxr-xr-x | .gitlab-ci/meson-build.sh | 27 | ||||
-rw-r--r-- | 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 |