2 - local: '/.gitlab-ci.d/buildtest-template.yml'
6 - .native_build_job_template
7 - .native_build_artifact_template
9 - job: amd64-alpine-container
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
17 extends: .native_test_job_template
19 - job: build-system-alpine
23 MAKE_CHECK_ARGS: check-unit check-qtest
25 avocado-system-alpine:
26 extends: .avocado_test_job_template
28 - job: build-system-alpine
32 MAKE_CHECK_ARGS: check-avocado
33 AVOCADO_TAGS: arch:avr arch:loongarch64 arch:mips64 arch:mipsel
37 - .native_build_job_template
38 - .native_build_artifact_template
40 job: amd64-ubuntu2204-container
43 CONFIGURE_ARGS: --enable-docs
44 TARGETS: alpha-softmmu microblazeel-softmmu mips64el-softmmu
45 MAKE_CHECK_ARGS: check-build
48 extends: .native_test_job_template
50 - job: build-system-ubuntu
54 MAKE_CHECK_ARGS: check
56 avocado-system-ubuntu:
57 extends: .avocado_test_job_template
59 - job: build-system-ubuntu
63 MAKE_CHECK_ARGS: check-avocado
64 AVOCADO_TAGS: arch:alpha arch:microblaze arch:mips64el
68 - .native_build_job_template
69 - .native_build_artifact_template
71 job: amd64-debian-container
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
80 extends: .native_test_job_template
82 - job: build-system-debian
86 MAKE_CHECK_ARGS: check
88 avocado-system-debian:
89 extends: .avocado_test_job_template
91 - job: build-system-debian
95 MAKE_CHECK_ARGS: check-avocado
96 AVOCADO_TAGS: arch:arm arch:i386 arch:riscv64 arch:sh4 arch:sparc arch:xtensa
99 extends: .native_test_job_template
101 - job: build-system-debian
107 - make NINJA=":" check-venv
108 - pyvenv/bin/python3 scripts/device-crash-test -q --tcg-only ./qemu-system-i386
112 - .native_build_job_template
113 - .native_build_artifact_template
115 job: amd64-fedora-container
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
124 extends: .native_test_job_template
126 - job: build-system-fedora
130 MAKE_CHECK_ARGS: check
132 avocado-system-fedora:
133 extends: .avocado_test_job_template
135 - job: build-system-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
144 extends: .native_test_job_template
146 - job: build-system-fedora
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
158 - .native_build_job_template
159 - .native_build_artifact_template
161 job: amd64-centos8-container
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
171 extends: .native_test_job_template
173 - job: build-system-centos
177 MAKE_CHECK_ARGS: check
179 avocado-system-centos:
180 extends: .avocado_test_job_template
182 - job: build-system-centos
186 MAKE_CHECK_ARGS: check-avocado
187 AVOCADO_TAGS: arch:ppc64 arch:or1k arch:390x arch:x86_64 arch:rx
190 build-system-opensuse:
192 - .native_build_job_template
193 - .native_build_artifact_template
195 job: amd64-opensuse-leap-container
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
204 - job: build-system-opensuse
208 MAKE_CHECK_ARGS: check
210 avocado-system-opensuse:
211 extends: .avocado_test_job_template
213 - job: build-system-opensuse
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
226 # Also use a different coroutine implementation (which is only really of
227 # interest to KVM users, i.e. with TCG disabled)
229 extends: .native_build_job_template
231 job: amd64-centos8-container
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; }
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
253 extends: .native_build_job_template
255 job: amd64-debian-user-cross-container
257 IMAGE: debian-all-test-cross
258 CONFIGURE_ARGS: --disable-tools --disable-system
259 --target-list-exclude=alpha-linux-user,sh4-linux-user
260 MAKE_CHECK_ARGS: check-tcg
263 extends: .native_build_job_template
265 job: amd64-debian-user-cross-container
267 IMAGE: debian-all-test-cross
268 CONFIGURE_ARGS: --disable-tools --disable-system --static
269 --target-list-exclude=alpha-linux-user,sh4-linux-user
270 MAKE_CHECK_ARGS: check-tcg
272 # targets stuck on older compilers
274 extends: .native_build_job_template
276 job: amd64-debian-legacy-cross-container
278 IMAGE: debian-legacy-test-cross
279 TARGETS: alpha-linux-user alpha-softmmu sh4-linux-user
280 CONFIGURE_ARGS: --disable-tools
281 MAKE_CHECK_ARGS: check-tcg
284 extends: .native_build_job_template
286 job: hexagon-cross-container
288 IMAGE: debian-hexagon-cross
289 TARGETS: hexagon-linux-user
290 CONFIGURE_ARGS: --disable-tools --disable-docs --enable-debug-tcg
291 MAKE_CHECK_ARGS: check-tcg
293 # Build the softmmu targets we have check-tcg tests and compilers in
294 # our omnibus all-test-cross container. Those targets that haven't got
295 # Debian cross compiler support need to use special containers.
297 extends: .native_build_job_template
299 job: amd64-debian-user-cross-container
301 IMAGE: debian-all-test-cross
302 CONFIGURE_ARGS: --disable-tools --enable-debug
303 TARGETS: arm-softmmu aarch64-softmmu i386-softmmu riscv64-softmmu
304 s390x-softmmu x86_64-softmmu
305 MAKE_CHECK_ARGS: check-tcg
308 extends: .native_build_job_template
310 job: loongarch-debian-cross-container
312 IMAGE: debian-loongarch-cross
313 CONFIGURE_ARGS: --disable-tools --enable-debug
314 TARGETS: loongarch64-linux-user loongarch64-softmmu
315 MAKE_CHECK_ARGS: check-tcg
317 # We build tricore in a very minimal tricore only container
318 build-tricore-softmmu:
319 extends: .native_build_job_template
321 job: tricore-debian-cross-container
323 IMAGE: debian-tricore-cross
324 CONFIGURE_ARGS: --disable-tools --disable-fdt --enable-debug
325 TARGETS: tricore-softmmu
326 MAKE_CHECK_ARGS: check-tcg
329 extends: .native_build_job_template
331 job: amd64-fedora-container
334 CONFIGURE_ARGS: --cc=clang --cxx=clang++
335 --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
336 TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu s390x-softmmu
337 MAKE_CHECK_ARGS: check-qtest check-tcg
340 extends: .native_build_job_template
342 job: amd64-debian-user-cross-container
345 IMAGE: debian-all-test-cross
346 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --disable-system
347 --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
348 --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
349 MAKE_CHECK_ARGS: check-unit check-tcg
351 # Set LD_JOBS=1 because this requires LTO and ld consumes a large amount of memory.
352 # On gitlab runners, default value sometimes end up calling 2 lds concurrently and
353 # triggers an Out-Of-Memory error
355 # Since slirp callbacks are used in QEMU Timers, we cannot use libslirp with
356 # CFI builds, and thus have to disable it here.
358 # Split in three sets of build/check/avocado to limit the execution time of each
362 - .native_build_job_template
363 - .native_build_artifact_template
365 - job: amd64-fedora-container
370 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
371 --enable-safe-stack --disable-slirp
372 TARGETS: aarch64-softmmu
373 MAKE_CHECK_ARGS: check-build
374 # FIXME: This job is often failing, likely due to out-of-memory problems in
375 # the constrained containers of the shared runners. Thus this is marked as
376 # skipped until the situation has been solved.
381 extends: .native_test_job_template
383 - job: build-cfi-aarch64
387 MAKE_CHECK_ARGS: check
390 extends: .avocado_test_job_template
392 - job: build-cfi-aarch64
396 MAKE_CHECK_ARGS: check-avocado
398 build-cfi-ppc64-s390x:
400 - .native_build_job_template
401 - .native_build_artifact_template
403 - job: amd64-fedora-container
408 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
409 --enable-safe-stack --disable-slirp
410 TARGETS: ppc64-softmmu s390x-softmmu
411 MAKE_CHECK_ARGS: check-build
412 # FIXME: This job is often failing, likely due to out-of-memory problems in
413 # the constrained containers of the shared runners. Thus this is marked as
414 # skipped until the situation has been solved.
418 check-cfi-ppc64-s390x:
419 extends: .native_test_job_template
421 - job: build-cfi-ppc64-s390x
425 MAKE_CHECK_ARGS: check
427 avocado-cfi-ppc64-s390x:
428 extends: .avocado_test_job_template
430 - job: build-cfi-ppc64-s390x
434 MAKE_CHECK_ARGS: check-avocado
438 - .native_build_job_template
439 - .native_build_artifact_template
441 - job: amd64-fedora-container
446 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
447 --enable-safe-stack --disable-slirp
448 TARGETS: x86_64-softmmu
449 MAKE_CHECK_ARGS: check-build
453 extends: .native_test_job_template
455 - job: build-cfi-x86_64
459 MAKE_CHECK_ARGS: check
462 extends: .avocado_test_job_template
464 - job: build-cfi-x86_64
468 MAKE_CHECK_ARGS: check-avocado
471 extends: .native_build_job_template
473 job: amd64-ubuntu2204-container
476 CONFIGURE_ARGS: --enable-tsan --cc=clang --cxx=clang++
477 --enable-trace-backends=ust --disable-slirp
478 TARGETS: x86_64-softmmu ppc64-softmmu riscv64-softmmu x86_64-linux-user
480 # gcov is a GCC features
482 extends: .native_build_job_template
484 job: amd64-ubuntu2204-container
488 CONFIGURE_ARGS: --enable-gcov
489 TARGETS: aarch64-softmmu ppc64-softmmu s390x-softmmu x86_64-softmmu
490 MAKE_CHECK_ARGS: check-unit check-softfloat
493 - gcovr --xml-pretty --exclude-unreachable-branches --print-summary
494 -o coverage.xml --root ${CI_PROJECT_DIR} . *.p
495 coverage: /^\s*lines:\s*\d+.\d+\%/
497 name: ${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}
501 - build/meson-logs/testlog.txt
503 junit: build/meson-logs/testlog.junit.xml
505 coverage_format: cobertura
506 path: build/coverage.xml
509 extends: .native_build_job_template
511 job: amd64-fedora-container
515 - mkdir build-oss-fuzz
516 - export LSAN_OPTIONS=suppressions=scripts/oss-fuzz/lsan_suppressions.txt
517 - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address"
518 ./scripts/oss-fuzz/build.sh
519 - export ASAN_OPTIONS="fast_unwind_on_malloc=0"
520 - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f
522 grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ;
523 echo Testing ${fuzzer} ... ;
524 "${fuzzer}" -runs=1 -seed=1 || exit 1 ;
528 extends: .native_build_job_template
530 job: amd64-debian-user-cross-container
532 IMAGE: debian-all-test-cross
534 - TARGETS="aarch64 arm hppa m68k microblaze ppc64 s390x x86_64"
537 - ../configure --enable-tcg-interpreter --disable-docs --disable-gtk --disable-vnc
538 --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)"
539 || { cat config.log meson-logs/meson-log.txt && exit 1; }
541 - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
542 - for tg in $TARGETS ; do
543 export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
544 ./tests/qtest/boot-serial-test || exit 1 ;
545 ./tests/qtest/cdrom-test || exit 1 ;
547 - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
548 - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
551 # Check our reduced build configurations
552 build-without-defaults:
553 extends: .native_build_job_template
555 job: amd64-centos8-container
559 --without-default-devices
560 --without-default-features
563 --disable-qom-cast-debug
565 TARGETS: avr-softmmu mips64-softmmu s390x-softmmu sh4-softmmu
566 sparc64-softmmu hexagon-linux-user i386-linux-user s390x-linux-user
567 MAKE_CHECK_ARGS: check
570 extends: .base_job_template
572 image: $CI_REGISTRY_IMAGE/qemu/fedora:$QEMU_CI_CONTAINER_TAG
574 job: amd64-fedora-container
576 - mkdir subprojects/libvhost-user/build
577 - cd subprojects/libvhost-user/build
581 # No targets are built here, just tools, docs, and unit tests. This
582 # also feeds into the eventual documentation deployment steps later
583 build-tools-and-docs-debian:
585 - .native_build_job_template
586 - .native_build_artifact_template
588 job: amd64-debian-container
589 # when running on 'master' we use pre-existing container
593 MAKE_CHECK_ARGS: check-unit ctags TAGS cscope
594 CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools
597 # Prepare for GitLab pages deployment. Anything copied into the
598 # "public" directory will be deployed to $USER.gitlab.io/$PROJECT
600 # GitLab publishes from any branch that triggers a CI pipeline
602 # For the main repo we don't want to publish from 'staging'
603 # since that content may not be pushed, nor do we wish to
604 # publish from 'stable-NNN' branches as that content is outdated.
605 # Thus we restrict to just the default branch
607 # For contributor forks we want to publish from any repo so
608 # that users can see the results of their commits, regardless
609 # of what topic branch they're currently using
611 extends: .base_job_template
612 image: $CI_REGISTRY_IMAGE/qemu/debian-amd64:$QEMU_CI_CONTAINER_TAG
615 - job: build-tools-and-docs-debian
618 # HTML-ised source tree
620 - htags -anT --tree-view=filetree -m qemu_init
621 -t "Welcome to the QEMU sourcecode"
623 # Project documentation
624 - make -C build install DESTDIR=$(pwd)/temp-install
625 - mv temp-install/usr/local/share/doc/qemu/* public/