ui/dbus: filter out pending messages when scanout
[qemu/ar7.git] / .gitlab-ci.d / buildtest.yml
blobc7d92fc30182ffceaeb3d01cad533e50ee8ba83d
1 include:
2   - local: '/.gitlab-ci.d/buildtest-template.yml'
4 build-system-alpine:
5   extends:
6     - .native_build_job_template
7     - .native_build_artifact_template
8   needs:
9     - job: amd64-alpine-container
10   variables:
11     IMAGE: alpine
12     TARGETS: avr-softmmu loongarch64-softmmu mips64-softmmu mipsel-softmmu
13     MAKE_CHECK_ARGS: check-build
14     CONFIGURE_ARGS: --enable-docs --enable-trace-backends=log,simple,syslog
16 check-system-alpine:
17   extends: .native_test_job_template
18   needs:
19     - job: build-system-alpine
20       artifacts: true
21   variables:
22     IMAGE: alpine
23     MAKE_CHECK_ARGS: check-unit check-qtest
25 avocado-system-alpine:
26   extends: .avocado_test_job_template
27   needs:
28     - job: build-system-alpine
29       artifacts: true
30   variables:
31     IMAGE: alpine
32     MAKE_CHECK_ARGS: check-avocado
33     AVOCADO_TAGS: arch:avr arch:loongarch64 arch:mips64 arch:mipsel
35 build-system-ubuntu:
36   extends:
37     - .native_build_job_template
38     - .native_build_artifact_template
39   needs:
40     job: amd64-ubuntu2204-container
41   variables:
42     IMAGE: ubuntu2204
43     CONFIGURE_ARGS: --enable-docs
44     TARGETS: alpha-softmmu microblazeel-softmmu mips64el-softmmu
45     MAKE_CHECK_ARGS: check-build
47 check-system-ubuntu:
48   extends: .native_test_job_template
49   needs:
50     - job: build-system-ubuntu
51       artifacts: true
52   variables:
53     IMAGE: ubuntu2204
54     MAKE_CHECK_ARGS: check
56 avocado-system-ubuntu:
57   extends: .avocado_test_job_template
58   needs:
59     - job: build-system-ubuntu
60       artifacts: true
61   variables:
62     IMAGE: ubuntu2204
63     MAKE_CHECK_ARGS: check-avocado
64     AVOCADO_TAGS: arch:alpha arch:microblazeel arch:mips64el
66 build-system-debian:
67   extends:
68     - .native_build_job_template
69     - .native_build_artifact_template
70   needs:
71     job: amd64-debian-container
72   variables:
73     IMAGE: debian
74     CONFIGURE_ARGS: --with-coroutine=sigaltstack
75     TARGETS: arm-softmmu i386-softmmu riscv64-softmmu sh4eb-softmmu
76       sparc-softmmu xtensa-softmmu
77     MAKE_CHECK_ARGS: check-build
79 check-system-debian:
80   extends: .native_test_job_template
81   needs:
82     - job: build-system-debian
83       artifacts: true
84   variables:
85     IMAGE: debian
86     MAKE_CHECK_ARGS: check
88 avocado-system-debian:
89   extends: .avocado_test_job_template
90   needs:
91     - job: build-system-debian
92       artifacts: true
93   variables:
94     IMAGE: debian
95     MAKE_CHECK_ARGS: check-avocado
96     AVOCADO_TAGS: arch:arm arch:i386 arch:riscv64 arch:sh4 arch:sparc arch:xtensa
98 crash-test-debian:
99   extends: .native_test_job_template
100   needs:
101     - job: build-system-debian
102       artifacts: true
103   variables:
104     IMAGE: debian
105   script:
106     - cd build
107     - make NINJA=":" check-venv
108     - pyvenv/bin/python3 scripts/device-crash-test -q --tcg-only ./qemu-system-i386
110 build-system-fedora:
111   extends:
112     - .native_build_job_template
113     - .native_build_artifact_template
114   needs:
115     job: amd64-fedora-container
116   variables:
117     IMAGE: fedora
118     CONFIGURE_ARGS: --disable-gcrypt --enable-nettle --enable-docs
119     TARGETS: microblaze-softmmu mips-softmmu
120       xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
121     MAKE_CHECK_ARGS: check-build
123 check-system-fedora:
124   extends: .native_test_job_template
125   needs:
126     - job: build-system-fedora
127       artifacts: true
128   variables:
129     IMAGE: fedora
130     MAKE_CHECK_ARGS: check
132 avocado-system-fedora:
133   extends: .avocado_test_job_template
134   needs:
135     - job: build-system-fedora
136       artifacts: true
137   variables:
138     IMAGE: fedora
139     MAKE_CHECK_ARGS: check-avocado
140     AVOCADO_TAGS: arch:microblaze arch:mips arch:xtensa arch:m68k
141       arch:riscv32 arch:ppc arch:sparc64
143 crash-test-fedora:
144   extends: .native_test_job_template
145   needs:
146     - job: build-system-fedora
147       artifacts: true
148   variables:
149     IMAGE: fedora
150   script:
151     - cd build
152     - make NINJA=":" check-venv
153     - pyvenv/bin/python3 scripts/device-crash-test -q ./qemu-system-ppc
154     - pyvenv/bin/python3 scripts/device-crash-test -q ./qemu-system-riscv32
156 build-system-centos:
157   extends:
158     - .native_build_job_template
159     - .native_build_artifact_template
160   needs:
161     job: amd64-centos8-container
162   variables:
163     IMAGE: centos8
164     CONFIGURE_ARGS: --disable-nettle --enable-gcrypt --enable-vfio-user-server
165       --enable-modules --enable-trace-backends=dtrace --enable-docs
166     TARGETS: ppc64-softmmu or1k-softmmu s390x-softmmu
167       x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu
168     MAKE_CHECK_ARGS: check-build
170 # Previous QEMU release. Used for cross-version migration tests.
171 build-previous-qemu:
172   extends: .native_build_job_template
173   artifacts:
174     when: on_success
175     expire_in: 2 days
176     paths:
177       - build-previous
178     exclude:
179       - build-previous/**/*.p
180       - build-previous/**/*.a.p
181       - build-previous/**/*.fa.p
182       - build-previous/**/*.c.o
183       - build-previous/**/*.c.o.d
184       - build-previous/**/*.fa
185   needs:
186     job: amd64-opensuse-leap-container
187   variables:
188     IMAGE: opensuse-leap
189     TARGETS: x86_64-softmmu aarch64-softmmu
190   before_script:
191     - export QEMU_PREV_VERSION="$(sed 's/\([0-9.]*\)\.[0-9]*/v\1.0/' VERSION)"
192     - git remote add upstream https://gitlab.com/qemu-project/qemu
193     - git fetch upstream refs/tags/$QEMU_PREV_VERSION:refs/tags/$QEMU_PREV_VERSION
194     - git checkout $QEMU_PREV_VERSION
195   after_script:
196     - mv build build-previous
198 .migration-compat-common:
199   extends: .common_test_job_template
200   needs:
201     - job: build-previous-qemu
202     - job: build-system-opensuse
203   # The old QEMU could have bugs unrelated to migration that are
204   # already fixed in the current development branch, so this test
205   # might fail.
206   allow_failure: true
207   variables:
208     IMAGE: opensuse-leap
209     MAKE_CHECK_ARGS: check-build
210   script:
211     # Use the migration-tests from the older QEMU tree. This avoids
212     # testing an old QEMU against new features/tests that it is not
213     # compatible with.
214     - cd build-previous
215     # old to new
216     - QTEST_QEMU_BINARY_SRC=./qemu-system-${TARGET}
217           QTEST_QEMU_BINARY=../build/qemu-system-${TARGET} ./tests/qtest/migration-test
218     # new to old
219     - QTEST_QEMU_BINARY_DST=./qemu-system-${TARGET}
220           QTEST_QEMU_BINARY=../build/qemu-system-${TARGET} ./tests/qtest/migration-test
222 # This job needs to be disabled until we can have an aarch64 CPU model that
223 # will both (1) support both KVM and TCG, and (2) provide a stable ABI.
224 # Currently only "-cpu max" can provide (1), however it doesn't guarantee
225 # (2).  Mark this test skipped until later.
226 migration-compat-aarch64:
227   extends: .migration-compat-common
228   variables:
229     TARGET: aarch64
230     QEMU_JOB_SKIPPED: 1
232 migration-compat-x86_64:
233   extends: .migration-compat-common
234   variables:
235     TARGET: x86_64
237 check-system-centos:
238   extends: .native_test_job_template
239   needs:
240     - job: build-system-centos
241       artifacts: true
242   variables:
243     IMAGE: centos8
244     MAKE_CHECK_ARGS: check
246 avocado-system-centos:
247   extends: .avocado_test_job_template
248   needs:
249     - job: build-system-centos
250       artifacts: true
251   variables:
252     IMAGE: centos8
253     MAKE_CHECK_ARGS: check-avocado
254     AVOCADO_TAGS: arch:ppc64 arch:or1k arch:s390x arch:x86_64 arch:rx
255       arch:sh4 arch:nios2
257 build-system-opensuse:
258   extends:
259     - .native_build_job_template
260     - .native_build_artifact_template
261   needs:
262     job: amd64-opensuse-leap-container
263   variables:
264     IMAGE: opensuse-leap
265     TARGETS: s390x-softmmu x86_64-softmmu aarch64-softmmu
266     MAKE_CHECK_ARGS: check-build
268 check-system-opensuse:
269   extends: .native_test_job_template
270   needs:
271     - job: build-system-opensuse
272       artifacts: true
273   variables:
274     IMAGE: opensuse-leap
275     MAKE_CHECK_ARGS: check
277 avocado-system-opensuse:
278   extends: .avocado_test_job_template
279   needs:
280     - job: build-system-opensuse
281       artifacts: true
282   variables:
283     IMAGE: opensuse-leap
284     MAKE_CHECK_ARGS: check-avocado
285     AVOCADO_TAGS: arch:s390x arch:x86_64 arch:aarch64
288 # Flaky tests. We don't run these by default and they are allow fail
289 # but often the CI system is the only way to trigger the failures.
292 build-system-flaky:
293   extends:
294     - .native_build_job_template
295     - .native_build_artifact_template
296   needs:
297     job: amd64-debian-container
298   variables:
299     IMAGE: debian
300     QEMU_JOB_OPTIONAL: 1
301     TARGETS: aarch64-softmmu arm-softmmu mips64el-softmmu
302       ppc64-softmmu rx-softmmu s390x-softmmu sh4-softmmu x86_64-softmmu
303     MAKE_CHECK_ARGS: check-build
305 avocado-system-flaky:
306   extends: .avocado_test_job_template
307   needs:
308     - job: build-system-flaky
309       artifacts: true
310   allow_failure: true
311   variables:
312     IMAGE: debian
313     MAKE_CHECK_ARGS: check-avocado
314     QEMU_JOB_OPTIONAL: 1
315     QEMU_TEST_FLAKY_TESTS: 1
316     AVOCADO_TAGS: flaky
318 # This jobs explicitly disable TCG (--disable-tcg), KVM is detected by
319 # the configure script. The container doesn't contain Xen headers so
320 # Xen accelerator is not detected / selected. As result it build the
321 # i386-softmmu and x86_64-softmmu with KVM being the single accelerator
322 # available.
323 # Also use a different coroutine implementation (which is only really of
324 # interest to KVM users, i.e. with TCG disabled)
325 build-tcg-disabled:
326   extends: .native_build_job_template
327   needs:
328     job: amd64-centos8-container
329   variables:
330     IMAGE: centos8
331   script:
332     - mkdir build
333     - cd build
334     - ../configure --disable-tcg --audio-drv-list="" --with-coroutine=ucontext
335                    --disable-docs --disable-sdl --disable-gtk --disable-vnc
336       || { cat config.log meson-logs/meson-log.txt && exit 1; }
337     - make -j"$JOBS"
338     - make check-unit
339     - make check-qapi-schema
340     - cd tests/qemu-iotests/
341     - ./check -raw 001 002 003 004 005 008 009 010 011 012 021 025 032 033 048
342             052 063 077 086 101 104 106 113 148 150 151 152 157 159 160 163
343             170 171 183 184 192 194 208 221 226 227 236 253 277 image-fleecing
344     - ./check -qcow2 028 051 056 057 058 065 068 082 085 091 095 096 102 122
345             124 132 139 142 144 145 151 152 155 157 165 194 196 200 202
346             208 209 216 218 227 234 246 247 248 250 254 255 257 258
347             260 261 262 263 264 270 272 273 277 279 image-fleecing
349 build-user:
350   extends: .native_build_job_template
351   needs:
352     job: amd64-debian-user-cross-container
353   variables:
354     IMAGE: debian-all-test-cross
355     CONFIGURE_ARGS: --disable-tools --disable-system
356       --target-list-exclude=alpha-linux-user,sh4-linux-user
357     MAKE_CHECK_ARGS: check-tcg
359 build-user-static:
360   extends: .native_build_job_template
361   needs:
362     job: amd64-debian-user-cross-container
363   variables:
364     IMAGE: debian-all-test-cross
365     CONFIGURE_ARGS: --disable-tools --disable-system --static
366       --target-list-exclude=alpha-linux-user,sh4-linux-user
367     MAKE_CHECK_ARGS: check-tcg
369 # targets stuck on older compilers
370 build-legacy:
371   extends: .native_build_job_template
372   needs:
373     job: amd64-debian-legacy-cross-container
374   variables:
375     IMAGE: debian-legacy-test-cross
376     TARGETS: alpha-linux-user alpha-softmmu sh4-linux-user
377     CONFIGURE_ARGS: --disable-tools
378     MAKE_CHECK_ARGS: check-tcg
380 build-user-hexagon:
381   extends: .native_build_job_template
382   needs:
383     job: hexagon-cross-container
384   variables:
385     IMAGE: debian-hexagon-cross
386     TARGETS: hexagon-linux-user
387     CONFIGURE_ARGS: --disable-tools --disable-docs --enable-debug-tcg
388     MAKE_CHECK_ARGS: check-tcg
390 # Build the softmmu targets we have check-tcg tests and compilers in
391 # our omnibus all-test-cross container. Those targets that haven't got
392 # Debian cross compiler support need to use special containers.
393 build-some-softmmu:
394   extends: .native_build_job_template
395   needs:
396     job: amd64-debian-user-cross-container
397   variables:
398     IMAGE: debian-all-test-cross
399     CONFIGURE_ARGS: --disable-tools --enable-debug
400     TARGETS: arm-softmmu aarch64-softmmu i386-softmmu riscv64-softmmu
401       s390x-softmmu x86_64-softmmu
402     MAKE_CHECK_ARGS: check-tcg
404 build-loongarch64:
405   extends: .native_build_job_template
406   needs:
407     job: loongarch-debian-cross-container
408   variables:
409     IMAGE: debian-loongarch-cross
410     CONFIGURE_ARGS: --disable-tools --enable-debug
411     TARGETS: loongarch64-linux-user loongarch64-softmmu
412     MAKE_CHECK_ARGS: check-tcg
414 # We build tricore in a very minimal tricore only container
415 build-tricore-softmmu:
416   extends: .native_build_job_template
417   needs:
418     job: tricore-debian-cross-container
419   variables:
420     IMAGE: debian-tricore-cross
421     CONFIGURE_ARGS: --disable-tools --disable-fdt --enable-debug
422     TARGETS: tricore-softmmu
423     MAKE_CHECK_ARGS: check-tcg
425 clang-system:
426   extends: .native_build_job_template
427   needs:
428     job: amd64-fedora-container
429   variables:
430     IMAGE: fedora
431     CONFIGURE_ARGS: --cc=clang --cxx=clang++
432       --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
433     TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu s390x-softmmu
434     MAKE_CHECK_ARGS: check-qtest check-tcg
436 clang-user:
437   extends: .native_build_job_template
438   needs:
439     job: amd64-debian-user-cross-container
440   timeout: 70m
441   variables:
442     IMAGE: debian-all-test-cross
443     CONFIGURE_ARGS: --cc=clang --cxx=clang++ --disable-system
444       --target-list-exclude=alpha-linux-user,microblazeel-linux-user,aarch64_be-linux-user,i386-linux-user,m68k-linux-user,mipsn32el-linux-user,xtensaeb-linux-user
445       --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
446     MAKE_CHECK_ARGS: check-unit check-tcg
448 # Set LD_JOBS=1 because this requires LTO and ld consumes a large amount of memory.
449 # On gitlab runners, default value sometimes end up calling 2 lds concurrently and
450 # triggers an Out-Of-Memory error
452 # Since slirp callbacks are used in QEMU Timers, we cannot use libslirp with
453 # CFI builds, and thus have to disable it here.
455 # Split in three sets of build/check/avocado to limit the execution time of each
456 # job
457 build-cfi-aarch64:
458   extends:
459     - .native_build_job_template
460     - .native_build_artifact_template
461   needs:
462   - job: amd64-fedora-container
463   variables:
464     LD_JOBS: 1
465     AR: llvm-ar
466     IMAGE: fedora
467     CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
468       --enable-safe-stack --disable-slirp
469     TARGETS: aarch64-softmmu
470     MAKE_CHECK_ARGS: check-build
471     # FIXME: This job is often failing, likely due to out-of-memory problems in
472     # the constrained containers of the shared runners. Thus this is marked as
473     # skipped until the situation has been solved.
474     QEMU_JOB_SKIPPED: 1
475   timeout: 90m
477 check-cfi-aarch64:
478   extends: .native_test_job_template
479   needs:
480     - job: build-cfi-aarch64
481       artifacts: true
482   variables:
483     IMAGE: fedora
484     MAKE_CHECK_ARGS: check
486 avocado-cfi-aarch64:
487   extends: .avocado_test_job_template
488   needs:
489     - job: build-cfi-aarch64
490       artifacts: true
491   variables:
492     IMAGE: fedora
493     MAKE_CHECK_ARGS: check-avocado
495 build-cfi-ppc64-s390x:
496   extends:
497     - .native_build_job_template
498     - .native_build_artifact_template
499   needs:
500   - job: amd64-fedora-container
501   variables:
502     LD_JOBS: 1
503     AR: llvm-ar
504     IMAGE: fedora
505     CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
506       --enable-safe-stack --disable-slirp
507     TARGETS: ppc64-softmmu s390x-softmmu
508     MAKE_CHECK_ARGS: check-build
509     # FIXME: This job is often failing, likely due to out-of-memory problems in
510     # the constrained containers of the shared runners. Thus this is marked as
511     # skipped until the situation has been solved.
512     QEMU_JOB_SKIPPED: 1
513   timeout: 80m
515 check-cfi-ppc64-s390x:
516   extends: .native_test_job_template
517   needs:
518     - job: build-cfi-ppc64-s390x
519       artifacts: true
520   variables:
521     IMAGE: fedora
522     MAKE_CHECK_ARGS: check
524 avocado-cfi-ppc64-s390x:
525   extends: .avocado_test_job_template
526   needs:
527     - job: build-cfi-ppc64-s390x
528       artifacts: true
529   variables:
530     IMAGE: fedora
531     MAKE_CHECK_ARGS: check-avocado
533 build-cfi-x86_64:
534   extends:
535     - .native_build_job_template
536     - .native_build_artifact_template
537   needs:
538   - job: amd64-fedora-container
539   variables:
540     LD_JOBS: 1
541     AR: llvm-ar
542     IMAGE: fedora
543     CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
544       --enable-safe-stack --disable-slirp
545     TARGETS: x86_64-softmmu
546     MAKE_CHECK_ARGS: check-build
547   timeout: 70m
549 check-cfi-x86_64:
550   extends: .native_test_job_template
551   needs:
552     - job: build-cfi-x86_64
553       artifacts: true
554   variables:
555     IMAGE: fedora
556     MAKE_CHECK_ARGS: check
558 avocado-cfi-x86_64:
559   extends: .avocado_test_job_template
560   needs:
561     - job: build-cfi-x86_64
562       artifacts: true
563   variables:
564     IMAGE: fedora
565     MAKE_CHECK_ARGS: check-avocado
567 tsan-build:
568   extends: .native_build_job_template
569   needs:
570     job: amd64-ubuntu2204-container
571   variables:
572     IMAGE: ubuntu2204
573     CONFIGURE_ARGS: --enable-tsan --cc=clang --cxx=clang++
574           --enable-trace-backends=ust --disable-slirp
575     TARGETS: x86_64-softmmu ppc64-softmmu riscv64-softmmu x86_64-linux-user
577 # gcov is a GCC features
578 gcov:
579   extends: .native_build_job_template
580   needs:
581     job: amd64-ubuntu2204-container
582   timeout: 80m
583   variables:
584     IMAGE: ubuntu2204
585     CONFIGURE_ARGS: --enable-gcov
586     TARGETS: aarch64-softmmu ppc64-softmmu s390x-softmmu x86_64-softmmu
587     MAKE_CHECK_ARGS: check-unit check-softfloat
588   after_script:
589     - cd build
590     - gcovr --xml-pretty --exclude-unreachable-branches --print-summary
591         -o coverage.xml --root ${CI_PROJECT_DIR} . *.p
592   coverage: /^\s*lines:\s*\d+.\d+\%/
593   artifacts:
594     name: ${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}
595     when: always
596     expire_in: 2 days
597     paths:
598       - build/meson-logs/testlog.txt
599     reports:
600       junit: build/meson-logs/testlog.junit.xml
601       coverage_report:
602         coverage_format: cobertura
603         path: build/coverage.xml
605 build-oss-fuzz:
606   extends: .native_build_job_template
607   needs:
608     job: amd64-fedora-container
609   variables:
610     IMAGE: fedora
611   script:
612     - mkdir build-oss-fuzz
613     - export LSAN_OPTIONS=suppressions=scripts/oss-fuzz/lsan_suppressions.txt
614     - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address"
615       ./scripts/oss-fuzz/build.sh
616     - export ASAN_OPTIONS="fast_unwind_on_malloc=0"
617     - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f
618                       | grep -v slirp); do
619         grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ;
620         echo Testing ${fuzzer} ... ;
621         "${fuzzer}" -runs=1 -seed=1 || exit 1 ;
622       done
624 build-tci:
625   extends: .native_build_job_template
626   needs:
627     job: amd64-debian-user-cross-container
628   variables:
629     IMAGE: debian-all-test-cross
630   script:
631     - TARGETS="aarch64 arm hppa m68k microblaze ppc64 s390x x86_64"
632     - mkdir build
633     - cd build
634     - ../configure --enable-tcg-interpreter --disable-docs --disable-gtk --disable-vnc
635         --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)"
636         || { cat config.log meson-logs/meson-log.txt && exit 1; }
637     - make -j"$JOBS"
638     - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
639     - for tg in $TARGETS ; do
640         export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
641         ./tests/qtest/boot-serial-test || exit 1 ;
642         ./tests/qtest/cdrom-test || exit 1 ;
643       done
644     - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
645     - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
646     - make check-tcg
648 # Check our reduced build configurations
649 build-without-defaults:
650   extends: .native_build_job_template
651   needs:
652     job: amd64-centos8-container
653   variables:
654     IMAGE: centos8
655     CONFIGURE_ARGS:
656       --without-default-devices
657       --without-default-features
658       --disable-fdt
659       --disable-pie
660       --disable-qom-cast-debug
661       --disable-strip
662     TARGETS: avr-softmmu s390x-softmmu sh4-softmmu
663       sparc64-softmmu hexagon-linux-user i386-linux-user s390x-linux-user
664     MAKE_CHECK_ARGS: check
666 build-libvhost-user:
667   extends: .base_job_template
668   stage: build
669   image: $CI_REGISTRY_IMAGE/qemu/fedora:$QEMU_CI_CONTAINER_TAG
670   needs:
671     job: amd64-fedora-container
672   script:
673     - mkdir subprojects/libvhost-user/build
674     - cd subprojects/libvhost-user/build
675     - meson
676     - ninja
678 # No targets are built here, just tools, docs, and unit tests. This
679 # also feeds into the eventual documentation deployment steps later
680 build-tools-and-docs-debian:
681   extends:
682     - .native_build_job_template
683     - .native_build_artifact_template
684   needs:
685     job: amd64-debian-container
686     # when running on 'master' we use pre-existing container
687     optional: true
688   variables:
689     IMAGE: debian
690     MAKE_CHECK_ARGS: check-unit ctags TAGS cscope
691     CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools
692     QEMU_JOB_PUBLISH: 1
694 # Prepare for GitLab pages deployment. Anything copied into the
695 # "public" directory will be deployed to $USER.gitlab.io/$PROJECT
697 # GitLab publishes from any branch that triggers a CI pipeline
699 # For the main repo we don't want to publish from 'staging'
700 # since that content may not be pushed, nor do we wish to
701 # publish from 'stable-NNN' branches as that content is outdated.
702 # Thus we restrict to just the default branch
704 # For contributor forks we want to publish from any repo so
705 # that users can see the results of their commits, regardless
706 # of what topic branch they're currently using
707 pages:
708   extends: .base_job_template
709   image: $CI_REGISTRY_IMAGE/qemu/debian:$QEMU_CI_CONTAINER_TAG
710   stage: test
711   needs:
712     - job: build-tools-and-docs-debian
713   script:
714     - mkdir -p public
715     # HTML-ised source tree
716     - make gtags
717     # We unset variables to work around a bug in some htags versions
718     # which causes it to fail when the environment is large
719     - CI_COMMIT_MESSAGE= CI_COMMIT_TAG_MESSAGE= htags
720         -anT --tree-view=filetree -m qemu_init
721         -t "Welcome to the QEMU sourcecode"
722     - mv HTML public/src
723     # Project documentation
724     - make -C build install DESTDIR=$(pwd)/temp-install
725     - mv temp-install/usr/local/share/doc/qemu/* public/
726   artifacts:
727     when: on_success
728     paths:
729       - public
730   variables:
731     QEMU_JOB_PUBLISH: 1
733 coverity:
734   image: $CI_REGISTRY_IMAGE/qemu/fedora:$QEMU_CI_CONTAINER_TAG
735   stage: build
736   allow_failure: true
737   timeout: 3h
738   needs:
739     - job: amd64-fedora-container
740       optional: true
741   before_script:
742     - dnf install -y curl wget
743   script:
744     # would be nice to cancel the job if over quota (https://gitlab.com/gitlab-org/gitlab/-/issues/256089)
745     # for example:
746     #   curl --request POST --header "PRIVATE-TOKEN: $CI_JOB_TOKEN" "${CI_SERVER_URL}/api/v4/projects/${CI_PROJECT_ID}/jobs/${CI_JOB_ID}/cancel
747     - 'scripts/coverity-scan/run-coverity-scan --check-upload-only || { exitcode=$?; if test $exitcode = 1; then
748         exit 0;
749       else
750         exit $exitcode;
751       fi; };
752       scripts/coverity-scan/run-coverity-scan --update-tools-only > update-tools.log 2>&1 || { cat update-tools.log; exit 1; };
753       scripts/coverity-scan/run-coverity-scan --no-update-tools'
754   rules:
755     - if: '$COVERITY_TOKEN == null'
756       when: never
757     - if: '$COVERITY_EMAIL == null'
758       when: never
759     # Never included on upstream pipelines, except for schedules
760     - if: '$CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_PIPELINE_SOURCE == "schedule"'
761       when: on_success
762     - if: '$CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM'
763       when: never
764     # Forks don't get any pipeline unless QEMU_CI=1 or QEMU_CI=2 is set
765     - if: '$QEMU_CI != "1" && $QEMU_CI != "2"'
766       when: never
767     # Always manual on forks even if $QEMU_CI == "2"
768     - when: manual