]> git.proxmox.com Git - mirror_qemu.git/blob - .gitlab-ci.d/buildtest.yml
hw/arm/virt: Add 'compact-highmem' property
[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 || { cat config.log meson-logs/meson-log.txt && exit 1; }
248 - make -j"$JOBS"
249 - make check-unit
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
259
260 build-user:
261 extends: .native_build_job_template
262 needs:
263 job: amd64-debian-user-cross-container
264 variables:
265 IMAGE: debian-all-test-cross
266 CONFIGURE_ARGS: --disable-tools --disable-system
267 MAKE_CHECK_ARGS: check-tcg
268
269 build-user-static:
270 extends: .native_build_job_template
271 needs:
272 job: amd64-debian-user-cross-container
273 variables:
274 IMAGE: debian-all-test-cross
275 CONFIGURE_ARGS: --disable-tools --disable-system --static
276 MAKE_CHECK_ARGS: check-tcg
277
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.
281 build-user-hexagon:
282 extends: .native_build_job_template
283 needs:
284 job: hexagon-cross-container
285 optional: true
286 variables:
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
291
292 # Only build the softmmu targets we have check-tcg tests for
293 build-some-softmmu:
294 extends: .native_build_job_template
295 needs:
296 job: amd64-debian-user-cross-container
297 variables:
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
302
303 # We build tricore in a very minimal tricore only container
304 build-tricore-softmmu:
305 extends: .native_build_job_template
306 needs:
307 job: tricore-debian-cross-container
308 variables:
309 IMAGE: debian-tricore-cross
310 CONFIGURE_ARGS: --disable-tools --disable-fdt --enable-debug
311 TARGETS: tricore-softmmu
312 MAKE_CHECK_ARGS: check-tcg
313
314 clang-system:
315 extends: .native_build_job_template
316 needs:
317 job: amd64-fedora-container
318 variables:
319 IMAGE: fedora
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
325
326 clang-user:
327 extends: .native_build_job_template
328 needs:
329 job: amd64-debian-user-cross-container
330 timeout: 70m
331 variables:
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
337
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
341 #
342 # Since slirp callbacks are used in QEMU Timers, we cannot use libslirp with
343 # CFI builds, and thus have to disable it here.
344 #
345 # Split in three sets of build/check/avocado to limit the execution time of each
346 # job
347 build-cfi-aarch64:
348 extends: .native_build_job_template
349 needs:
350 - job: amd64-fedora-container
351 variables:
352 LD_JOBS: 1
353 AR: llvm-ar
354 IMAGE: fedora
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.
362 QEMU_JOB_SKIPPED: 1
363 timeout: 90m
364 artifacts:
365 expire_in: 2 days
366 paths:
367 - build
368
369 check-cfi-aarch64:
370 extends: .native_test_job_template
371 needs:
372 - job: build-cfi-aarch64
373 artifacts: true
374 variables:
375 IMAGE: fedora
376 MAKE_CHECK_ARGS: check
377
378 avocado-cfi-aarch64:
379 extends: .avocado_test_job_template
380 needs:
381 - job: build-cfi-aarch64
382 artifacts: true
383 variables:
384 IMAGE: fedora
385 MAKE_CHECK_ARGS: check-avocado
386
387 build-cfi-ppc64-s390x:
388 extends: .native_build_job_template
389 needs:
390 - job: amd64-fedora-container
391 variables:
392 LD_JOBS: 1
393 AR: llvm-ar
394 IMAGE: fedora
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.
402 QEMU_JOB_SKIPPED: 1
403 timeout: 80m
404 artifacts:
405 expire_in: 2 days
406 paths:
407 - build
408
409 check-cfi-ppc64-s390x:
410 extends: .native_test_job_template
411 needs:
412 - job: build-cfi-ppc64-s390x
413 artifacts: true
414 variables:
415 IMAGE: fedora
416 MAKE_CHECK_ARGS: check
417
418 avocado-cfi-ppc64-s390x:
419 extends: .avocado_test_job_template
420 needs:
421 - job: build-cfi-ppc64-s390x
422 artifacts: true
423 variables:
424 IMAGE: fedora
425 MAKE_CHECK_ARGS: check-avocado
426
427 build-cfi-x86_64:
428 extends: .native_build_job_template
429 needs:
430 - job: amd64-fedora-container
431 variables:
432 LD_JOBS: 1
433 AR: llvm-ar
434 IMAGE: fedora
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
439 timeout: 70m
440 artifacts:
441 expire_in: 2 days
442 paths:
443 - build
444
445 check-cfi-x86_64:
446 extends: .native_test_job_template
447 needs:
448 - job: build-cfi-x86_64
449 artifacts: true
450 variables:
451 IMAGE: fedora
452 MAKE_CHECK_ARGS: check
453
454 avocado-cfi-x86_64:
455 extends: .avocado_test_job_template
456 needs:
457 - job: build-cfi-x86_64
458 artifacts: true
459 variables:
460 IMAGE: fedora
461 MAKE_CHECK_ARGS: check-avocado
462
463 tsan-build:
464 extends: .native_build_job_template
465 needs:
466 job: amd64-ubuntu2004-container
467 variables:
468 IMAGE: ubuntu2004
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
473
474 # gprof/gcov are GCC features
475 build-gprof-gcov:
476 extends: .native_build_job_template
477 needs:
478 job: amd64-ubuntu2004-container
479 variables:
480 IMAGE: ubuntu2004
481 CONFIGURE_ARGS: --enable-gprof --enable-gcov
482 TARGETS: aarch64-softmmu ppc64-softmmu s390x-softmmu x86_64-softmmu
483 artifacts:
484 expire_in: 1 days
485 paths:
486 - build
487
488 check-gprof-gcov:
489 extends: .native_test_job_template
490 needs:
491 - job: build-gprof-gcov
492 artifacts: true
493 variables:
494 IMAGE: ubuntu2004
495 MAKE_CHECK_ARGS: check
496 after_script:
497 - cd build
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+\%/
501 artifacts:
502 name: ${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}
503 expire_in: 2 days
504 reports:
505 coverage_report:
506 coverage_format: cobertura
507 path: build/coverage.xml
508
509 build-oss-fuzz:
510 extends: .native_build_job_template
511 needs:
512 job: amd64-fedora-container
513 variables:
514 IMAGE: fedora
515 script:
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
521 | grep -v slirp); do
522 grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ;
523 echo Testing ${fuzzer} ... ;
524 "${fuzzer}" -runs=1 -seed=1 || exit 1 ;
525 done
526
527 build-tci:
528 extends: .native_build_job_template
529 needs:
530 job: amd64-debian-user-cross-container
531 variables:
532 IMAGE: debian-all-test-cross
533 script:
534 - TARGETS="aarch64 alpha arm hppa m68k microblaze ppc64 s390x x86_64"
535 - mkdir build
536 - cd build
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; }
539 - make -j"$JOBS"
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 ;
545 done
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
548 - make check-tcg
549
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
554 needs:
555 job: amd64-ubuntu2004-container
556 variables:
557 IMAGE: ubuntu2004
558 CONFIGURE_ARGS: --with-coroutine=sigaltstack --disable-tcg
559 --enable-trace-backends=ftrace
560 MAKE_CHECK_ARGS: check-unit
561
562 # Check our reduced build configurations
563 build-without-default-devices:
564 extends: .native_build_job_template
565 needs:
566 job: amd64-centos8-container
567 variables:
568 IMAGE: centos8
569 CONFIGURE_ARGS: --without-default-devices --disable-user
570
571 build-without-default-features:
572 extends: .native_build_job_template
573 needs:
574 job: amd64-fedora-container
575 variables:
576 IMAGE: fedora
577 CONFIGURE_ARGS:
578 --without-default-features
579 --disable-capstone
580 --disable-pie
581 --disable-qom-cast-debug
582 --disable-strip
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
586
587 build-libvhost-user:
588 extends: .base_job_template
589 stage: build
590 image: $CI_REGISTRY_IMAGE/qemu/fedora:latest
591 needs:
592 job: amd64-fedora-container
593 script:
594 - mkdir subprojects/libvhost-user/build
595 - cd subprojects/libvhost-user/build
596 - meson
597 - ninja
598
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
603 needs:
604 job: amd64-debian-container
605 # when running on 'master' we use pre-existing container
606 optional: true
607 variables:
608 IMAGE: debian-amd64
609 MAKE_CHECK_ARGS: check-unit ctags TAGS cscope
610 CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools
611 QEMU_JOB_PUBLISH: 1
612 artifacts:
613 expire_in: 2 days
614 paths:
615 - build
616
617 # Prepare for GitLab pages deployment. Anything copied into the
618 # "public" directory will be deployed to $USER.gitlab.io/$PROJECT
619 #
620 # GitLab publishes from any branch that triggers a CI pipeline
621 #
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
626 #
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
630 pages:
631 extends: .base_job_template
632 image: $CI_REGISTRY_IMAGE/qemu/debian-amd64:latest
633 stage: test
634 needs:
635 - job: build-tools-and-docs-debian
636 script:
637 - mkdir -p public
638 # HTML-ised source tree
639 - make gtags
640 - htags -anT --tree-view=filetree -m qemu_init
641 -t "Welcome to the QEMU sourcecode"
642 - mv HTML public/src
643 # Project documentation
644 - make -C build install DESTDIR=$(pwd)/temp-install
645 - mv temp-install/usr/local/share/doc/qemu/* public/
646 artifacts:
647 paths:
648 - public
649 variables:
650 QEMU_JOB_PUBLISH: 1