summaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
blob: a6e3bd4a80504ba4bbf2c7e3c20f550f23e90f27 (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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# 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-16"
  DEBIAN_VERSION: buster-slim
  DEBIAN_IMAGE: "$CI_REGISTRY_IMAGE/debian/$DEBIAN_VERSION:$DEBIAN_TAG"

include:
  - project: 'wayland/ci-templates'
    ref: 0a9bdd33a98f05af6761ab118b5074952242aab0
    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-aarch64:
  extends: meson-x86_64
  variables:
    CROSS: arm64

meson-armhf:
  extends: meson-x86_64
  variables:
    CROSS: armhf

meson-ppc64el:
  extends: meson-x86_64
  variables:
    CROSS: ppc64el

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