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-slirp=system
46 TARGETS: aarch64-softmmu alpha-softmmu cris-softmmu hppa-softmmu
47 microblazeel-softmmu mips64el-softmmu
48 MAKE_CHECK_ARGS: check-build
55 extends: .native_test_job_template
57 - job: build-system-ubuntu
61 MAKE_CHECK_ARGS: check
63 avocado-system-ubuntu:
64 extends: .avocado_test_job_template
66 - job: build-system-ubuntu
70 MAKE_CHECK_ARGS: check-avocado
73 extends: .native_build_job_template
75 job: amd64-debian-container
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 avocado-system-debian:
96 extends: .avocado_test_job_template
98 - job: build-system-debian
102 MAKE_CHECK_ARGS: check-avocado
105 extends: .native_test_job_template
107 - job: build-system-debian
114 - tests/venv/bin/python3 scripts/device-crash-test -q ./qemu-system-i386
117 extends: .native_build_job_template
119 job: amd64-fedora-container
122 CONFIGURE_ARGS: --disable-gcrypt --enable-nettle --enable-docs
123 --enable-fdt=system --enable-slirp=system --enable-capstone
124 TARGETS: tricore-softmmu microblaze-softmmu mips-softmmu
125 xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
126 MAKE_CHECK_ARGS: check-build
133 extends: .native_test_job_template
135 - job: build-system-fedora
139 MAKE_CHECK_ARGS: check
141 avocado-system-fedora:
142 extends: .avocado_test_job_template
144 - job: build-system-fedora
148 MAKE_CHECK_ARGS: check-avocado
151 extends: .native_test_job_template
153 - job: build-system-fedora
160 - tests/venv/bin/python3 scripts/device-crash-test -q ./qemu-system-ppc
161 - tests/venv/bin/python3 scripts/device-crash-test -q ./qemu-system-riscv32
164 extends: .native_build_job_template
166 job: amd64-centos8-container
169 CONFIGURE_ARGS: --disable-nettle --enable-gcrypt --enable-fdt=system
170 --enable-modules --enable-trace-backends=dtrace --enable-docs
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
331 IMAGE: debian-all-test-cross
332 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --disable-system
333 --target-list-exclude=microblazeel-linux-user,aarch64_be-linux-user,i386-linux-user,m68k-linux-user,mipsn32el-linux-user,xtensaeb-linux-user
334 --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
335 MAKE_CHECK_ARGS: check-unit check-tcg
337 # Set LD_JOBS=1 because this requires LTO and ld consumes a large amount of memory.
338 # On gitlab runners, default value sometimes end up calling 2 lds concurrently and
339 # triggers an Out-Of-Memory error
341 # Since slirp callbacks are used in QEMU Timers, slirp needs to be compiled together
342 # with QEMU and linked as a static library to avoid false positives in CFI checks.
343 # This can be accomplished by using -enable-slirp=git, which avoids the use of
344 # a system-wide version of the library
346 # Split in three sets of build/check/avocado to limit the execution time of each
349 extends: .native_build_job_template
351 - job: amd64-fedora-container
356 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
357 --enable-safe-stack --enable-slirp=git
358 TARGETS: aarch64-softmmu
359 MAKE_CHECK_ARGS: check-build
366 # FIXME: This job is often failing, likely due to out-of-memory problems in
367 # the constrained containers of the shared runners. Thus this is marked as
368 # skipped until the situation has been solved.
372 extends: .native_test_job_template
374 - job: build-cfi-aarch64
378 MAKE_CHECK_ARGS: check
381 extends: .avocado_test_job_template
383 - job: build-cfi-aarch64
387 MAKE_CHECK_ARGS: check-avocado
389 build-cfi-ppc64-s390x:
390 extends: .native_build_job_template
392 - job: amd64-fedora-container
397 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
398 --enable-safe-stack --enable-slirp=git
399 TARGETS: ppc64-softmmu s390x-softmmu
400 MAKE_CHECK_ARGS: check-build
407 # FIXME: This job is often failing, likely due to out-of-memory problems in
408 # the constrained containers of the shared runners. Thus this is marked as
409 # skipped until the situation has been solved.
412 check-cfi-ppc64-s390x:
413 extends: .native_test_job_template
415 - job: build-cfi-ppc64-s390x
419 MAKE_CHECK_ARGS: check
421 avocado-cfi-ppc64-s390x:
422 extends: .avocado_test_job_template
424 - job: build-cfi-ppc64-s390x
428 MAKE_CHECK_ARGS: check-avocado
431 extends: .native_build_job_template
433 - job: amd64-fedora-container
438 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
439 --enable-safe-stack --enable-slirp=git
440 TARGETS: x86_64-softmmu
441 MAKE_CHECK_ARGS: check-build
449 extends: .native_test_job_template
451 - job: build-cfi-x86_64
455 MAKE_CHECK_ARGS: check
458 extends: .avocado_test_job_template
460 - job: build-cfi-x86_64
464 MAKE_CHECK_ARGS: check-avocado
467 extends: .native_build_job_template
469 job: amd64-ubuntu2004-container
472 CONFIGURE_ARGS: --enable-tsan --cc=clang-10 --cxx=clang++-10
473 --enable-trace-backends=ust --enable-fdt=system --enable-slirp=system
474 TARGETS: x86_64-softmmu ppc64-softmmu riscv64-softmmu x86_64-linux-user
475 MAKE_CHECK_ARGS: bench V=1
477 # gprof/gcov are GCC features
479 extends: .native_build_job_template
481 job: amd64-ubuntu2004-container
484 CONFIGURE_ARGS: --enable-gprof --enable-gcov
485 TARGETS: aarch64-softmmu ppc64-softmmu s390x-softmmu x86_64-softmmu
492 extends: .native_test_job_template
494 - job: build-gprof-gcov
498 MAKE_CHECK_ARGS: check
500 - ${CI_PROJECT_DIR}/scripts/ci/coverage-summary.sh
503 extends: .native_build_job_template
505 job: amd64-fedora-container
509 - mkdir build-oss-fuzz
510 - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address"
511 ./scripts/oss-fuzz/build.sh
512 - export ASAN_OPTIONS="fast_unwind_on_malloc=0"
513 - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f
515 grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ;
516 echo Testing ${fuzzer} ... ;
517 "${fuzzer}" -runs=1 -seed=1 || exit 1 ;
521 extends: .native_build_job_template
523 job: amd64-debian-user-cross-container
525 IMAGE: debian-all-test-cross
527 - TARGETS="aarch64 alpha arm hppa m68k microblaze ppc64 s390x x86_64"
530 - ../configure --enable-tcg-interpreter
531 --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)" || { cat config.log meson-logs/meson-log.txt && exit 1; }
533 - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
534 - for tg in $TARGETS ; do
535 export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
536 ./tests/qtest/boot-serial-test || exit 1 ;
537 ./tests/qtest/cdrom-test || exit 1 ;
539 - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
540 - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
543 # Alternate coroutines implementations are only really of interest to KVM users
544 # However we can't test against KVM on Gitlab-CI so we can only run unit tests
545 build-coroutine-sigaltstack:
546 extends: .native_build_job_template
548 job: amd64-ubuntu2004-container
551 CONFIGURE_ARGS: --with-coroutine=sigaltstack --disable-tcg
552 --enable-trace-backends=ftrace
553 MAKE_CHECK_ARGS: check-unit
555 # Check our reduced build configurations
556 build-without-default-devices:
557 extends: .native_build_job_template
559 job: amd64-centos8-container
562 CONFIGURE_ARGS: --without-default-devices --disable-user
564 build-without-default-features:
565 extends: .native_build_job_template
567 job: amd64-fedora-container
571 --without-default-features
574 --disable-qom-cast-debug
577 TARGETS: avr-softmmu i386-softmmu mips64-softmmu s390x-softmmu sh4-softmmu
578 sparc64-softmmu hexagon-linux-user i386-linux-user s390x-linux-user
579 MAKE_CHECK_ARGS: check-unit check-qtest SPEED=slow
582 extends: .base_job_template
584 image: $CI_REGISTRY_IMAGE/qemu/fedora:latest
586 job: amd64-fedora-container
588 - mkdir subprojects/libvhost-user/build
589 - cd subprojects/libvhost-user/build
593 # No targets are built here, just tools, docs, and unit tests. This
594 # also feeds into the eventual documentation deployment steps later
595 build-tools-and-docs-debian:
596 extends: .native_build_job_template
598 job: amd64-debian-container
599 # when running on 'master' we use pre-existing container
603 MAKE_CHECK_ARGS: check-unit check-softfloat ctags TAGS cscope
604 CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools
611 # Prepare for GitLab pages deployment. Anything copied into the
612 # "public" directory will be deployed to $USER.gitlab.io/$PROJECT
614 # GitLab publishes from any branch that triggers a CI pipeline
616 # For the main repo we don't want to publish from 'staging'
617 # since that content may not be pushed, nor do we wish to
618 # publish from 'stable-NNN' branches as that content is outdated.
619 # Thus we restrict to just the default branch
621 # For contributor forks we want to publish from any repo so
622 # that users can see the results of their commits, regardless
623 # of what topic branch they're currently using
625 extends: .base_job_template
626 image: $CI_REGISTRY_IMAGE/qemu/debian-amd64:latest
629 - job: build-tools-and-docs-debian
632 # HTML-ised source tree
634 - htags -anT --tree-view=filetree -m qemu_init
635 -t "Welcome to the QEMU sourcecode"
637 # Project documentation
638 - make -C build install DESTDIR=$(pwd)/temp-install
639 - mv temp-install/usr/local/share/doc/qemu/* public/