docs/about: Mark the old pc-i440fx-2.0 - 2.3 machine types as deprecated
[qemu/kevin.git] / .gitlab-ci.d / buildtest.yml
blob25af1bc41ede3afc9702a57116a0cb514a2f416a
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:microblaze 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-amd64
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-amd64
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-amd64
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-amd64
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 check-system-centos:
171   extends: .native_test_job_template
172   needs:
173     - job: build-system-centos
174       artifacts: true
175   variables:
176     IMAGE: centos8
177     MAKE_CHECK_ARGS: check
179 avocado-system-centos:
180   extends: .avocado_test_job_template
181   needs:
182     - job: build-system-centos
183       artifacts: true
184   variables:
185     IMAGE: centos8
186     MAKE_CHECK_ARGS: check-avocado
187     AVOCADO_TAGS: arch:ppc64 arch:or1k arch:390x arch:x86_64 arch:rx
188       arch:sh4 arch:nios2
190 build-system-opensuse:
191   extends:
192     - .native_build_job_template
193     - .native_build_artifact_template
194   needs:
195     job: amd64-opensuse-leap-container
196   variables:
197     IMAGE: opensuse-leap
198     TARGETS: s390x-softmmu x86_64-softmmu aarch64-softmmu
199     MAKE_CHECK_ARGS: check-build
201 check-system-opensuse:
202   extends: .native_test_job_template
203   needs:
204     - job: build-system-opensuse
205       artifacts: true
206   variables:
207     IMAGE: opensuse-leap
208     MAKE_CHECK_ARGS: check
210 avocado-system-opensuse:
211   extends: .avocado_test_job_template
212   needs:
213     - job: build-system-opensuse
214       artifacts: true
215   variables:
216     IMAGE: opensuse-leap
217     MAKE_CHECK_ARGS: check-avocado
218     AVOCADO_TAGS: arch:s390x arch:x86_64 arch:aarch64
221 # This jobs explicitly disable TCG (--disable-tcg), KVM is detected by
222 # the configure script. The container doesn't contain Xen headers so
223 # Xen accelerator is not detected / selected. As result it build the
224 # i386-softmmu and x86_64-softmmu with KVM being the single accelerator
225 # available.
226 # Also use a different coroutine implementation (which is only really of
227 # interest to KVM users, i.e. with TCG disabled)
228 build-tcg-disabled:
229   extends: .native_build_job_template
230   needs:
231     job: amd64-centos8-container
232   variables:
233     IMAGE: centos8
234   script:
235     - mkdir build
236     - cd build
237     - ../configure --disable-tcg --audio-drv-list="" --with-coroutine=ucontext
238                    --disable-docs --disable-sdl --disable-gtk --disable-vnc
239       || { cat config.log meson-logs/meson-log.txt && exit 1; }
240     - make -j"$JOBS"
241     - make check-unit
242     - make check-qapi-schema
243     - cd tests/qemu-iotests/
244     - ./check -raw 001 002 003 004 005 008 009 010 011 012 021 025 032 033 048
245             052 063 077 086 101 104 106 113 148 150 151 152 157 159 160 163
246             170 171 183 184 192 194 208 221 226 227 236 253 277 image-fleecing
247     - ./check -qcow2 028 051 056 057 058 065 068 082 085 091 095 096 102 122
248             124 132 139 142 144 145 151 152 155 157 165 194 196 200 202
249             208 209 216 218 227 234 246 247 248 250 254 255 257 258
250             260 261 262 263 264 270 272 273 277 279 image-fleecing
252 build-user:
253   extends: .native_build_job_template
254   needs:
255     job: amd64-debian-user-cross-container
256   variables:
257     IMAGE: debian-all-test-cross
258     CONFIGURE_ARGS: --disable-tools --disable-system
259     MAKE_CHECK_ARGS: check-tcg
261 build-user-static:
262   extends: .native_build_job_template
263   needs:
264     job: amd64-debian-user-cross-container
265   variables:
266     IMAGE: debian-all-test-cross
267     CONFIGURE_ARGS: --disable-tools --disable-system --static
268     MAKE_CHECK_ARGS: check-tcg
270 build-user-hexagon:
271   extends: .native_build_job_template
272   needs:
273     job: hexagon-cross-container
274   variables:
275     IMAGE: debian-hexagon-cross
276     TARGETS: hexagon-linux-user
277     CONFIGURE_ARGS: --disable-tools --disable-docs --enable-debug-tcg
278     MAKE_CHECK_ARGS: check-tcg
280 # Only build the softmmu targets we have check-tcg tests for
281 build-some-softmmu:
282   extends: .native_build_job_template
283   needs:
284     job: amd64-debian-user-cross-container
285   variables:
286     IMAGE: debian-all-test-cross
287     CONFIGURE_ARGS: --disable-tools --enable-debug
288     TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu
289     MAKE_CHECK_ARGS: check-tcg
291 # We build tricore in a very minimal tricore only container
292 build-tricore-softmmu:
293   extends: .native_build_job_template
294   needs:
295     job: tricore-debian-cross-container
296   variables:
297     IMAGE: debian-tricore-cross
298     CONFIGURE_ARGS: --disable-tools --disable-fdt --enable-debug
299     TARGETS: tricore-softmmu
300     MAKE_CHECK_ARGS: check-tcg
302 clang-system:
303   extends: .native_build_job_template
304   needs:
305     job: amd64-fedora-container
306   variables:
307     IMAGE: fedora
308     CONFIGURE_ARGS: --cc=clang --cxx=clang++
309       --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
310     TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu s390x-softmmu
311     MAKE_CHECK_ARGS: check-qtest check-tcg
313 clang-user:
314   extends: .native_build_job_template
315   needs:
316     job: amd64-debian-user-cross-container
317   timeout: 70m
318   variables:
319     IMAGE: debian-all-test-cross
320     CONFIGURE_ARGS: --cc=clang --cxx=clang++ --disable-system
321       --target-list-exclude=microblazeel-linux-user,aarch64_be-linux-user,i386-linux-user,m68k-linux-user,mipsn32el-linux-user,xtensaeb-linux-user
322       --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
323     MAKE_CHECK_ARGS: check-unit check-tcg
325 # Set LD_JOBS=1 because this requires LTO and ld consumes a large amount of memory.
326 # On gitlab runners, default value sometimes end up calling 2 lds concurrently and
327 # triggers an Out-Of-Memory error
329 # Since slirp callbacks are used in QEMU Timers, we cannot use libslirp with
330 # CFI builds, and thus have to disable it here.
332 # Split in three sets of build/check/avocado to limit the execution time of each
333 # job
334 build-cfi-aarch64:
335   extends:
336     - .native_build_job_template
337     - .native_build_artifact_template
338   needs:
339   - job: amd64-fedora-container
340   variables:
341     LD_JOBS: 1
342     AR: llvm-ar
343     IMAGE: fedora
344     CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
345       --enable-safe-stack --disable-slirp
346     TARGETS: aarch64-softmmu
347     MAKE_CHECK_ARGS: check-build
348     # FIXME: This job is often failing, likely due to out-of-memory problems in
349     # the constrained containers of the shared runners. Thus this is marked as
350     # skipped until the situation has been solved.
351     QEMU_JOB_SKIPPED: 1
352   timeout: 90m
354 check-cfi-aarch64:
355   extends: .native_test_job_template
356   needs:
357     - job: build-cfi-aarch64
358       artifacts: true
359   variables:
360     IMAGE: fedora
361     MAKE_CHECK_ARGS: check
363 avocado-cfi-aarch64:
364   extends: .avocado_test_job_template
365   needs:
366     - job: build-cfi-aarch64
367       artifacts: true
368   variables:
369     IMAGE: fedora
370     MAKE_CHECK_ARGS: check-avocado
372 build-cfi-ppc64-s390x:
373   extends:
374     - .native_build_job_template
375     - .native_build_artifact_template
376   needs:
377   - job: amd64-fedora-container
378   variables:
379     LD_JOBS: 1
380     AR: llvm-ar
381     IMAGE: fedora
382     CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
383       --enable-safe-stack --disable-slirp
384     TARGETS: ppc64-softmmu s390x-softmmu
385     MAKE_CHECK_ARGS: check-build
386     # FIXME: This job is often failing, likely due to out-of-memory problems in
387     # the constrained containers of the shared runners. Thus this is marked as
388     # skipped until the situation has been solved.
389     QEMU_JOB_SKIPPED: 1
390   timeout: 80m
392 check-cfi-ppc64-s390x:
393   extends: .native_test_job_template
394   needs:
395     - job: build-cfi-ppc64-s390x
396       artifacts: true
397   variables:
398     IMAGE: fedora
399     MAKE_CHECK_ARGS: check
401 avocado-cfi-ppc64-s390x:
402   extends: .avocado_test_job_template
403   needs:
404     - job: build-cfi-ppc64-s390x
405       artifacts: true
406   variables:
407     IMAGE: fedora
408     MAKE_CHECK_ARGS: check-avocado
410 build-cfi-x86_64:
411   extends:
412     - .native_build_job_template
413     - .native_build_artifact_template
414   needs:
415   - job: amd64-fedora-container
416   variables:
417     LD_JOBS: 1
418     AR: llvm-ar
419     IMAGE: fedora
420     CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
421       --enable-safe-stack --disable-slirp
422     TARGETS: x86_64-softmmu
423     MAKE_CHECK_ARGS: check-build
424   timeout: 70m
426 check-cfi-x86_64:
427   extends: .native_test_job_template
428   needs:
429     - job: build-cfi-x86_64
430       artifacts: true
431   variables:
432     IMAGE: fedora
433     MAKE_CHECK_ARGS: check
435 avocado-cfi-x86_64:
436   extends: .avocado_test_job_template
437   needs:
438     - job: build-cfi-x86_64
439       artifacts: true
440   variables:
441     IMAGE: fedora
442     MAKE_CHECK_ARGS: check-avocado
444 tsan-build:
445   extends: .native_build_job_template
446   needs:
447     job: amd64-ubuntu2204-container
448   variables:
449     IMAGE: ubuntu2204
450     CONFIGURE_ARGS: --enable-tsan --cc=clang --cxx=clang++
451           --enable-trace-backends=ust --disable-slirp
452     TARGETS: x86_64-softmmu ppc64-softmmu riscv64-softmmu x86_64-linux-user
454 # gcov is a GCC features
455 gcov:
456   extends: .native_build_job_template
457   needs:
458     job: amd64-ubuntu2204-container
459   timeout: 80m
460   variables:
461     IMAGE: ubuntu2204
462     CONFIGURE_ARGS: --enable-gcov
463     TARGETS: aarch64-softmmu ppc64-softmmu s390x-softmmu x86_64-softmmu
464     MAKE_CHECK_ARGS: check-unit check-softfloat
465   after_script:
466     - cd build
467     - gcovr --xml-pretty --exclude-unreachable-branches --print-summary
468         -o coverage.xml --root ${CI_PROJECT_DIR} . *.p
469   coverage: /^\s*lines:\s*\d+.\d+\%/
470   artifacts:
471     name: ${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}
472     when: always
473     expire_in: 2 days
474     paths:
475       - build/meson-logs/testlog.txt
476     reports:
477       junit: build/meson-logs/testlog.junit.xml
478       coverage_report:
479         coverage_format: cobertura
480         path: build/coverage.xml
482 build-oss-fuzz:
483   extends: .native_build_job_template
484   needs:
485     job: amd64-fedora-container
486   variables:
487     IMAGE: fedora
488   script:
489     - mkdir build-oss-fuzz
490     - export LSAN_OPTIONS=suppressions=scripts/oss-fuzz/lsan_suppressions.txt
491     - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address"
492       ./scripts/oss-fuzz/build.sh
493     - export ASAN_OPTIONS="fast_unwind_on_malloc=0"
494     - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f
495                       | grep -v slirp); do
496         grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ;
497         echo Testing ${fuzzer} ... ;
498         "${fuzzer}" -runs=1 -seed=1 || exit 1 ;
499       done
501 build-tci:
502   extends: .native_build_job_template
503   needs:
504     job: amd64-debian-user-cross-container
505   variables:
506     IMAGE: debian-all-test-cross
507   script:
508     - TARGETS="aarch64 alpha arm hppa m68k microblaze ppc64 s390x x86_64"
509     - mkdir build
510     - cd build
511     - ../configure --enable-tcg-interpreter --disable-docs --disable-gtk --disable-vnc
512         --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)"
513         || { cat config.log meson-logs/meson-log.txt && exit 1; }
514     - make -j"$JOBS"
515     - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
516     - for tg in $TARGETS ; do
517         export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
518         ./tests/qtest/boot-serial-test || exit 1 ;
519         ./tests/qtest/cdrom-test || exit 1 ;
520       done
521     - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
522     - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
523     - make check-tcg
525 # Check our reduced build configurations
526 build-without-defaults:
527   extends: .native_build_job_template
528   needs:
529     job: amd64-centos8-container
530   variables:
531     IMAGE: centos8
532     CONFIGURE_ARGS:
533       --without-default-devices
534       --without-default-features
535       --disable-fdt
536       --disable-pie
537       --disable-qom-cast-debug
538       --disable-strip
539     TARGETS: avr-softmmu mips64-softmmu s390x-softmmu sh4-softmmu
540       sparc64-softmmu hexagon-linux-user i386-linux-user s390x-linux-user
541     MAKE_CHECK_ARGS: check
543 build-libvhost-user:
544   extends: .base_job_template
545   stage: build
546   image: $CI_REGISTRY_IMAGE/qemu/fedora:$QEMU_CI_CONTAINER_TAG
547   needs:
548     job: amd64-fedora-container
549   script:
550     - mkdir subprojects/libvhost-user/build
551     - cd subprojects/libvhost-user/build
552     - meson
553     - ninja
555 # No targets are built here, just tools, docs, and unit tests. This
556 # also feeds into the eventual documentation deployment steps later
557 build-tools-and-docs-debian:
558   extends:
559     - .native_build_job_template
560     - .native_build_artifact_template
561   needs:
562     job: amd64-debian-container
563     # when running on 'master' we use pre-existing container
564     optional: true
565   variables:
566     IMAGE: debian-amd64
567     MAKE_CHECK_ARGS: check-unit ctags TAGS cscope
568     CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools
569     QEMU_JOB_PUBLISH: 1
571 # Prepare for GitLab pages deployment. Anything copied into the
572 # "public" directory will be deployed to $USER.gitlab.io/$PROJECT
574 # GitLab publishes from any branch that triggers a CI pipeline
576 # For the main repo we don't want to publish from 'staging'
577 # since that content may not be pushed, nor do we wish to
578 # publish from 'stable-NNN' branches as that content is outdated.
579 # Thus we restrict to just the default branch
581 # For contributor forks we want to publish from any repo so
582 # that users can see the results of their commits, regardless
583 # of what topic branch they're currently using
584 pages:
585   extends: .base_job_template
586   image: $CI_REGISTRY_IMAGE/qemu/debian-amd64:$QEMU_CI_CONTAINER_TAG
587   stage: test
588   needs:
589     - job: build-tools-and-docs-debian
590   script:
591     - mkdir -p public
592     # HTML-ised source tree
593     - make gtags
594     - htags -anT --tree-view=filetree -m qemu_init
595         -t "Welcome to the QEMU sourcecode"
596     - mv HTML public/src
597     # Project documentation
598     - make -C build install DESTDIR=$(pwd)/temp-install
599     - mv temp-install/usr/local/share/doc/qemu/* public/
600   artifacts:
601     when: on_success
602     paths:
603       - public
604   variables:
605     QEMU_JOB_PUBLISH: 1