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
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, we cannot use libslirp with
342 # CFI builds, and thus have to disable it here.
344 # Split in three sets of build/check/avocado to limit the execution time of each
347 extends: .native_build_job_template
349 - job: amd64-fedora-container
354 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
355 --enable-safe-stack --disable-slirp
356 TARGETS: aarch64-softmmu
357 MAKE_CHECK_ARGS: check-build
358 # FIXME: This job is often failing, likely due to out-of-memory problems in
359 # the constrained containers of the shared runners. Thus this is marked as
360 # skipped until the situation has been solved.
369 extends: .native_test_job_template
371 - job: build-cfi-aarch64
375 MAKE_CHECK_ARGS: check
378 extends: .avocado_test_job_template
380 - job: build-cfi-aarch64
384 MAKE_CHECK_ARGS: check-avocado
386 build-cfi-ppc64-s390x:
387 extends: .native_build_job_template
389 - job: amd64-fedora-container
394 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
395 --enable-safe-stack --disable-slirp
396 TARGETS: ppc64-softmmu s390x-softmmu
397 MAKE_CHECK_ARGS: check-build
398 # FIXME: This job is often failing, likely due to out-of-memory problems in
399 # the constrained containers of the shared runners. Thus this is marked as
400 # skipped until the situation has been solved.
408 check-cfi-ppc64-s390x:
409 extends: .native_test_job_template
411 - job: build-cfi-ppc64-s390x
415 MAKE_CHECK_ARGS: check
417 avocado-cfi-ppc64-s390x:
418 extends: .avocado_test_job_template
420 - job: build-cfi-ppc64-s390x
424 MAKE_CHECK_ARGS: check-avocado
427 extends: .native_build_job_template
429 - job: amd64-fedora-container
434 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
435 --enable-safe-stack --disable-slirp
436 TARGETS: x86_64-softmmu
437 MAKE_CHECK_ARGS: check-build
445 extends: .native_test_job_template
447 - job: build-cfi-x86_64
451 MAKE_CHECK_ARGS: check
454 extends: .avocado_test_job_template
456 - job: build-cfi-x86_64
460 MAKE_CHECK_ARGS: check-avocado
463 extends: .native_build_job_template
465 job: amd64-ubuntu2004-container
468 CONFIGURE_ARGS: --enable-tsan --cc=clang-10 --cxx=clang++-10
469 --enable-trace-backends=ust --enable-fdt=system --disable-slirp
470 TARGETS: x86_64-softmmu ppc64-softmmu riscv64-softmmu x86_64-linux-user
471 MAKE_CHECK_ARGS: bench V=1
473 # gprof/gcov are GCC features
475 extends: .native_build_job_template
477 job: amd64-ubuntu2004-container
480 CONFIGURE_ARGS: --enable-gprof --enable-gcov
481 TARGETS: aarch64-softmmu ppc64-softmmu s390x-softmmu x86_64-softmmu
488 extends: .native_test_job_template
490 - job: build-gprof-gcov
494 MAKE_CHECK_ARGS: check
496 - ${CI_PROJECT_DIR}/scripts/ci/coverage-summary.sh
499 extends: .native_build_job_template
501 job: amd64-fedora-container
505 - mkdir build-oss-fuzz
506 - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address"
507 ./scripts/oss-fuzz/build.sh
508 - export ASAN_OPTIONS="fast_unwind_on_malloc=0"
509 - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f
511 grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ;
512 echo Testing ${fuzzer} ... ;
513 "${fuzzer}" -runs=1 -seed=1 || exit 1 ;
517 extends: .native_build_job_template
519 job: amd64-debian-user-cross-container
521 IMAGE: debian-all-test-cross
523 - TARGETS="aarch64 alpha arm hppa m68k microblaze ppc64 s390x x86_64"
526 - ../configure --enable-tcg-interpreter
527 --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)" || { cat config.log meson-logs/meson-log.txt && exit 1; }
529 - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
530 - for tg in $TARGETS ; do
531 export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
532 ./tests/qtest/boot-serial-test || exit 1 ;
533 ./tests/qtest/cdrom-test || exit 1 ;
535 - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
536 - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
539 # Alternate coroutines implementations are only really of interest to KVM users
540 # However we can't test against KVM on Gitlab-CI so we can only run unit tests
541 build-coroutine-sigaltstack:
542 extends: .native_build_job_template
544 job: amd64-ubuntu2004-container
547 CONFIGURE_ARGS: --with-coroutine=sigaltstack --disable-tcg
548 --enable-trace-backends=ftrace
549 MAKE_CHECK_ARGS: check-unit
551 # Check our reduced build configurations
552 build-without-default-devices:
553 extends: .native_build_job_template
555 job: amd64-centos8-container
558 CONFIGURE_ARGS: --without-default-devices --disable-user
560 build-without-default-features:
561 extends: .native_build_job_template
563 job: amd64-fedora-container
567 --without-default-features
570 --disable-qom-cast-debug
572 TARGETS: avr-softmmu i386-softmmu mips64-softmmu s390x-softmmu sh4-softmmu
573 sparc64-softmmu hexagon-linux-user i386-linux-user s390x-linux-user
574 MAKE_CHECK_ARGS: check-unit check-qtest SPEED=slow
577 extends: .base_job_template
579 image: $CI_REGISTRY_IMAGE/qemu/fedora:latest
581 job: amd64-fedora-container
583 - mkdir subprojects/libvhost-user/build
584 - cd subprojects/libvhost-user/build
588 # No targets are built here, just tools, docs, and unit tests. This
589 # also feeds into the eventual documentation deployment steps later
590 build-tools-and-docs-debian:
591 extends: .native_build_job_template
593 job: amd64-debian-container
594 # when running on 'master' we use pre-existing container
598 MAKE_CHECK_ARGS: check-unit ctags TAGS cscope
599 CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools
606 # Prepare for GitLab pages deployment. Anything copied into the
607 # "public" directory will be deployed to $USER.gitlab.io/$PROJECT
609 # GitLab publishes from any branch that triggers a CI pipeline
611 # For the main repo we don't want to publish from 'staging'
612 # since that content may not be pushed, nor do we wish to
613 # publish from 'stable-NNN' branches as that content is outdated.
614 # Thus we restrict to just the default branch
616 # For contributor forks we want to publish from any repo so
617 # that users can see the results of their commits, regardless
618 # of what topic branch they're currently using
620 extends: .base_job_template
621 image: $CI_REGISTRY_IMAGE/qemu/debian-amd64:latest
624 - job: build-tools-and-docs-debian
627 # HTML-ised source tree
629 - htags -anT --tree-view=filetree -m qemu_init
630 -t "Welcome to the QEMU sourcecode"
632 # Project documentation
633 - make -C build install DESTDIR=$(pwd)/temp-install
634 - mv temp-install/usr/local/share/doc/qemu/* public/