gitlab CI: hook up the meson build
[platform/upstream/libevdev.git] / .gitlab-ci.yml
1 # vim: set expandtab shiftwidth=2 tabstop=8 textwidth=0:
2 #
3 # THIS FILE IS GENERATED, DO NOT EDIT
4
5 .templates_sha: &template_sha 01f2a6a8ab5cd31000c1c14a1acfff68ea98b59e # see https://docs.gitlab.com/ee/ci/yaml/#includefile
6
7 include:
8   # Alpine container builder template
9   - project: 'wayland/ci-templates'
10     file: '/templates/alpine.yml'
11   # Arch container builder template
12   - project: 'wayland/ci-templates'
13     ref: *template_sha
14     file: '/templates/arch.yml'
15   # Fedora container builder template
16   - project: 'wayland/ci-templates'
17     ref: *template_sha
18     file: '/templates/fedora.yml'
19   # Ubuntu container builder template
20   - project: 'wayland/ci-templates'
21     ref: *template_sha
22     file: '/templates/ubuntu.yml'
23   # Debian container builder template
24   - project: 'wayland/ci-templates'
25     ref: *template_sha
26     file: '/templates/debian.yml'
27   # CentOS container builder template
28   - project: 'wayland/ci-templates'
29     ref: *template_sha
30     file: '/templates/centos.yml'
31
32 stages:
33   - prep             # rebuild the container images if there is a change
34   - build            # for actually building and testing things in a container
35   - VM               # for running the test suite in a VM
36   - autotools        # distribution builds with autotools
37   - meson            # distribution builds with meson
38   - deploy           # trigger wayland's website generation
39   - container_clean  # clean up unused container images
40
41 variables:
42   ###############################################################################
43   # This is the list of packages required to build libevdev with the default    #
44   # configuration.                                                              #
45   #                                                                             #
46   # Run dnf install/apt-get install/.. with the list of packages for your       #
47   # distribution                                                                #
48   ###############################################################################
49   FEDORA_RPMS: 'git gcc gcc-c++ meson automake autoconf libtool make pkgconfig  python3 check-devel valgrind binutils doxygen xz'
50   CENTOS_RPMS: 'git gcc gcc-c++       automake autoconf libtool make pkgconfig  python3 check-devel valgrind binutils xz'
51   UBUNTU_DEBS: 'git gcc g++     meson automake autoconf libtool make pkg-config python3 check       valgrind binutils doxygen xz-utils'
52   DEBIAN_DEBS: $UBUNTU_DEBS
53   ARCH_PKGS:   'git gcc         meson automake autoconf libtool make pkgconfig  python3 check       valgrind binutils doxygen'
54   ALPINE_PKGS: 'git gcc g++     meson automake autoconf libtool make pkgconfig  python3 check-dev   valgrind binutils doxygen xz linux-headers'
55   ############################ end of package lists #############################
56   # these tags should be updated each time the list of packages is updated
57   # changing these will force rebuilding the associated image
58   # Note: these tags have no meaning and are not tied to a particular
59   # libevdev version
60   FEDORA_TAG: '2020-02-17.1'
61   CENTOS_TAG: '2020-02-17.1'
62   DEBIAN_TAG: '2020-02-17.1'
63   UBUNTU_TAG: '2020-02-17.1'
64   ARCH_TAG:   '2020-02-17.1'
65   ALPINE_TAG: '2020-02-17.1'
66
67   UPSTREAM_REPO: libevdev/libevdev
68   BUILDAH_IMAGE: $CI_REGISTRY/wayland/ci-templates/buildah:latest
69   FEDORA_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/fedora/$FEDORA_VERSION:$FEDORA_TAG
70   CENTOS_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/centos/$CENTOS_VERSION:$CENTOS_TAG
71   UBUNTU_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/ubuntu/$UBUNTU_VERSION:$UBUNTU_TAG
72   DEBIAN_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/debian/$DEBIAN_VERSION:$DEBIAN_TAG
73   ARCH_CONTAINER_IMAGE:   $CI_REGISTRY_IMAGE/archlinux/rolling:$ARCH_TAG
74   ALPINE_CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/alpine/latest:$ALPINE_TAG
75
76   LIBEVDEV_SKIP_ROOT_TESTS: 1
77   GIT_DEPTH: 1
78
79 .default_artifacts:
80   artifacts:
81     paths:
82       - _build/test/test-suite.log
83       - builddir/meson-logs/testlog-*.txt
84     expire_in: 1 week
85     when: on_failure
86     reports:
87       junit: junit-*.xml
88
89 .autotools_build:
90   extends:
91     - .default_artifacts
92   script:
93     - mkdir _build
94     - pushd _build > /dev/null
95     - ../autogen.sh --disable-silent-rules $CONFIGURE_FLAGS
96     - make
97     - make check
98     - if ! [[ -z "$MAKE_ARGS" ]]; then make $MAKE_ARGS; fi
99     - popd > /dev/null
100
101 .meson_build:
102   extends:
103     - .default_artifacts
104   script:
105     - meson builddir $MESON_ARGS
106     - ninja -C builddir $NINJA_ARGS
107
108 #################################################################
109 #                                                               #
110 #                          prep stage                           #
111 #                                                               #
112 #################################################################
113
114 # Re-generate the CI script and make sure it's the one currently checked in
115 # If this job fails, re-generate the gitlab-ci.yml script, see
116 # $SRCDIR/.gitlab-ci/generate-gitlab-ci.py
117 #
118 check-ci-script:
119   image: golang:alpine
120   stage: prep
121   before_script:
122     - apk add python3 git
123     - pip3 install --user jinja2
124   script:
125     - python3 ./.gitlab-ci/generate-gitlab-ci.py
126     - git diff --exit-code && exit 0 || true
127     - echo "Committed gitlab-ci.yml differs from generated gitlab-ci.yml. Please verify"
128     - exit 1
129
130 check-commit:
131   image: golang:alpine
132   stage: prep
133   before_script:
134     - apk add python3 git
135   script:
136     - pip3 install GitPython
137     - pip3 install pytest
138     - |
139       pytest --junitxml=results.xml \
140              --tb=line \
141              --assert=plain \
142              ./.gitlab-ci/check-commit.py
143   except:
144     - master@libevdev/libevdev
145   variables:
146     GIT_DEPTH: 100
147   artifacts:
148     reports:
149       junit: results.xml
150
151 .pull_upstream_or_rebuild:
152   before_script:
153     # log in to the registry
154     - podman login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
155
156     # get the full container image name (DISTRIB_VERSION still has indirections)
157     - IMAGE=$(eval echo "$DISTRIB_FLAVOR/$DISTRIB_VERSION:$TAG")
158
159     - |
160       # force rebuild if schedule, reuse otherwise
161       if [[ $CI_PIPELINE_SOURCE != "schedule" ]] ;
162       then
163         # pull the latest upstream image if it exists
164         skopeo copy docker://$CI_REGISTRY/$UPSTREAM_REPO/$IMAGE \
165                     docker://$CI_REGISTRY_IMAGE/$IMAGE && exit 0 || true ;
166
167         # check if our image is already in the current registry
168         skopeo inspect docker://$CI_REGISTRY_IMAGE/$IMAGE > /dev/null && exit 0 || true ;
169       fi
170
171
172 ### fedora 30
173 fedora:30@container-prep:
174   extends:
175     - .fedora@container-build
176     - .pull_upstream_or_rebuild
177   stage: prep
178   variables:
179     GIT_STRATEGY: none
180     FEDORA_VERSION: '30'
181     DISTRIB_FLAVOR: fedora
182     DISTRIB_VERSION: $FEDORA_VERSION
183     TAG: $FEDORA_TAG
184
185
186 ### fedora 31
187 fedora:31@container-prep:
188   extends:
189     - .fedora@container-build
190     - .pull_upstream_or_rebuild
191   stage: prep
192   variables:
193     GIT_STRATEGY: none
194     FEDORA_VERSION: '31'
195     DISTRIB_FLAVOR: fedora
196     DISTRIB_VERSION: $FEDORA_VERSION
197     TAG: $FEDORA_TAG
198
199
200 ### ubuntu 19.10
201 ubuntu:19.10@container-prep:
202   extends:
203     - .ubuntu@container-build
204     - .pull_upstream_or_rebuild
205   stage: prep
206   variables:
207     GIT_STRATEGY: none
208     UBUNTU_VERSION: '19.10'
209     DISTRIB_FLAVOR: ubuntu
210     DISTRIB_VERSION: $UBUNTU_VERSION
211     TAG: $UBUNTU_TAG
212
213
214 ### ubuntu 19.04
215 ubuntu:19.04@container-prep:
216   extends:
217     - .ubuntu@container-build
218     - .pull_upstream_or_rebuild
219   stage: prep
220   variables:
221     GIT_STRATEGY: none
222     UBUNTU_VERSION: '19.04'
223     DISTRIB_FLAVOR: ubuntu
224     DISTRIB_VERSION: $UBUNTU_VERSION
225     TAG: $UBUNTU_TAG
226
227
228 ### debian stable
229 debian:stable@container-prep:
230   extends:
231     - .debian@container-build
232     - .pull_upstream_or_rebuild
233   stage: prep
234   variables:
235     GIT_STRATEGY: none
236     DEBIAN_VERSION: 'stable'
237     DISTRIB_FLAVOR: debian
238     DISTRIB_VERSION: $DEBIAN_VERSION
239     TAG: $DEBIAN_TAG
240
241
242 ### debian sid
243 debian:sid@container-prep:
244   extends:
245     - .debian@container-build
246     - .pull_upstream_or_rebuild
247   stage: prep
248   variables:
249     GIT_STRATEGY: none
250     DEBIAN_VERSION: 'sid'
251     DISTRIB_FLAVOR: debian
252     DISTRIB_VERSION: $DEBIAN_VERSION
253     TAG: $DEBIAN_TAG
254
255
256 ### centos 7
257 centos:7@container-prep:
258   extends:
259     - .centos@container-build
260     - .pull_upstream_or_rebuild
261   stage: prep
262   variables:
263     GIT_STRATEGY: none
264     CENTOS_VERSION: '7'
265     DISTRIB_FLAVOR: centos
266     DISTRIB_VERSION: $CENTOS_VERSION
267     TAG: $CENTOS_TAG
268
269
270 ### centos 8
271 centos:8@container-prep:
272   extends:
273     - .centos@container-build
274     - .pull_upstream_or_rebuild
275   stage: prep
276   variables:
277     GIT_STRATEGY: none
278     CENTOS_VERSION: '8'
279     DISTRIB_FLAVOR: centos
280     DISTRIB_VERSION: $CENTOS_VERSION
281     TAG: $CENTOS_TAG
282
283
284 ### arch rolling
285 arch:rolling@container-prep:
286   extends:
287     - .arch@container-build
288     - .pull_upstream_or_rebuild
289   stage: prep
290   variables:
291     GIT_STRATEGY: none
292     ARCH_VERSION: 'rolling'
293     DISTRIB_FLAVOR: archlinux
294     DISTRIB_VERSION: $ARCH_VERSION
295     TAG: $ARCH_TAG
296
297
298 ### alpine latest
299 alpine:latest@container-prep:
300   extends:
301     - .alpine@container-build
302     - .pull_upstream_or_rebuild
303   stage: prep
304   variables:
305     GIT_STRATEGY: none
306     ALPINE_VERSION: 'latest'
307     DISTRIB_FLAVOR: alpine
308     DISTRIB_VERSION: $ALPINE_VERSION
309     TAG: $ALPINE_TAG
310
311
312 #################################################################
313 #                                                               #
314 #                   container clean stage                       #
315 #                 run during the clean stage                    #
316 #                                                               #
317 #################################################################
318
319 #
320 # This stage will look for the container images we currently have in
321 # the registry and will remove any that are not tagged with the provided
322 # $container_image:$tag
323 #
324 .container-clean:
325   stage: container_clean
326   image: $BUILDAH_IMAGE
327   script:
328     # get the full container image name (CURRENT_CONTAINER_IMAGE still has indirections)
329     - CONTAINER_IMAGE=$(eval echo "$CURRENT_CONTAINER_IMAGE")
330     - GITLAB=$(echo $CI_PROJECT_URL | cut -f3 -d/)
331     - REPOSITORY=$(echo $CONTAINER_IMAGE | cut -f2- -d/ | cut -f1 -d:)
332     - IMAGE_PATH=$(echo $CONTAINER_IMAGE | cut -f1 -d:)
333     - LATEST_TAG=$(echo $CONTAINER_IMAGE | cut -f2 -d:)
334
335     # log in to the registry (read only)
336     - podman login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
337
338     # get the r/w token from the settings to access the registry
339     #
340     # each developer needs to register a secret variable that contains
341     # a personal token with api access. The token
342     # - must be named PERSONAL_TOKEN_$USER (for example PERSONAL_TOKEN_bentiss)
343     # - must be registered in the CI/CD Variables section as type file
344     # - value must be a netrc file as a single-line string:
345     #   default login <user> password <token value>
346     #   e.g. "default login bentiss password 1235abcde"
347     - tokenname="PERSONAL_TOKEN_$GITLAB_USER_LOGIN"
348     - netrcfile=$(eval echo "\$$tokenname")
349     - if [[ ! -f "$netrcfile" ]]; then
350          echo "No netrc file found or token is missing, skipping job" && false;
351       fi
352
353     # request a token for the registry API
354     - REGISTRY_TOKEN=$(curl https://$GITLAB/jwt/auth --get
355                              --silent --show-error
356                              -d client_id=docker
357                              -d offline_token=true
358                              -d service=container_registry
359                              -d "scope=repository:$REPOSITORY:pull,*"
360                              --fail
361                              --netrc-file "$netrcfile"
362                              | sed -r 's/(\{"token":"|"\})//g')
363
364     # get the digest of the latest image
365     - LATEST_MANIFEST=$(skopeo inspect docker://$IMAGE_PATH:$LATEST_TAG | jq -r '.Digest')
366
367     # get the list of tags
368     - TAGS=$(skopeo inspect docker://$IMAGE_PATH:$LATEST_TAG | jq -r '.RepoTags[]')
369     # FIXME: is the above command working properly? If not, use below:
370     # - TAGS=$(curl -X GET -H "accept:application/vnd.docker.distribution.manifest.v2+json"
371     #                      -H "authorization:Bearer $REGISTRY_TOKEN"
372     #                      https://$CI_REGISTRY/v2/$REPOSITORY/tags/list | jq -r '.tags[]')
373
374     # iterate over the tags
375     - for tag in $TAGS;
376       do
377         MANIFEST=$(skopeo inspect docker://$IMAGE_PATH:$tag | jq -r '.Digest');
378         if test x"$MANIFEST" != x"$LATEST_MANIFEST";
379           then
380             echo removing $tag as $MANIFEST;
381             curl https://$CI_REGISTRY/v2/$REPOSITORY/manifests/$MANIFEST --silent
382                  -H "accept:application/vnd.docker.distribution.manifest.v2+json"
383                  -H "authorization:Bearer $REGISTRY_TOKEN"
384                  --fail --show-error -X DELETE || true
385           ;fi
386       ;done
387   dependencies: []
388   allow_failure: true
389   only:
390     - schedules
391
392
393 ### fedora 30
394 fedora:30@container-clean:
395   extends: .container-clean
396   variables:
397     GIT_STRATEGY: none
398     FEDORA_VERSION: '30'
399     CURRENT_CONTAINER_IMAGE: $FEDORA_CONTAINER_IMAGE
400
401
402 ### fedora 31
403 fedora:31@container-clean:
404   extends: .container-clean
405   variables:
406     GIT_STRATEGY: none
407     FEDORA_VERSION: '31'
408     CURRENT_CONTAINER_IMAGE: $FEDORA_CONTAINER_IMAGE
409
410
411 ### ubuntu 19.10
412 ubuntu:19.10@container-clean:
413   extends: .container-clean
414   variables:
415     GIT_STRATEGY: none
416     UBUNTU_VERSION: '19.10'
417     CURRENT_CONTAINER_IMAGE: $UBUNTU_CONTAINER_IMAGE
418
419
420 ### ubuntu 19.04
421 ubuntu:19.04@container-clean:
422   extends: .container-clean
423   variables:
424     GIT_STRATEGY: none
425     UBUNTU_VERSION: '19.04'
426     CURRENT_CONTAINER_IMAGE: $UBUNTU_CONTAINER_IMAGE
427
428
429 ### debian stable
430 debian:stable@container-clean:
431   extends: .container-clean
432   variables:
433     GIT_STRATEGY: none
434     DEBIAN_VERSION: 'stable'
435     CURRENT_CONTAINER_IMAGE: $DEBIAN_CONTAINER_IMAGE
436
437
438 ### debian sid
439 debian:sid@container-clean:
440   extends: .container-clean
441   variables:
442     GIT_STRATEGY: none
443     DEBIAN_VERSION: 'sid'
444     CURRENT_CONTAINER_IMAGE: $DEBIAN_CONTAINER_IMAGE
445
446
447 ### centos 7
448 centos:7@container-clean:
449   extends: .container-clean
450   variables:
451     GIT_STRATEGY: none
452     CENTOS_VERSION: '7'
453     CURRENT_CONTAINER_IMAGE: $CENTOS_CONTAINER_IMAGE
454
455
456 ### centos 8
457 centos:8@container-clean:
458   extends: .container-clean
459   variables:
460     GIT_STRATEGY: none
461     CENTOS_VERSION: '8'
462     CURRENT_CONTAINER_IMAGE: $CENTOS_CONTAINER_IMAGE
463
464
465 ### arch rolling
466 arch:rolling@container-clean:
467   extends: .container-clean
468   variables:
469     GIT_STRATEGY: none
470     ARCH_VERSION: 'rolling'
471     CURRENT_CONTAINER_IMAGE: $ARCH_CONTAINER_IMAGE
472
473
474 ### alpine latest
475 alpine:latest@container-clean:
476   extends: .container-clean
477   variables:
478     GIT_STRATEGY: none
479     ALPINE_VERSION: 'latest'
480     CURRENT_CONTAINER_IMAGE: $ALPINE_CONTAINER_IMAGE
481
482
483 #################################################################
484 #                                                               #
485 #                       build stage                             #
486 #                                                               #
487 #################################################################
488
489 .autotools-build@template:
490   extends:
491     - .autotools_build
492   stage: build
493   dependencies: []
494   variables:
495     MAKE_ARGS: "distcheck"
496
497 .meson-build@template:
498   extends:
499     - .meson_build
500   stage: build
501   dependencies: []
502   variables:
503     NINJA_ARGS: "dist"
504
505
506 fedora:30@autotools-build:
507   extends: .autotools-build@template
508   stage: autotools
509   image: $FEDORA_CONTAINER_IMAGE
510   variables:
511     FEDORA_VERSION: '30'
512   needs: ['fedora:30@container-prep']
513
514 fedora:30@meson-build:
515   extends: .meson-build@template
516   stage: meson
517   image: $FEDORA_CONTAINER_IMAGE
518   variables:
519     FEDORA_VERSION: '30'
520   needs: ['fedora:30@container-prep']
521
522
523 fedora:31@autotools-build:
524   extends: .autotools-build@template
525   stage: autotools
526   image: $FEDORA_CONTAINER_IMAGE
527   variables:
528     FEDORA_VERSION: '31'
529   needs: ['fedora:31@container-prep']
530
531 fedora:31@meson-build:
532   extends: .meson-build@template
533   stage: meson
534   image: $FEDORA_CONTAINER_IMAGE
535   variables:
536     FEDORA_VERSION: '31'
537   needs: ['fedora:31@container-prep']
538
539
540 ubuntu:19.10@autotools-build:
541   extends: .autotools-build@template
542   stage: autotools
543   image: $UBUNTU_CONTAINER_IMAGE
544   variables:
545     UBUNTU_VERSION: '19.10'
546   needs: ['ubuntu:19.10@container-prep']
547
548 ubuntu:19.10@meson-build:
549   extends: .meson-build@template
550   stage: meson
551   image: $UBUNTU_CONTAINER_IMAGE
552   variables:
553     UBUNTU_VERSION: '19.10'
554   needs: ['ubuntu:19.10@container-prep']
555
556
557 ubuntu:19.04@autotools-build:
558   extends: .autotools-build@template
559   stage: autotools
560   image: $UBUNTU_CONTAINER_IMAGE
561   variables:
562     UBUNTU_VERSION: '19.04'
563   needs: ['ubuntu:19.04@container-prep']
564
565 ubuntu:19.04@meson-build:
566   extends: .meson-build@template
567   stage: meson
568   image: $UBUNTU_CONTAINER_IMAGE
569   variables:
570     UBUNTU_VERSION: '19.04'
571   needs: ['ubuntu:19.04@container-prep']
572
573
574 debian:stable@autotools-build:
575   extends: .autotools-build@template
576   stage: autotools
577   image: $DEBIAN_CONTAINER_IMAGE
578   variables:
579     DEBIAN_VERSION: 'stable'
580   needs: ['debian:stable@container-prep']
581
582 debian:stable@meson-build:
583   extends: .meson-build@template
584   stage: meson
585   image: $DEBIAN_CONTAINER_IMAGE
586   variables:
587     DEBIAN_VERSION: 'stable'
588   needs: ['debian:stable@container-prep']
589
590
591 debian:sid@autotools-build:
592   extends: .autotools-build@template
593   stage: autotools
594   image: $DEBIAN_CONTAINER_IMAGE
595   variables:
596     DEBIAN_VERSION: 'sid'
597   needs: ['debian:sid@container-prep']
598
599 debian:sid@meson-build:
600   extends: .meson-build@template
601   stage: meson
602   image: $DEBIAN_CONTAINER_IMAGE
603   variables:
604     DEBIAN_VERSION: 'sid'
605   needs: ['debian:sid@container-prep']
606
607
608 centos:7@autotools-build:
609   extends: .autotools-build@template
610   stage: autotools
611   image: $CENTOS_CONTAINER_IMAGE
612   variables:
613     CENTOS_VERSION: '7'
614     MAKE_ARGS: ''  # disable distcheck, requires doxygen
615   needs: ['centos:7@container-prep']
616
617
618
619 centos:8@autotools-build:
620   extends: .autotools-build@template
621   stage: autotools
622   image: $CENTOS_CONTAINER_IMAGE
623   variables:
624     CENTOS_VERSION: '8'
625     MAKE_ARGS: ''  # disable distcheck, requires doxygen
626   needs: ['centos:8@container-prep']
627
628
629
630 arch:rolling@autotools-build:
631   extends: .autotools-build@template
632   stage: autotools
633   image: $ARCH_CONTAINER_IMAGE
634   variables:
635     ARCH_VERSION: 'rolling'
636   needs: ['arch:rolling@container-prep']
637
638 arch:rolling@meson-build:
639   extends: .meson-build@template
640   stage: meson
641   image: $ARCH_CONTAINER_IMAGE
642   variables:
643     ARCH_VERSION: 'rolling'
644   needs: ['arch:rolling@container-prep']
645
646
647 alpine:latest@autotools-build:
648   extends: .autotools-build@template
649   stage: autotools
650   image: $ALPINE_CONTAINER_IMAGE
651   variables:
652     ALPINE_VERSION: 'latest'
653   needs: ['alpine:latest@container-prep']
654
655 alpine:latest@meson-build:
656   extends: .meson-build@template
657   stage: meson
658   image: $ALPINE_CONTAINER_IMAGE
659   variables:
660     ALPINE_VERSION: 'latest'
661   needs: ['alpine:latest@container-prep']
662
663
664 # Build argument tests
665 #
666 # We only run the build option combinations on one image
667 # because they're supposed to fail equally on all
668 .fedora-custom-build@template:
669   extends: .autotools-build@template
670   stage: build
671   image: $FEDORA_CONTAINER_IMAGE
672   variables:
673     FEDORA_VERSION: 31
674   needs: ['fedora:31@container-prep']
675
676 fedora:31@no-valgrind:
677   extends: .fedora-custom-build@template
678   before_script:
679     - dnf remove -y valgrind
680
681 fedora:31@no-check:
682   extends: .fedora-custom-build@template
683   before_script:
684     - dnf remove -y check check-devel
685
686 fedora:31@no-doxygen:
687   extends: .fedora-custom-build@template
688   before_script:
689     - dnf remove -y doxygen
690   variables:
691     MAKE_ARGS: ''  # disable distcheck, requires doxygen
692
693 # doxygen is required for distcheck
694 fedora:31@no-doxygen-check-valgrind:
695   extends: .fedora-custom-build@template
696   before_script:
697     - dnf remove -y doxygen valgrind check check-devel
698   variables:
699     MAKE_ARGS: ''  # disable distcheck, requires doxygen
700
701 fedora:31@no-nm:
702   extends: .fedora-custom-build@template
703   before_script:
704     - mv /usr/bin/nm /usr/bin/nm.moved
705
706 fedora:31@enable-gcov:
707   extends: .fedora-custom-build@template
708   variables:
709     CONFIGURE_FLAGS: "--enable-gcov"