ci: compile deqp for android
authorHelen Koike <helen.koike@collabora.com>
Mon, 21 Nov 2022 17:31:39 +0000 (14:31 -0300)
committerHelen Koike <helen.koike@collabora.com>
Wed, 25 Jan 2023 11:58:25 +0000 (08:58 -0300)
To allow testing mesa on android, we need deqp compiled for it, so we
can add android on the ci.

Add patch that redirect logs to stdout instead of logcat.
Compile deqp to allow running it directly from command line instead of
Android activity.

Co-developed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Signed-off-by: Helen Koike <helen.koike@collabora.com>
Reviewed-by: Sergi Blanch Torné <sergi.blanch.torne@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20019>

.gitlab-ci/container/build-deqp.sh

index 3a134d6..2827aab 100644 (file)
@@ -6,8 +6,8 @@ set -ex
 git config --global user.email "mesa@example.com"
 git config --global user.name "Mesa CI"
 git clone \
-    https://github.com/KhronosGroup/VK-GL-CTS.git \
-    -b vulkan-cts-1.3.3.1 \
+    https://github.com/helen-fornazier/VK-GL-CTS.git \
+    -b vulkan-cts-1.3.3.1_mesa-android-2023-01-19 \
     --depth 1 \
     /VK-GL-CTS
 pushd /VK-GL-CTS
@@ -23,6 +23,9 @@ curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \
 curl -L --retry 4 -f --retry-all-errors --retry-delay 60 \
     "https://github.com/KhronosGroup/VK-GL-CTS/commit/4fa2b40411921b304f5dad8d106b212ad5b0f172.patch" | git am -
 
+# https://github.com/KhronosGroup/VK-GL-CTS/pull/360
+sed -i -e 's#http://zlib.net/zlib-1.2.12.tar.gz#http://zlib.net/fossils/zlib-1.2.12.tar.gz#g' external/fetch_sources.py
+
 # --insecure is due to SSL cert failures hitting sourceforge for zlib and
 # libpng (sigh).  The archives get their checksums checked anyway, and git
 # always goes through ssh or https.
@@ -35,21 +38,24 @@ cp doc/testlog-stylesheet/testlog.{css,xsl} /deqp
 popd
 
 pushd /deqp
-# When including EGL/X11 testing, do that build first and save off its
-# deqp-egl binary.
-cmake -S /VK-GL-CTS -B . -G Ninja \
-      -DDEQP_TARGET=x11_egl_glx \
-      -DCMAKE_BUILD_TYPE=Release \
-      $EXTRA_CMAKE_ARGS
-ninja modules/egl/deqp-egl
-cp /deqp/modules/egl/deqp-egl /deqp/modules/egl/deqp-egl-x11
 
-cmake -S /VK-GL-CTS -B . -G Ninja \
-      -DDEQP_TARGET=wayland \
-      -DCMAKE_BUILD_TYPE=Release \
-      $EXTRA_CMAKE_ARGS
-ninja modules/egl/deqp-egl
-cp /deqp/modules/egl/deqp-egl /deqp/modules/egl/deqp-egl-wayland
+if [ "${DEQP_TARGET}" != 'android' ]; then
+    # When including EGL/X11 testing, do that build first and save off its
+    # deqp-egl binary.
+    cmake -S /VK-GL-CTS -B . -G Ninja \
+        -DDEQP_TARGET=x11_egl_glx \
+        -DCMAKE_BUILD_TYPE=Release \
+        $EXTRA_CMAKE_ARGS
+    ninja modules/egl/deqp-egl
+    cp /deqp/modules/egl/deqp-egl /deqp/modules/egl/deqp-egl-x11
+
+    cmake -S /VK-GL-CTS -B . -G Ninja \
+        -DDEQP_TARGET=wayland \
+        -DCMAKE_BUILD_TYPE=Release \
+        $EXTRA_CMAKE_ARGS
+    ninja modules/egl/deqp-egl
+    cp /deqp/modules/egl/deqp-egl /deqp/modules/egl/deqp-egl-wayland
+fi
 
 cmake -S /VK-GL-CTS -B . -G Ninja \
       -DDEQP_TARGET=${DEQP_TARGET:-x11_glx} \
@@ -57,7 +63,9 @@ cmake -S /VK-GL-CTS -B . -G Ninja \
       $EXTRA_CMAKE_ARGS
 ninja
 
-mv /deqp/modules/egl/deqp-egl-x11 /deqp/modules/egl/deqp-egl
+if [ "${DEQP_TARGET}" != 'android' ]; then
+    mv /deqp/modules/egl/deqp-egl-x11 /deqp/modules/egl/deqp-egl
+fi
 
 # Copy out the mustpass lists we want.
 mkdir /deqp/mustpass
@@ -66,28 +74,30 @@ for mustpass in $(< /VK-GL-CTS/external/vulkancts/mustpass/main/vk-default.txt)
         >> /deqp/mustpass/vk-master.txt
 done
 
-cp \
-    /deqp/external/openglcts/modules/gl_cts/data/mustpass/gles/aosp_mustpass/3.2.6.x/*.txt \
-    /deqp/mustpass/.
-cp \
-    /deqp/external/openglcts/modules/gl_cts/data/mustpass/egl/aosp_mustpass/3.2.6.x/egl-master.txt \
-    /deqp/mustpass/.
-cp \
-    /deqp/external/openglcts/modules/gl_cts/data/mustpass/gles/khronos_mustpass/3.2.6.x/*-master.txt \
-    /deqp/mustpass/.
-cp \
-    /deqp/external/openglcts/modules/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.1.x/*-master.txt \
-    /deqp/mustpass/.
-cp \
-    /deqp/external/openglcts/modules/gl_cts/data/mustpass/gl/khronos_mustpass_single/4.6.1.x/*-single.txt \
-    /deqp/mustpass/.
-
-# Save *some* executor utils, but otherwise strip things down
-# to reduct deqp build size:
-mkdir /deqp/executor.save
-cp /deqp/executor/testlog-to-* /deqp/executor.save
-rm -rf /deqp/executor
-mv /deqp/executor.save /deqp/executor
+if [ "${DEQP_TARGET}" != 'android' ]; then
+    cp \
+        /deqp/external/openglcts/modules/gl_cts/data/mustpass/gles/aosp_mustpass/3.2.6.x/*.txt \
+        /deqp/mustpass/.
+    cp \
+        /deqp/external/openglcts/modules/gl_cts/data/mustpass/egl/aosp_mustpass/3.2.6.x/egl-master.txt \
+        /deqp/mustpass/.
+    cp \
+        /deqp/external/openglcts/modules/gl_cts/data/mustpass/gles/khronos_mustpass/3.2.6.x/*-master.txt \
+        /deqp/mustpass/.
+    cp \
+        /deqp/external/openglcts/modules/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.1.x/*-master.txt \
+        /deqp/mustpass/.
+    cp \
+        /deqp/external/openglcts/modules/gl_cts/data/mustpass/gl/khronos_mustpass_single/4.6.1.x/*-single.txt \
+        /deqp/mustpass/.
+
+    # Save *some* executor utils, but otherwise strip things down
+    # to reduct deqp build size:
+    mkdir /deqp/executor.save
+    cp /deqp/executor/testlog-to-* /deqp/executor.save
+    rm -rf /deqp/executor
+    mv /deqp/executor.save /deqp/executor
+fi
 
 # Remove other mustpass files, since we saved off the ones we wanted to conventient locations above.
 rm -rf /deqp/external/openglcts/modules/gl_cts/data/mustpass