ppc/pnv: change pnv_pec_stk_update_map() to use PnvPHB4
[qemu.git] / .gitlab-ci.d / buildtest.yml
blob12fb1130fe7f4630e04c51e4723ee2d7135da824
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
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     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
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
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
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
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
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
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     - scripts/device-crash-test -q ./qemu-system-i386
114 build-system-fedora:
115   extends: .native_build_job_template
116   needs:
117     job: amd64-fedora-container
118   variables:
119     IMAGE: fedora
120     CONFIGURE_ARGS: --disable-gcrypt --enable-nettle --enable-docs
121              --enable-fdt=system --enable-slirp=system --enable-capstone=system
122     TARGETS: tricore-softmmu microblaze-softmmu mips-softmmu
123       xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
124     MAKE_CHECK_ARGS: check-build
125   artifacts:
126     expire_in: 2 days
127     paths:
128       - build
130 check-system-fedora:
131   extends: .native_test_job_template
132   needs:
133     - job: build-system-fedora
134       artifacts: true
135   variables:
136     IMAGE: fedora
137     MAKE_CHECK_ARGS: check
139 avocado-system-fedora:
140   extends: .avocado_test_job_template
141   needs:
142     - job: build-system-fedora
143       artifacts: true
144   variables:
145     IMAGE: fedora
146     MAKE_CHECK_ARGS: check-avocado
148 crash-test-fedora:
149   extends: .native_test_job_template
150   needs:
151     - job: build-system-fedora
152       artifacts: true
153   variables:
154     IMAGE: fedora
155   script:
156     - cd build
157     - scripts/device-crash-test -q ./qemu-system-ppc
158     - scripts/device-crash-test -q ./qemu-system-riscv32
160 build-system-centos:
161   extends: .native_build_job_template
162   needs:
163     job: amd64-centos8-container
164   variables:
165     IMAGE: centos8
166     CONFIGURE_ARGS: --disable-nettle --enable-gcrypt --enable-fdt=system
167       --enable-modules --enable-trace-backends=dtrace --enable-docs
168     TARGETS: ppc64-softmmu or1k-softmmu s390x-softmmu
169       x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu
170     MAKE_CHECK_ARGS: check-build
171   artifacts:
172     expire_in: 2 days
173     paths:
174       - build
176 check-system-centos:
177   extends: .native_test_job_template
178   needs:
179     - job: build-system-centos
180       artifacts: true
181   variables:
182     IMAGE: centos8
183     MAKE_CHECK_ARGS: check
185 avocado-system-centos:
186   extends: .avocado_test_job_template
187   needs:
188     - job: build-system-centos
189       artifacts: true
190   variables:
191     IMAGE: centos8
192     MAKE_CHECK_ARGS: check-avocado
194 build-system-opensuse:
195   extends: .native_build_job_template
196   needs:
197     job: amd64-opensuse-leap-container
198   variables:
199     IMAGE: opensuse-leap
200     CONFIGURE_ARGS: --enable-fdt=system
201     TARGETS: s390x-softmmu x86_64-softmmu aarch64-softmmu
202     MAKE_CHECK_ARGS: check-build
203   artifacts:
204     expire_in: 2 days
205     paths:
206       - build
208 check-system-opensuse:
209   extends: .native_test_job_template
210   needs:
211     - job: build-system-opensuse
212       artifacts: true
213   variables:
214     IMAGE: opensuse-leap
215     MAKE_CHECK_ARGS: check
217 avocado-system-opensuse:
218   extends: .avocado_test_job_template
219   needs:
220     - job: build-system-opensuse
221       artifacts: true
222   variables:
223     IMAGE: opensuse-leap
224     MAKE_CHECK_ARGS: check-avocado
227 # This jobs explicitly disable TCG (--disable-tcg), KVM is detected by
228 # the configure script. The container doesn't contain Xen headers so
229 # Xen accelerator is not detected / selected. As result it build the
230 # i386-softmmu and x86_64-softmmu with KVM being the single accelerator
231 # available.
232 # Also use a different coroutine implementation (which is only really of
233 # interest to KVM users, i.e. with TCG disabled)
234 build-tcg-disabled:
235   extends: .native_build_job_template
236   needs:
237     job: amd64-centos8-container
238   variables:
239     IMAGE: centos8
240   script:
241     - mkdir build
242     - cd build
243     - ../configure --disable-tcg --audio-drv-list="" --with-coroutine=ucontext
244       || { cat config.log meson-logs/meson-log.txt && exit 1; }
245     - make -j"$JOBS"
246     - make check-unit
247     - make check-qapi-schema
248     - cd tests/qemu-iotests/
249     - ./check -raw 001 002 003 004 005 008 009 010 011 012 021 025 032 033 048
250             052 063 077 086 101 104 106 113 148 150 151 152 157 159 160 163
251             170 171 183 184 192 194 208 221 226 227 236 253 277 image-fleecing
252     - ./check -qcow2 028 051 056 057 058 065 068 082 085 091 095 096 102 122
253             124 132 139 142 144 145 151 152 155 157 165 194 196 200 202
254             208 209 216 218 227 234 246 247 248 250 254 255 257 258
255             260 261 262 263 264 270 272 273 277 279 image-fleecing
257 build-user:
258   extends: .native_build_job_template
259   needs:
260     job: amd64-debian-user-cross-container
261   variables:
262     IMAGE: debian-all-test-cross
263     CONFIGURE_ARGS: --disable-tools --disable-system
264     MAKE_CHECK_ARGS: check-tcg
266 build-user-static:
267   extends: .native_build_job_template
268   needs:
269     job: amd64-debian-user-cross-container
270   variables:
271     IMAGE: debian-all-test-cross
272     CONFIGURE_ARGS: --disable-tools --disable-system --static
273     MAKE_CHECK_ARGS: check-tcg
275 # Because the hexagon cross-compiler takes so long to build we don't rely
276 # on the CI system to build it and hence this job has an optional dependency
277 # declared. The image is manually uploaded.
278 build-user-hexagon:
279   extends: .native_build_job_template
280   needs:
281     job: hexagon-cross-container
282     optional: true
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
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
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
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
323 clang-user:
324   extends: .native_build_job_template
325   needs:
326     job: amd64-debian-user-cross-container
327   variables:
328     IMAGE: debian-all-test-cross
329     CONFIGURE_ARGS: --cc=clang --cxx=clang++ --disable-system
330       --target-list-exclude=microblazeel-linux-user,aarch64_be-linux-user,i386-linux-user,m68k-linux-user,mipsn32el-linux-user,xtensaeb-linux-user
331       --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
332     MAKE_CHECK_ARGS: check-unit check-tcg
334 # Set LD_JOBS=1 because this requires LTO and ld consumes a large amount of memory.
335 # On gitlab runners, default value sometimes end up calling 2 lds concurrently and
336 # triggers an Out-Of-Memory error
338 # Since slirp callbacks are used in QEMU Timers, slirp needs to be compiled together
339 # with QEMU and linked as a static library to avoid false positives in CFI checks.
340 # This can be accomplished by using -enable-slirp=git, which avoids the use of
341 # a system-wide version of the library
343 # Split in three sets of build/check/avocado to limit the execution time of each
344 # job
345 build-cfi-aarch64:
346   extends: .native_build_job_template
347   needs:
348   - job: amd64-fedora-container
349   variables:
350     LD_JOBS: 1
351     AR: llvm-ar
352     IMAGE: fedora
353     CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
354       --enable-safe-stack --enable-slirp=git
355     TARGETS: aarch64-softmmu
356     MAKE_CHECK_ARGS: check-build
357   timeout: 70m
358   artifacts:
359     expire_in: 2 days
360     paths:
361       - build
362   rules:
363     # FIXME: This job is often failing, likely due to out-of-memory problems in
364     # the constrained containers of the shared runners. Thus this is marked as
365     # manual until the situation has been solved.
366     - when: manual
367       allow_failure: true
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
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
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 --enable-slirp=git
397     TARGETS: ppc64-softmmu s390x-softmmu
398     MAKE_CHECK_ARGS: check-build
399   timeout: 70m
400   artifacts:
401     expire_in: 2 days
402     paths:
403       - build
404   rules:
405     # FIXME: This job is often failing, likely due to out-of-memory problems in
406     # the constrained containers of the shared runners. Thus this is marked as
407     # manual until the situation has been solved.
408     - when: manual
409       allow_failure: true
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
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
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
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
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
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
476 # These targets are on the way out
477 build-deprecated:
478   extends: .native_build_job_template
479   needs:
480     job: amd64-debian-user-cross-container
481   variables:
482     IMAGE: debian-all-test-cross
483     CONFIGURE_ARGS: --disable-tools
484     MAKE_CHECK_ARGS: build-tcg
485     TARGETS: ppc64abi32-linux-user
486   artifacts:
487     expire_in: 2 days
488     paths:
489       - build
491 # We split the check-tcg step as test failures are expected but we still
492 # want to catch the build breaking.
493 check-deprecated:
494   extends: .native_test_job_template
495   needs:
496     - job: build-deprecated
497       artifacts: true
498   variables:
499     IMAGE: debian-all-test-cross
500     MAKE_CHECK_ARGS: check-tcg
501   allow_failure: true
503 # gprof/gcov are GCC features
504 build-gprof-gcov:
505   extends: .native_build_job_template
506   needs:
507     job: amd64-ubuntu2004-container
508   variables:
509     IMAGE: ubuntu2004
510     CONFIGURE_ARGS: --enable-gprof --enable-gcov
511     TARGETS: aarch64-softmmu ppc64-softmmu s390x-softmmu x86_64-softmmu
512   artifacts:
513     expire_in: 1 days
514     paths:
515       - build
517 check-gprof-gcov:
518   extends: .native_test_job_template
519   needs:
520     - job: build-gprof-gcov
521       artifacts: true
522   variables:
523     IMAGE: ubuntu2004
524     MAKE_CHECK_ARGS: check
525   after_script:
526     - ${CI_PROJECT_DIR}/scripts/ci/coverage-summary.sh
528 build-oss-fuzz:
529   extends: .native_build_job_template
530   needs:
531     job: amd64-fedora-container
532   variables:
533     IMAGE: fedora
534   script:
535     - mkdir build-oss-fuzz
536     - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address"
537       ./scripts/oss-fuzz/build.sh
538     - export ASAN_OPTIONS="fast_unwind_on_malloc=0"
539     - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f
540                       | grep -v slirp); do
541         grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ;
542         echo Testing ${fuzzer} ... ;
543         "${fuzzer}" -runs=1 -seed=1 || exit 1 ;
544       done
545     # Unrelated to fuzzer: run some tests with -fsanitize=address
546     - cd build-oss-fuzz && make check-qtest-i386 check-unit
548 build-tci:
549   extends: .native_build_job_template
550   needs:
551     job: amd64-debian-user-cross-container
552   variables:
553     IMAGE: debian-all-test-cross
554   script:
555     - TARGETS="aarch64 alpha arm hppa m68k microblaze ppc64 s390x x86_64"
556     - mkdir build
557     - cd build
558     - ../configure --enable-tcg-interpreter
559         --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)" || { cat config.log meson-logs/meson-log.txt && exit 1; }
560     - make -j"$JOBS"
561     - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
562     - for tg in $TARGETS ; do
563         export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
564         ./tests/qtest/boot-serial-test || exit 1 ;
565         ./tests/qtest/cdrom-test || exit 1 ;
566       done
567     - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
568     - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
569     - make check-tcg
571 # Alternate coroutines implementations are only really of interest to KVM users
572 # However we can't test against KVM on Gitlab-CI so we can only run unit tests
573 build-coroutine-sigaltstack:
574   extends: .native_build_job_template
575   needs:
576     job: amd64-ubuntu2004-container
577   variables:
578     IMAGE: ubuntu2004
579     CONFIGURE_ARGS: --with-coroutine=sigaltstack --disable-tcg
580                     --enable-trace-backends=ftrace
581     MAKE_CHECK_ARGS: check-unit
583 # Check our reduced build configurations
584 build-without-default-devices:
585   extends: .native_build_job_template
586   needs:
587     job: amd64-centos8-container
588   variables:
589     IMAGE: centos8
590     CONFIGURE_ARGS: --without-default-devices --disable-user
592 build-without-default-features:
593   extends: .native_build_job_template
594   needs:
595     job: amd64-fedora-container
596   variables:
597     IMAGE: fedora
598     CONFIGURE_ARGS:
599       --without-default-features
600       --disable-capstone
601       --disable-pie
602       --disable-qom-cast-debug
603       --disable-slirp
604       --disable-strip
605     TARGETS: avr-softmmu i386-softmmu mips64-softmmu s390x-softmmu sh4-softmmu
606       sparc64-softmmu hexagon-linux-user i386-linux-user s390x-linux-user
607     MAKE_CHECK_ARGS: check-unit check-qtest SPEED=slow
609 build-libvhost-user:
610   stage: build
611   image: $CI_REGISTRY_IMAGE/qemu/fedora:latest
612   needs:
613     job: amd64-fedora-container
614   script:
615     - mkdir subprojects/libvhost-user/build
616     - cd subprojects/libvhost-user/build
617     - meson
618     - ninja
620 # No targets are built here, just tools, docs, and unit tests. This
621 # also feeds into the eventual documentation deployment steps later
622 build-tools-and-docs-debian:
623   extends: .native_build_job_template
624   needs:
625     job: amd64-debian-container
626   variables:
627     IMAGE: debian-amd64
628     MAKE_CHECK_ARGS: check-unit check-softfloat ctags TAGS cscope
629     CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools
630   artifacts:
631     expire_in: 2 days
632     paths:
633       - build
635 # Prepare for GitLab pages deployment. Anything copied into the
636 # "public" directory will be deployed to $USER.gitlab.io/$PROJECT
638 # GitLab publishes from any branch that triggers a CI pipeline
640 # For the main repo we don't want to publish from 'staging'
641 # since that content may not be pushed, nor do we wish to
642 # publish from 'stable-NNN' branches as that content is outdated.
643 # Thus we restrict to just the default branch
645 # For contributor forks we want to publish from any repo so
646 # that users can see the results of their commits, regardless
647 # of what topic branch they're currently using
648 pages:
649   image: $CI_REGISTRY_IMAGE/qemu/debian-amd64:latest
650   stage: test
651   needs:
652     - job: build-tools-and-docs-debian
653   script:
654     - mkdir -p public
655     # HTML-ised source tree
656     - make gtags
657     - htags -anT --tree-view=filetree -m qemu_init
658         -t "Welcome to the QEMU sourcecode"
659     - mv HTML public/src
660     # Project documentation
661     - make -C build install DESTDIR=$(pwd)/temp-install
662     - mv temp-install/usr/local/share/doc/qemu/* public/
663   artifacts:
664     paths:
665       - public
666   rules:
667     - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
668       when: on_success
669     - if: '$CI_PROJECT_NAMESPACE == "qemu-project"'
670       when: never
671     - if: '$CI_PROJECT_NAMESPACE != "qemu-project"'
672       when: on_success