linux-user: Remove pointless CPU{ARCH}State casts
[qemu/rayw.git] / .gitlab-ci.d / buildtest.yml
blobe9620c30748a6d3672633252239b2f797fc3625d
1 include:
2   - local: '/.gitlab-ci.d/buildtest-template.yml'
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
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
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
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
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
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
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
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
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
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     - scripts/device-crash-test -q ./qemu-system-i386
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=system --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
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
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
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     - scripts/device-crash-test -q ./qemu-system-ppc
159     - scripts/device-crash-test -q ./qemu-system-riscv32
161 build-system-centos:
162   extends: .native_build_job_template
163   needs:
164     job: amd64-centos8-container
165   variables:
166     IMAGE: centos8
167     CONFIGURE_ARGS: --disable-nettle --enable-gcrypt --enable-fdt=system
168       --enable-modules --enable-trace-backends=dtrace --enable-docs
169     TARGETS: ppc64-softmmu or1k-softmmu s390x-softmmu
170       x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu
171     MAKE_CHECK_ARGS: check-build
172   artifacts:
173     expire_in: 2 days
174     paths:
175       - build
177 check-system-centos:
178   extends: .native_test_job_template
179   needs:
180     - job: build-system-centos
181       artifacts: true
182   variables:
183     IMAGE: centos8
184     MAKE_CHECK_ARGS: check
186 avocado-system-centos:
187   extends: .avocado_test_job_template
188   needs:
189     - job: build-system-centos
190       artifacts: true
191   variables:
192     IMAGE: centos8
193     MAKE_CHECK_ARGS: check-avocado
195 build-system-opensuse:
196   extends: .native_build_job_template
197   needs:
198     job: amd64-opensuse-leap-container
199   variables:
200     IMAGE: opensuse-leap
201     CONFIGURE_ARGS: --enable-fdt=system
202     TARGETS: s390x-softmmu x86_64-softmmu aarch64-softmmu
203     MAKE_CHECK_ARGS: check-build
204   artifacts:
205     expire_in: 2 days
206     paths:
207       - build
209 check-system-opensuse:
210   extends: .native_test_job_template
211   needs:
212     - job: build-system-opensuse
213       artifacts: true
214   variables:
215     IMAGE: opensuse-leap
216     MAKE_CHECK_ARGS: check
218 avocado-system-opensuse:
219   extends: .avocado_test_job_template
220   needs:
221     - job: build-system-opensuse
222       artifacts: true
223   variables:
224     IMAGE: opensuse-leap
225     MAKE_CHECK_ARGS: check-avocado
228 # This jobs explicitly disable TCG (--disable-tcg), KVM is detected by
229 # the configure script. The container doesn't contain Xen headers so
230 # Xen accelerator is not detected / selected. As result it build the
231 # i386-softmmu and x86_64-softmmu with KVM being the single accelerator
232 # available.
233 # Also use a different coroutine implementation (which is only really of
234 # interest to KVM users, i.e. with TCG disabled)
235 build-tcg-disabled:
236   extends: .native_build_job_template
237   needs:
238     job: amd64-centos8-container
239   variables:
240     IMAGE: centos8
241   script:
242     - mkdir build
243     - cd build
244     - ../configure --disable-tcg --audio-drv-list="" --with-coroutine=ucontext
245       || { cat config.log meson-logs/meson-log.txt && exit 1; }
246     - make -j"$JOBS"
247     - make check-unit
248     - make check-qapi-schema
249     - cd tests/qemu-iotests/
250     - ./check -raw 001 002 003 004 005 008 009 010 011 012 021 025 032 033 048
251             052 063 077 086 101 104 106 113 148 150 151 152 157 159 160 163
252             170 171 183 184 192 194 208 221 226 227 236 253 277 image-fleecing
253     - ./check -qcow2 028 051 056 057 058 065 068 082 085 091 095 096 102 122
254             124 132 139 142 144 145 151 152 155 157 165 194 196 200 202
255             208 209 216 218 227 234 246 247 248 250 254 255 257 258
256             260 261 262 263 264 270 272 273 277 279 image-fleecing
258 build-user:
259   extends: .native_build_job_template
260   needs:
261     job: amd64-debian-user-cross-container
262   variables:
263     IMAGE: debian-all-test-cross
264     CONFIGURE_ARGS: --disable-tools --disable-system
265     MAKE_CHECK_ARGS: check-tcg
267 build-user-static:
268   extends: .native_build_job_template
269   needs:
270     job: amd64-debian-user-cross-container
271   variables:
272     IMAGE: debian-all-test-cross
273     CONFIGURE_ARGS: --disable-tools --disable-system --static
274     MAKE_CHECK_ARGS: check-tcg
276 # Because the hexagon cross-compiler takes so long to build we don't rely
277 # on the CI system to build it and hence this job has an optional dependency
278 # declared. The image is manually uploaded.
279 build-user-hexagon:
280   extends: .native_build_job_template
281   needs:
282     job: hexagon-cross-container
283     optional: true
284   variables:
285     IMAGE: debian-hexagon-cross
286     TARGETS: hexagon-linux-user
287     CONFIGURE_ARGS: --disable-tools --disable-docs --enable-debug-tcg
288     MAKE_CHECK_ARGS: check-tcg
290 # Only build the softmmu targets we have check-tcg tests for
291 build-some-softmmu:
292   extends: .native_build_job_template
293   needs:
294     job: amd64-debian-user-cross-container
295   variables:
296     IMAGE: debian-all-test-cross
297     CONFIGURE_ARGS: --disable-tools --enable-debug
298     TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu
299     MAKE_CHECK_ARGS: check-tcg
301 # We build tricore in a very minimal tricore only container
302 build-tricore-softmmu:
303   extends: .native_build_job_template
304   needs:
305     job: tricore-debian-cross-container
306   variables:
307     IMAGE: debian-tricore-cross
308     CONFIGURE_ARGS: --disable-tools --disable-fdt --enable-debug
309     TARGETS: tricore-softmmu
310     MAKE_CHECK_ARGS: check-tcg
312 clang-system:
313   extends: .native_build_job_template
314   needs:
315     job: amd64-fedora-container
316   variables:
317     IMAGE: fedora
318     CONFIGURE_ARGS: --cc=clang --cxx=clang++
319       --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
320     TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu
321       ppc-softmmu s390x-softmmu
322     MAKE_CHECK_ARGS: check-qtest check-tcg
324 clang-user:
325   extends: .native_build_job_template
326   needs:
327     job: amd64-debian-user-cross-container
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
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
339 # Since slirp callbacks are used in QEMU Timers, slirp needs to be compiled together
340 # with QEMU and linked as a static library to avoid false positives in CFI checks.
341 # This can be accomplished by using -enable-slirp=git, which avoids the use of
342 # a system-wide version of the library
344 # Split in three sets of build/check/avocado to limit the execution time of each
345 # job
346 build-cfi-aarch64:
347   extends: .native_build_job_template
348   needs:
349   - job: amd64-fedora-container
350   variables:
351     LD_JOBS: 1
352     AR: llvm-ar
353     IMAGE: fedora
354     CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
355       --enable-safe-stack --enable-slirp=git
356     TARGETS: aarch64-softmmu
357     MAKE_CHECK_ARGS: check-build
358   timeout: 70m
359   artifacts:
360     expire_in: 2 days
361     paths:
362       - build
363   rules:
364     # FIXME: This job is often failing, likely due to out-of-memory problems in
365     # the constrained containers of the shared runners. Thus this is marked as
366     # manual until the situation has been solved.
367     - when: manual
368       allow_failure: true
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
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
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   timeout: 70m
401   artifacts:
402     expire_in: 2 days
403     paths:
404       - build
405   rules:
406     # FIXME: This job is often failing, likely due to out-of-memory problems in
407     # the constrained containers of the shared runners. Thus this is marked as
408     # manual until the situation has been solved.
409     - when: manual
410       allow_failure: true
412 check-cfi-ppc64-s390x:
413   extends: .native_test_job_template
414   needs:
415     - job: build-cfi-ppc64-s390x
416       artifacts: true
417   variables:
418     IMAGE: fedora
419     MAKE_CHECK_ARGS: check
421 avocado-cfi-ppc64-s390x:
422   extends: .avocado_test_job_template
423   needs:
424     - job: build-cfi-ppc64-s390x
425       artifacts: true
426   variables:
427     IMAGE: fedora
428     MAKE_CHECK_ARGS: check-avocado
430 build-cfi-x86_64:
431   extends: .native_build_job_template
432   needs:
433   - job: amd64-fedora-container
434   variables:
435     LD_JOBS: 1
436     AR: llvm-ar
437     IMAGE: fedora
438     CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
439       --enable-safe-stack --enable-slirp=git
440     TARGETS: x86_64-softmmu
441     MAKE_CHECK_ARGS: check-build
442   timeout: 70m
443   artifacts:
444     expire_in: 2 days
445     paths:
446       - build
448 check-cfi-x86_64:
449   extends: .native_test_job_template
450   needs:
451     - job: build-cfi-x86_64
452       artifacts: true
453   variables:
454     IMAGE: fedora
455     MAKE_CHECK_ARGS: check
457 avocado-cfi-x86_64:
458   extends: .avocado_test_job_template
459   needs:
460     - job: build-cfi-x86_64
461       artifacts: true
462   variables:
463     IMAGE: fedora
464     MAKE_CHECK_ARGS: check-avocado
466 tsan-build:
467   extends: .native_build_job_template
468   needs:
469     job: amd64-ubuntu2004-container
470   variables:
471     IMAGE: ubuntu2004
472     CONFIGURE_ARGS: --enable-tsan --cc=clang-10 --cxx=clang++-10
473           --enable-trace-backends=ust --enable-fdt=system --enable-slirp=system
474     TARGETS: x86_64-softmmu ppc64-softmmu riscv64-softmmu x86_64-linux-user
475     MAKE_CHECK_ARGS: bench V=1
477 # gprof/gcov are GCC features
478 build-gprof-gcov:
479   extends: .native_build_job_template
480   needs:
481     job: amd64-ubuntu2004-container
482   variables:
483     IMAGE: ubuntu2004
484     CONFIGURE_ARGS: --enable-gprof --enable-gcov
485     TARGETS: aarch64-softmmu ppc64-softmmu s390x-softmmu x86_64-softmmu
486   artifacts:
487     expire_in: 1 days
488     paths:
489       - build
491 check-gprof-gcov:
492   extends: .native_test_job_template
493   needs:
494     - job: build-gprof-gcov
495       artifacts: true
496   variables:
497     IMAGE: ubuntu2004
498     MAKE_CHECK_ARGS: check
499   after_script:
500     - ${CI_PROJECT_DIR}/scripts/ci/coverage-summary.sh
502 build-oss-fuzz:
503   extends: .native_build_job_template
504   needs:
505     job: amd64-fedora-container
506   variables:
507     IMAGE: fedora
508   script:
509     - mkdir build-oss-fuzz
510     - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address"
511       ./scripts/oss-fuzz/build.sh
512     - export ASAN_OPTIONS="fast_unwind_on_malloc=0"
513     - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f
514                       | grep -v slirp); do
515         grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ;
516         echo Testing ${fuzzer} ... ;
517         "${fuzzer}" -runs=1 -seed=1 || exit 1 ;
518       done
520 build-tci:
521   extends: .native_build_job_template
522   needs:
523     job: amd64-debian-user-cross-container
524   variables:
525     IMAGE: debian-all-test-cross
526   script:
527     - TARGETS="aarch64 alpha arm hppa m68k microblaze ppc64 s390x x86_64"
528     - mkdir build
529     - cd build
530     - ../configure --enable-tcg-interpreter
531         --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)" || { cat config.log meson-logs/meson-log.txt && exit 1; }
532     - make -j"$JOBS"
533     - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
534     - for tg in $TARGETS ; do
535         export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
536         ./tests/qtest/boot-serial-test || exit 1 ;
537         ./tests/qtest/cdrom-test || exit 1 ;
538       done
539     - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
540     - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
541     - make check-tcg
543 # Alternate coroutines implementations are only really of interest to KVM users
544 # However we can't test against KVM on Gitlab-CI so we can only run unit tests
545 build-coroutine-sigaltstack:
546   extends: .native_build_job_template
547   needs:
548     job: amd64-ubuntu2004-container
549   variables:
550     IMAGE: ubuntu2004
551     CONFIGURE_ARGS: --with-coroutine=sigaltstack --disable-tcg
552                     --enable-trace-backends=ftrace
553     MAKE_CHECK_ARGS: check-unit
555 # Check our reduced build configurations
556 build-without-default-devices:
557   extends: .native_build_job_template
558   needs:
559     job: amd64-centos8-container
560   variables:
561     IMAGE: centos8
562     CONFIGURE_ARGS: --without-default-devices --disable-user
564 build-without-default-features:
565   extends: .native_build_job_template
566   needs:
567     job: amd64-fedora-container
568   variables:
569     IMAGE: fedora
570     CONFIGURE_ARGS:
571       --without-default-features
572       --disable-capstone
573       --disable-pie
574       --disable-qom-cast-debug
575       --disable-slirp
576       --disable-strip
577     TARGETS: avr-softmmu i386-softmmu mips64-softmmu s390x-softmmu sh4-softmmu
578       sparc64-softmmu hexagon-linux-user i386-linux-user s390x-linux-user
579     MAKE_CHECK_ARGS: check-unit check-qtest SPEED=slow
581 build-libvhost-user:
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
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   variables:
599     IMAGE: debian-amd64
600     MAKE_CHECK_ARGS: check-unit check-softfloat ctags TAGS cscope
601     CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools
602   artifacts:
603     expire_in: 2 days
604     paths:
605       - build
607 # Prepare for GitLab pages deployment. Anything copied into the
608 # "public" directory will be deployed to $USER.gitlab.io/$PROJECT
610 # GitLab publishes from any branch that triggers a CI pipeline
612 # For the main repo we don't want to publish from 'staging'
613 # since that content may not be pushed, nor do we wish to
614 # publish from 'stable-NNN' branches as that content is outdated.
615 # Thus we restrict to just the default branch
617 # For contributor forks we want to publish from any repo so
618 # that users can see the results of their commits, regardless
619 # of what topic branch they're currently using
620 pages:
621   image: $CI_REGISTRY_IMAGE/qemu/debian-amd64:latest
622   stage: test
623   needs:
624     - job: build-tools-and-docs-debian
625   script:
626     - mkdir -p public
627     # HTML-ised source tree
628     - make gtags
629     - htags -anT --tree-view=filetree -m qemu_init
630         -t "Welcome to the QEMU sourcecode"
631     - mv HTML public/src
632     # Project documentation
633     - make -C build install DESTDIR=$(pwd)/temp-install
634     - mv temp-install/usr/local/share/doc/qemu/* public/
635   artifacts:
636     paths:
637       - public
638   rules:
639     - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
640       when: on_success
641     - if: '$CI_PROJECT_NAMESPACE == "qemu-project"'
642       when: never
643     - if: '$CI_PROJECT_NAMESPACE != "qemu-project"'
644       when: on_success