]> git.proxmox.com Git - mirror_qemu.git/blob - .gitlab-ci.d/buildtest.yml
build: include pc-bios/ part in the ROMS variable
[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-slirp=system
45 --enable-capstone
46 TARGETS: aarch64-softmmu alpha-softmmu cris-softmmu hppa-softmmu
47 microblazeel-softmmu mips64el-softmmu
48 MAKE_CHECK_ARGS: check-build
49 artifacts:
50 expire_in: 2 days
51 paths:
52 - build
53
54 check-system-ubuntu:
55 extends: .native_test_job_template
56 needs:
57 - job: build-system-ubuntu
58 artifacts: true
59 variables:
60 IMAGE: ubuntu2004
61 MAKE_CHECK_ARGS: check
62
63 avocado-system-ubuntu:
64 extends: .avocado_test_job_template
65 needs:
66 - job: build-system-ubuntu
67 artifacts: true
68 variables:
69 IMAGE: ubuntu2004
70 MAKE_CHECK_ARGS: check-avocado
71
72 build-system-debian:
73 extends: .native_build_job_template
74 needs:
75 job: amd64-debian-container
76 variables:
77 IMAGE: debian-amd64
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
81 artifacts:
82 expire_in: 2 days
83 paths:
84 - build
85
86 check-system-debian:
87 extends: .native_test_job_template
88 needs:
89 - job: build-system-debian
90 artifacts: true
91 variables:
92 IMAGE: debian-amd64
93 MAKE_CHECK_ARGS: check
94
95 avocado-system-debian:
96 extends: .avocado_test_job_template
97 needs:
98 - job: build-system-debian
99 artifacts: true
100 variables:
101 IMAGE: debian-amd64
102 MAKE_CHECK_ARGS: check-avocado
103
104 crash-test-debian:
105 extends: .native_test_job_template
106 needs:
107 - job: build-system-debian
108 artifacts: true
109 variables:
110 IMAGE: debian-amd64
111 script:
112 - cd build
113 - make check-venv
114 - tests/venv/bin/python3 scripts/device-crash-test -q ./qemu-system-i386
115
116 build-system-fedora:
117 extends: .native_build_job_template
118 needs:
119 job: amd64-fedora-container
120 variables:
121 IMAGE: fedora
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
127 artifacts:
128 expire_in: 2 days
129 paths:
130 - build
131
132 check-system-fedora:
133 extends: .native_test_job_template
134 needs:
135 - job: build-system-fedora
136 artifacts: true
137 variables:
138 IMAGE: fedora
139 MAKE_CHECK_ARGS: check
140
141 avocado-system-fedora:
142 extends: .avocado_test_job_template
143 needs:
144 - job: build-system-fedora
145 artifacts: true
146 variables:
147 IMAGE: fedora
148 MAKE_CHECK_ARGS: check-avocado
149
150 crash-test-fedora:
151 extends: .native_test_job_template
152 needs:
153 - job: build-system-fedora
154 artifacts: true
155 variables:
156 IMAGE: fedora
157 script:
158 - cd build
159 - make check-venv
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
162
163 build-system-centos:
164 extends: .native_build_job_template
165 needs:
166 job: amd64-centos8-container
167 variables:
168 IMAGE: centos8
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
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 variables:
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
336
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
340 #
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
345 #
346 # Split in three sets of build/check/avocado to limit the execution time of each
347 # job
348 build-cfi-aarch64:
349 extends: .native_build_job_template
350 needs:
351 - job: amd64-fedora-container
352 variables:
353 LD_JOBS: 1
354 AR: llvm-ar
355 IMAGE: fedora
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
360 # FIXME: This job is often failing, likely due to out-of-memory problems in
361 # the constrained containers of the shared runners. Thus this is marked as
362 # skipped until the situation has been solved.
363 QEMU_JOB_SKIPPED: 1
364 timeout: 90m
365 artifacts:
366 expire_in: 2 days
367 paths:
368 - build
369
370 check-cfi-aarch64:
371 extends: .native_test_job_template
372 needs:
373 - job: build-cfi-aarch64
374 artifacts: true
375 variables:
376 IMAGE: fedora
377 MAKE_CHECK_ARGS: check
378
379 avocado-cfi-aarch64:
380 extends: .avocado_test_job_template
381 needs:
382 - job: build-cfi-aarch64
383 artifacts: true
384 variables:
385 IMAGE: fedora
386 MAKE_CHECK_ARGS: check-avocado
387
388 build-cfi-ppc64-s390x:
389 extends: .native_build_job_template
390 needs:
391 - job: amd64-fedora-container
392 variables:
393 LD_JOBS: 1
394 AR: llvm-ar
395 IMAGE: fedora
396 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
397 --enable-safe-stack --enable-slirp=git
398 TARGETS: ppc64-softmmu s390x-softmmu
399 MAKE_CHECK_ARGS: check-build
400 # FIXME: This job is often failing, likely due to out-of-memory problems in
401 # the constrained containers of the shared runners. Thus this is marked as
402 # skipped until the situation has been solved.
403 QEMU_JOB_SKIPPED: 1
404 timeout: 80m
405 artifacts:
406 expire_in: 2 days
407 paths:
408 - build
409
410 check-cfi-ppc64-s390x:
411 extends: .native_test_job_template
412 needs:
413 - job: build-cfi-ppc64-s390x
414 artifacts: true
415 variables:
416 IMAGE: fedora
417 MAKE_CHECK_ARGS: check
418
419 avocado-cfi-ppc64-s390x:
420 extends: .avocado_test_job_template
421 needs:
422 - job: build-cfi-ppc64-s390x
423 artifacts: true
424 variables:
425 IMAGE: fedora
426 MAKE_CHECK_ARGS: check-avocado
427
428 build-cfi-x86_64:
429 extends: .native_build_job_template
430 needs:
431 - job: amd64-fedora-container
432 variables:
433 LD_JOBS: 1
434 AR: llvm-ar
435 IMAGE: fedora
436 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
437 --enable-safe-stack --enable-slirp=git
438 TARGETS: x86_64-softmmu
439 MAKE_CHECK_ARGS: check-build
440 timeout: 70m
441 artifacts:
442 expire_in: 2 days
443 paths:
444 - build
445
446 check-cfi-x86_64:
447 extends: .native_test_job_template
448 needs:
449 - job: build-cfi-x86_64
450 artifacts: true
451 variables:
452 IMAGE: fedora
453 MAKE_CHECK_ARGS: check
454
455 avocado-cfi-x86_64:
456 extends: .avocado_test_job_template
457 needs:
458 - job: build-cfi-x86_64
459 artifacts: true
460 variables:
461 IMAGE: fedora
462 MAKE_CHECK_ARGS: check-avocado
463
464 tsan-build:
465 extends: .native_build_job_template
466 needs:
467 job: amd64-ubuntu2004-container
468 variables:
469 IMAGE: ubuntu2004
470 CONFIGURE_ARGS: --enable-tsan --cc=clang-10 --cxx=clang++-10
471 --enable-trace-backends=ust --enable-fdt=system --enable-slirp=system
472 TARGETS: x86_64-softmmu ppc64-softmmu riscv64-softmmu x86_64-linux-user
473 MAKE_CHECK_ARGS: bench V=1
474
475 # gprof/gcov are GCC features
476 build-gprof-gcov:
477 extends: .native_build_job_template
478 needs:
479 job: amd64-ubuntu2004-container
480 variables:
481 IMAGE: ubuntu2004
482 CONFIGURE_ARGS: --enable-gprof --enable-gcov
483 TARGETS: aarch64-softmmu ppc64-softmmu s390x-softmmu x86_64-softmmu
484 artifacts:
485 expire_in: 1 days
486 paths:
487 - build
488
489 check-gprof-gcov:
490 extends: .native_test_job_template
491 needs:
492 - job: build-gprof-gcov
493 artifacts: true
494 variables:
495 IMAGE: ubuntu2004
496 MAKE_CHECK_ARGS: check
497 after_script:
498 - ${CI_PROJECT_DIR}/scripts/ci/coverage-summary.sh
499
500 build-oss-fuzz:
501 extends: .native_build_job_template
502 needs:
503 job: amd64-fedora-container
504 variables:
505 IMAGE: fedora
506 script:
507 - mkdir build-oss-fuzz
508 - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address"
509 ./scripts/oss-fuzz/build.sh
510 - export ASAN_OPTIONS="fast_unwind_on_malloc=0"
511 - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f
512 | grep -v slirp); do
513 grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ;
514 echo Testing ${fuzzer} ... ;
515 "${fuzzer}" -runs=1 -seed=1 || exit 1 ;
516 done
517
518 build-tci:
519 extends: .native_build_job_template
520 needs:
521 job: amd64-debian-user-cross-container
522 variables:
523 IMAGE: debian-all-test-cross
524 script:
525 - TARGETS="aarch64 alpha arm hppa m68k microblaze ppc64 s390x x86_64"
526 - mkdir build
527 - cd build
528 - ../configure --enable-tcg-interpreter
529 --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)" || { cat config.log meson-logs/meson-log.txt && exit 1; }
530 - make -j"$JOBS"
531 - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
532 - for tg in $TARGETS ; do
533 export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
534 ./tests/qtest/boot-serial-test || exit 1 ;
535 ./tests/qtest/cdrom-test || exit 1 ;
536 done
537 - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
538 - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
539 - make check-tcg
540
541 # Alternate coroutines implementations are only really of interest to KVM users
542 # However we can't test against KVM on Gitlab-CI so we can only run unit tests
543 build-coroutine-sigaltstack:
544 extends: .native_build_job_template
545 needs:
546 job: amd64-ubuntu2004-container
547 variables:
548 IMAGE: ubuntu2004
549 CONFIGURE_ARGS: --with-coroutine=sigaltstack --disable-tcg
550 --enable-trace-backends=ftrace
551 MAKE_CHECK_ARGS: check-unit
552
553 # Check our reduced build configurations
554 build-without-default-devices:
555 extends: .native_build_job_template
556 needs:
557 job: amd64-centos8-container
558 variables:
559 IMAGE: centos8
560 CONFIGURE_ARGS: --without-default-devices --disable-user
561
562 build-without-default-features:
563 extends: .native_build_job_template
564 needs:
565 job: amd64-fedora-container
566 variables:
567 IMAGE: fedora
568 CONFIGURE_ARGS:
569 --without-default-features
570 --disable-capstone
571 --disable-pie
572 --disable-qom-cast-debug
573 --disable-slirp
574 --disable-strip
575 TARGETS: avr-softmmu i386-softmmu mips64-softmmu s390x-softmmu sh4-softmmu
576 sparc64-softmmu hexagon-linux-user i386-linux-user s390x-linux-user
577 MAKE_CHECK_ARGS: check-unit check-qtest SPEED=slow
578
579 build-libvhost-user:
580 extends: .base_job_template
581 stage: build
582 image: $CI_REGISTRY_IMAGE/qemu/fedora:latest
583 needs:
584 job: amd64-fedora-container
585 script:
586 - mkdir subprojects/libvhost-user/build
587 - cd subprojects/libvhost-user/build
588 - meson
589 - ninja
590
591 # No targets are built here, just tools, docs, and unit tests. This
592 # also feeds into the eventual documentation deployment steps later
593 build-tools-and-docs-debian:
594 extends: .native_build_job_template
595 needs:
596 job: amd64-debian-container
597 # when running on 'master' we use pre-existing container
598 optional: true
599 variables:
600 IMAGE: debian-amd64
601 MAKE_CHECK_ARGS: check-unit check-softfloat ctags TAGS cscope
602 CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools
603 QEMU_JOB_PUBLISH: 1
604 artifacts:
605 expire_in: 2 days
606 paths:
607 - build
608
609 # Prepare for GitLab pages deployment. Anything copied into the
610 # "public" directory will be deployed to $USER.gitlab.io/$PROJECT
611 #
612 # GitLab publishes from any branch that triggers a CI pipeline
613 #
614 # For the main repo we don't want to publish from 'staging'
615 # since that content may not be pushed, nor do we wish to
616 # publish from 'stable-NNN' branches as that content is outdated.
617 # Thus we restrict to just the default branch
618 #
619 # For contributor forks we want to publish from any repo so
620 # that users can see the results of their commits, regardless
621 # of what topic branch they're currently using
622 pages:
623 extends: .base_job_template
624 image: $CI_REGISTRY_IMAGE/qemu/debian-amd64:latest
625 stage: test
626 needs:
627 - job: build-tools-and-docs-debian
628 script:
629 - mkdir -p public
630 # HTML-ised source tree
631 - make gtags
632 - htags -anT --tree-view=filetree -m qemu_init
633 -t "Welcome to the QEMU sourcecode"
634 - mv HTML public/src
635 # Project documentation
636 - make -C build install DESTDIR=$(pwd)/temp-install
637 - mv temp-install/usr/local/share/doc/qemu/* public/
638 artifacts:
639 paths:
640 - public
641 variables:
642 QEMU_JOB_PUBLISH: 1