]> git.proxmox.com Git - mirror_qemu.git/blob - .gitlab-ci.d/buildtest.yml
linux-user: Add proper strace format strings for getdents()/getdents64()
[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 --enable-vfio-user-server
172 TARGETS: ppc64-softmmu or1k-softmmu s390x-softmmu
173 x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu
174 MAKE_CHECK_ARGS: check-build
175 artifacts:
176 expire_in: 2 days
177 paths:
178 - build
179
180 check-system-centos:
181 extends: .native_test_job_template
182 needs:
183 - job: build-system-centos
184 artifacts: true
185 variables:
186 IMAGE: centos8
187 MAKE_CHECK_ARGS: check
188
189 avocado-system-centos:
190 extends: .avocado_test_job_template
191 needs:
192 - job: build-system-centos
193 artifacts: true
194 variables:
195 IMAGE: centos8
196 MAKE_CHECK_ARGS: check-avocado
197
198 build-system-opensuse:
199 extends: .native_build_job_template
200 needs:
201 job: amd64-opensuse-leap-container
202 variables:
203 IMAGE: opensuse-leap
204 CONFIGURE_ARGS: --enable-fdt=system
205 TARGETS: s390x-softmmu x86_64-softmmu aarch64-softmmu
206 MAKE_CHECK_ARGS: check-build
207 artifacts:
208 expire_in: 2 days
209 paths:
210 - build
211
212 check-system-opensuse:
213 extends: .native_test_job_template
214 needs:
215 - job: build-system-opensuse
216 artifacts: true
217 variables:
218 IMAGE: opensuse-leap
219 MAKE_CHECK_ARGS: check
220
221 avocado-system-opensuse:
222 extends: .avocado_test_job_template
223 needs:
224 - job: build-system-opensuse
225 artifacts: true
226 variables:
227 IMAGE: opensuse-leap
228 MAKE_CHECK_ARGS: check-avocado
229
230
231 # This jobs explicitly disable TCG (--disable-tcg), KVM is detected by
232 # the configure script. The container doesn't contain Xen headers so
233 # Xen accelerator is not detected / selected. As result it build the
234 # i386-softmmu and x86_64-softmmu with KVM being the single accelerator
235 # available.
236 # Also use a different coroutine implementation (which is only really of
237 # interest to KVM users, i.e. with TCG disabled)
238 build-tcg-disabled:
239 extends: .native_build_job_template
240 needs:
241 job: amd64-centos8-container
242 variables:
243 IMAGE: centos8
244 script:
245 - mkdir build
246 - cd build
247 - ../configure --disable-tcg --audio-drv-list="" --with-coroutine=ucontext
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 # Because the hexagon cross-compiler takes so long to build we don't rely
280 # on the CI system to build it and hence this job has an optional dependency
281 # declared. The image is manually uploaded.
282 build-user-hexagon:
283 extends: .native_build_job_template
284 needs:
285 job: hexagon-cross-container
286 optional: true
287 variables:
288 IMAGE: debian-hexagon-cross
289 TARGETS: hexagon-linux-user
290 CONFIGURE_ARGS: --disable-tools --disable-docs --enable-debug-tcg
291 MAKE_CHECK_ARGS: check-tcg
292
293 # Only build the softmmu targets we have check-tcg tests for
294 build-some-softmmu:
295 extends: .native_build_job_template
296 needs:
297 job: amd64-debian-user-cross-container
298 variables:
299 IMAGE: debian-all-test-cross
300 CONFIGURE_ARGS: --disable-tools --enable-debug
301 TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu
302 MAKE_CHECK_ARGS: check-tcg
303
304 # We build tricore in a very minimal tricore only container
305 build-tricore-softmmu:
306 extends: .native_build_job_template
307 needs:
308 job: tricore-debian-cross-container
309 variables:
310 IMAGE: debian-tricore-cross
311 CONFIGURE_ARGS: --disable-tools --disable-fdt --enable-debug
312 TARGETS: tricore-softmmu
313 MAKE_CHECK_ARGS: check-tcg
314
315 clang-system:
316 extends: .native_build_job_template
317 needs:
318 job: amd64-fedora-container
319 variables:
320 IMAGE: fedora
321 CONFIGURE_ARGS: --cc=clang --cxx=clang++
322 --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
323 TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu
324 ppc-softmmu s390x-softmmu
325 MAKE_CHECK_ARGS: check-qtest check-tcg
326
327 clang-user:
328 extends: .native_build_job_template
329 needs:
330 job: amd64-debian-user-cross-container
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, slirp needs to be compiled together
343 # with QEMU and linked as a static library to avoid false positives in CFI checks.
344 # This can be accomplished by using -enable-slirp=git, which avoids the use of
345 # a system-wide version of the library
346 #
347 # Split in three sets of build/check/avocado to limit the execution time of each
348 # job
349 build-cfi-aarch64:
350 extends: .native_build_job_template
351 needs:
352 - job: amd64-fedora-container
353 variables:
354 LD_JOBS: 1
355 AR: llvm-ar
356 IMAGE: fedora
357 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
358 --enable-safe-stack --enable-slirp=git
359 TARGETS: aarch64-softmmu
360 MAKE_CHECK_ARGS: check-build
361 # FIXME: This job is often failing, likely due to out-of-memory problems in
362 # the constrained containers of the shared runners. Thus this is marked as
363 # skipped until the situation has been solved.
364 QEMU_JOB_SKIPPED: 1
365 timeout: 90m
366 artifacts:
367 expire_in: 2 days
368 paths:
369 - build
370
371 check-cfi-aarch64:
372 extends: .native_test_job_template
373 needs:
374 - job: build-cfi-aarch64
375 artifacts: true
376 variables:
377 IMAGE: fedora
378 MAKE_CHECK_ARGS: check
379
380 avocado-cfi-aarch64:
381 extends: .avocado_test_job_template
382 needs:
383 - job: build-cfi-aarch64
384 artifacts: true
385 variables:
386 IMAGE: fedora
387 MAKE_CHECK_ARGS: check-avocado
388
389 build-cfi-ppc64-s390x:
390 extends: .native_build_job_template
391 needs:
392 - job: amd64-fedora-container
393 variables:
394 LD_JOBS: 1
395 AR: llvm-ar
396 IMAGE: fedora
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
401 # FIXME: This job is often failing, likely due to out-of-memory problems in
402 # the constrained containers of the shared runners. Thus this is marked as
403 # skipped until the situation has been solved.
404 QEMU_JOB_SKIPPED: 1
405 timeout: 80m
406 artifacts:
407 expire_in: 2 days
408 paths:
409 - build
410
411 check-cfi-ppc64-s390x:
412 extends: .native_test_job_template
413 needs:
414 - job: build-cfi-ppc64-s390x
415 artifacts: true
416 variables:
417 IMAGE: fedora
418 MAKE_CHECK_ARGS: check
419
420 avocado-cfi-ppc64-s390x:
421 extends: .avocado_test_job_template
422 needs:
423 - job: build-cfi-ppc64-s390x
424 artifacts: true
425 variables:
426 IMAGE: fedora
427 MAKE_CHECK_ARGS: check-avocado
428
429 build-cfi-x86_64:
430 extends: .native_build_job_template
431 needs:
432 - job: amd64-fedora-container
433 variables:
434 LD_JOBS: 1
435 AR: llvm-ar
436 IMAGE: fedora
437 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
438 --enable-safe-stack --enable-slirp=git
439 TARGETS: x86_64-softmmu
440 MAKE_CHECK_ARGS: check-build
441 timeout: 70m
442 artifacts:
443 expire_in: 2 days
444 paths:
445 - build
446
447 check-cfi-x86_64:
448 extends: .native_test_job_template
449 needs:
450 - job: build-cfi-x86_64
451 artifacts: true
452 variables:
453 IMAGE: fedora
454 MAKE_CHECK_ARGS: check
455
456 avocado-cfi-x86_64:
457 extends: .avocado_test_job_template
458 needs:
459 - job: build-cfi-x86_64
460 artifacts: true
461 variables:
462 IMAGE: fedora
463 MAKE_CHECK_ARGS: check-avocado
464
465 tsan-build:
466 extends: .native_build_job_template
467 needs:
468 job: amd64-ubuntu2004-container
469 variables:
470 IMAGE: ubuntu2004
471 CONFIGURE_ARGS: --enable-tsan --cc=clang-10 --cxx=clang++-10
472 --enable-trace-backends=ust --enable-fdt=system --enable-slirp=system
473 TARGETS: x86_64-softmmu ppc64-softmmu riscv64-softmmu x86_64-linux-user
474 MAKE_CHECK_ARGS: bench V=1
475
476 # gprof/gcov are GCC features
477 build-gprof-gcov:
478 extends: .native_build_job_template
479 needs:
480 job: amd64-ubuntu2004-container
481 variables:
482 IMAGE: ubuntu2004
483 CONFIGURE_ARGS: --enable-gprof --enable-gcov
484 TARGETS: aarch64-softmmu ppc64-softmmu s390x-softmmu x86_64-softmmu
485 artifacts:
486 expire_in: 1 days
487 paths:
488 - build
489
490 check-gprof-gcov:
491 extends: .native_test_job_template
492 needs:
493 - job: build-gprof-gcov
494 artifacts: true
495 variables:
496 IMAGE: ubuntu2004
497 MAKE_CHECK_ARGS: check
498 after_script:
499 - ${CI_PROJECT_DIR}/scripts/ci/coverage-summary.sh
500
501 build-oss-fuzz:
502 extends: .native_build_job_template
503 needs:
504 job: amd64-fedora-container
505 variables:
506 IMAGE: fedora
507 script:
508 - mkdir build-oss-fuzz
509 - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address"
510 ./scripts/oss-fuzz/build.sh
511 - export ASAN_OPTIONS="fast_unwind_on_malloc=0"
512 - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f
513 | grep -v slirp); do
514 grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ;
515 echo Testing ${fuzzer} ... ;
516 "${fuzzer}" -runs=1 -seed=1 || exit 1 ;
517 done
518
519 build-tci:
520 extends: .native_build_job_template
521 needs:
522 job: amd64-debian-user-cross-container
523 variables:
524 IMAGE: debian-all-test-cross
525 script:
526 - TARGETS="aarch64 alpha arm hppa m68k microblaze ppc64 s390x x86_64"
527 - mkdir build
528 - cd build
529 - ../configure --enable-tcg-interpreter
530 --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)" || { cat config.log meson-logs/meson-log.txt && exit 1; }
531 - make -j"$JOBS"
532 - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
533 - for tg in $TARGETS ; do
534 export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
535 ./tests/qtest/boot-serial-test || exit 1 ;
536 ./tests/qtest/cdrom-test || exit 1 ;
537 done
538 - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
539 - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
540 - make check-tcg
541
542 # Alternate coroutines implementations are only really of interest to KVM users
543 # However we can't test against KVM on Gitlab-CI so we can only run unit tests
544 build-coroutine-sigaltstack:
545 extends: .native_build_job_template
546 needs:
547 job: amd64-ubuntu2004-container
548 variables:
549 IMAGE: ubuntu2004
550 CONFIGURE_ARGS: --with-coroutine=sigaltstack --disable-tcg
551 --enable-trace-backends=ftrace
552 MAKE_CHECK_ARGS: check-unit
553
554 # Check our reduced build configurations
555 build-without-default-devices:
556 extends: .native_build_job_template
557 needs:
558 job: amd64-centos8-container
559 variables:
560 IMAGE: centos8
561 CONFIGURE_ARGS: --without-default-devices --disable-user
562
563 build-without-default-features:
564 extends: .native_build_job_template
565 needs:
566 job: amd64-fedora-container
567 variables:
568 IMAGE: fedora
569 CONFIGURE_ARGS:
570 --without-default-features
571 --disable-capstone
572 --disable-pie
573 --disable-qom-cast-debug
574 --disable-slirp
575 --disable-strip
576 TARGETS: avr-softmmu i386-softmmu mips64-softmmu s390x-softmmu sh4-softmmu
577 sparc64-softmmu hexagon-linux-user i386-linux-user s390x-linux-user
578 MAKE_CHECK_ARGS: check-unit check-qtest SPEED=slow
579
580 build-libvhost-user:
581 extends: .base_job_template
582 stage: build
583 image: $CI_REGISTRY_IMAGE/qemu/fedora:latest
584 needs:
585 job: amd64-fedora-container
586 script:
587 - mkdir subprojects/libvhost-user/build
588 - cd subprojects/libvhost-user/build
589 - meson
590 - ninja
591
592 # No targets are built here, just tools, docs, and unit tests. This
593 # also feeds into the eventual documentation deployment steps later
594 build-tools-and-docs-debian:
595 extends: .native_build_job_template
596 needs:
597 job: amd64-debian-container
598 # when running on 'master' we use pre-existing container
599 optional: true
600 variables:
601 IMAGE: debian-amd64
602 MAKE_CHECK_ARGS: check-unit ctags TAGS cscope
603 CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools
604 QEMU_JOB_PUBLISH: 1
605 artifacts:
606 expire_in: 2 days
607 paths:
608 - build
609
610 # Prepare for GitLab pages deployment. Anything copied into the
611 # "public" directory will be deployed to $USER.gitlab.io/$PROJECT
612 #
613 # GitLab publishes from any branch that triggers a CI pipeline
614 #
615 # For the main repo we don't want to publish from 'staging'
616 # since that content may not be pushed, nor do we wish to
617 # publish from 'stable-NNN' branches as that content is outdated.
618 # Thus we restrict to just the default branch
619 #
620 # For contributor forks we want to publish from any repo so
621 # that users can see the results of their commits, regardless
622 # of what topic branch they're currently using
623 pages:
624 extends: .base_job_template
625 image: $CI_REGISTRY_IMAGE/qemu/debian-amd64:latest
626 stage: test
627 needs:
628 - job: build-tools-and-docs-debian
629 script:
630 - mkdir -p public
631 # HTML-ised source tree
632 - make gtags
633 - htags -anT --tree-view=filetree -m qemu_init
634 -t "Welcome to the QEMU sourcecode"
635 - mv HTML public/src
636 # Project documentation
637 - make -C build install DESTDIR=$(pwd)/temp-install
638 - mv temp-install/usr/local/share/doc/qemu/* public/
639 artifacts:
640 paths:
641 - public
642 variables:
643 QEMU_JOB_PUBLISH: 1