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-unit check-qtest
29 avocado-system-alpine:
30 extends: .avocado_test_job_template
32 - job: build-system-alpine
36 MAKE_CHECK_ARGS: check-avocado
39 extends: .native_build_job_template
41 job: amd64-ubuntu2004-container
44 CONFIGURE_ARGS: --enable-docs --enable-fdt=system --enable-capstone
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 avocado-system-ubuntu:
63 extends: .avocado_test_job_template
65 - job: build-system-ubuntu
69 MAKE_CHECK_ARGS: check-avocado
72 extends: .native_build_job_template
74 job: amd64-debian-container
77 TARGETS: arm-softmmu avr-softmmu i386-softmmu mipsel-softmmu
78 riscv64-softmmu sh4eb-softmmu sparc-softmmu xtensaeb-softmmu
79 MAKE_CHECK_ARGS: check-build
86 extends: .native_test_job_template
88 - job: build-system-debian
92 MAKE_CHECK_ARGS: check
94 avocado-system-debian:
95 extends: .avocado_test_job_template
97 - job: build-system-debian
101 MAKE_CHECK_ARGS: check-avocado
104 extends: .native_test_job_template
106 - job: build-system-debian
113 - tests/venv/bin/python3 scripts/device-crash-test -q ./qemu-system-i386
116 extends: .native_build_job_template
118 job: amd64-fedora-container
121 CONFIGURE_ARGS: --disable-gcrypt --enable-nettle --enable-docs
122 --enable-fdt=system --enable-slirp --enable-capstone
123 TARGETS: tricore-softmmu microblaze-softmmu mips-softmmu
124 xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
125 MAKE_CHECK_ARGS: check-build
132 extends: .native_test_job_template
134 - job: build-system-fedora
138 MAKE_CHECK_ARGS: check
140 avocado-system-fedora:
141 extends: .avocado_test_job_template
143 - job: build-system-fedora
147 MAKE_CHECK_ARGS: check-avocado
150 extends: .native_test_job_template
152 - job: build-system-fedora
159 - tests/venv/bin/python3 scripts/device-crash-test -q ./qemu-system-ppc
160 - tests/venv/bin/python3 scripts/device-crash-test -q ./qemu-system-riscv32
163 extends: .native_build_job_template
165 job: amd64-centos8-container
168 CONFIGURE_ARGS: --disable-nettle --enable-gcrypt --enable-fdt=system
169 --enable-modules --enable-trace-backends=dtrace --enable-docs
170 --enable-vfio-user-server
171 TARGETS: ppc64-softmmu or1k-softmmu s390x-softmmu
172 x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu
173 MAKE_CHECK_ARGS: check-build
180 extends: .native_test_job_template
182 - job: build-system-centos
186 MAKE_CHECK_ARGS: check
188 avocado-system-centos:
189 extends: .avocado_test_job_template
191 - job: build-system-centos
195 MAKE_CHECK_ARGS: check-avocado
197 build-system-opensuse:
198 extends: .native_build_job_template
200 job: amd64-opensuse-leap-container
203 CONFIGURE_ARGS: --enable-fdt=system
204 TARGETS: s390x-softmmu x86_64-softmmu aarch64-softmmu
205 MAKE_CHECK_ARGS: check-build
211 check-system-opensuse:
212 extends: .native_test_job_template
214 - job: build-system-opensuse
218 MAKE_CHECK_ARGS: check
220 avocado-system-opensuse:
221 extends: .avocado_test_job_template
223 - job: build-system-opensuse
227 MAKE_CHECK_ARGS: check-avocado
230 # This jobs explicitly disable TCG (--disable-tcg), KVM is detected by
231 # the configure script. The container doesn't contain Xen headers so
232 # Xen accelerator is not detected / selected. As result it build the
233 # i386-softmmu and x86_64-softmmu with KVM being the single accelerator
235 # Also use a different coroutine implementation (which is only really of
236 # interest to KVM users, i.e. with TCG disabled)
238 extends: .native_build_job_template
240 job: amd64-centos8-container
246 - ../configure --disable-tcg --audio-drv-list="" --with-coroutine=ucontext
247 || { cat config.log meson-logs/meson-log.txt && exit 1; }
250 - make check-qapi-schema
251 - cd tests/qemu-iotests/
252 - ./check -raw 001 002 003 004 005 008 009 010 011 012 021 025 032 033 048
253 052 063 077 086 101 104 106 113 148 150 151 152 157 159 160 163
254 170 171 183 184 192 194 208 221 226 227 236 253 277 image-fleecing
255 - ./check -qcow2 028 051 056 057 058 065 068 082 085 091 095 096 102 122
256 124 132 139 142 144 145 151 152 155 157 165 194 196 200 202
257 208 209 216 218 227 234 246 247 248 250 254 255 257 258
258 260 261 262 263 264 270 272 273 277 279 image-fleecing
261 extends: .native_build_job_template
263 job: amd64-debian-user-cross-container
265 IMAGE: debian-all-test-cross
266 CONFIGURE_ARGS: --disable-tools --disable-system
267 MAKE_CHECK_ARGS: check-tcg
270 extends: .native_build_job_template
272 job: amd64-debian-user-cross-container
274 IMAGE: debian-all-test-cross
275 CONFIGURE_ARGS: --disable-tools --disable-system --static
276 MAKE_CHECK_ARGS: check-tcg
278 # Because the hexagon cross-compiler takes so long to build we don't rely
279 # on the CI system to build it and hence this job has an optional dependency
280 # declared. The image is manually uploaded.
282 extends: .native_build_job_template
284 job: hexagon-cross-container
287 IMAGE: debian-hexagon-cross
288 TARGETS: hexagon-linux-user
289 CONFIGURE_ARGS: --disable-tools --disable-docs --enable-debug-tcg
290 MAKE_CHECK_ARGS: check-tcg
292 # Only build the softmmu targets we have check-tcg tests for
294 extends: .native_build_job_template
296 job: amd64-debian-user-cross-container
298 IMAGE: debian-all-test-cross
299 CONFIGURE_ARGS: --disable-tools --enable-debug
300 TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu
301 MAKE_CHECK_ARGS: check-tcg
303 # We build tricore in a very minimal tricore only container
304 build-tricore-softmmu:
305 extends: .native_build_job_template
307 job: tricore-debian-cross-container
309 IMAGE: debian-tricore-cross
310 CONFIGURE_ARGS: --disable-tools --disable-fdt --enable-debug
311 TARGETS: tricore-softmmu
312 MAKE_CHECK_ARGS: check-tcg
315 extends: .native_build_job_template
317 job: amd64-fedora-container
320 CONFIGURE_ARGS: --cc=clang --cxx=clang++
321 --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
322 TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu
323 ppc-softmmu s390x-softmmu
324 MAKE_CHECK_ARGS: check-qtest check-tcg
327 extends: .native_build_job_template
329 job: amd64-debian-user-cross-container
332 IMAGE: debian-all-test-cross
333 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --disable-system
334 --target-list-exclude=microblazeel-linux-user,aarch64_be-linux-user,i386-linux-user,m68k-linux-user,mipsn32el-linux-user,xtensaeb-linux-user
335 --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
336 MAKE_CHECK_ARGS: check-unit check-tcg
338 # Set LD_JOBS=1 because this requires LTO and ld consumes a large amount of memory.
339 # On gitlab runners, default value sometimes end up calling 2 lds concurrently and
340 # triggers an Out-Of-Memory error
342 # Since slirp callbacks are used in QEMU Timers, we cannot use libslirp with
343 # CFI builds, and thus have to disable it here.
345 # Split in three sets of build/check/avocado to limit the execution time of each
348 extends: .native_build_job_template
350 - job: amd64-fedora-container
355 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
356 --enable-safe-stack --disable-slirp
357 TARGETS: aarch64-softmmu
358 MAKE_CHECK_ARGS: check-build
359 # FIXME: This job is often failing, likely due to out-of-memory problems in
360 # the constrained containers of the shared runners. Thus this is marked as
361 # skipped until the situation has been solved.
370 extends: .native_test_job_template
372 - job: build-cfi-aarch64
376 MAKE_CHECK_ARGS: check
379 extends: .avocado_test_job_template
381 - job: build-cfi-aarch64
385 MAKE_CHECK_ARGS: check-avocado
387 build-cfi-ppc64-s390x:
388 extends: .native_build_job_template
390 - job: amd64-fedora-container
395 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
396 --enable-safe-stack --disable-slirp
397 TARGETS: ppc64-softmmu s390x-softmmu
398 MAKE_CHECK_ARGS: check-build
399 # FIXME: This job is often failing, likely due to out-of-memory problems in
400 # the constrained containers of the shared runners. Thus this is marked as
401 # skipped until the situation has been solved.
409 check-cfi-ppc64-s390x:
410 extends: .native_test_job_template
412 - job: build-cfi-ppc64-s390x
416 MAKE_CHECK_ARGS: check
418 avocado-cfi-ppc64-s390x:
419 extends: .avocado_test_job_template
421 - job: build-cfi-ppc64-s390x
425 MAKE_CHECK_ARGS: check-avocado
428 extends: .native_build_job_template
430 - job: amd64-fedora-container
435 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
436 --enable-safe-stack --disable-slirp
437 TARGETS: x86_64-softmmu
438 MAKE_CHECK_ARGS: check-build
446 extends: .native_test_job_template
448 - job: build-cfi-x86_64
452 MAKE_CHECK_ARGS: check
455 extends: .avocado_test_job_template
457 - job: build-cfi-x86_64
461 MAKE_CHECK_ARGS: check-avocado
464 extends: .native_build_job_template
466 job: amd64-ubuntu2004-container
469 CONFIGURE_ARGS: --enable-tsan --cc=clang-10 --cxx=clang++-10
470 --enable-trace-backends=ust --enable-fdt=system --disable-slirp
471 TARGETS: x86_64-softmmu ppc64-softmmu riscv64-softmmu x86_64-linux-user
472 MAKE_CHECK_ARGS: bench V=1
474 # gprof/gcov are GCC features
476 extends: .native_build_job_template
478 job: amd64-ubuntu2004-container
481 CONFIGURE_ARGS: --enable-gprof --enable-gcov
482 TARGETS: aarch64-softmmu ppc64-softmmu s390x-softmmu x86_64-softmmu
489 extends: .native_test_job_template
491 - job: build-gprof-gcov
495 MAKE_CHECK_ARGS: check
498 - gcovr --xml-pretty --exclude-unreachable-branches --print-summary
499 -o coverage.xml --root ${CI_PROJECT_DIR} . *.p
500 coverage: /^\s*lines:\s*\d+.\d+\%/
502 name: ${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}
506 coverage_format: cobertura
507 path: build/coverage.xml
510 extends: .native_build_job_template
512 job: amd64-fedora-container
516 - mkdir build-oss-fuzz
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 alpha arm hppa m68k microblaze ppc64 s390x x86_64"
537 - ../configure --enable-tcg-interpreter
538 --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)" || { cat config.log meson-logs/meson-log.txt && exit 1; }
540 - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
541 - for tg in $TARGETS ; do
542 export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
543 ./tests/qtest/boot-serial-test || exit 1 ;
544 ./tests/qtest/cdrom-test || exit 1 ;
546 - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
547 - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
550 # Alternate coroutines implementations are only really of interest to KVM users
551 # However we can't test against KVM on Gitlab-CI so we can only run unit tests
552 build-coroutine-sigaltstack:
553 extends: .native_build_job_template
555 job: amd64-ubuntu2004-container
558 CONFIGURE_ARGS: --with-coroutine=sigaltstack --disable-tcg
559 --enable-trace-backends=ftrace
560 MAKE_CHECK_ARGS: check-unit
562 # Check our reduced build configurations
563 build-without-default-devices:
564 extends: .native_build_job_template
566 job: amd64-centos8-container
569 CONFIGURE_ARGS: --without-default-devices --disable-user
571 build-without-default-features:
572 extends: .native_build_job_template
574 job: amd64-fedora-container
578 --without-default-features
581 --disable-qom-cast-debug
583 TARGETS: avr-softmmu i386-softmmu mips64-softmmu s390x-softmmu sh4-softmmu
584 sparc64-softmmu hexagon-linux-user i386-linux-user s390x-linux-user
585 MAKE_CHECK_ARGS: check-unit check-qtest SPEED=slow
588 extends: .base_job_template
590 image: $CI_REGISTRY_IMAGE/qemu/fedora:latest
592 job: amd64-fedora-container
594 - mkdir subprojects/libvhost-user/build
595 - cd subprojects/libvhost-user/build
599 # No targets are built here, just tools, docs, and unit tests. This
600 # also feeds into the eventual documentation deployment steps later
601 build-tools-and-docs-debian:
602 extends: .native_build_job_template
604 job: amd64-debian-container
605 # when running on 'master' we use pre-existing container
609 MAKE_CHECK_ARGS: check-unit ctags TAGS cscope
610 CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools
617 # Prepare for GitLab pages deployment. Anything copied into the
618 # "public" directory will be deployed to $USER.gitlab.io/$PROJECT
620 # GitLab publishes from any branch that triggers a CI pipeline
622 # For the main repo we don't want to publish from 'staging'
623 # since that content may not be pushed, nor do we wish to
624 # publish from 'stable-NNN' branches as that content is outdated.
625 # Thus we restrict to just the default branch
627 # For contributor forks we want to publish from any repo so
628 # that users can see the results of their commits, regardless
629 # of what topic branch they're currently using
631 extends: .base_job_template
632 image: $CI_REGISTRY_IMAGE/qemu/debian-amd64:latest
635 - job: build-tools-and-docs-debian
638 # HTML-ised source tree
640 - htags -anT --tree-view=filetree -m qemu_init
641 -t "Welcome to the QEMU sourcecode"
643 # Project documentation
644 - make -C build install DESTDIR=$(pwd)/temp-install
645 - mv temp-install/usr/local/share/doc/qemu/* public/