2019-01-20 19:21:45 +08:00
|
|
|
# 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:
|
2019-04-02 15:24:00 +08:00
|
|
|
UPSTREAM_REPO: mesa/mesa
|
2019-09-06 15:29:32 +08:00
|
|
|
DEBIAN_TAG: "2019-09-11"
|
2019-04-02 22:56:54 +08:00
|
|
|
DEBIAN_VERSION: stretch-slim
|
|
|
|
DEBIAN_IMAGE: "$CI_REGISTRY_IMAGE/debian/$DEBIAN_VERSION:$DEBIAN_TAG"
|
2019-04-02 15:24:00 +08:00
|
|
|
|
|
|
|
include:
|
|
|
|
- project: 'wayland/ci-templates'
|
|
|
|
ref: c73dae8b84697ef18e2dbbf4fed7386d9652b0cd
|
2019-04-02 22:56:54 +08:00
|
|
|
file: '/templates/debian.yml'
|
2019-01-20 19:21:45 +08:00
|
|
|
|
|
|
|
stages:
|
|
|
|
- containers-build
|
2019-01-20 19:26:53 +08:00
|
|
|
- build+test
|
2019-06-29 07:35:32 +08:00
|
|
|
- test
|
2019-01-20 19:21:45 +08:00
|
|
|
|
|
|
|
|
2019-02-22 23:52:08 +08:00
|
|
|
# When to automatically run the CI
|
2019-04-02 15:24:00 +08:00
|
|
|
.ci-run-policy: &ci-run-policy
|
2019-02-22 23:52:08 +08:00
|
|
|
only:
|
2019-04-10 16:33:13 +08:00
|
|
|
- branches@mesa/mesa
|
2019-02-22 23:52:08 +08:00
|
|
|
- merge_requests
|
|
|
|
- /^ci([-/].*)?$/
|
2019-03-27 01:39:41 +08:00
|
|
|
retry:
|
|
|
|
max: 2
|
|
|
|
when:
|
|
|
|
- runner_system_failure
|
2019-02-22 23:52:08 +08:00
|
|
|
|
2019-06-29 07:35:32 +08:00
|
|
|
.ci-deqp-artifacts: &ci-deqp-artifacts
|
|
|
|
artifacts:
|
|
|
|
when: always
|
|
|
|
untracked: false
|
|
|
|
paths:
|
|
|
|
# Watch out! Artifacts are relative to the build dir.
|
|
|
|
# https://gitlab.com/gitlab-org/gitlab-ce/commit/8788fb925706cad594adf6917a6c5f6587dd1521
|
|
|
|
- artifacts
|
2019-02-22 23:52:08 +08:00
|
|
|
|
2019-01-20 19:21:45 +08:00
|
|
|
# CONTAINERS
|
|
|
|
|
2019-04-02 22:56:54 +08:00
|
|
|
debian:
|
|
|
|
extends: .debian@container-ifnot-exists
|
2019-01-20 19:21:45 +08:00
|
|
|
stage: containers-build
|
2019-04-02 15:24:00 +08:00
|
|
|
<<: *ci-run-policy
|
2019-01-20 19:21:45 +08:00
|
|
|
variables:
|
2019-04-02 15:24:00 +08:00
|
|
|
GIT_STRATEGY: none # no need to pull the whole tree for rebuilding the image
|
2019-04-02 22:56:54 +08:00
|
|
|
DEBIAN_EXEC: 'bash .gitlab-ci/debian-install.sh'
|
2019-01-20 19:26:53 +08:00
|
|
|
|
|
|
|
|
|
|
|
# BUILD
|
|
|
|
|
|
|
|
.build:
|
2019-04-02 15:24:00 +08:00
|
|
|
<<: *ci-run-policy
|
2019-04-02 22:56:54 +08:00
|
|
|
image: $DEBIAN_IMAGE
|
2019-01-20 19:26:53 +08:00
|
|
|
stage: build+test
|
2019-03-27 01:35:59 +08:00
|
|
|
cache:
|
|
|
|
paths:
|
|
|
|
- ccache
|
2019-01-20 19:26:53 +08:00
|
|
|
artifacts:
|
2019-07-25 00:27:48 +08:00
|
|
|
when: always
|
|
|
|
paths:
|
|
|
|
- _build/meson-logs/*.txt
|
|
|
|
# scons:
|
2019-07-26 18:20:41 +08:00
|
|
|
- build/*/config.log
|
2019-04-11 06:59:12 +08:00
|
|
|
- shader-db
|
2019-04-05 00:01:27 +08:00
|
|
|
variables:
|
|
|
|
CCACHE_COMPILERCHECK: "content"
|
2019-02-13 00:59:27 +08:00
|
|
|
# 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:
|
2019-06-29 07:35:32 +08:00
|
|
|
# In case the install dir is being saved as artifacts, tar it up
|
|
|
|
# so that symlinks and hardlinks aren't each packed separately in
|
|
|
|
# the zip file.
|
|
|
|
- if [ -d install ]; then
|
|
|
|
tar -cf artifacts/install.tar install;
|
|
|
|
fi
|
2019-02-13 00:59:27 +08:00
|
|
|
- export CCACHE_DIR="$PWD/ccache"
|
|
|
|
- ccache --show-stats
|
2019-01-20 19:26:53 +08:00
|
|
|
|
|
|
|
.meson-build:
|
|
|
|
extends: .build
|
2019-02-13 00:59:27 +08:00
|
|
|
script:
|
2019-05-03 16:49:43 +08:00
|
|
|
- .gitlab-ci/meson-build.sh
|
2019-01-20 19:26:53 +08:00
|
|
|
|
2019-01-23 23:46:10 +08:00
|
|
|
.scons-build:
|
|
|
|
extends: .build
|
|
|
|
variables:
|
|
|
|
SCONSFLAGS: "-j4"
|
|
|
|
script:
|
2019-01-29 00:30:36 +08:00
|
|
|
- if test -n "$LLVM_VERSION"; then
|
|
|
|
export LLVM_CONFIG="llvm-config-${LLVM_VERSION}";
|
|
|
|
fi
|
2019-01-23 23:46:10 +08:00
|
|
|
- scons $SCONS_TARGET
|
|
|
|
- eval $SCONS_CHECK_COMMAND
|
|
|
|
|
2019-08-28 18:01:02 +08:00
|
|
|
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
|
|
|
|
DRI_DRIVERS: "i915,i965,r100,r200,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=true
|
|
|
|
-D gallium-opencl=disabled
|
|
|
|
GALLIUM_DRIVERS: "iris,nouveau,kmsro,r300,r600,freedreno,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima"
|
|
|
|
LLVM_VERSION: "7"
|
|
|
|
EXTRA_OPTION: >
|
|
|
|
-D osmesa=gallium
|
|
|
|
-D tools=all
|
|
|
|
MESON_SHADERDB: "true"
|
|
|
|
BUILDTYPE: "debugoptimized"
|
|
|
|
<<: *ci-deqp-artifacts
|
|
|
|
|
2019-03-20 22:58:31 +08:00
|
|
|
# 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.
|
2019-03-09 00:33:07 +08:00
|
|
|
#
|
2019-08-08 05:05:51 +08:00
|
|
|
# We also stick the glvnd build here, since we want non-glvnd in
|
|
|
|
# meson-main for actual driver CI.
|
2019-04-17 00:06:53 +08:00
|
|
|
meson-swr-glvnd:
|
2019-03-20 22:58:31 +08:00
|
|
|
extends: .meson-build
|
|
|
|
variables:
|
|
|
|
UNWIND: "true"
|
|
|
|
DRI_LOADERS: >
|
2019-04-17 00:06:53 +08:00
|
|
|
-D glvnd=true
|
|
|
|
-D egl=true
|
2019-03-20 22:58:31 +08:00
|
|
|
GALLIUM_ST: >
|
2019-03-09 00:33:07 +08:00
|
|
|
-D dri3=true
|
2019-03-20 22:58:31 +08:00
|
|
|
-D gallium-vdpau=false
|
|
|
|
-D gallium-xvmc=false
|
|
|
|
-D gallium-omx=disabled
|
|
|
|
-D gallium-va=false
|
|
|
|
-D gallium-xa=false
|
2019-08-08 05:05:51 +08:00
|
|
|
-D gallium-nine=false
|
2019-03-20 22:58:31 +08:00
|
|
|
-D gallium-opencl=disabled
|
2019-08-08 05:05:51 +08:00
|
|
|
GALLIUM_DRIVERS: "swr,iris"
|
2019-03-20 22:58:31 +08:00
|
|
|
LLVM_VERSION: "6.0"
|
|
|
|
|
|
|
|
meson-clang:
|
|
|
|
extends: .meson-build
|
|
|
|
variables:
|
|
|
|
UNWIND: "true"
|
|
|
|
DRI_DRIVERS: "auto"
|
|
|
|
GALLIUM_DRIVERS: "auto"
|
2019-05-01 19:09:26 +08:00
|
|
|
VULKAN_DRIVERS: intel,amd,freedreno
|
2019-04-05 16:36:29 +08:00
|
|
|
CC: "ccache clang-8"
|
|
|
|
CXX: "ccache clang++-8"
|
2019-04-05 00:01:27 +08:00
|
|
|
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
|
2019-03-20 22:58:31 +08:00
|
|
|
|
2019-05-04 00:19:25 +08:00
|
|
|
scons-swr:
|
|
|
|
extends: .scons-build
|
2019-01-20 19:26:53 +08:00
|
|
|
variables:
|
2019-05-04 00:19:25 +08:00
|
|
|
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"
|
2019-01-21 17:42:37 +08:00
|
|
|
|
2019-05-03 16:58:48 +08:00
|
|
|
meson-clover:
|
2019-01-29 02:05:22 +08:00
|
|
|
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
|
2019-05-03 16:58:48 +08:00
|
|
|
script:
|
|
|
|
- export GALLIUM_DRIVERS="r600,radeonsi"
|
|
|
|
- .gitlab-ci/meson-build.sh
|
2019-08-21 17:45:25 +08:00
|
|
|
- LLVM_VERSION=8 .gitlab-ci/meson-build.sh
|
2019-05-03 16:58:48 +08:00
|
|
|
- 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
|
2019-08-21 17:45:25 +08:00
|
|
|
- LLVM_VERSION=7 .gitlab-ci/meson-build.sh
|
2019-01-29 02:09:24 +08:00
|
|
|
|
2019-05-04 00:19:25 +08:00
|
|
|
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
|
2019-08-21 17:45:25 +08:00
|
|
|
LLVM_VERSION: "8"
|
2019-05-09 00:17:23 +08:00
|
|
|
EXTRA_OPTION: >
|
|
|
|
-D vulkan-overlay-layer=true
|
2019-05-04 00:19:25 +08:00
|
|
|
|
2019-07-12 03:58:28 +08:00
|
|
|
.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
|
2019-06-29 07:35:32 +08:00
|
|
|
<<: *ci-deqp-artifacts
|
2019-07-12 03:58:28 +08:00
|
|
|
script:
|
|
|
|
- .gitlab-ci/meson-build.sh
|
|
|
|
|
|
|
|
meson-armhf:
|
|
|
|
extends: .meson-cross
|
|
|
|
variables:
|
2019-08-10 06:46:50 +08:00
|
|
|
CROSS: armhf
|
2019-07-12 03:58:28 +08:00
|
|
|
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:
|
2019-08-10 06:46:50 +08:00
|
|
|
CROSS: arm64
|
2019-07-12 03:58:28 +08:00
|
|
|
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
|
|
|
|
|
2019-08-08 05:05:51 +08:00
|
|
|
# While the main point of this build is testing the i386 cross build,
|
|
|
|
# we also use this one to test some other options that are exclusive
|
|
|
|
# with meson-main's choices (classic swrast and osmesa)
|
2019-07-12 03:58:28 +08:00
|
|
|
meson-i386:
|
|
|
|
extends: .meson-cross
|
|
|
|
variables:
|
2019-08-10 06:46:50 +08:00
|
|
|
CROSS: i386
|
2019-07-12 03:58:28 +08:00
|
|
|
VULKAN_DRIVERS: intel
|
2019-08-08 05:05:51 +08:00
|
|
|
DRI_DRIVERS: "swrast"
|
|
|
|
GALLIUM_DRIVERS: "iris"
|
2019-07-12 03:58:28 +08:00
|
|
|
# Disable i386 tests, because u_format_tests gets precision
|
|
|
|
# failures in dxtn unpacking
|
|
|
|
EXTRA_OPTION: >
|
|
|
|
-D build-tests=false
|
|
|
|
-D vulkan-overlay-layer=true
|
2019-08-08 05:05:51 +08:00
|
|
|
-D llvm=false
|
|
|
|
-D osmesa=classic
|
2019-07-12 03:58:28 +08:00
|
|
|
|
2019-02-26 22:40:29 +08:00
|
|
|
scons-nollvm:
|
2019-01-23 23:46:10 +08:00
|
|
|
extends: .scons-build
|
|
|
|
variables:
|
|
|
|
SCONS_TARGET: "llvm=0"
|
|
|
|
SCONS_CHECK_COMMAND: "scons llvm=0 check"
|
2019-01-29 00:30:36 +08:00
|
|
|
|
2019-02-26 22:40:29 +08:00
|
|
|
scons-llvm:
|
2019-01-29 00:30:36 +08:00
|
|
|
extends: .scons-build
|
|
|
|
variables:
|
|
|
|
SCONS_TARGET: "llvm=1"
|
|
|
|
SCONS_CHECK_COMMAND: "scons llvm=1 check"
|
2019-09-06 15:29:32 +08:00
|
|
|
LLVM_VERSION: "3.9"
|
2019-06-29 07:35:32 +08:00
|
|
|
|
|
|
|
.deqp-test:
|
|
|
|
<<: *ci-run-policy
|
|
|
|
stage: test
|
|
|
|
image: $DEBIAN_IMAGE
|
|
|
|
variables:
|
|
|
|
GIT_STRATEGY: none # testing doesn't build anything from source
|
|
|
|
DEQP_SKIPS: deqp-default-skips.txt
|
|
|
|
script:
|
|
|
|
# Note: Build dir (and thus install) may be dirty due to GIT_STRATEGY
|
|
|
|
- rm -rf install
|
|
|
|
- tar -xf artifacts/install.tar
|
|
|
|
- ./artifacts/deqp-runner.sh
|
|
|
|
artifacts:
|
|
|
|
when: on_failure
|
|
|
|
name: "$CI_JOB_NAME-$CI_COMMIT_REF_NAME"
|
|
|
|
paths:
|
|
|
|
- results/
|
|
|
|
|
|
|
|
test-llvmpipe-gles2:
|
|
|
|
parallel: 4
|
|
|
|
variables:
|
|
|
|
DEQP_VER: gles2
|
|
|
|
DEQP_EXPECTED_FAILS: deqp-llvmpipe-fails.txt
|
|
|
|
LIBGL_ALWAYS_SOFTWARE: "true"
|
|
|
|
DEQP_RENDERER_MATCH: "llvmpipe"
|
|
|
|
extends: .deqp-test
|
|
|
|
dependencies:
|
|
|
|
- meson-main
|
2019-08-27 17:57:13 +08:00
|
|
|
needs: [meson-main]
|
2019-08-10 01:32:40 +08:00
|
|
|
|
|
|
|
test-softpipe-gles2:
|
|
|
|
parallel: 4
|
|
|
|
variables:
|
|
|
|
DEQP_VER: gles2
|
|
|
|
DEQP_EXPECTED_FAILS: deqp-softpipe-fails.txt
|
|
|
|
LIBGL_ALWAYS_SOFTWARE: "true"
|
|
|
|
DEQP_RENDERER_MATCH: "softpipe"
|
|
|
|
GALLIUM_DRIVER: "softpipe"
|
|
|
|
extends: .deqp-test
|
|
|
|
dependencies:
|
|
|
|
- meson-main
|
2019-08-27 17:57:13 +08:00
|
|
|
needs: [meson-main]
|
2019-08-10 01:32:40 +08:00
|
|
|
|
|
|
|
# The GLES2 CTS run takes about 8 minutes of CPU time, while GLES3 is
|
|
|
|
# 25 minutes. Until we can get its runtime down, just do a partial
|
|
|
|
# (every 10 tests) run.
|
|
|
|
test-softpipe-gles3-limited:
|
|
|
|
variables:
|
|
|
|
DEQP_VER: gles3
|
|
|
|
DEQP_EXPECTED_FAILS: deqp-softpipe-fails.txt
|
|
|
|
LIBGL_ALWAYS_SOFTWARE: "true"
|
|
|
|
DEQP_RENDERER_MATCH: "softpipe"
|
|
|
|
GALLIUM_DRIVER: "softpipe"
|
|
|
|
CI_NODE_INDEX: 1
|
|
|
|
CI_NODE_TOTAL: 10
|
|
|
|
extends: .deqp-test
|
|
|
|
dependencies:
|
|
|
|
- meson-main
|
2019-08-27 17:57:13 +08:00
|
|
|
needs: [meson-main]
|