summaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
blob: c05529df9461668303e10fa60d9c0fa9cbccf4b3 (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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
# -*- indent-tabs-mode: nil -*-
include:
  - template: 'Workflows/Branch-Pipelines.gitlab-ci.yml'
  - project: 'freedesktop/ci-templates'
    ref: '88ed1082df2af02090916566742543f1dbaee988'
    file: '/templates/fedora.yml'

variables:
  FDO_UPSTREAM_REPO: 'cairo/cairo'
  FDO_DISTRIBUTION_VERSION: '34'
  FDO_DISTRIBUTION_TAG: '2021-05-04.2'

  # TODO: should probably get its own image at some point instead of reusing the GStreamer one.
  WINDOWS_IMAGE:             "registry.freedesktop.org/gstreamer/gst-ci/amd64/windows:v16-master"

  DEFAULT_MESON_ARGS: >
    --default-library=both
    -Dgl-backend=auto
    -Dglesv2=auto
    -Dglesv3=auto

stages:
  - prep
  - test

# Global CI policy: This can be used to configure global behaviour our our jobs
default:
  retry:
    max: 2
    when:
      - 'runner_system_failure'
      - 'stuck_or_timeout_failure'
      - 'scheduler_failure'
      - 'api_failure'
  interruptible: true

.ccache_setup:
  variables:
    CCACHE_BASEDIR: "$CI_PROJECT_DIR"
    CCACHE_DIR: "$CI_PROJECT_DIR/ccache"
    CC: "ccache gcc"
    CXX: "ccache g++"
  before_script:
    - mkdir -p ccache
    - ccache --show-stats
  cache:
    # Each job will have it's own cache
    key: "$CI_JOB_NAME"
    paths:
      - ccache/

fedora image:
  extends:
   - '.fdo.container-build@fedora'
  stage: 'prep'
  variables:
    FDO_DISTRIBUTION_PACKAGES: >
      meson
      ninja-build
      ccache
      gcc
      g++
      zlib-devel
      expat
      libpng-devel
      fontconfig-devel
      freetype-devel
      libX11-devel
      libXrender-devel
      glib2-devel
      librsvg2-devel
      gtk2-devel
      libdrm-devel
      poppler-glib-devel
      pixman-devel
      cogl-devel
      systemd-devel
      systemd-udev
      mesa-libEGL
      mesa-libGL
      mesa-libGL-devel
      mesa-libgbm
      mesa-libgbm-devel
      mesa-libglapi
      expat-devel
      autoconf
      automake
      make
      which
      libtool
      diffutils
      xorg-x11-server-Xvfb
      dejavu-sans-fonts
      dejavu-sans-mono-fonts
      dejavu-serif-fonts

fedora autotools build:
  extends:
    - '.fdo.distribution-image@fedora'
    - '.ccache_setup'
  stage: 'test'
  script:
    - ./autogen.sh
    # Current test failures that we ignore for now
    - export CAIRO_TEST_UGLY_HACK_TO_SOMETIMES_IGNORE_SCRIPT_XCB_HUGE_IMAGE_SHM=1
    - export CAIRO_TEST_UGLY_HACK_TO_IGNORE_CREATE_FOR_STREAM=1
    - export CAIRO_TEST_IGNORE_pdf_argb32=bug-image-compositor,clear-source,clip-operator,clip-text,culled-glyphs,extended-blend,extended-blend-solid,fallback,filter-bilinear-extents,filter-nearest-offset,filter-nearest-transformed,font-matrix-translation,glyph-cache-pressure,halo,halo-transform,inverse-text,large-font,linear-gradient-reflect,mask,operator-alpha-alpha,overlapping-glyphs,paint-with-alpha-clip,partial-clip-text-bottom,partial-clip-text-left,pixman-downscale-fast-95,pixman-downscale-fast-24,pixman-downscale-good-24,pixman-downscale-best-95,pixman-downscale-best-24,pixman-downscale-nearest-95,pixman-downscale-nearest-24,pixman-downscale-bilinear-24,radial-gradient,radial-gradient-mask,radial-gradient-source,radial-gradient-mask-source,radial-gradient-one-stop,record1414x-select-font-face,record1414x-text-transform,record2x-text-transform,record-replay-extend-repeat,record-replay-extend-reflect,recording-surface-over,recording-surface-extend-repeat,recording-surface-extend-reflect,rectilinear-miter-limit,rectilinear-dash,rectilinear-stroke,rotate-image-surface-paint,rotate-clip-image-surface-paint,select-font-face,self-copy,show-glyphs-advance,show-text-current-point,smask-text,smp-glyph,surface-pattern,surface-pattern-operator,surface-pattern-scale-down,text-glyph-range,text-pattern,text-rotate,text-transform,text-unhinted-metrics,thin-lines,trap-clip,twin,user-font-proxy,user-font-rescale,pthread-same-source,pthread-show-text,ft-show-glyphs-positioning,ft-show-glyphs-table,ft-text-vertical-layout-type1,ft-text-vertical-layout-type3
    - export CAIRO_TEST_IGNORE_pdf_rgb24=bug-image-compositor,clear-source,clip-text,culled-glyphs,extended-blend-alpha-mask,extended-blend-solid,filter-bilinear-extents,filter-nearest-offset,filter-nearest-transformed,font-matrix-translation,glyph-cache-pressure,halo,halo-transform,inverse-text,large-font,linear-gradient-reflect,mask,operator-alpha-alpha,overlapping-glyphs,paint-with-alpha-clip,partial-clip-text-bottom,partial-clip-text-left,pixman-downscale-fast-95,pixman-downscale-fast-24,pixman-downscale-good-24,pixman-downscale-best-95,pixman-downscale-best-24,pixman-downscale-nearest-95,pixman-downscale-nearest-24,pixman-downscale-bilinear-24,radial-gradient,radial-gradient-mask,radial-gradient-source,radial-gradient-mask-source,radial-gradient-one-stop,random-intersections-curves-eo,random-intersections-curves-nz,record-paint-alpha-clip,record-select-font-face,record-text-transform,record1414x-paint-alpha,record1414x-paint-alpha-clip,record1414x-paint-alpha-clip-mask,record1414x-select-font-face,record1414x-text-transform,record2x-paint-alpha-clip-mask,record2x-select-font-face,record2x-text-transform,record90-paint-alpha-clip,record90-paint-alpha-clip-mask,record90-select-font-face,record90-text-transform,recordflip-whole-select-font-face,recordflip-whole-self-intersecting,recordflip-whole-text-transform,recordflip-select-font-face,recordflip-text-transform,record-replay-extend-repeat,record-replay-extend-reflect,recording-surface-over,recording-surface-extend-repeat,rectilinear-miter-limit,rectilinear-dash,rectilinear-stroke,rel-path,rotate-image-surface-paint,rotate-clip-image-surface-paint,select-font-face,self-copy,show-glyphs-advance,show-text-current-point,smask-text,smp-glyph,surface-pattern,surface-pattern-scale-down,text-glyph-range,text-pattern,text-rotate,text-transform,text-unhinted-metrics,trap-clip,twin,user-font-proxy,user-font-rescale,pthread-same-source,pthread-show-text,ft-show-glyphs-positioning,ft-show-glyphs-table,ft-text-vertical-layout-type1,ft-text-vertical-layout-type3
    - export CAIRO_TEST_IGNORE_script_argb32=a1-bug,a1-fill,arc-looping-dash,bilevel-image,bug-51910,bug-84115,bug-seams,caps,caps-2,caps-1,caps-05,checkerboard,caps-joins-2,caps-joins-1,caps-joins-05,caps-joins-curve,caps-tails-curve,caps-sub-paths,clear-source,clip-disjoint-quad,clip-device-offset,clip-image,clip-mixed-antialias,clip-push-group,clip-polygons,clip-text,close-path,close-path-current-point,composite-integer-translate-over-repeat,copy-path,coverage-rectangles,coverage-intersecting-quads,coverage-intersecting-triangles,coverage-abutting,culled-glyphs,dash-caps-joins,dash-curve,dash-infinite-loop,dash-scale,dash-state,degenerate-curve-to,degenerate-linear-gradient,degenerate-pen,degenerate-radial-gradient,degenerate-rel-curve-to,device-offset-scale,extend-pad-border,fill-and-stroke-alpha,fill-and-stroke-alpha-add,filter-bilinear-extents,font-matrix-translation,glyph-cache-pressure,halo,halo-transform,huge-radial,image-surface-source,xcb-surface-source,xlib-surface-source,infinite-join,inverse-text,joins,large-font,large-source,large-twin-antialias-mixed,leaky-dashed-rectangle,leaky-dashed-stroke,leaky-polygon,line-width-scale,line-width-tolerance,linear-gradient-extend,linear-gradient-reflect,long-dashed-lines,map-all-to-image,map-bit-to-image,map-to-image-fill,mask-transformed-image,mask-transformed-similar,mesh-pattern,mesh-pattern-conical,mesh-pattern-control-points,mesh-pattern-fold,mesh-pattern-overlap,mesh-pattern-transformed,negative-stride-image,operator-alpha-alpha,overlapping-glyphs,paint-source-alpha,paint-with-alpha,paint-with-alpha-solid-clip,paint-with-alpha-clip,partial-clip-text-bottom,partial-clip-text-left,partial-coverage-reference,partial-coverage-three-quarter-reference,partial-coverage-half-reference,path-stroke-twice,push-group-color,radial-gradient,radial-gradient-mask,radial-gradient-source,radial-gradient-mask-source,radial-gradient-one-stop,radial-gradient-extend,record-paint-alpha-solid-clip,record-paint-alpha-clip,record-select-font-face,record-text-transform,record1414x-paint-alpha,record1414x-paint-alpha-solid-clip,record1414x-paint-alpha-clip,record1414x-select-font-face,record1414x-text-transform,record2x-paint-alpha,record2x-paint-alpha-solid-clip,record2x-paint-alpha-clip,record2x-select-font-face,record2x-text-transform,record90-paint-alpha-clip-mask,record90-select-font-face,record90-text-transform,recordflip-whole-select-font-face,recordflip-whole-text-transform,recordflip-select-font-face,recordflip-text-transform,record-neg-extents-bounded,record-mesh,record-replay-extend-none,record-replay-extend-repeat,record-replay-extend-reflect,record-replay-extend-pad,recording-surface-over,recording-surface-source,recording-surface-extend-none,recording-surface-extend-repeat,recording-surface-extend-reflect,rectilinear-miter-limit,reflected-stroke,scale-offset-image,scale-offset-similar,stroke-ctm-caps,select-font-face,self-copy,show-glyphs-advance,show-text-current-point,shape-sierpinski,smask,smask-image-mask,smask-mask,smask-paint,smask-text,stride-12-image,subsurface,subsurface-scale,surface-pattern,surface-pattern-scale-up,text-antialias-gray,text-antialias-subpixel,text-antialias-subpixel-rgb,text-antialias-subpixel-bgr,text-antialias-subpixel-vrgb,text-antialias-subpixel-vbgr,text-glyph-range,text-pattern,text-rotate,text-transform,text-unhinted-metrics,transforms,twin,twin-antialias-gray,twin-antialias-mixed,twin-antialias-none,twin-antialias-subpixel,unclosed-strokes,user-font,user-font-proxy,user-font-rescale,world-map,world-map-stroke,world-map-fill,xcb-stress-cache,xcomposite-projection,pthread-show-text,bitmap-font,ft-show-glyphs-positioning,ft-show-glyphs-table,ft-text-vertical-layout-type1,ft-text-vertical-layout-type3,ft-text-antialias-none,pdf-surface-source,ps-surface-source
    - export CAIRO_TEST_IGNORE_image_argb32=clip-text,culled-glyphs,halo-transform,overlapping-glyphs,record1414x-select-font-face,record1414x-text-transform,show-glyphs-advance,subsurface,subsurface-scale,text-antialias-subpixel,text-antialias-subpixel-rgb,text-antialias-subpixel-bgr,text-antialias-subpixel-vrgb,text-antialias-subpixel-vbgr,text-pattern,text-rotate,text-unhinted-metrics,ft-show-glyphs-positioning,ft-text-vertical-layout-type1,ft-text-vertical-layout-type3
    - export CAIRO_TEST_IGNORE_image_rgb24=clip-text,culled-glyphs,extended-blend-alpha-mask,halo-transform,overlapping-glyphs,record1414x-select-font-face,record1414x-text-transform,shifted-operator,show-glyphs-advance,subsurface,subsurface-scale,text-antialias-subpixel,text-antialias-subpixel-rgb,text-antialias-subpixel-bgr,text-antialias-subpixel-vrgb,text-antialias-subpixel-vbgr,text-pattern,text-rotate,text-unhinted-metrics,ft-show-glyphs-positioning,ft-text-vertical-layout-type1,ft-text-vertical-layout-type3
    - export CAIRO_TEST_IGNORE_image16_rgb24=a1-bug,aliasing,arc-direction,arc-looping-dash,big-line,bug-spline,bug-84115,bug-bo-ricotz,bug-source-cu,bug-extents,bug-seams,bug-image-compositor,caps,caps-2,caps-05,caps-joins-2,caps-joins-alpha,caps-joins-curve,caps-tails-curve,clear-source,clip-disjoint,clip-disjoint-quad,clip-stroke-unbounded,clip-fill-nz-unbounded,clip-fill-eo-unbounded,clip-fill,clip-image,clip-intersect,clip-operator,clip-push-group,clip-shape,clip-stroke,clip-text,clip-twice,close-path-current-point,copy-path,coverage-rectangles,coverage-rhombus,coverage-intersecting-quads,coverage-intersecting-triangles,coverage-row-triangles,coverage-column-triangles,coverage-triangles,coverage-abutting,culled-glyphs,dash-caps-joins,dash-curve,dash-scale,dash-state,dash-zero-length,degenerate-arc,degenerate-curve-to,degenerate-path,degenerate-pen,degenerate-rel-curve-to,drunkard-tails,extend-pad-border,extended-blend,extended-blend-alpha,extended-blend-mask,extended-blend-alpha-mask,extended-blend-solid,extended-blend-solid-alpha,fallback,fill-alpha,fill-alpha-pattern,fill-and-stroke,fill-and-stroke-alpha,fill-and-stroke-alpha-add,fill-degenerate-sort-order,fill-image,fill-missed-stop,fill-rule,filter-bilinear-extents,finer-grained-fallbacks,font-matrix-translation,glyph-cache-pressure,gradient-alpha,gradient-constant-alpha,group-unaligned,halo,halo-transform,hatchings,huge-linear,huge-radial,inverse-text,joins,joins-loop,joins-star,joins-retrace,large-font,large-twin-antialias-mixed,leaky-dashed-stroke,line-width-overlap-offset,line-width-scale,linear-gradient,linear-gradient-reflect,linear-gradient-subset,long-dashed-lines,mask,mask-alpha,mask-ctm,mask-surface-ctm,mask-transformed-image,mask-transformed-similar,mesh-pattern,mesh-pattern-conical,mesh-pattern-control-points,mesh-pattern-fold,mesh-pattern-overlap,mesh-pattern-transformed,new-sub-path,operator-source,over-around-source,overlapping-boxes,overlapping-glyphs,overlapping-dash-caps,paint-source-alpha,paint-with-alpha,paint-with-alpha-clip,paint-with-alpha-clip-mask,partial-coverage-reference,partial-coverage-three-quarter-reference,pass-through,path-append,path-stroke-twice,pdf-isolated-group,pixman-downscale-fast-96,pixman-downscale-good-96,pixman-downscale-best-96,pixman-downscale-best-24,pixman-downscale-nearest-96,pixman-downscale-bilinear-96,pixman-rotate,push-group,push-group-color,radial-gradient,radial-gradient-mask,radial-gradient-source,radial-gradient-mask-source,random-clip,random-intersections-eo,random-intersections-nonzero,random-intersections-curves-eo,random-intersections-curves-nz,raster-source,record-paint-alpha,record-paint-alpha-clip,record-paint-alpha-clip-mask,record-fill-alpha,record-select-font-face,record-text-transform,record1414x-paint-alpha,record1414x-paint-alpha-clip,record1414x-paint-alpha-clip-mask,record1414x-fill-alpha,record1414x-select-font-face,record1414x-text-transform,record2x-paint-alpha,record2x-paint-alpha-clip,record2x-paint-alpha-clip-mask,record2x-fill-alpha,record2x-select-font-face,record2x-text-transform,record90-paint-alpha,record90-paint-alpha-clip,record90-paint-alpha-clip-mask,record90-fill-alpha,record90-select-font-face,record90-text-transform,recordflip-whole-paint-alpha,recordflip-whole-paint-alpha-clip,recordflip-whole-paint-alpha-clip-mask,recordflip-whole-fill-alpha,recordflip-whole-select-font-face,recordflip-whole-text-transform,recordflip-paint-alpha,recordflip-paint-alpha-clip,recordflip-paint-alpha-clip-mask,recordflip-fill-alpha,recordflip-select-font-face,recordflip-text-transform,record-neg-extents-unbounded,record-neg-extents-bounded,record-mesh,record-replay-extend-repeat,record-replay-extend-reflect,record-replay-extend-pad,recording-surface-over,recording-surface-source,recording-surface-extend-none,recording-surface-extend-repeat,recording-surface-extend-reflect,rectilinear-dash-scale-unaligned,reflected-stroke,rel-path,rotate-clip-image-surface-paint,rotated-clip,rounded-rectangle-fill,rounded-rectangle-stroke,scale-offset-image,scale-offset-similar,stroke-ctm-caps,stroke-image,select-font-face,set-source,shifted-operator,show-glyphs-advance,show-text-current-point,shape-general-convex,shape-sierpinski,simple-edge,smask,smask-fill,smask-mask,smask-paint,smask-stroke,smask-text,spline-decomposition,stroke-pattern,subsurface,subsurface-scale,surface-pattern,surface-pattern-operator,surface-pattern-scale-down,surface-pattern-scale-up,text-antialias-gray,text-antialias-subpixel,text-antialias-subpixel-rgb,text-antialias-subpixel-bgr,text-antialias-subpixel-vrgb,text-antialias-subpixel-vbgr,text-glyph-range,text-pattern,text-rotate,text-transform,text-unhinted-metrics,tighten-bounds,tiger,a1-tiger,transforms,trap-clip,twin,twin-antialias-gray,twin-antialias-mixed,twin-antialias-subpixel,unbounded-operator,unclosed-strokes,user-font,user-font-mask,user-font-proxy,user-font-rescale,world-map,world-map-stroke,world-map-fill,xcb-huge-image-shm,xcb-huge-subimage,xcomposite-projection,pthread-same-source,pthread-show-text,ft-show-glyphs-positioning,ft-show-glyphs-table,ft-text-vertical-layout-type1,ft-text-vertical-layout-type3
    - export CAIRO_TEST_IGNORE_recording_argb32=bug-source-cu,clear-source,clip-text,coverage-rectangles,culled-glyphs,finer-grained-fallbacks,halo-transform,overlapping-glyphs,record1414x-fill-alpha,record1414x-select-font-face,record1414x-text-transform,record2x-paint-alpha-clip-mask,record2x-fill-alpha,record2x-text-transform,recording-surface-over,recording-surface-source,recording-surface-extend-none,recording-surface-extend-repeat,recording-surface-extend-reflect,scale-offset-similar,show-glyphs-advance,subsurface,subsurface-scale,text-antialias-subpixel,text-antialias-subpixel-rgb,text-antialias-subpixel-bgr,text-antialias-subpixel-vrgb,text-antialias-subpixel-vbgr,text-pattern,text-rotate,text-unhinted-metrics,pthread-same-source,ft-show-glyphs-positioning,ft-text-vertical-layout-type1,ft-text-vertical-layout-type3
    - export CAIRO_TEST_IGNORE_recording_rgb24=bug-source-cu,clear-source,clip-text,coverage-rectangles,culled-glyphs,extended-blend-alpha-mask,finer-grained-fallbacks,halo-transform,overlapping-glyphs,record1414x-fill-alpha,record1414x-select-font-face,record1414x-text-transform,record2x-paint-alpha-clip-mask,record2x-fill-alpha,record2x-text-transform,recording-surface-over,recording-surface-source,recording-surface-extend-none,recording-surface-extend-repeat,recording-surface-extend-reflect,scale-offset-similar,show-glyphs-advance,subsurface,subsurface-scale,text-antialias-subpixel,text-antialias-subpixel-rgb,text-antialias-subpixel-bgr,text-antialias-subpixel-vrgb,text-antialias-subpixel-vbgr,text-pattern,text-rotate,text-unhinted-metrics,pthread-same-source,ft-show-glyphs-positioning,ft-text-vertical-layout-type1,ft-text-vertical-layout-type3
    - export CAIRO_TEST_IGNORE_svg11_argb32=alpha-similar,clear-source,clip-operator,clip-text,culled-glyphs,extended-blend-solid,extended-blend-solid-alpha,filter-bilinear-extents,filter-nearest-offset,filter-nearest-transformed,halo-transform,linear-gradient-reflect,mask-transformed-image,operator-alpha-alpha,overlapping-glyphs,paint-source-alpha,paint-with-alpha,paint-with-alpha-clip,paint-with-alpha-clip-mask,radial-gradient,radial-gradient-mask,record-paint-alpha,record-paint-alpha-clip,record-paint-alpha-clip-mask,record1414x-paint-alpha,record1414x-paint-alpha-clip,record1414x-paint-alpha-clip-mask,record1414x-fill-alpha,record1414x-select-font-face,record1414x-text-transform,record2x-paint-alpha,record2x-paint-alpha-clip,record2x-paint-alpha-clip-mask,record90-paint-alpha-clip,record90-paint-alpha-clip-mask,recordflip-whole-paint-alpha,recordflip-whole-paint-alpha-clip,recordflip-whole-paint-alpha-clip-mask,recordflip-paint-alpha,recordflip-paint-alpha-clip,recordflip-paint-alpha-clip-mask,scale-offset-image,scale-source-surface-paint,self-copy,show-glyphs-advance,smask,smask-image-mask,smask-mask,smask-paint,smask-stroke,smask-text,surface-pattern,surface-pattern-operator,surface-pattern-scale-up,text-pattern,text-rotate,text-unhinted-metrics,tighten-bounds,unbounded-operator,pthread-similar,ft-show-glyphs-positioning,ft-text-vertical-layout-type1,ft-text-vertical-layout-type3
    - export CAIRO_TEST_IGNORE_svg11_rgb24=alpha-similar,clear-source,clip-operator,clip-text,culled-glyphs,extended-blend-alpha-mask,extended-blend-solid,extended-blend-solid-alpha,filter-bilinear-extents,filter-nearest-offset,filter-nearest-transformed,gradient-alpha,gradient-constant-alpha,halo-transform,linear-gradient-reflect,mask,mask-transformed-image,operator-alpha-alpha,overlapping-glyphs,paint-source-alpha,paint-with-alpha,paint-with-alpha-clip,paint-with-alpha-clip-mask,radial-gradient,radial-gradient-mask,radial-gradient-source,radial-gradient-mask-source,record-paint-alpha,record-paint-alpha-clip,record-paint-alpha-clip-mask,record1414x-paint-alpha,record1414x-paint-alpha-clip,record1414x-paint-alpha-clip-mask,record1414x-fill-alpha,record1414x-select-font-face,record1414x-text-transform,record2x-paint-alpha,record2x-paint-alpha-clip,record2x-paint-alpha-clip-mask,record90-paint-alpha-clip,record90-paint-alpha-clip-mask,recordflip-whole-paint-alpha,recordflip-whole-paint-alpha-clip,recordflip-whole-paint-alpha-clip-mask,recordflip-paint-alpha,recordflip-paint-alpha-clip,recordflip-paint-alpha-clip-mask,scale-offset-image,scale-source-surface-paint,self-copy,show-glyphs-advance,smask,smask-image-mask,smask-mask,smask-paint,smask-stroke,smask-text,surface-pattern,surface-pattern-operator,surface-pattern-scale-up,text-pattern,text-rotate,text-unhinted-metrics,tighten-bounds,unbounded-operator,pthread-similar,ft-show-glyphs-positioning,ft-text-vertical-layout-type1,ft-text-vertical-layout-type3
    - export CAIRO_TEST_IGNORE_xcb_argb32=bug-spline,clip-operator,coverage-rectangles,coverage-rhombus,coverage-intersecting-quads,coverage-intersecting-triangles,coverage-row-triangles,coverage-column-triangles,coverage-triangles,culled-glyphs,fill-image,halo,halo-transform,hatchings,operator-source,overlapping-boxes,radial-gradient,radial-gradient-mask,radial-gradient-source,radial-gradient-mask-source,radial-outer-focus,random-clip,record-self-intersecting,record1414x-fill-alpha,record1414x-self-intersecting,record2x-paint-alpha-clip-mask,record2x-fill-alpha,record90-paint-alpha-solid-clip,record90-paint-alpha-clip,record90-self-intersecting,recordflip-whole-paint-alpha-clip-mask,recordflip-whole-fill-alpha,recordflip-whole-self-intersecting,recordflip-paint-alpha-clip-mask,recordflip-self-intersecting,record-neg-extents-unbounded,record-neg-extents-bounded,record-replay-extend-repeat,record-replay-extend-reflect,record-replay-extend-pad,recording-surface-extend-repeat,recording-surface-extend-pad,rotated-clip,stroke-clipped,stroke-image,simple-edge,text-antialias-subpixel-vrgb,text-antialias-subpixel-vbgr,text-rotate,tighten-bounds,a1-tiger,twin-antialias-none,unantialiased-shapes,user-font,user-font-proxy,ft-text-vertical-layout-type1
    - export CAIRO_TEST_IGNORE_xcb_rgb24=arc-looping-dash,bug-spline,bug-51910,bug-84115,bug-source-cu,bug-image-compositor,caps-2,caps-1,caps-05,caps-joins-2,caps-joins-1,caps-joins-05,clear-source,clip-operator,clip-text,coverage-rectangles,coverage-rhombus,coverage-intersecting-quads,coverage-intersecting-triangles,coverage-row-triangles,coverage-column-triangles,coverage-triangles,coverage-abutting,culled-glyphs,dash-curve,extended-blend-alpha-mask,fallback,fill-image,filter-bilinear-extents,font-matrix-translation,glyph-cache-pressure,halo,halo-transform,hatchings,inverse-text,large-font,linear-gradient,linear-gradient-subset,mask,mask-transformed-image,mask-transformed-similar,operator-alpha-alpha,operator-clear,operator-source,overlapping-boxes,overlapping-glyphs,overlapping-dash-caps,partial-clip-text-bottom,partial-clip-text-left,partial-coverage-reference,partial-coverage-three-quarter-reference,push-group,push-group-color,radial-gradient,radial-gradient-mask,radial-gradient-source,radial-gradient-mask-source,radial-outer-focus,random-clip,record-self-intersecting,record1414x-fill-alpha,record1414x-self-intersecting,record1414x-text-transform,record2x-paint-alpha-clip-mask,record2x-fill-alpha,record90-paint-alpha-solid-clip,record90-paint-alpha-clip,record90-fill-alpha,record90-self-intersecting,recordflip-whole-paint-alpha-clip-mask,recordflip-whole-fill-alpha,recordflip-whole-self-intersecting,recordflip-paint-alpha-clip-mask,recordflip-fill-alpha,recordflip-self-intersecting,record-neg-extents-unbounded,record-neg-extents-bounded,record-replay-extend-repeat,record-replay-extend-reflect,record-replay-extend-pad,recording-surface-over,recording-surface-source,recording-surface-extend-none,recording-surface-extend-repeat,recording-surface-extend-reflect,recording-surface-extend-pad,reflected-stroke,rotated-clip,select-font-face,stroke-clipped,stroke-image,show-glyphs-advance,show-text-current-point,simple-edge,smask,smask-fill,smask-image-mask,smask-mask,smask-paint,smask-stroke,smp-glyph,subsurface,subsurface-scale,surface-pattern-operator,surface-pattern-scale-up,text-antialias-gray,text-antialias-subpixel,text-antialias-subpixel-rgb,text-antialias-subpixel-bgr,text-antialias-subpixel-vrgb,text-antialias-subpixel-vbgr,text-glyph-range,text-rotate,text-transform,tighten-bounds,a1-tiger,trap-clip,twin,twin-antialias-gray,twin-antialias-none,twin-antialias-subpixel,unantialiased-shapes,unbounded-operator,user-font,user-font-proxy,world-map,world-map-fill,xcomposite-projection,ft-show-glyphs-positioning,ft-show-glyphs-table,ft-text-vertical-layout-type1,ft-text-vertical-layout-type3
    - export CAIRO_TEST_IGNORE_xcb_window_rgb24=arc-looping-dash,bug-spline,bug-51910,caps-2,caps-1,caps-05,caps-joins-2,caps-joins-1,caps-joins-05,clear-source,clip-operator,clip-text,coverage-rectangles,coverage-intersecting-quads,coverage-intersecting-triangles,coverage-row-triangles,coverage-column-triangles,coverage-triangles,coverage-abutting,culled-glyphs,extended-blend-alpha-mask,fallback,fill-image,filter-bilinear-extents,font-matrix-translation,glyph-cache-pressure,halo,halo-transform,inverse-text,linear-gradient,linear-gradient-subset,mask,mask-transformed-image,mask-transformed-similar,operator-alpha-alpha,operator-clear,operator-source,overlapping-boxes,overlapping-glyphs,overlapping-dash-caps,partial-clip-text-bottom,partial-clip-text-left,partial-coverage-reference,partial-coverage-three-quarter-reference,push-group,push-group-color,radial-outer-focus,record-self-intersecting,record1414x-fill-alpha,record1414x-self-intersecting,record1414x-text-transform,record2x-paint-alpha-clip-mask,record2x-fill-alpha,record90-paint-alpha-solid-clip,record90-paint-alpha-clip,record90-fill-alpha,record90-self-intersecting,recordflip-whole-paint-alpha-clip-mask,recordflip-whole-fill-alpha,recordflip-whole-self-intersecting,recordflip-paint-alpha-clip-mask,recordflip-fill-alpha,recordflip-self-intersecting,record-neg-extents-unbounded,record-neg-extents-bounded,record-replay-extend-repeat,record-replay-extend-reflect,record-replay-extend-pad,recording-surface-over,recording-surface-source,recording-surface-extend-none,recording-surface-extend-repeat,recording-surface-extend-reflect,recording-surface-extend-pad,reflected-stroke,rotated-clip,select-font-face,stroke-clipped,stroke-image,show-glyphs-advance,show-text-current-point,simple-edge,smask,smask-fill,smask-image-mask,smask-mask,smask-paint,smask-stroke,smp-glyph,subsurface,subsurface-scale,surface-pattern-operator,surface-pattern-scale-up,text-antialias-gray,text-antialias-subpixel,text-antialias-subpixel-rgb,text-antialias-subpixel-bgr,text-antialias-subpixel-vrgb,text-antialias-subpixel-vbgr,text-glyph-range,text-rotate,text-transform,tighten-bounds,trap-clip,twin,twin-antialias-gray,twin-antialias-none,twin-antialias-subpixel,unantialiased-shapes,unbounded-operator,xcomposite-projection,ft-show-glyphs-positioning,ft-show-glyphs-table,ft-text-vertical-layout-type1,ft-text-vertical-layout-type3
    - export CAIRO_TEST_IGNORE_xcb_window__rgb24=arc-looping-dash,bug-spline,bug-51910,caps-2,caps-1,caps-05,caps-joins-2,caps-joins-1,caps-joins-05,clear-source,clip-operator,clip-text,coverage-rectangles,coverage-intersecting-quads,coverage-intersecting-triangles,coverage-row-triangles,coverage-column-triangles,coverage-triangles,coverage-abutting,culled-glyphs,extended-blend-alpha-mask,fallback,fill-image,filter-bilinear-extents,font-matrix-translation,glyph-cache-pressure,halo,halo-transform,inverse-text,linear-gradient,linear-gradient-subset,mask,mask-transformed-image,mask-transformed-similar,operator-alpha-alpha,operator-clear,operator-source,overlapping-boxes,overlapping-glyphs,overlapping-dash-caps,partial-clip-text-bottom,partial-clip-text-left,partial-coverage-reference,partial-coverage-three-quarter-reference,push-group,push-group-color,radial-outer-focus,record-self-intersecting,record1414x-fill-alpha,record1414x-self-intersecting,record1414x-text-transform,record2x-paint-alpha-clip-mask,record2x-fill-alpha,record90-paint-alpha-solid-clip,record90-paint-alpha-clip,record90-fill-alpha,record90-self-intersecting,recordflip-whole-paint-alpha-clip-mask,recordflip-whole-fill-alpha,recordflip-whole-self-intersecting,recordflip-paint-alpha-clip-mask,recordflip-fill-alpha,recordflip-self-intersecting,record-neg-extents-unbounded,record-neg-extents-bounded,record-replay-extend-repeat,record-replay-extend-reflect,record-replay-extend-pad,recording-surface-over,recording-surface-source,recording-surface-extend-none,recording-surface-extend-repeat,recording-surface-extend-reflect,recording-surface-extend-pad,reflected-stroke,rotated-clip,select-font-face,stroke-clipped,stroke-image,show-glyphs-advance,show-text-current-point,simple-edge,smask,smask-fill,smask-image-mask,smask-mask,smask-paint,smask-stroke,smp-glyph,subsurface,subsurface-scale,surface-pattern-operator,surface-pattern-scale-up,text-antialias-gray,text-antialias-subpixel,text-antialias-subpixel-rgb,text-antialias-subpixel-bgr,text-antialias-subpixel-vrgb,text-antialias-subpixel-vbgr,text-glyph-range,text-rotate,text-transform,tighten-bounds,trap-clip,twin,twin-antialias-gray,twin-antialias-none,twin-antialias-subpixel,unantialiased-shapes,unbounded-operator,xcomposite-projection,ft-show-glyphs-positioning,ft-show-glyphs-table,ft-text-vertical-layout-type1,ft-text-vertical-layout-type3
    - export CAIRO_TEST_IGNORE_xcb_render_0_0_argb32=clip-disjoint-hatching,clip-stroke-unbounded,clip-fill-nz-unbounded,clip-fill-eo-unbounded,clip-operator,clip-polygons,clip-shape,clip-twice,coverage-intersecting-triangles,culled-glyphs,hatchings,radial-gradient,radial-gradient-mask,radial-gradient-source,radial-gradient-mask-source,random-clip,record-paint-alpha-solid-clip,record1414x-select-font-face,record1414x-text-transform,record-neg-extents-bounded,record-replay-extend-repeat,record-replay-extend-reflect,rotated-clip,text-antialias-subpixel,text-antialias-subpixel-rgb,text-antialias-subpixel-bgr,text-antialias-subpixel-vrgb,text-antialias-subpixel-vbgr,trap-clip,ft-text-vertical-layout-type1
    - export CAIRO_TEST_IGNORE_xcb_render_0_0_rgb24=clip-disjoint-hatching,clip-stroke-unbounded,clip-fill-nz-unbounded,clip-fill-eo-unbounded,clip-operator,clip-polygons,clip-shape,clip-twice,coverage-intersecting-triangles,culled-glyphs,extended-blend-alpha-mask,fallback,hatchings,mask,operator-source,radial-gradient,radial-gradient-mask,radial-gradient-source,radial-gradient-mask-source,random-clip,record-paint-alpha-solid-clip,record1414x-select-font-face,record1414x-text-transform,record-neg-extents-bounded,record-replay-extend-repeat,record-replay-extend-reflect,recording-surface-over,recording-surface-extend-none,rotated-clip,text-antialias-subpixel,text-antialias-subpixel-rgb,text-antialias-subpixel-bgr,text-antialias-subpixel-vrgb,text-antialias-subpixel-vbgr,trap-clip,ft-text-vertical-layout-type1
    - export CAIRO_TEST_IGNORE_xcb_fallback_rgb24=clip-text,coverage-intersecting-triangles,culled-glyphs,extended-blend-alpha-mask,fallback,halo-transform,overlapping-glyphs,record1414x-select-font-face,record1414x-text-transform,show-glyphs-advance,subsurface,subsurface-scale,text-antialias-subpixel,text-antialias-subpixel-rgb,text-antialias-subpixel-bgr,text-antialias-subpixel-vrgb,text-antialias-subpixel-vbgr,text-pattern,text-rotate,text-unhinted-metrics,ft-show-glyphs-positioning,ft-text-vertical-layout-type1,ft-text-vertical-layout-type3
    - export CAIRO_TEST_IGNORE_xlib_argb32=aliasing,arc-looping-dash,bug-spline,bug-84115,bug-extents,bug-image-compositor,caps-joins-curve,clip-disjoint,clip-stroke-unbounded,clip-operator,clip-shape,clip-stroke,clip-text,close-path-current-point,coverage-rhombus,coverage-column-triangles,culled-glyphs,dash-caps-joins,dash-curve,dash-scale,degenerate-curve-to,degenerate-pen,degenerate-rel-curve-to,drunkard-tails,extended-blend-alpha-mask,fill-and-stroke,fill-and-stroke-alpha,fill-and-stroke-alpha-add,fill-image,halo,halo-transform,hatchings,joins,joins-loop,joins-retrace,large-twin-antialias-mixed,leaky-dashed-stroke,line-width-scale,line-width-tolerance,long-dashed-lines,new-sub-path,operator-source,overlapping-boxes,overlapping-glyphs,overlapping-dash-caps,path-stroke-twice,radial-gradient,radial-gradient-mask,radial-gradient-source,radial-gradient-mask-source,radial-outer-focus,random-clip,random-intersections-eo,random-intersections-nonzero,random-intersections-curves-eo,random-intersections-curves-nz,record-select-font-face,record-self-intersecting,record-text-transform,record1414x-fill-alpha,record1414x-select-font-face,record1414x-self-intersecting,record1414x-text-transform,record2x-paint-alpha-clip-mask,record2x-fill-alpha,record2x-select-font-face,record2x-text-transform,record90-paint-alpha-solid-clip,record90-paint-alpha-clip,record90-select-font-face,record90-self-intersecting,record90-text-transform,recordflip-whole-paint-alpha-clip-mask,recordflip-whole-fill-alpha,recordflip-whole-select-font-face,recordflip-whole-self-intersecting,recordflip-whole-text-transform,recordflip-paint-alpha-clip-mask,recordflip-select-font-face,recordflip-self-intersecting,recordflip-text-transform,record-neg-extents-unbounded,record-neg-extents-bounded,record-replay-extend-none,record-replay-extend-repeat,record-replay-extend-reflect,record-replay-extend-pad,recording-surface-extend-repeat,recording-surface-extend-pad,reflected-stroke,rel-path,rounded-rectangle-stroke,scale-offset-image,scale-offset-similar,stroke-clipped,stroke-image,show-glyphs-advance,shape-general-convex,shape-sierpinski,simple-edge,smask,smask-stroke,smask-text,spline-decomposition,stroke-pattern,subsurface,subsurface-scale,text-antialias-subpixel-vrgb,text-antialias-subpixel-vbgr,text-pattern,text-rotate,text-unhinted-metrics,tighten-bounds,twin,twin-antialias-gray,twin-antialias-mixed,twin-antialias-none,twin-antialias-subpixel,unclosed-strokes,user-font,user-font-proxy,world-map,world-map-stroke,pthread-show-text,ft-show-glyphs-positioning,ft-text-vertical-layout-type1,ft-text-vertical-layout-type3
    - export CAIRO_TEST_IGNORE_xlib_rgb24=aliasing,arc-looping-dash,bug-spline,bug-51910,bug-84115,bug-source-cu,bug-extents,bug-image-compositor,caps-joins-05,caps-joins-curve,caps-tails-curve,clear-source,clip-disjoint,clip-stroke-unbounded,clip-operator,clip-shape,clip-stroke,clip-text,close-path-current-point,coverage-rhombus,coverage-column-triangles,coverage-abutting,culled-glyphs,dash-caps-joins,dash-curve,dash-scale,degenerate-curve-to,degenerate-pen,degenerate-rel-curve-to,drunkard-tails,extended-blend-mask,extended-blend-alpha-mask,fallback,fill-and-stroke,fill-and-stroke-alpha,fill-and-stroke-alpha-add,fill-image,filter-bilinear-extents,font-matrix-translation,glyph-cache-pressure,halo,halo-transform,hatchings,infinite-join,inverse-text,joins,joins-loop,joins-star,joins-retrace,large-font,large-twin-antialias-mixed,leaky-dashed-stroke,line-width-scale,line-width-tolerance,linear-gradient,linear-gradient-subset,long-dashed-lines,mask,mask-transformed-image,mask-transformed-similar,miter-precision,new-sub-path,operator-alpha-alpha,operator-clear,operator-source,overlapping-boxes,overlapping-glyphs,overlapping-dash-caps,partial-clip-text-bottom,partial-clip-text-left,partial-coverage-reference,partial-coverage-three-quarter-reference,path-stroke-twice,push-group,push-group-color,radial-gradient,radial-gradient-mask,radial-gradient-source,radial-gradient-mask-source,radial-outer-focus,random-clip,random-intersections-eo,random-intersections-nonzero,random-intersections-curves-eo,random-intersections-curves-nz,record-select-font-face,record-self-intersecting,record-text-transform,record1414x-fill-alpha,record1414x-select-font-face,record1414x-self-intersecting,record1414x-text-transform,record2x-paint-alpha-clip-mask,record2x-fill-alpha,record2x-select-font-face,record2x-text-transform,record90-paint-alpha-solid-clip,record90-paint-alpha-clip,record90-fill-alpha,record90-select-font-face,record90-self-intersecting,record90-text-transform,recordflip-whole-paint-alpha-clip-mask,recordflip-whole-fill-alpha,recordflip-whole-select-font-face,recordflip-whole-self-intersecting,recordflip-whole-text-transform,recordflip-paint-alpha-clip-mask,recordflip-fill-alpha,recordflip-select-font-face,recordflip-self-intersecting,recordflip-text-transform,record-neg-extents-unbounded,record-neg-extents-bounded,record-replay-extend-none,record-replay-extend-repeat,record-replay-extend-reflect,record-replay-extend-pad,recording-surface-over,recording-surface-source,recording-surface-extend-none,recording-surface-extend-repeat,recording-surface-extend-reflect,recording-surface-extend-pad,reflected-stroke,rel-path,rotated-clip,rounded-rectangle-stroke,scale-offset-image,scale-offset-similar,stroke-ctm-caps,stroke-clipped,stroke-image,select-font-face,shifted-operator,show-glyphs-advance,show-text-current-point,shape-general-convex,shape-sierpinski,simple-edge,smask,smask-fill,smask-image-mask,smask-mask,smask-paint,smask-stroke,smask-text,smp-glyph,spline-decomposition,stroke-pattern,subsurface,subsurface-scale,surface-pattern-operator,surface-pattern-scale-up,text-antialias-gray,text-antialias-subpixel,text-antialias-subpixel-rgb,text-antialias-subpixel-bgr,text-antialias-subpixel-vrgb,text-antialias-subpixel-vbgr,text-glyph-range,text-pattern,text-rotate,text-transform,text-unhinted-metrics,tighten-bounds,trap-clip,twin,twin-antialias-gray,twin-antialias-mixed,twin-antialias-none,twin-antialias-subpixel,unbounded-operator,unclosed-strokes,user-font,user-font-proxy,world-map,world-map-stroke,world-map-fill,xcomposite-projection,pthread-show-text,ft-show-glyphs-positioning,ft-show-glyphs-table,ft-text-vertical-layout-type1,ft-text-vertical-layout-type3
    - export CAIRO_TEST_IGNORE_xlib_window_rgb24=aliasing,arc-looping-dash,bug-spline,bug-51910,bug-extents,caps-joins-05,caps-joins-curve,clear-source,clip-disjoint,clip-stroke-unbounded,clip-operator,clip-shape,clip-stroke,clip-text,close-path-current-point,coverage-rectangles,coverage-intersecting-quads,coverage-intersecting-triangles,coverage-row-triangles,coverage-column-triangles,coverage-triangles,coverage-abutting,culled-glyphs,dash-caps-joins,dash-scale,degenerate-curve-to,degenerate-pen,degenerate-rel-curve-to,drunkard-tails,extended-blend-mask,extended-blend-alpha-mask,fallback,fill-and-stroke,fill-and-stroke-alpha,fill-and-stroke-alpha-add,fill-image,filter-bilinear-extents,font-matrix-translation,glyph-cache-pressure,halo,halo-transform,infinite-join,inverse-text,joins,joins-loop,joins-star,joins-retrace,large-twin-antialias-mixed,leaky-dashed-stroke,line-width-scale,line-width-tolerance,linear-gradient,linear-gradient-subset,long-dashed-lines,mask,mask-transformed-image,mask-transformed-similar,miter-precision,new-sub-path,operator-alpha-alpha,operator-clear,operator-source,overlapping-boxes,overlapping-glyphs,overlapping-dash-caps,partial-clip-text-bottom,partial-clip-text-left,partial-coverage-reference,partial-coverage-three-quarter-reference,path-stroke-twice,push-group,push-group-color,radial-outer-focus,record-select-font-face,record-self-intersecting,record-text-transform,record1414x-fill-alpha,record1414x-select-font-face,record1414x-self-intersecting,record1414x-text-transform,record2x-paint-alpha-clip-mask,record2x-fill-alpha,record2x-select-font-face,record2x-text-transform,record90-paint-alpha-solid-clip,record90-paint-alpha-clip,record90-fill-alpha,record90-select-font-face,record90-self-intersecting,record90-text-transform,recordflip-whole-paint-alpha-clip-mask,recordflip-whole-fill-alpha,recordflip-whole-select-font-face,recordflip-whole-self-intersecting,recordflip-whole-text-transform,recordflip-paint-alpha-clip-mask,recordflip-fill-alpha,recordflip-select-font-face,recordflip-self-intersecting,recordflip-text-transform,record-neg-extents-unbounded,record-neg-extents-bounded,record-replay-extend-none,record-replay-extend-repeat,record-replay-extend-reflect,record-replay-extend-pad,recording-surface-over,recording-surface-source,recording-surface-extend-none,recording-surface-extend-repeat,recording-surface-extend-reflect,recording-surface-extend-pad,reflected-stroke,rel-path,rotated-clip,rounded-rectangle-stroke,scale-offset-image,scale-offset-similar,stroke-ctm-caps,stroke-clipped,stroke-image,select-font-face,shifted-operator,show-glyphs-advance,show-text-current-point,shape-general-convex,simple-edge,smask,smask-fill,smask-image-mask,smask-mask,smask-paint,smask-stroke,smask-text,smp-glyph,spline-decomposition,stroke-pattern,subsurface,subsurface-scale,surface-pattern-operator,surface-pattern-scale-up,text-antialias-gray,text-antialias-subpixel,text-antialias-subpixel-rgb,text-antialias-subpixel-bgr,text-antialias-subpixel-vrgb,text-antialias-subpixel-vbgr,text-glyph-range,text-pattern,text-rotate,text-transform,text-unhinted-metrics,tighten-bounds,trap-clip,twin,twin-antialias-gray,twin-antialias-mixed,twin-antialias-none,twin-antialias-subpixel,unbounded-operator,unclosed-strokes,xcomposite-projection,pthread-show-text,ft-show-glyphs-positioning,ft-show-glyphs-table,ft-text-vertical-layout-type1,ft-text-vertical-layout-type3
    - export CAIRO_TEST_IGNORE_xlib_render_0_0_rgb24=caps-sub-paths,clear-source,clip-operator,clip-push-group,clip-text,clipped-group,coverage-intersecting-triangles,culled-glyphs,curve-to-as-line-to,extended-blend-alpha-mask,fallback,fill-and-stroke,fill-and-stroke-alpha,fill-and-stroke-alpha-add,finer-grained-fallbacks,halo-transform,horizontal-clip,infinite-join,large-twin-antialias-mixed,leaky-polygon,mask,operator-clear,operator-source,overlapping-glyphs,radial-outer-focus,record1414x-select-font-face,record1414x-text-transform,rectilinear-miter-limit,rectilinear-stroke,rel-path,show-glyphs-advance,smask,smask-text,subsurface,subsurface-scale,surface-pattern-operator,text-antialias-gray,text-antialias-subpixel,text-antialias-subpixel-rgb,text-antialias-subpixel-bgr,text-antialias-subpixel-vrgb,text-antialias-subpixel-vbgr,text-pattern,text-rotate,text-unhinted-metrics,twin-antialias-gray,twin-antialias-mixed,twin-antialias-none,twin-antialias-subpixel,unbounded-operator,pthread-show-text,ft-show-glyphs-positioning,ft-text-vertical-layout-type1,ft-text-vertical-layout-type3
    - export CAIRO_TEST_IGNORE_xlib_fallback_rgb24=arc-looping-dash,bug-51910,bug-seams,caps,caps-2,caps-1,caps-05,caps-joins-2,caps-joins-1,caps-joins-05,caps-joins-curve,caps-sub-paths,clear-source,clip-disjoint-quad,clip-image,clip-mixed-antialias,clip-push-group,clip-polygons,clip-text,close-path,close-path-current-point,copy-path,coverage-intersecting-quads,coverage-abutting,culled-glyphs,dash-caps-joins,dash-infinite-loop,dash-scale,dash-zero-length,degenerate-curve-to,degenerate-pen,degenerate-rel-curve-to,extended-blend-alpha-mask,fallback,filter-bilinear-extents,finer-grained-fallbacks,font-matrix-translation,glyph-cache-pressure,halo-transform,infinite-join,inverse-text,joins,large-twin-antialias-mixed,leaky-dashed-stroke,leaky-polygon,line-width-scale,line-width-tolerance,long-dashed-lines,mask-transformed-image,mask-transformed-similar,operator-alpha-alpha,over-above-source,over-around-source,over-between-source,overlapping-glyphs,partial-clip-text-bottom,partial-clip-text-left,partial-coverage-reference,partial-coverage-three-quarter-reference,path-stroke-twice,push-group-color,record1414x-select-font-face,record1414x-text-transform,recording-surface-over,recording-surface-extend-none,rectilinear-miter-limit,reflected-stroke,stroke-ctm-caps,select-font-face,self-copy,shifted-operator,show-glyphs-advance,show-text-current-point,smask,smask-image-mask,smask-mask,smask-paint,smask-text,smp-glyph,subsurface,subsurface-scale,surface-pattern-scale-down-extend-none,surface-pattern-scale-up,text-antialias-gray,text-antialias-subpixel,text-antialias-subpixel-rgb,text-antialias-subpixel-bgr,text-antialias-subpixel-vrgb,text-antialias-subpixel-vbgr,text-glyph-range,text-pattern,text-rotate,text-transform,text-unhinted-metrics,transforms,twin,twin-antialias-gray,twin-antialias-mixed,twin-antialias-none,twin-antialias-subpixel,unclosed-strokes,xcomposite-projection,pthread-show-text,pthread-similar,ft-show-glyphs-positioning,ft-show-glyphs-table,ft-text-vertical-layout-type1,ft-text-vertical-layout-type3
    - export CAIRO_BOILERPLATE_OPEN_NO_DAEMON=1
    - export CAIRO_BOILERPLATE_DO_NOT_CRASH_ON_ANY2PPM_ERROR=1
    - export ANY2PPM="timeout 3m ./any2ppm"
    - ulimit -S -s 131072
    - xvfb-run make check V=1 VERBOSE=1
  artifacts:
    when: 'always'
    expire_in: "7 days"
    paths:
      - config.log
      - test/*.log
      - test/pdiff/*.log
      - test/output
    exclude:
      - "test/**/*.cs"
      - "test/**/*.trace"

fedora meson build:
  extends:
    - '.fdo.distribution-image@fedora'
    - '.ccache_setup'
  stage: 'test'
  variables:
    MESON_ARGS: >
      ${DEFAULT_MESON_ARGS}
      -Dgl-backend=gl
  script:
    - meson builddir ${MESON_ARGS}
    - ninja -C builddir
    # - ninja -C builddir test
    - ninja -C builddir install
  artifacts:
    expire_in: "7 days"
    when: "always"
    paths:
      - 'builddir/meson-logs/'

# Based on https://gitlab.freedesktop.org/gstreamer/gst-ci/-/blob/master/gitlab/ci_template.yml
.build meson windows:
  image: $WINDOWS_IMAGE
  tags:
    - 'docker'
    - 'windows'
    - '1809'
  timeout: '30min'
  variables:
    MESON_ARGS: >
      ${DEFAULT_MESON_ARGS}
      -Dfontconfig=enabled
      -Dfreetype=enabled
      -Dglib=enabled
      -Dzlib=enabled
  before_script:
    # Make sure meson is up to date, so we don't need to rebuild the image with each release
    - pip3 install -U meson
  script:
    # Make sure powershell exists on errors
    # https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_preference_variables?view=powershell-6
    - $ErrorActionPreference = "Stop"

    # Copy GLib from existing subproject cache to avoid downloading it
    - cd $env:CI_PROJECT_DIR
    - cp -r C:/subprojects/glib subprojects/

    # For some reason, options are separated by newline instead of space, so we
    # have to replace them first.
    - $env:MESON_ARGS = $env:MESON_ARGS.replace("`n"," ")
    
    # Gitlab executes PowerShell in docker, but VsDevCmd.bat is a batch script.
    # Environment variables substitutions is done by PowerShell before calling
    # cmd.exe, that's why we use $env:FOO instead of %FOO%
    - cmd.exe /C "C:\BuildTools\Common7\Tools\VsDevCmd.bat -host_arch=amd64 -arch=$env:ARCH &&
        meson build $env:MESON_ARGS &&
        ninja -C build"

meson vs2017 amd64:
  extends: '.build meson windows'
  variables:
    ARCH: 'amd64'

meson vs2017 x86:
  extends: '.build meson windows'
  variables:
    ARCH: 'x86'

meson android arm64 fedora:
  # See https://gitlab.freedesktop.org/gstreamer/gst-ci/container_registry/164 for current images
  image: 'registry.freedesktop.org/gstreamer/gst-ci/amd64/android-fedora:2020-10-22.0-master'
  artifacts:
    name: "${CI_JOB_NAME}_${CI_COMMIT_SHA}"
    expire_in: '5 days'
    when: 'always'
    paths:
      - "build/meson-logs/*.txt"
  before_script:
    - dnf install -y python3-pip gcc ninja-build gperf
    - pip3 install --user meson
  script:
    - export PATH="$HOME/.local/bin:$PATH"
    - |
      cat > android-cross-file.txt <<EOF
      [constants]
      ndk_path    = '/android/ndk'
      toolchain   = ndk_path + '/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android'
      api         = '28'

      [host_machine]
      system      = 'android'
      cpu_family  = 'aarch64'
      cpu         = 'aarch64'
      endian      = 'little'

      [properties]
      sys_root        = ndk_path + '/sysroot'
      c_link_args     = ['-fuse-ld=gold']
      cpp_link_args   = ['-fuse-ld=gold']

      [binaries]
      c           = toolchain + api + '-clang'
      cpp         = toolchain + api + '-clang++'
      ar          = toolchain + '-ar'
      strip       = toolchain + '-strip'
      EOF
    - meson setup --cross-file android-cross-file.txt build
    - meson compile --verbose -C build

meson macOS:
  tags:
    - gst-macos-11.1
  artifacts:
    when: 'always'
    expire_in: "7 days"
    paths:
      - build/meson-logs/*.txt
      - build/meson-private/*.pc
      - build/test/*.log
      - build/test/pdiff/*.log
      - build/test/output
    exclude:
      - "build/test/**/*.cs"
      - "build/test/**/*.trace"
  before_script:
    # Install the DejaVu fonts
    - curl -LO https://downloads.sourceforge.net/dejavu/dejavu-fonts-ttf-2.37.zip
    - unzip dejavu-fonts-ttf-2.37.zip
    - cp dejavu-fonts-ttf-2.37/ttf/*.ttf /Library/Fonts
    # Update pip
    - pip3 install --upgrade pip
    # Make sure meson is up to date
    - pip3 install -U meson
    # Need to install certificates for Python
    - pip3 install --upgrade certifi
    # Anther way to install certificates
    - open /Applications/Python\ 3.8/Install\ Certificates.command
    # Get ninja
    - pip3 install -U ninja
  script:
    - CERT_PATH=$(python3 -m certifi) && export SSL_CERT_FILE=${CERT_PATH} && export REQUESTS_CA_BUNDLE=${CERT_PATH}
    # pixman region-test fails to link on macOS
    - meson setup -Dpixman:tests=disabled build
    - meson compile --verbose -C build
    # Test cairo-quartz. Other backends should be covered by other jobs
    - export CAIRO_TEST_IGNORE_quartz_argb32=bug-361,bug-431,bug-image-compositor,clip-operator,coverage-rhombus,culled-glyphs,extended-blend-alpha,extended-blend-mask,extended-blend-alpha-mask,extended-blend-solid-alpha,fallback,negative-stride-image,operator-www,radial-gradient,radial-gradient-mask,radial-gradient-source,radial-gradient-mask-source,record-paint-alpha-clip-mask,record-fill-alpha,record-select-font-face,record-text-transform,record1414x-select-font-face,record1414x-text-transform,record2x-paint-alpha-clip-mask,record2x-select-font-face,record2x-text-transform,record90-fill-alpha,record90-select-font-face,record90-text-transform,recordflip-whole-select-font-face,recordflip-whole-text-transform,recordflip-select-font-face,recordflip-text-transform,record-neg-extents-bounded,record-mesh,record-replay-extend-repeat,record-replay-extend-reflect,record-replay-extend-pad,simple-edge,subsurface,subsurface-outside-target,subsurface-scale,surface-pattern,text-antialias-subpixel,text-antialias-subpixel-rgb,text-antialias-subpixel-bgr,text-antialias-subpixel-vrgb,text-antialias-subpixel-vbgr,text-unhinted-metrics,user-font-proxy,ft-show-glyphs-positioning,ft-text-vertical-layout-type1,ft-text-vertical-layout-type3
    - export CAIRO_TEST_IGNORE_quartz_rgb24=bug-361,bug-431,bug-448,bug-image-compositor,coverage-rhombus,culled-glyphs,extended-blend,extended-blend-alpha,extended-blend-mask,extended-blend-alpha-mask,extended-blend-solid,extended-blend-solid-alpha,negative-stride-image,operator-www,radial-gradient,radial-gradient-mask,radial-gradient-source,radial-gradient-mask-source,record-paint-alpha-clip-mask,record-fill-alpha,record-select-font-face,record-text-transform,record1414x-select-font-face,record1414x-text-transform,record2x-paint-alpha-clip-mask,record2x-select-font-face,record2x-text-transform,record90-fill-alpha,record90-select-font-face,record90-text-transform,recordflip-whole-select-font-face,recordflip-whole-text-transform,recordflip-select-font-face,recordflip-text-transform,record-neg-extents-unbounded,record-neg-extents-bounded,record-mesh,record-replay-extend-repeat,record-replay-extend-reflect,record-replay-extend-pad,shifted-operator,simple-edge,subsurface,subsurface-scale,text-antialias-subpixel,text-antialias-subpixel-rgb,text-antialias-subpixel-bgr,text-antialias-subpixel-vrgb,text-antialias-subpixel-vbgr,text-unhinted-metrics,user-font-proxy,ft-show-glyphs-positioning,ft-text-vertical-layout-type1,ft-text-vertical-layout-type3
    - export CAIRO_TEST_TARGET=quartz
    - (cd build/test && srcdir=../../test ./cairo-test-suite)