
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>
309 lines
8.0 KiB
YAML
309 lines
8.0 KiB
YAML
# This is the tag of the docker image used for the build jobs. If the
|
|
# image doesn't exist yet, the containers-build stage generates it.
|
|
#
|
|
# In order to generate a new image, one should generally change the tag.
|
|
# While removing the image from the registry would also work, that's not
|
|
# recommended except for ephemeral images during development: Replacing
|
|
# an image after a significant amount of time might pull in newer
|
|
# versions of gcc/clang or other packages, which might break the build
|
|
# with older commits using the same tag.
|
|
#
|
|
# After merging a change resulting in generating a new image to the
|
|
# main repository, it's recommended to remove the image from the source
|
|
# repository's container registry, so that the image from the main
|
|
# repository's registry will be used there as well.
|
|
variables:
|
|
UPSTREAM_REPO: mesa/mesa
|
|
DEBIAN_TAG: "2019-07-11"
|
|
DEBIAN_VERSION: stretch-slim
|
|
DEBIAN_IMAGE: "$CI_REGISTRY_IMAGE/debian/$DEBIAN_VERSION:$DEBIAN_TAG"
|
|
|
|
include:
|
|
- project: 'wayland/ci-templates'
|
|
ref: c73dae8b84697ef18e2dbbf4fed7386d9652b0cd
|
|
file: '/templates/debian.yml'
|
|
|
|
stages:
|
|
- containers-build
|
|
- build+test
|
|
|
|
|
|
# When to automatically run the CI
|
|
.ci-run-policy: &ci-run-policy
|
|
only:
|
|
- branches@mesa/mesa
|
|
- merge_requests
|
|
- /^ci([-/].*)?$/
|
|
retry:
|
|
max: 2
|
|
when:
|
|
- runner_system_failure
|
|
|
|
|
|
# CONTAINERS
|
|
|
|
debian:
|
|
extends: .debian@container-ifnot-exists
|
|
stage: containers-build
|
|
<<: *ci-run-policy
|
|
variables:
|
|
GIT_STRATEGY: none # no need to pull the whole tree for rebuilding the image
|
|
DEBIAN_EXEC: 'bash .gitlab-ci/debian-install.sh'
|
|
|
|
|
|
# BUILD
|
|
|
|
.build:
|
|
<<: *ci-run-policy
|
|
image: $DEBIAN_IMAGE
|
|
stage: build+test
|
|
cache:
|
|
paths:
|
|
- ccache
|
|
artifacts:
|
|
when: on_failure
|
|
untracked: true
|
|
variables:
|
|
CCACHE_COMPILERCHECK: "content"
|
|
# Use ccache transparently, and print stats before/after
|
|
before_script:
|
|
- export PATH="/usr/lib/ccache:$PATH"
|
|
- export CCACHE_BASEDIR="$PWD"
|
|
- export CCACHE_DIR="$PWD/ccache"
|
|
- ccache --zero-stats || true
|
|
- ccache --show-stats || true
|
|
after_script:
|
|
- export CCACHE_DIR="$PWD/ccache"
|
|
- ccache --show-stats
|
|
|
|
.meson-build:
|
|
extends: .build
|
|
script:
|
|
- .gitlab-ci/meson-build.sh
|
|
|
|
.scons-build:
|
|
extends: .build
|
|
variables:
|
|
SCONSFLAGS: "-j4"
|
|
script:
|
|
- if test -n "$LLVM_VERSION"; then
|
|
export LLVM_CONFIG="llvm-config-${LLVM_VERSION}";
|
|
fi
|
|
- scons $SCONS_TARGET
|
|
- eval $SCONS_CHECK_COMMAND
|
|
|
|
# NOTE: Building SWR is 2x (yes two) times slower than all the other
|
|
# gallium drivers combined.
|
|
# Start this early so that it doesn't limit the total run time.
|
|
#
|
|
# We also put softpipe (and therefore gallium nine, which requires
|
|
# it) here, since softpipe/llvmpipe can't be built alongside classic
|
|
# swrast.
|
|
#
|
|
# Putting glvnd here is arbitrary, but we want it in one of the builds
|
|
# for coverage.
|
|
meson-swr-glvnd:
|
|
extends: .meson-build
|
|
variables:
|
|
UNWIND: "true"
|
|
DRI_LOADERS: >
|
|
-D glvnd=true
|
|
-D egl=true
|
|
GALLIUM_ST: >
|
|
-D dri3=true
|
|
-D gallium-vdpau=false
|
|
-D gallium-xvmc=false
|
|
-D gallium-omx=disabled
|
|
-D gallium-va=false
|
|
-D gallium-xa=false
|
|
-D gallium-nine=true
|
|
-D gallium-opencl=disabled
|
|
-D osmesa=gallium
|
|
GALLIUM_DRIVERS: "swr,swrast,iris"
|
|
LLVM_VERSION: "6.0"
|
|
|
|
meson-clang:
|
|
extends: .meson-build
|
|
variables:
|
|
UNWIND: "true"
|
|
DRI_DRIVERS: "auto"
|
|
GALLIUM_DRIVERS: "auto"
|
|
VULKAN_DRIVERS: intel,amd,freedreno
|
|
CC: "ccache clang-8"
|
|
CXX: "ccache clang++-8"
|
|
before_script:
|
|
- export CCACHE_BASEDIR="$PWD" CCACHE_DIR="$PWD/ccache"
|
|
- ccache --zero-stats --show-stats || true
|
|
# clang++ breaks if it picks up the GCC 8 directory without libstdc++.so
|
|
- apt-get remove -y libgcc-8-dev
|
|
|
|
scons-swr:
|
|
extends: .scons-build
|
|
variables:
|
|
SCONS_TARGET: "swr=1"
|
|
SCONS_CHECK_COMMAND: "true"
|
|
LLVM_VERSION: "6.0"
|
|
|
|
scons-win64:
|
|
extends: .scons-build
|
|
variables:
|
|
SCONS_TARGET: platform=windows machine=x86_64
|
|
SCONS_CHECK_COMMAND: "true"
|
|
|
|
meson-main:
|
|
extends: .meson-build
|
|
variables:
|
|
UNWIND: "true"
|
|
DRI_LOADERS: >
|
|
-D glx=dri
|
|
-D gbm=true
|
|
-D egl=true
|
|
-D platforms=x11,wayland,drm,surfaceless
|
|
-D osmesa=classic
|
|
DRI_DRIVERS: "i915,i965,r100,r200,swrast,nouveau"
|
|
GALLIUM_ST: >
|
|
-D dri3=true
|
|
-D gallium-extra-hud=true
|
|
-D gallium-vdpau=true
|
|
-D gallium-xvmc=true
|
|
-D gallium-omx=bellagio
|
|
-D gallium-va=true
|
|
-D gallium-xa=true
|
|
-D gallium-nine=false
|
|
-D gallium-opencl=disabled
|
|
GALLIUM_DRIVERS: "iris,nouveau,kmsro,r300,r600,freedreno,svga,v3d,vc4,virgl,etnaviv,panfrost,lima"
|
|
LLVM_VERSION: "7"
|
|
EXTRA_OPTION: >
|
|
-D tools=all
|
|
|
|
meson-clover:
|
|
extends: .meson-build
|
|
variables:
|
|
UNWIND: "true"
|
|
DRI_LOADERS: >
|
|
-D glx=disabled
|
|
-D egl=false
|
|
-D gbm=false
|
|
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 gallium-opencl=icd
|
|
script:
|
|
- export GALLIUM_DRIVERS="r600,radeonsi"
|
|
- .gitlab-ci/meson-build.sh
|
|
- LLVM_VERSION=7 .gitlab-ci/meson-build.sh
|
|
- export GALLIUM_DRIVERS="i915,r600"
|
|
- LLVM_VERSION=3.9 .gitlab-ci/meson-build.sh
|
|
- LLVM_VERSION=4.0 .gitlab-ci/meson-build.sh
|
|
- LLVM_VERSION=5.0 .gitlab-ci/meson-build.sh
|
|
- LLVM_VERSION=6.0 .gitlab-ci/meson-build.sh
|
|
|
|
meson-vulkan:
|
|
extends: .meson-build
|
|
variables:
|
|
UNWIND: "false"
|
|
DRI_LOADERS: >
|
|
-D glx=disabled
|
|
-D gbm=false
|
|
-D egl=false
|
|
-D platforms=x11,wayland,drm
|
|
-D osmesa=none
|
|
GALLIUM_ST: >
|
|
-D dri3=true
|
|
-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 gallium-opencl=disabled
|
|
VULKAN_DRIVERS: intel,amd,freedreno
|
|
LLVM_VERSION: "7"
|
|
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:
|
|
SCONS_TARGET: "llvm=0"
|
|
SCONS_CHECK_COMMAND: "scons llvm=0 check"
|
|
|
|
scons-llvm:
|
|
extends: .scons-build
|
|
variables:
|
|
SCONS_TARGET: "llvm=1"
|
|
SCONS_CHECK_COMMAND: "scons llvm=1 check"
|
|
LLVM_VERSION: "3.4"
|
|
# LLVM 3.4 packages were built with an old libstdc++ ABI
|
|
CXX: "g++ -D_GLIBCXX_USE_CXX11_ABI=0"
|