From 11aa32a447ed2f48cf6b5fdbd94d153c8564daa5 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Thu, 11 Jul 2019 12:58:28 -0700 Subject: [PATCH] gitlab-ci: Build i386 and ARM drivers in surfaceless mode. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 Acked-by: Eric Engestrom --- .gitlab-ci.yml | 67 +++++++++++++++++++++++++++++++++++- .gitlab-ci/debian-install.sh | 22 +++++++++++- .gitlab-ci/meson-build.sh | 1 + 3 files changed, 88 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a81833d5698..e5ae08ce777 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -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: diff --git a/.gitlab-ci/debian-install.sh b/.gitlab-ci/debian-install.sh index 1e4d3283be0..64f970fa81f 100644 --- a/.gitlab-ci/debian-install.sh +++ b/.gitlab-ci/debian-install.sh @@ -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 \ diff --git a/.gitlab-ci/meson-build.sh b/.gitlab-ci/meson-build.sh index ed188e34d98..2bf51de1cd6 100755 --- a/.gitlab-ci/meson-build.sh +++ b/.gitlab-ci/meson-build.sh @@ -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} \ -- 2.30.2