summaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
blob: 57dea6e040fe5ccb24fe9b6f843e110ea891cb20 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# This is the tag of the docker image used for the build jobs. If the
# image doesn't exist yet, the containers 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/drm
  DEBIAN_TAG: "2019-11-12"
  DEBIAN_VERSION: buster-slim
  DEBIAN_IMAGE: "$CI_REGISTRY_IMAGE/debian/$DEBIAN_VERSION:$DEBIAN_TAG"

include:
  - project: 'wayland/ci-templates'
    ref: 1f7f57c64ff4ebbf7292e3b7a13600518b8cb24c
    file: '/templates/debian.yml'

stages:
  - containers
  - build


# When & how to run the CI
.ci-run-policy:
  except:
    - schedules
  retry:
    max: 2
    when:
      - runner_system_failure

# CONTAINERS

debian:
  stage: containers
  extends:
    - .ci-run-policy
    - .debian@container-ifnot-exists
  variables:
    GIT_STRATEGY: none # no need to pull the whole tree for rebuilding the image
    DEBIAN_EXEC: 'bash .gitlab-ci/debian-install.sh'


# BUILD

.meson-build:
  stage: build
  variables:
    GIT_DEPTH: 10
  script:
    - meson _build
        -D amdgpu=true
        -D cairo-tests=true
        -D etnaviv=true
        -D exynos=true
        -D freedreno=true
        -D freedreno-kgsl=true
        -D intel=true
        -D libkms=true
        -D man-pages=true
        -D nouveau=true
        -D omap=true
        -D radeon=true
        -D tegra=true
        -D udev=true
        -D valgrind=auto
        -D vc4=true
        -D vmwgfx=true
        ${CROSS+--cross /cross_file-$CROSS.txt}
    - ninja -C _build
    - ninja -C _build test
    - DESTDIR=$PWD/install ninja -C _build install
  artifacts:
    when: on_failure
    paths:
      - _build/meson-logs/*

meson-x86_64:
  extends:
    - .ci-run-policy
    - .meson-build
  image: $DEBIAN_IMAGE
  needs:
    - debian

meson-i386:
  extends: meson-x86_64
  variables:
    CROSS: i386

meson-arch-daily:
  rules:
    - if: '$SCHEDULE == "arch-daily"'
      when: on_success
    - when: never
  image: archlinux/base
  before_script:
    - pacman -Syu --noconfirm --needed
        base-devel
        cairo
        cunit
        docbook-xsl
        libatomic_ops
        libpciaccess
        libxslt
        meson
        valgrind
  extends: .meson-build