]> git.proxmox.com Git - mirror_qemu.git/blob - .gitlab-ci.d/buildtest.yml
hw/mips/Kconfig: Track Malta's PIIX dependencies via Kconfig
[mirror_qemu.git] / .gitlab-ci.d / buildtest.yml
1 include:
2 - local: '/.gitlab-ci.d/buildtest-template.yml'
3
4 build-system-alpine:
5 extends: .native_build_job_template
6 needs:
7 - job: amd64-alpine-container
8 variables:
9 IMAGE: alpine
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
14 artifacts:
15 expire_in: 2 days
16 paths:
17 - .git-submodule-status
18 - build
19
20 check-system-alpine:
21 extends: .native_test_job_template
22 needs:
23 - job: build-system-alpine
24 artifacts: true
25 variables:
26 IMAGE: alpine
27 MAKE_CHECK_ARGS: check-unit check-qtest
28
29 avocado-system-alpine:
30 extends: .avocado_test_job_template
31 needs:
32 - job: build-system-alpine
33 artifacts: true
34 variables:
35 IMAGE: alpine
36 MAKE_CHECK_ARGS: check-avocado
37
38 build-system-ubuntu:
39 extends: .native_build_job_template
40 needs:
41 job: amd64-ubuntu2004-container
42 variables:
43 IMAGE: ubuntu2004
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
48 artifacts:
49 expire_in: 2 days
50 paths:
51 - build
52
53 check-system-ubuntu:
54 extends: .native_test_job_template
55 needs:
56 - job: build-system-ubuntu
57 artifacts: true
58 variables:
59 IMAGE: ubuntu2004
60 MAKE_CHECK_ARGS: check
61
62 avocado-system-ubuntu:
63 extends: .avocado_test_job_template
64 needs:
65 - job: build-system-ubuntu
66 artifacts: true
67 variables:
68 IMAGE: ubuntu2004
69 MAKE_CHECK_ARGS: check-avocado
70
71 build-system-debian:
72 extends: .native_build_job_template
73 needs:
74 job: amd64-debian-container
75 variables:
76 IMAGE: debian-amd64
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
80 artifacts:
81 expire_in: 2 days
82 paths:
83 - build
84
85 check-system-debian:
86 extends: .native_test_job_template
87 needs:
88 - job: build-system-debian
89 artifacts: true
90 variables:
91 IMAGE: debian-amd64
92 MAKE_CHECK_ARGS: check
93
94 avocado-system-debian:
95 extends: .avocado_test_job_template
96 needs:
97 - job: build-system-debian
98 artifacts: true
99 variables:
100 IMAGE: debian-amd64
101 MAKE_CHECK_ARGS: check-avocado
102
103 crash-test-debian:
104 extends: .native_test_job_template
105 needs:
106 - job: build-system-debian
107 artifacts: true
108 variables:
109 IMAGE: debian-amd64
110 script:
111 - cd build
112 - make check-venv
113 - tests/venv/bin/python3 scripts/device-crash-test -q ./qemu-system-i386
114
115 build-system-fedora:
116 extends: .native_build_job_template
117 needs:
118 job: amd64-fedora-container
119 variables:
120 IMAGE: fedora
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
126 artifacts:
127 expire_in: 2 days
128 paths:
129 - build
130
131 check-system-fedora:
132 extends: .native_test_job_template
133 needs:
134 - job: build-system-fedora
135 artifacts: true
136 variables:
137 IMAGE: fedora
138 MAKE_CHECK_ARGS: check
139
140 avocado-system-fedora:
141 extends: .avocado_test_job_template
142 needs:
143 - job: build-system-fedora
144 artifacts: true
145 variables:
146 IMAGE: fedora
147 MAKE_CHECK_ARGS: check-avocado
148
149 crash-test-fedora:
150 extends: .native_test_job_template
151 needs:
152 - job: build-system-fedora
153 artifacts: true
154 variables:
155 IMAGE: fedora
156 script:
157 - cd build
158 - make check-venv
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
161
162 build-system-centos:
163 extends: .native_build_job_template
164 needs:
165 job: amd64-centos8-container
166 variables:
167 IMAGE: centos8
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
174 artifacts:
175 expire_in: 2 days
176 paths:
177 - build
178
179 check-system-centos:
180 extends: .native_test_job_template
181 needs:
182 - job: build-system-centos
183 artifacts: true
184 variables:
185 IMAGE: centos8
186 MAKE_CHECK_ARGS: check
187
188 avocado-system-centos:
189 extends: .avocado_test_job_template
190 needs:
191 - job: build-system-centos
192 artifacts: true
193 variables:
194 IMAGE: centos8
195 MAKE_CHECK_ARGS: check-avocado
196
197 build-system-opensuse:
198 extends: .native_build_job_template
199 needs:
200 job: amd64-opensuse-leap-container
201 variables:
202 IMAGE: opensuse-leap
203 CONFIGURE_ARGS: --enable-fdt=system
204 TARGETS: s390x-softmmu x86_64-softmmu aarch64-softmmu
205 MAKE_CHECK_ARGS: check-build
206 artifacts:
207 expire_in: 2 days
208 paths:
209 - build
210
211 check-system-opensuse:
212 extends: .native_test_job_template
213 needs:
214 - job: build-system-opensuse
215 artifacts: true
216 variables:
217 IMAGE: opensuse-leap
218 MAKE_CHECK_ARGS: check
219
220 avocado-system-opensuse:
221 extends: .avocado_test_job_template
222 needs:
223 - job: build-system-opensuse
224 artifacts: true
225 variables:
226 IMAGE: opensuse-leap
227 MAKE_CHECK_ARGS: check-avocado
228
229
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
234 # available.
235 # Also use a different coroutine implementation (which is only really of
236 # interest to KVM users, i.e. with TCG disabled)
237 build-tcg-disabled:
238 extends: .native_build_job_template
239 needs:
240 job: amd64-centos8-container
241 variables:
242 IMAGE: centos8
243 script:
244 - mkdir build
245 - cd build
246 - ../configure --disable-tcg --audio-drv-list="" --with-coroutine=ucontext
247 --disable-docs --disable-sdl --disable-gtk --disable-vnc
248 || { cat config.log meson-logs/meson-log.txt && exit 1; }
249 - make -j"$JOBS"
250 - make check-unit
251 - make check-qapi-schema
252 - cd tests/qemu-iotests/
253 - ./check -raw 001 002 003 004 005 008 009 010 011 012 021 025 032 033 048
254 052 063 077 086 101 104 106 113 148 150 151 152 157 159 160 163
255 170 171 183 184 192 194 208 221 226 227 236 253 277 image-fleecing
256 - ./check -qcow2 028 051 056 057 058 065 068 082 085 091 095 096 102 122
257 124 132 139 142 144 145 151 152 155 157 165 194 196 200 202
258 208 209 216 218 227 234 246 247 248 250 254 255 257 258
259 260 261 262 263 264 270 272 273 277 279 image-fleecing
260
261 build-user:
262 extends: .native_build_job_template
263 needs:
264 job: amd64-debian-user-cross-container
265 variables:
266 IMAGE: debian-all-test-cross
267 CONFIGURE_ARGS: --disable-tools --disable-system
268 MAKE_CHECK_ARGS: check-tcg
269
270 build-user-static:
271 extends: .native_build_job_template
272 needs:
273 job: amd64-debian-user-cross-container
274 variables:
275 IMAGE: debian-all-test-cross
276 CONFIGURE_ARGS: --disable-tools --disable-system --static
277 MAKE_CHECK_ARGS: check-tcg
278
279 build-user-hexagon:
280 extends: .native_build_job_template
281 needs:
282 job: hexagon-cross-container
283 variables:
284 IMAGE: debian-hexagon-cross
285 TARGETS: hexagon-linux-user
286 CONFIGURE_ARGS: --disable-tools --disable-docs --enable-debug-tcg
287 MAKE_CHECK_ARGS: check-tcg
288
289 # Only build the softmmu targets we have check-tcg tests for
290 build-some-softmmu:
291 extends: .native_build_job_template
292 needs:
293 job: amd64-debian-user-cross-container
294 variables:
295 IMAGE: debian-all-test-cross
296 CONFIGURE_ARGS: --disable-tools --enable-debug
297 TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu
298 MAKE_CHECK_ARGS: check-tcg
299
300 # We build tricore in a very minimal tricore only container
301 build-tricore-softmmu:
302 extends: .native_build_job_template
303 needs:
304 job: tricore-debian-cross-container
305 variables:
306 IMAGE: debian-tricore-cross
307 CONFIGURE_ARGS: --disable-tools --disable-fdt --enable-debug
308 TARGETS: tricore-softmmu
309 MAKE_CHECK_ARGS: check-tcg
310
311 clang-system:
312 extends: .native_build_job_template
313 needs:
314 job: amd64-fedora-container
315 variables:
316 IMAGE: fedora
317 CONFIGURE_ARGS: --cc=clang --cxx=clang++
318 --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
319 TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu
320 ppc-softmmu s390x-softmmu
321 MAKE_CHECK_ARGS: check-qtest check-tcg
322
323 clang-user:
324 extends: .native_build_job_template
325 needs:
326 job: amd64-debian-user-cross-container
327 timeout: 70m
328 variables:
329 IMAGE: debian-all-test-cross
330 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --disable-system
331 --target-list-exclude=microblazeel-linux-user,aarch64_be-linux-user,i386-linux-user,m68k-linux-user,mipsn32el-linux-user,xtensaeb-linux-user
332 --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
333 MAKE_CHECK_ARGS: check-unit check-tcg
334
335 # Set LD_JOBS=1 because this requires LTO and ld consumes a large amount of memory.
336 # On gitlab runners, default value sometimes end up calling 2 lds concurrently and
337 # triggers an Out-Of-Memory error
338 #
339 # Since slirp callbacks are used in QEMU Timers, we cannot use libslirp with
340 # CFI builds, and thus have to disable it here.
341 #
342 # Split in three sets of build/check/avocado to limit the execution time of each
343 # job
344 build-cfi-aarch64:
345 extends: .native_build_job_template
346 needs:
347 - job: amd64-fedora-container
348 variables:
349 LD_JOBS: 1
350 AR: llvm-ar
351 IMAGE: fedora
352 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
353 --enable-safe-stack --disable-slirp
354 TARGETS: aarch64-softmmu
355 MAKE_CHECK_ARGS: check-build
356 # FIXME: This job is often failing, likely due to out-of-memory problems in
357 # the constrained containers of the shared runners. Thus this is marked as
358 # skipped until the situation has been solved.
359 QEMU_JOB_SKIPPED: 1
360 timeout: 90m
361 artifacts:
362 expire_in: 2 days
363 paths:
364 - build
365
366 check-cfi-aarch64:
367 extends: .native_test_job_template
368 needs:
369 - job: build-cfi-aarch64
370 artifacts: true
371 variables:
372 IMAGE: fedora
373 MAKE_CHECK_ARGS: check
374
375 avocado-cfi-aarch64:
376 extends: .avocado_test_job_template
377 needs:
378 - job: build-cfi-aarch64
379 artifacts: true
380 variables:
381 IMAGE: fedora
382 MAKE_CHECK_ARGS: check-avocado
383
384 build-cfi-ppc64-s390x:
385 extends: .native_build_job_template
386 needs:
387 - job: amd64-fedora-container
388 variables:
389 LD_JOBS: 1
390 AR: llvm-ar
391 IMAGE: fedora
392 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
393 --enable-safe-stack --disable-slirp
394 TARGETS: ppc64-softmmu s390x-softmmu
395 MAKE_CHECK_ARGS: check-build
396 # FIXME: This job is often failing, likely due to out-of-memory problems in
397 # the constrained containers of the shared runners. Thus this is marked as
398 # skipped until the situation has been solved.
399 QEMU_JOB_SKIPPED: 1
400 timeout: 80m
401 artifacts:
402 expire_in: 2 days
403 paths:
404 - build
405
406 check-cfi-ppc64-s390x:
407 extends: .native_test_job_template
408 needs:
409 - job: build-cfi-ppc64-s390x
410 artifacts: true
411 variables:
412 IMAGE: fedora
413 MAKE_CHECK_ARGS: check
414
415 avocado-cfi-ppc64-s390x:
416 extends: .avocado_test_job_template
417 needs:
418 - job: build-cfi-ppc64-s390x
419 artifacts: true
420 variables:
421 IMAGE: fedora
422 MAKE_CHECK_ARGS: check-avocado
423
424 build-cfi-x86_64:
425 extends: .native_build_job_template
426 needs:
427 - job: amd64-fedora-container
428 variables:
429 LD_JOBS: 1
430 AR: llvm-ar
431 IMAGE: fedora
432 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
433 --enable-safe-stack --disable-slirp
434 TARGETS: x86_64-softmmu
435 MAKE_CHECK_ARGS: check-build
436 timeout: 70m
437 artifacts:
438 expire_in: 2 days
439 paths:
440 - build
441
442 check-cfi-x86_64:
443 extends: .native_test_job_template
444 needs:
445 - job: build-cfi-x86_64
446 artifacts: true
447 variables:
448 IMAGE: fedora
449 MAKE_CHECK_ARGS: check
450
451 avocado-cfi-x86_64:
452 extends: .avocado_test_job_template
453 needs:
454 - job: build-cfi-x86_64
455 artifacts: true
456 variables:
457 IMAGE: fedora
458 MAKE_CHECK_ARGS: check-avocado
459
460 tsan-build:
461 extends: .native_build_job_template
462 needs:
463 job: amd64-ubuntu2004-container
464 variables:
465 IMAGE: ubuntu2004
466 CONFIGURE_ARGS: --enable-tsan --cc=clang-10 --cxx=clang++-10
467 --enable-trace-backends=ust --enable-fdt=system --disable-slirp
468 TARGETS: x86_64-softmmu ppc64-softmmu riscv64-softmmu x86_64-linux-user
469 MAKE_CHECK_ARGS: bench V=1
470
471 # gprof/gcov are GCC features
472 build-gprof-gcov:
473 extends: .native_build_job_template
474 needs:
475 job: amd64-ubuntu2004-container
476 variables:
477 IMAGE: ubuntu2004
478 CONFIGURE_ARGS: --enable-gprof --enable-gcov
479 TARGETS: aarch64-softmmu ppc64-softmmu s390x-softmmu x86_64-softmmu
480 artifacts:
481 expire_in: 1 days
482 paths:
483 - build
484
485 check-gprof-gcov:
486 extends: .native_test_job_template
487 needs:
488 - job: build-gprof-gcov
489 artifacts: true
490 variables:
491 IMAGE: ubuntu2004
492 MAKE_CHECK_ARGS: check
493 after_script:
494 - cd build
495 - gcovr --xml-pretty --exclude-unreachable-branches --print-summary
496 -o coverage.xml --root ${CI_PROJECT_DIR} . *.p
497 coverage: /^\s*lines:\s*\d+.\d+\%/
498 artifacts:
499 name: ${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}
500 expire_in: 2 days
501 reports:
502 coverage_report:
503 coverage_format: cobertura
504 path: build/coverage.xml
505
506 build-oss-fuzz:
507 extends: .native_build_job_template
508 needs:
509 job: amd64-fedora-container
510 variables:
511 IMAGE: fedora
512 script:
513 - mkdir build-oss-fuzz
514 - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address"
515 ./scripts/oss-fuzz/build.sh
516 - export ASAN_OPTIONS="fast_unwind_on_malloc=0"
517 - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f
518 | grep -v slirp); do
519 grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ;
520 echo Testing ${fuzzer} ... ;
521 "${fuzzer}" -runs=1 -seed=1 || exit 1 ;
522 done
523
524 build-tci:
525 extends: .native_build_job_template
526 needs:
527 job: amd64-debian-user-cross-container
528 variables:
529 IMAGE: debian-all-test-cross
530 script:
531 - TARGETS="aarch64 alpha arm hppa m68k microblaze ppc64 s390x x86_64"
532 - mkdir build
533 - cd build
534 - ../configure --enable-tcg-interpreter --disable-docs --disable-gtk --disable-vnc
535 --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)"
536 || { cat config.log meson-logs/meson-log.txt && exit 1; }
537 - make -j"$JOBS"
538 - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
539 - for tg in $TARGETS ; do
540 export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
541 ./tests/qtest/boot-serial-test || exit 1 ;
542 ./tests/qtest/cdrom-test || exit 1 ;
543 done
544 - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
545 - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
546 - make check-tcg
547
548 # Alternate coroutines implementations are only really of interest to KVM users
549 # However we can't test against KVM on Gitlab-CI so we can only run unit tests
550 build-coroutine-sigaltstack:
551 extends: .native_build_job_template
552 needs:
553 job: amd64-ubuntu2004-container
554 variables:
555 IMAGE: ubuntu2004
556 CONFIGURE_ARGS: --with-coroutine=sigaltstack --disable-tcg
557 --enable-trace-backends=ftrace
558 MAKE_CHECK_ARGS: check-unit
559
560 # Check our reduced build configurations
561 build-without-default-devices:
562 extends: .native_build_job_template
563 needs:
564 job: amd64-centos8-container
565 variables:
566 IMAGE: centos8
567 CONFIGURE_ARGS: --without-default-devices --disable-user
568
569 build-without-default-features:
570 extends: .native_build_job_template
571 needs:
572 job: amd64-fedora-container
573 variables:
574 IMAGE: fedora
575 CONFIGURE_ARGS:
576 --without-default-features
577 --disable-capstone
578 --disable-pie
579 --disable-qom-cast-debug
580 --disable-strip
581 TARGETS: avr-softmmu i386-softmmu mips64-softmmu s390x-softmmu sh4-softmmu
582 sparc64-softmmu hexagon-linux-user i386-linux-user s390x-linux-user
583 MAKE_CHECK_ARGS: check-unit check-qtest SPEED=slow
584
585 build-libvhost-user:
586 extends: .base_job_template
587 stage: build
588 image: $CI_REGISTRY_IMAGE/qemu/fedora:latest
589 needs:
590 job: amd64-fedora-container
591 script:
592 - mkdir subprojects/libvhost-user/build
593 - cd subprojects/libvhost-user/build
594 - meson
595 - ninja
596
597 # No targets are built here, just tools, docs, and unit tests. This
598 # also feeds into the eventual documentation deployment steps later
599 build-tools-and-docs-debian:
600 extends: .native_build_job_template
601 needs:
602 job: amd64-debian-container
603 # when running on 'master' we use pre-existing container
604 optional: true
605 variables:
606 IMAGE: debian-amd64
607 MAKE_CHECK_ARGS: check-unit ctags TAGS cscope
608 CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools
609 QEMU_JOB_PUBLISH: 1
610 artifacts:
611 expire_in: 2 days
612 paths:
613 - build
614
615 # Prepare for GitLab pages deployment. Anything copied into the
616 # "public" directory will be deployed to $USER.gitlab.io/$PROJECT
617 #
618 # GitLab publishes from any branch that triggers a CI pipeline
619 #
620 # For the main repo we don't want to publish from 'staging'
621 # since that content may not be pushed, nor do we wish to
622 # publish from 'stable-NNN' branches as that content is outdated.
623 # Thus we restrict to just the default branch
624 #
625 # For contributor forks we want to publish from any repo so
626 # that users can see the results of their commits, regardless
627 # of what topic branch they're currently using
628 pages:
629 extends: .base_job_template
630 image: $CI_REGISTRY_IMAGE/qemu/debian-amd64:latest
631 stage: test
632 needs:
633 - job: build-tools-and-docs-debian
634 script:
635 - mkdir -p public
636 # HTML-ised source tree
637 - make gtags
638 - htags -anT --tree-view=filetree -m qemu_init
639 -t "Welcome to the QEMU sourcecode"
640 - mv HTML public/src
641 # Project documentation
642 - make -C build install DESTDIR=$(pwd)/temp-install
643 - mv temp-install/usr/local/share/doc/qemu/* public/
644 artifacts:
645 paths:
646 - public
647 variables:
648 QEMU_JOB_PUBLISH: 1