gitlab-ci: Build i386 and ARM drivers in surfaceless mode.
authorEric Anholt <eric@anholt.net>
Thu, 11 Jul 2019 19:58:28 +0000 (12:58 -0700)
committerEric Engestrom <eric@engestrom.ch>
Sat, 13 Jul 2019 13:46:24 +0000 (13:46 +0000)
I don't particularly care about getting x86/ARM cross-build coverage
of all the window systems, but we do want to be building src/mesa/
(for x86 asm) and gallium drivers (for vc4 NEON asm).  I'm also hoping
to use these build products for testing freedreno on actual HW (which
we do using surfaceless).

This increases the docker image from 1.4G to 1.5G.

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Acked-by: Eric Engestrom <eric@engestrom.ch>
.gitlab-ci.yml
.gitlab-ci/debian-install.sh
.gitlab-ci/meson-build.sh

index a81833d569822ea56460d5f09a4d0007fd41b4e4..e5ae08ce7777e6e2e490756fc077bdbe26e8dbab 100644 (file)
@@ -14,7 +14,7 @@
 # repository's registry will be used there as well.
 variables:
   UPSTREAM_REPO: mesa/mesa
-  DEBIAN_TAG: "2019-07-04"
+  DEBIAN_TAG: "2019-07-11"
   DEBIAN_VERSION: stretch-slim
   DEBIAN_IMAGE: "$CI_REGISTRY_IMAGE/debian/$DEBIAN_VERSION:$DEBIAN_TAG"
 
@@ -227,6 +227,71 @@ meson-vulkan:
     EXTRA_OPTION: >
       -D vulkan-overlay-layer=true
 
+.meson-cross:
+  extends: .meson-build
+  variables:
+    UNWIND: "false"
+    DRI_LOADERS: >
+      -D glx=disabled
+      -D gbm=false
+      -D egl=false
+      -D platforms=surfaceless
+      -D osmesa=none
+    GALLIUM_ST: >
+      -D dri3=false
+      -D gallium-vdpau=false
+      -D gallium-xvmc=false
+      -D gallium-omx=disabled
+      -D gallium-va=false
+      -D gallium-xa=false
+      -D gallium-nine=false
+      -D llvm=false
+    CROSS: >
+      --libdir lib
+      --cross /tmp/cross_file.txt
+
+  script:
+    - /usr/share/meson/debcrossgen --arch ${ARCH} -o /tmp/cross_file.txt
+    # Work around a bug in debcrossgen that should be fixed in the next release
+    - sed -i "s|cpu_family = 'i686'|cpu_family = 'x86'|g" /tmp/cross_file.txt
+    - .gitlab-ci/meson-build.sh
+
+meson-armhf:
+  extends: .meson-cross
+  variables:
+    ARCH: armhf
+    VULKAN_DRIVERS: freedreno
+    GALLIUM_DRIVERS: "etnaviv,freedreno,kmsro,lima,nouveau,panfrost,tegra,v3d,vc4"
+    # Disable the tests since we're cross compiling.
+    EXTRA_OPTION: >
+      -D build-tests=false
+      -D I-love-half-baked-turnips=true
+      -D vulkan-overlay-layer=true
+
+meson-arm64:
+  extends: .meson-cross
+  variables:
+    ARCH: arm64
+    VULKAN_DRIVERS: freedreno
+    GALLIUM_DRIVERS: "etnaviv,freedreno,kmsro,lima,nouveau,panfrost,tegra,v3d,vc4"
+    # Disable the tests since we're cross compiling.
+    EXTRA_OPTION: >
+      -D build-tests=false
+      -D I-love-half-baked-turnips=true
+      -D vulkan-overlay-layer=true
+
+meson-i386:
+  extends: .meson-cross
+  variables:
+    ARCH: i386
+    VULKAN_DRIVERS: intel
+    GALLIUM_DRIVERS: "swrast"
+    # Disable i386 tests, because u_format_tests gets precision
+    # failures in dxtn unpacking
+    EXTRA_OPTION: >
+      -D build-tests=false
+      -D vulkan-overlay-layer=true
+
 scons-nollvm:
   extends: .scons-build
   variables:
index 1e4d3283be04566cd97a389cf398e3d63283fed9..64f970fa81fcf92001dbc17dad8df13ccc4e9a55 100644 (file)
@@ -5,6 +5,11 @@ set -o xtrace
 
 export DEBIAN_FRONTEND=noninteractive
 
+CROSS_ARCHITECTURES="armhf arm64 i386"
+for arch in $CROSS_ARCHITECTURES; do
+    dpkg --add-architecture $arch
+done
+
 apt-get install -y \
       apt-transport-https \
       ca-certificates \
@@ -75,6 +80,22 @@ apt-get install -y \
       gettext \
       make
 
+# Cross-build Mesa deps
+for arch in $CROSS_ARCHITECTURES; do
+    apt-get install -y \
+            libdrm-dev:${arch} \
+            libexpat1-dev:${arch} \
+            libelf-dev:${arch}
+done
+apt-get install -y \
+        dpkg-dev \
+        gcc-aarch64-linux-gnu \
+        g++-aarch64-linux-gnu \
+        gcc-arm-linux-gnueabihf \
+        g++-arm-linux-gnueabihf \
+        gcc-i686-linux-gnu \
+        g++-i686-linux-gnu
+
 # for 64bit windows cross-builds
 apt-get install -y mingw-w64
 
@@ -185,7 +206,6 @@ apt-get install -y libxml2-utils
 apt-get purge -y \
       automake \
       libtool \
-      make \
       curl \
       unzip \
       wget \
index ed188e34d983474c1c879c10c1f79149ab2f1614..2bf51de1cd69214ab1aab09ab75d63e11934f294 100755 (executable)
@@ -16,6 +16,7 @@ fi
 
 rm -rf _build
 meson _build --native-file=native.file \
+      ${CROSS} \
       -D buildtype=debug \
       -D build-tests=true \
       -D libunwind=${UNWIND} \