2 - local: '/.gitlab-ci.d/buildtest-template.yml'
5 extends: .native_build_job_template
7 - job: amd64-alpine-container
10 TARGETS: aarch64-softmmu alpha-softmmu cris-softmmu hppa-softmmu
11 microblazeel-softmmu mips64el-softmmu
12 MAKE_CHECK_ARGS: check-build
13 CONFIGURE_ARGS: --enable-docs --enable-trace-backends=log,simple,syslog
17 - .git-submodule-status
21 extends: .native_test_job_template
23 - job: build-system-alpine
27 MAKE_CHECK_ARGS: check
29 acceptance-system-alpine:
30 extends: .acceptance_test_job_template
32 - job: build-system-alpine
36 MAKE_CHECK_ARGS: check-acceptance
39 extends: .native_build_job_template
41 job: amd64-ubuntu2004-container
44 CONFIGURE_ARGS: --enable-docs --enable-fdt=system --enable-slirp=system
45 TARGETS: aarch64-softmmu alpha-softmmu cris-softmmu hppa-softmmu
46 microblazeel-softmmu mips64el-softmmu
47 MAKE_CHECK_ARGS: check-build
54 extends: .native_test_job_template
56 - job: build-system-ubuntu
60 MAKE_CHECK_ARGS: check
62 acceptance-system-ubuntu:
63 extends: .acceptance_test_job_template
65 - job: build-system-ubuntu
69 MAKE_CHECK_ARGS: check-acceptance
72 extends: .native_build_job_template
74 job: amd64-debian-container
77 CONFIGURE_ARGS: --enable-fdt=system
78 TARGETS: arm-softmmu avr-softmmu i386-softmmu mipsel-softmmu
79 riscv64-softmmu sh4eb-softmmu sparc-softmmu xtensaeb-softmmu
80 MAKE_CHECK_ARGS: check-build
87 extends: .native_test_job_template
89 - job: build-system-debian
93 MAKE_CHECK_ARGS: check
95 acceptance-system-debian:
96 extends: .acceptance_test_job_template
98 - job: build-system-debian
102 MAKE_CHECK_ARGS: check-acceptance
105 extends: .native_build_job_template
107 job: amd64-fedora-container
110 CONFIGURE_ARGS: --disable-gcrypt --enable-nettle --enable-docs
111 --enable-fdt=system --enable-slirp=system --enable-capstone=system
112 TARGETS: tricore-softmmu microblaze-softmmu mips-softmmu
113 xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
114 MAKE_CHECK_ARGS: check-build
121 extends: .native_test_job_template
123 - job: build-system-fedora
127 MAKE_CHECK_ARGS: check
129 acceptance-system-fedora:
130 extends: .acceptance_test_job_template
132 - job: build-system-fedora
136 MAKE_CHECK_ARGS: check-acceptance
139 extends: .native_build_job_template
141 job: amd64-centos8-container
144 CONFIGURE_ARGS: --disable-nettle --enable-gcrypt --enable-fdt=system
145 --enable-modules --enable-trace-backends=dtrace
146 TARGETS: ppc64-softmmu or1k-softmmu s390x-softmmu
147 x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu
148 MAKE_CHECK_ARGS: check-build
155 extends: .native_test_job_template
157 - job: build-system-centos
161 MAKE_CHECK_ARGS: check
163 acceptance-system-centos:
164 extends: .acceptance_test_job_template
166 - job: build-system-centos
170 MAKE_CHECK_ARGS: check-acceptance
172 build-system-opensuse:
173 extends: .native_build_job_template
175 job: amd64-opensuse-leap-container
178 CONFIGURE_ARGS: --enable-fdt=system
179 TARGETS: s390x-softmmu x86_64-softmmu aarch64-softmmu
180 MAKE_CHECK_ARGS: check-build
186 check-system-opensuse:
187 extends: .native_test_job_template
189 - job: build-system-opensuse
193 MAKE_CHECK_ARGS: check
195 acceptance-system-opensuse:
196 extends: .acceptance_test_job_template
198 - job: build-system-opensuse
202 MAKE_CHECK_ARGS: check-acceptance
206 extends: .native_build_job_template
208 job: amd64-fedora-container
221 --disable-coroutine-pool
230 --disable-guest-agent
241 --disable-live-block-migration
243 --disable-malloc-trim
252 --disable-qom-cast-debug
255 --disable-replication
267 --disable-vhost-crypto
270 --disable-vhost-kernel
273 --disable-vhost-vsock
274 --disable-virglrenderer
280 TARGETS: arm-softmmu i386-softmmu ppc64-softmmu mips64-softmmu
281 s390x-softmmu i386-linux-user
282 MAKE_CHECK_ARGS: check-qtest SPEED=slow
284 # This jobs explicitly disable TCG (--disable-tcg), KVM is detected by
285 # the configure script. The container doesn't contain Xen headers so
286 # Xen accelerator is not detected / selected. As result it build the
287 # i386-softmmu and x86_64-softmmu with KVM being the single accelerator
289 # Also use a different coroutine implementation (which is only really of
290 # interest to KVM users, i.e. with TCG disabled)
292 extends: .native_build_job_template
294 job: amd64-centos8-container
300 - ../configure --disable-tcg --audio-drv-list="" --with-coroutine=ucontext
301 || { cat config.log meson-logs/meson-log.txt && exit 1; }
304 - make check-qapi-schema
305 - cd tests/qemu-iotests/
306 - ./check -raw 001 002 003 004 005 008 009 010 011 012 021 025 032 033 048
307 052 063 077 086 101 104 106 113 148 150 151 152 157 159 160 163
308 170 171 183 184 192 194 208 221 222 226 227 236 253 277
309 - ./check -qcow2 028 051 056 057 058 065 068 082 085 091 095 096 102 122
310 124 132 139 142 144 145 151 152 155 157 165 194 196 200 202
311 208 209 216 218 222 227 234 246 247 248 250 254 255 257 258
312 260 261 262 263 264 270 272 273 277 279
315 extends: .native_build_job_template
317 job: amd64-debian-user-cross-container
319 IMAGE: debian-all-test-cross
320 CONFIGURE_ARGS: --disable-tools --disable-system
321 MAKE_CHECK_ARGS: check-tcg
324 extends: .native_build_job_template
326 job: amd64-debian-user-cross-container
328 IMAGE: debian-all-test-cross
329 CONFIGURE_ARGS: --disable-tools --disable-system --static
330 MAKE_CHECK_ARGS: check-tcg
332 # Because the hexagon cross-compiler takes so long to build we don't rely
333 # on the CI system to build it and hence this job has an optional dependency
334 # declared. The image is manually uploaded.
336 extends: .native_build_job_template
338 job: hexagon-cross-container
341 IMAGE: debian-hexagon-cross
342 TARGETS: hexagon-linux-user
343 CONFIGURE_ARGS: --disable-tools --disable-docs --enable-debug-tcg
344 MAKE_CHECK_ARGS: check-tcg
346 # Only build the softmmu targets we have check-tcg tests for
348 extends: .native_build_job_template
350 job: amd64-debian-user-cross-container
352 IMAGE: debian-all-test-cross
353 CONFIGURE_ARGS: --disable-tools --enable-debug
354 TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu
355 MAKE_CHECK_ARGS: check-tcg
357 # We build tricore in a very minimal tricore only container
358 build-tricore-softmmu:
359 extends: .native_build_job_template
361 job: tricore-debian-cross-container
363 IMAGE: debian-tricore-cross
364 CONFIGURE_ARGS: --disable-tools --disable-fdt --enable-debug
365 TARGETS: tricore-softmmu
366 MAKE_CHECK_ARGS: check-tcg
369 extends: .native_build_job_template
371 job: amd64-fedora-container
374 CONFIGURE_ARGS: --cc=clang --cxx=clang++
375 --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
376 TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu
377 ppc-softmmu s390x-softmmu
378 MAKE_CHECK_ARGS: check-qtest check-tcg
381 extends: .native_build_job_template
383 job: amd64-debian-user-cross-container
385 IMAGE: debian-all-test-cross
386 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --disable-system
387 --target-list-exclude=microblazeel-linux-user,aarch64_be-linux-user,i386-linux-user,m68k-linux-user,mipsn32el-linux-user,xtensaeb-linux-user
388 --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
389 MAKE_CHECK_ARGS: check-unit check-tcg
391 # Set LD_JOBS=1 because this requires LTO and ld consumes a large amount of memory.
392 # On gitlab runners, default value sometimes end up calling 2 lds concurrently and
393 # triggers an Out-Of-Memory error
395 # Since slirp callbacks are used in QEMU Timers, slirp needs to be compiled together
396 # with QEMU and linked as a static library to avoid false positives in CFI checks.
397 # This can be accomplished by using -enable-slirp=git, which avoids the use of
398 # a system-wide version of the library
400 # Split in three sets of build/check/acceptance to limit the execution time of each
403 extends: .native_build_job_template
405 - job: amd64-fedora-container
410 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
411 --enable-safe-stack --enable-slirp=git
412 TARGETS: aarch64-softmmu
413 MAKE_CHECK_ARGS: check-build
420 # FIXME: This job is often failing, likely due to out-of-memory problems in
421 # the constrained containers of the shared runners. Thus this is marked as
422 # manual until the situation has been solved.
427 extends: .native_test_job_template
429 - job: build-cfi-aarch64
433 MAKE_CHECK_ARGS: check
435 acceptance-cfi-aarch64:
436 extends: .acceptance_test_job_template
438 - job: build-cfi-aarch64
442 MAKE_CHECK_ARGS: check-acceptance
444 build-cfi-ppc64-s390x:
445 extends: .native_build_job_template
447 - job: amd64-fedora-container
452 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
453 --enable-safe-stack --enable-slirp=git
454 TARGETS: ppc64-softmmu s390x-softmmu
455 MAKE_CHECK_ARGS: check-build
462 # FIXME: This job is often failing, likely due to out-of-memory problems in
463 # the constrained containers of the shared runners. Thus this is marked as
464 # manual until the situation has been solved.
468 check-cfi-ppc64-s390x:
469 extends: .native_test_job_template
471 - job: build-cfi-ppc64-s390x
475 MAKE_CHECK_ARGS: check
477 acceptance-cfi-ppc64-s390x:
478 extends: .acceptance_test_job_template
480 - job: build-cfi-ppc64-s390x
484 MAKE_CHECK_ARGS: check-acceptance
487 extends: .native_build_job_template
489 - job: amd64-fedora-container
494 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
495 --enable-safe-stack --enable-slirp=git
496 TARGETS: x86_64-softmmu
497 MAKE_CHECK_ARGS: check-build
505 extends: .native_test_job_template
507 - job: build-cfi-x86_64
511 MAKE_CHECK_ARGS: check
513 acceptance-cfi-x86_64:
514 extends: .acceptance_test_job_template
516 - job: build-cfi-x86_64
520 MAKE_CHECK_ARGS: check-acceptance
523 extends: .native_build_job_template
525 job: amd64-ubuntu2004-container
528 CONFIGURE_ARGS: --enable-tsan --cc=clang-10 --cxx=clang++-10
529 --enable-trace-backends=ust --enable-fdt=system --enable-slirp=system
530 TARGETS: x86_64-softmmu ppc64-softmmu riscv64-softmmu x86_64-linux-user
531 MAKE_CHECK_ARGS: bench V=1
533 # These targets are on the way out
535 extends: .native_build_job_template
537 job: amd64-debian-user-cross-container
539 IMAGE: debian-all-test-cross
540 CONFIGURE_ARGS: --disable-tools
541 MAKE_CHECK_ARGS: build-tcg
542 TARGETS: ppc64abi32-linux-user
548 # We split the check-tcg step as test failures are expected but we still
549 # want to catch the build breaking.
551 extends: .native_test_job_template
553 - job: build-deprecated
556 IMAGE: debian-all-test-cross
557 MAKE_CHECK_ARGS: check-tcg
560 # gprof/gcov are GCC features
562 extends: .native_build_job_template
564 job: amd64-ubuntu2004-container
567 CONFIGURE_ARGS: --enable-gprof --enable-gcov
568 TARGETS: aarch64-softmmu ppc64-softmmu s390x-softmmu x86_64-softmmu
575 extends: .native_test_job_template
577 - job: build-gprof-gcov
581 MAKE_CHECK_ARGS: check
583 - ${CI_PROJECT_DIR}/scripts/ci/coverage-summary.sh
586 extends: .native_build_job_template
588 job: amd64-fedora-container
592 - mkdir build-oss-fuzz
593 - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address"
594 ./scripts/oss-fuzz/build.sh
595 - export ASAN_OPTIONS="fast_unwind_on_malloc=0"
596 - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f
598 grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ;
599 echo Testing ${fuzzer} ... ;
600 "${fuzzer}" -runs=1 -seed=1 || exit 1 ;
602 # Unrelated to fuzzer: run some tests with -fsanitize=address
603 - cd build-oss-fuzz && make check-qtest-i386 check-unit
606 extends: .native_build_job_template
608 job: amd64-debian-user-cross-container
610 IMAGE: debian-all-test-cross
612 - TARGETS="aarch64 alpha arm hppa m68k microblaze ppc64 s390x x86_64"
615 - ../configure --enable-tcg-interpreter
616 --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)" || { cat config.log meson-logs/meson-log.txt && exit 1; }
618 - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
619 - for tg in $TARGETS ; do
620 export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
621 ./tests/qtest/boot-serial-test || exit 1 ;
622 ./tests/qtest/cdrom-test || exit 1 ;
624 - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
625 - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
628 # Alternate coroutines implementations are only really of interest to KVM users
629 # However we can't test against KVM on Gitlab-CI so we can only run unit tests
630 build-coroutine-sigaltstack:
631 extends: .native_build_job_template
633 job: amd64-ubuntu2004-container
636 CONFIGURE_ARGS: --with-coroutine=sigaltstack --disable-tcg
637 --enable-trace-backends=ftrace
638 MAKE_CHECK_ARGS: check-unit
640 # Check our reduced build configurations
641 build-without-default-devices:
642 extends: .native_build_job_template
644 job: amd64-centos8-container
647 CONFIGURE_ARGS: --without-default-devices --disable-user
649 build-without-default-features:
650 extends: .native_build_job_template
652 job: amd64-debian-container
655 CONFIGURE_ARGS: --without-default-features --disable-user
656 --target-list-exclude=arm-softmmu,i386-softmmu,mipsel-softmmu,mips64-softmmu,ppc-softmmu
657 MAKE_CHECK_ARGS: check-unit
661 image: $CI_REGISTRY_IMAGE/qemu/fedora:latest
663 job: amd64-fedora-container
665 - dnf install -y meson ninja-build
667 - mkdir subprojects/libvhost-user/build
668 - cd subprojects/libvhost-user/build
672 # No targets are built here, just tools, docs, and unit tests. This
673 # also feeds into the eventual documentation deployment steps later
674 build-tools-and-docs-debian:
675 extends: .native_build_job_template
677 job: amd64-debian-container
680 MAKE_CHECK_ARGS: check-unit check-softfloat ctags TAGS cscope
681 CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools
687 # Prepare for GitLab pages deployment. Anything copied into the
688 # "public" directory will be deployed to $USER.gitlab.io/$PROJECT
690 # GitLab publishes from any branch that triggers a CI pipeline
692 # For the main repo we don't want to publish from 'staging'
693 # since that content may not be pushed, nor do we wish to
694 # publish from 'stable-NNN' branches as that content is outdated.
695 # Thus we restrict to just the default branch
697 # For contributor forks we want to publish from any repo so
698 # that users can see the results of their commits, regardless
699 # of what topic branch they're currently using
701 image: $CI_REGISTRY_IMAGE/qemu/debian-amd64:latest
704 - job: build-tools-and-docs-debian
707 # HTML-ised source tree
709 - htags -anT --tree-view=filetree -m qemu_init
710 -t "Welcome to the QEMU sourcecode"
712 # Project documentation
713 - make -C build install DESTDIR=$(pwd)/temp-install
714 - mv temp-install/usr/local/share/doc/qemu/* public/
719 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
721 - if: '$CI_PROJECT_NAMESPACE == "qemu-project"'
723 - if: '$CI_PROJECT_NAMESPACE != "qemu-project"'