target/arm: Update CNTP for PREDDESC
[qemu/ar7.git] / .gitlab-ci.yml
blob293a81065691b33e4dabbd19c2f1c50cb897ff7a
1 # Currently we have two build stages after our containers are built:
2 #  - build (for traditional build and test or first stage build)
3 #  - test (for test stages, using build artefacts from a build stage)
4 stages:
5   - containers
6   - containers-layer2
7   - build
8   - test
10 include:
11   - local: '/.gitlab-ci.d/edk2.yml'
12   - local: '/.gitlab-ci.d/opensbi.yml'
13   - local: '/.gitlab-ci.d/containers.yml'
14   - local: '/.gitlab-ci.d/crossbuilds.yml'
16 .native_build_job_template: &native_build_job_definition
17   stage: build
18   image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
19   before_script:
20     - JOBS=$(expr $(nproc) + 1)
21   script:
22     - mkdir build
23     - cd build
24     - if test -n "$TARGETS";
25       then
26         ../configure --enable-werror $CONFIGURE_ARGS --target-list="$TARGETS" ;
27       else
28         ../configure --enable-werror $CONFIGURE_ARGS ;
29       fi || { cat config.log meson-logs/meson-log.txt && exit 1; }
30     - if test -n "$LD_JOBS";
31       then
32         meson configure . -Dbackend_max_links="$LD_JOBS" ;
33       fi || exit 1;
34     - make -j"$JOBS"
35     - if test -n "$MAKE_CHECK_ARGS";
36       then
37         make -j"$JOBS" $MAKE_CHECK_ARGS ;
38       fi
40 .native_test_job_template: &native_test_job_definition
41   stage: test
42   image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
43   script:
44     - scripts/git-submodule.sh update
45         $(grep GIT_SUBMODULES build/config-host.mak | sed 's/GIT_SUBMODULES=//')
46     - cd build
47     - find . -type f -exec touch {} +
48     # Avoid recompiling by hiding ninja with NINJA=":"
49     - make NINJA=":" $MAKE_CHECK_ARGS
51 .acceptance_template: &acceptance_definition
52   cache:
53     key: "${CI_JOB_NAME}-cache"
54     paths:
55       - ${CI_PROJECT_DIR}/avocado-cache
56     policy: pull-push
57   artifacts:
58     name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
59     when: always
60     expire_in: 2 days
61     paths:
62       - build/tests/results/latest/results.xml
63       - build/tests/results/latest/test-results
64     reports:
65       junit: build/tests/results/latest/results.xml
66   before_script:
67     - mkdir -p ~/.config/avocado
68     - echo "[datadir.paths]" > ~/.config/avocado/avocado.conf
69     - echo "cache_dirs = ['${CI_PROJECT_DIR}/avocado-cache']"
70            >> ~/.config/avocado/avocado.conf
71     - echo -e '[job.output.testlogs]\nstatuses = ["FAIL", "INTERRUPT"]'
72            >> ~/.config/avocado/avocado.conf
73     - if [ -d ${CI_PROJECT_DIR}/avocado-cache ]; then
74         du -chs ${CI_PROJECT_DIR}/avocado-cache ;
75       fi
76     - export AVOCADO_ALLOW_UNTRUSTED_CODE=1
77   after_script:
78     - cd build
79     - du -chs ${CI_PROJECT_DIR}/avocado-cache
81 build-system-alpine:
82   <<: *native_build_job_definition
83   needs:
84     - job: amd64-alpine-container
85   variables:
86     IMAGE: alpine
87     TARGETS: aarch64-softmmu alpha-softmmu cris-softmmu hppa-softmmu
88       moxie-softmmu microblazeel-softmmu mips64el-softmmu
89     MAKE_CHECK_ARGS: check-build
90     CONFIGURE_ARGS: --enable-docs
91   artifacts:
92     expire_in: 2 days
93     paths:
94       - .git-submodule-status
95       - build
97 check-system-alpine:
98   <<: *native_test_job_definition
99   needs:
100     - job: build-system-alpine
101       artifacts: true
102   variables:
103     IMAGE: alpine
104     MAKE_CHECK_ARGS: check
106 acceptance-system-alpine:
107   <<: *native_test_job_definition
108   needs:
109     - job: build-system-alpine
110       artifacts: true
111   variables:
112     IMAGE: alpine
113     MAKE_CHECK_ARGS: check-acceptance
114   <<: *acceptance_definition
116 build-system-ubuntu:
117   <<: *native_build_job_definition
118   needs:
119     job: amd64-ubuntu2004-container
120   variables:
121     IMAGE: ubuntu2004
122     CONFIGURE_ARGS: --enable-fdt=system --enable-slirp=system
123     TARGETS: aarch64-softmmu alpha-softmmu cris-softmmu hppa-softmmu
124       moxie-softmmu microblazeel-softmmu mips64el-softmmu
125     MAKE_CHECK_ARGS: check-build
126   artifacts:
127     expire_in: 2 days
128     paths:
129       - build
131 check-system-ubuntu:
132   <<: *native_test_job_definition
133   needs:
134     - job: build-system-ubuntu
135       artifacts: true
136   variables:
137     IMAGE: ubuntu2004
138     MAKE_CHECK_ARGS: check
140 acceptance-system-ubuntu:
141   <<: *native_test_job_definition
142   needs:
143     - job: build-system-ubuntu
144       artifacts: true
145   variables:
146     IMAGE: ubuntu2004
147     MAKE_CHECK_ARGS: check-acceptance
148   <<: *acceptance_definition
150 build-system-debian:
151   <<: *native_build_job_definition
152   needs:
153     job: amd64-debian-container
154   variables:
155     IMAGE: debian-amd64
156     CONFIGURE_ARGS: --enable-fdt=system
157     TARGETS: arm-softmmu avr-softmmu i386-softmmu mipsel-softmmu
158       riscv64-softmmu sh4eb-softmmu sparc-softmmu xtensaeb-softmmu
159     MAKE_CHECK_ARGS: check-build
160   artifacts:
161     expire_in: 2 days
162     paths:
163       - build
165 check-system-debian:
166   <<: *native_test_job_definition
167   needs:
168     - job: build-system-debian
169       artifacts: true
170   variables:
171     IMAGE: debian-amd64
172     MAKE_CHECK_ARGS: check
174 # No targets are built here, just tools, docs, and unit tests. This
175 # also feeds into the eventual documentation deployment steps later
176 build-tools-and-docs-debian:
177   <<: *native_build_job_definition
178   variables:
179     IMAGE: debian-amd64
180     MAKE_CHECK_ARGS: check-unit check-softfloat ctags TAGS cscope
181     CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools
182   artifacts:
183     expire_in: 2 days
184     paths:
185       - build
187 acceptance-system-debian:
188   <<: *native_test_job_definition
189   needs:
190     - job: build-system-debian
191       artifacts: true
192   variables:
193     IMAGE: debian-amd64
194     MAKE_CHECK_ARGS: check-acceptance
195   <<: *acceptance_definition
197 build-system-fedora:
198   <<: *native_build_job_definition
199   needs:
200     job: amd64-fedora-container
201   variables:
202     IMAGE: fedora
203     CONFIGURE_ARGS: --disable-gcrypt --enable-nettle --enable-docs
204              --enable-fdt=system --enable-slirp=system --enable-capstone=system
205     TARGETS: tricore-softmmu microblaze-softmmu mips-softmmu
206       xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
207     MAKE_CHECK_ARGS: check-build
208   artifacts:
209     expire_in: 2 days
210     paths:
211       - build
213 check-system-fedora:
214   <<: *native_test_job_definition
215   needs:
216     - job: build-system-fedora
217       artifacts: true
218   variables:
219     IMAGE: fedora
220     MAKE_CHECK_ARGS: check
222 acceptance-system-fedora:
223   <<: *native_test_job_definition
224   needs:
225     - job: build-system-fedora
226       artifacts: true
227   variables:
228     IMAGE: fedora
229     MAKE_CHECK_ARGS: check-acceptance
230   <<: *acceptance_definition
232 build-system-centos:
233   <<: *native_build_job_definition
234   needs:
235     job: amd64-centos8-container
236   variables:
237     IMAGE: centos8
238     CONFIGURE_ARGS: --disable-nettle --enable-gcrypt --enable-fdt=system
239                     --enable-modules
240     TARGETS: ppc64-softmmu or1k-softmmu s390x-softmmu
241       x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu
242     MAKE_CHECK_ARGS: check-build
243   artifacts:
244     expire_in: 2 days
245     paths:
246       - build
248 check-system-centos:
249   <<: *native_test_job_definition
250   needs:
251     - job: build-system-centos
252       artifacts: true
253   variables:
254     IMAGE: centos8
255     MAKE_CHECK_ARGS: check
257 acceptance-system-centos:
258   <<: *native_test_job_definition
259   needs:
260     - job: build-system-centos
261       artifacts: true
262   variables:
263     IMAGE: centos8
264     MAKE_CHECK_ARGS: check-acceptance
265   <<: *acceptance_definition
267 build-system-opensuse:
268   <<: *native_build_job_definition
269   needs:
270     job: amd64-opensuse-leap-container
271   variables:
272     IMAGE: opensuse-leap
273     CONFIGURE_ARGS: --enable-fdt=system
274     TARGETS: s390x-softmmu x86_64-softmmu aarch64-softmmu
275     MAKE_CHECK_ARGS: check-build
276   artifacts:
277     expire_in: 2 days
278     paths:
279       - build
281 check-system-opensuse:
282   <<: *native_test_job_definition
283   needs:
284     - job: build-system-opensuse
285       artifacts: true
286   variables:
287     IMAGE: opensuse-leap
288     MAKE_CHECK_ARGS: check
290 acceptance-system-opensuse:
291   <<: *native_test_job_definition
292   needs:
293     - job: build-system-opensuse
294       artifacts: true
295   variables:
296     IMAGE: opensuse-leap
297     MAKE_CHECK_ARGS: check-acceptance
298   <<: *acceptance_definition
301 build-disabled:
302   <<: *native_build_job_definition
303   needs:
304     job: amd64-fedora-container
305   variables:
306     IMAGE: fedora
307     CONFIGURE_ARGS:
308       --disable-attr
309       --disable-auth-pam
310       --disable-avx2
311       --disable-bochs
312       --disable-brlapi
313       --disable-bzip2
314       --disable-cap-ng
315       --disable-capstone
316       --disable-cloop
317       --disable-coroutine-pool
318       --disable-curl
319       --disable-curses
320       --disable-dmg
321       --disable-docs
322       --disable-gcrypt
323       --disable-glusterfs
324       --disable-gnutls
325       --disable-gtk
326       --disable-guest-agent
327       --disable-iconv
328       --disable-keyring
329       --disable-kvm
330       --disable-libiscsi
331       --disable-libpmem
332       --disable-libssh
333       --disable-libudev
334       --disable-libusb
335       --disable-libxml2
336       --disable-linux-aio
337       --disable-live-block-migration
338       --disable-lzo
339       --disable-malloc-trim
340       --disable-mpath
341       --disable-nettle
342       --disable-numa
343       --disable-opengl
344       --disable-parallels
345       --disable-pie
346       --disable-qcow1
347       --disable-qed
348       --disable-qom-cast-debug
349       --disable-rbd
350       --disable-rdma
351       --disable-replication
352       --disable-sdl
353       --disable-seccomp
354       --disable-sheepdog
355       --disable-slirp
356       --disable-smartcard
357       --disable-snappy
358       --disable-sparse
359       --disable-spice
360       --disable-strip
361       --disable-tpm
362       --disable-usb-redir
363       --disable-vdi
364       --disable-vhost-crypto
365       --disable-vhost-net
366       --disable-vhost-scsi
367       --disable-vhost-kernel
368       --disable-vhost-user
369       --disable-vhost-vdpa
370       --disable-vhost-vsock
371       --disable-virglrenderer
372       --disable-vnc
373       --disable-vte
374       --disable-vvfat
375       --disable-xen
376       --disable-zstd
377     TARGETS: arm-softmmu i386-softmmu ppc64-softmmu mips64-softmmu
378       s390x-softmmu i386-linux-user
379     MAKE_CHECK_ARGS: check-qtest SPEED=slow
381 # This jobs explicitly disable TCG (--disable-tcg), KVM is detected by
382 # the configure script. The container doesn't contain Xen headers so
383 # Xen accelerator is not detected / selected. As result it build the
384 # i386-softmmu and x86_64-softmmu with KVM being the single accelerator
385 # available.
386 build-tcg-disabled:
387   <<: *native_build_job_definition
388   needs:
389     job: amd64-centos8-container
390   variables:
391     IMAGE: centos8
392   script:
393     - mkdir build
394     - cd build
395     - ../configure --disable-tcg --audio-drv-list="" || { cat config.log meson-logs/meson-log.txt && exit 1; }
396     - make -j"$JOBS"
397     - make check-unit
398     - make check-qapi-schema
399     - cd tests/qemu-iotests/
400     - ./check -raw 001 002 003 004 005 008 009 010 011 012 021 025 032 033 048
401             052 063 077 086 101 104 106 113 148 150 151 152 157 159 160 163
402             170 171 183 184 192 194 197 208 215 221 222 226 227 236 253 277
403     - ./check -qcow2 028 051 056 057 058 065 068 082 085 091 095 096 102 122
404             124 132 139 142 144 145 151 152 155 157 165 194 196 197 200 202
405             208 209 215 216 218 222 227 234 246 247 248 250 254 255 257 258
406             260 261 262 263 264 270 272 273 277 279
408 build-user:
409   <<: *native_build_job_definition
410   needs:
411     job: amd64-debian-user-cross-container
412   variables:
413     IMAGE: debian-all-test-cross
414     CONFIGURE_ARGS: --disable-tools --disable-system
415     MAKE_CHECK_ARGS: check-tcg
417 build-user-static:
418   <<: *native_build_job_definition
419   needs:
420     job: amd64-debian-user-cross-container
421   variables:
422     IMAGE: debian-all-test-cross
423     CONFIGURE_ARGS: --disable-tools --disable-system --static
424     MAKE_CHECK_ARGS: check-tcg
426 # Only build the softmmu targets we have check-tcg tests for
427 build-some-softmmu:
428   <<: *native_build_job_definition
429   needs:
430     job: amd64-debian-user-cross-container
431   variables:
432     IMAGE: debian-all-test-cross
433     CONFIGURE_ARGS: --disable-tools --enable-debug
434     TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu
435     MAKE_CHECK_ARGS: check-tcg
437 # Run check-tcg against linux-user (with plugins)
438 # we skip sparc64-linux-user until it has been fixed somewhat
439 # we skip cris-linux-user as it doesn't use the common run loop
440 build-user-plugins:
441   <<: *native_build_job_definition
442   needs:
443     job: amd64-debian-user-cross-container
444   variables:
445     IMAGE: debian-all-test-cross
446     CONFIGURE_ARGS: --disable-tools --disable-system --enable-plugins --enable-debug-tcg --target-list-exclude=sparc64-linux-user,cris-linux-user
447     MAKE_CHECK_ARGS: check-tcg
448   timeout: 1h 30m
450 build-user-centos7:
451   <<: *native_build_job_definition
452   variables:
453     IMAGE: centos7
454     CONFIGURE_ARGS: --disable-system --disable-tools --disable-docs
455     MAKE_CHECK_ARGS: check-tcg
457 build-some-softmmu-plugins:
458   <<: *native_build_job_definition
459   needs:
460     job: amd64-debian-user-cross-container
461   variables:
462     IMAGE: debian-all-test-cross
463     CONFIGURE_ARGS: --disable-tools --disable-user --enable-plugins --enable-debug-tcg
464     TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu
465     MAKE_CHECK_ARGS: check-tcg
467 clang-system:
468   <<: *native_build_job_definition
469   needs:
470     job: amd64-fedora-container
471   variables:
472     IMAGE: fedora
473     CONFIGURE_ARGS: --cc=clang --cxx=clang++
474       --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
475     TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu
476       ppc-softmmu s390x-softmmu
477     MAKE_CHECK_ARGS: check-qtest check-tcg
479 clang-user:
480   <<: *native_build_job_definition
481   variables:
482     IMAGE: debian-all-test-cross
483     CONFIGURE_ARGS: --cc=clang --cxx=clang++ --disable-system
484       --target-list-exclude=microblazeel-linux-user,aarch64_be-linux-user,i386-linux-user,m68k-linux-user,mipsn32el-linux-user,xtensaeb-linux-user
485       --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
486     MAKE_CHECK_ARGS: check-unit check-tcg
488 # Set LD_JOBS=1 because this requires LTO and ld consumes a large amount of memory.
489 # On gitlab runners, default value sometimes end up calling 2 lds concurrently and
490 # triggers an Out-Of-Memory error
492 # Since slirp callbacks are used in QEMU Timers, slirp needs to be compiled together
493 # with QEMU and linked as a static library to avoid false positives in CFI checks.
494 # This can be accomplished by using -enable-slirp=git, which avoids the use of
495 # a system-wide version of the library
497 # Split in three sets of build/check/acceptance to limit the execution time of each
498 # job
499 build-cfi-aarch64:
500   <<: *native_build_job_definition
501   needs:
502   - job: amd64-fedora-container
503   variables:
504     LD_JOBS: 1
505     AR: llvm-ar
506     IMAGE: fedora
507     CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
508       --enable-safe-stack --enable-slirp=git
509     TARGETS: aarch64-softmmu
510     MAKE_CHECK_ARGS: check-build
511   artifacts:
512     expire_in: 2 days
513     paths:
514       - build
516 check-cfi-aarch64:
517   <<: *native_test_job_definition
518   needs:
519     - job: build-cfi-aarch64
520       artifacts: true
521   variables:
522     IMAGE: fedora
523     MAKE_CHECK_ARGS: check
525 acceptance-cfi-aarch64:
526   <<: *native_test_job_definition
527   needs:
528     - job: build-cfi-aarch64
529       artifacts: true
530   variables:
531     IMAGE: fedora
532     MAKE_CHECK_ARGS: check-acceptance
533   <<: *acceptance_definition
535 build-cfi-ppc64-s390x:
536   <<: *native_build_job_definition
537   needs:
538   - job: amd64-fedora-container
539   variables:
540     LD_JOBS: 1
541     AR: llvm-ar
542     IMAGE: fedora
543     CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
544       --enable-safe-stack --enable-slirp=git
545     TARGETS: ppc64-softmmu s390x-softmmu
546     MAKE_CHECK_ARGS: check-build
547   artifacts:
548     expire_in: 2 days
549     paths:
550       - build
552 check-cfi-ppc64-s390x:
553   <<: *native_test_job_definition
554   needs:
555     - job: build-cfi-ppc64-s390x
556       artifacts: true
557   variables:
558     IMAGE: fedora
559     MAKE_CHECK_ARGS: check
561 acceptance-cfi-ppc64-s390x:
562   <<: *native_test_job_definition
563   needs:
564     - job: build-cfi-ppc64-s390x
565       artifacts: true
566   variables:
567     IMAGE: fedora
568     MAKE_CHECK_ARGS: check-acceptance
569   <<: *acceptance_definition
571 build-cfi-x86_64:
572   <<: *native_build_job_definition
573   needs:
574   - job: amd64-fedora-container
575   variables:
576     LD_JOBS: 1
577     AR: llvm-ar
578     IMAGE: fedora
579     CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
580       --enable-safe-stack --enable-slirp=git
581     TARGETS: x86_64-softmmu
582     MAKE_CHECK_ARGS: check-build
583   artifacts:
584     expire_in: 2 days
585     paths:
586       - build
588 check-cfi-x86_64:
589   <<: *native_test_job_definition
590   needs:
591     - job: build-cfi-x86_64
592       artifacts: true
593   variables:
594     IMAGE: fedora
595     MAKE_CHECK_ARGS: check
597 acceptance-cfi-x86_64:
598   <<: *native_test_job_definition
599   needs:
600     - job: build-cfi-x86_64
601       artifacts: true
602   variables:
603     IMAGE: fedora
604     MAKE_CHECK_ARGS: check-acceptance
605   <<: *acceptance_definition
607 tsan-build:
608   <<: *native_build_job_definition
609   variables:
610     IMAGE: ubuntu2004
611     CONFIGURE_ARGS: --enable-tsan --cc=clang-10 --cxx=clang++-10 --disable-docs
612                     --enable-fdt=system --enable-slirp=system
613     TARGETS: x86_64-softmmu ppc64-softmmu riscv64-softmmu x86_64-linux-user
614     MAKE_CHECK_ARGS: bench V=1
616 # These targets are on the way out
617 build-deprecated:
618   <<: *native_build_job_definition
619   needs:
620     job: amd64-debian-user-cross-container
621   variables:
622     IMAGE: debian-all-test-cross
623     CONFIGURE_ARGS: --disable-docs --disable-tools
624     MAKE_CHECK_ARGS: build-tcg
625     TARGETS: ppc64abi32-linux-user lm32-softmmu unicore32-softmmu
626   artifacts:
627     expire_in: 2 days
628     paths:
629       - build
631 # We split the check-tcg step as test failures are expected but we still
632 # want to catch the build breaking.
633 check-deprecated:
634   <<: *native_test_job_definition
635   needs:
636     - job: build-deprecated
637       artifacts: true
638   variables:
639     IMAGE: debian-all-test-cross
640     MAKE_CHECK_ARGS: check-tcg
641   allow_failure: true
643 # gprof/gcov are GCC features
644 gprof-gcov:
645   <<: *native_build_job_definition
646   variables:
647     IMAGE: ubuntu2004
648     CONFIGURE_ARGS: --enable-gprof --enable-gcov
649     MAKE_CHECK_ARGS: check
650     TARGETS: aarch64-softmmu ppc64-softmmu s390x-softmmu x86_64-softmmu
651   timeout: 70m
652   after_script:
653     - ${CI_PROJECT_DIR}/scripts/ci/coverage-summary.sh
655 build-oss-fuzz:
656   <<: *native_build_job_definition
657   needs:
658     job: amd64-fedora-container
659   variables:
660     IMAGE: fedora
661   script:
662     - mkdir build-oss-fuzz
663     - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address"
664       ./scripts/oss-fuzz/build.sh
665     - export ASAN_OPTIONS="fast_unwind_on_malloc=0"
666     - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f
667                       | grep -v slirp); do
668         grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ;
669         echo Testing ${fuzzer} ... ;
670         "${fuzzer}" -runs=1 -seed=1 || exit 1 ;
671       done
672     # Unrelated to fuzzer: run some tests with -fsanitize=address
673     - cd build-oss-fuzz && make check-qtest-i386 check-unit
675 build-tci:
676   <<: *native_build_job_definition
677   needs:
678     job: amd64-debian-user-cross-container
679   variables:
680     IMAGE: debian-all-test-cross
681   script:
682     - TARGETS="aarch64 alpha arm hppa m68k microblaze moxie ppc64 s390x x86_64"
683     - mkdir build
684     - cd build
685     - ../configure --enable-tcg-interpreter
686         --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)" || { cat config.log meson-logs/meson-log.txt && exit 1; }
687     - make -j"$JOBS"
688     - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
689     - for tg in $TARGETS ; do
690         export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
691         ./tests/qtest/boot-serial-test || exit 1 ;
692         ./tests/qtest/cdrom-test || exit 1 ;
693       done
694     - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
695     - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
696     - make check-tcg
698 # Alternate coroutines implementations are only really of interest to KVM users
699 # However we can't test against KVM on Gitlab-CI so we can only run unit tests
700 build-coroutine-ucontext:
701   <<: *native_build_job_definition
702   needs:
703     job: amd64-ubuntu2004-container
704   variables:
705     IMAGE: ubuntu2004
706     CONFIGURE_ARGS: --with-coroutine=ucontext --disable-tcg
707     MAKE_CHECK_ARGS: check-unit
709 build-coroutine-sigaltstack:
710   <<: *native_build_job_definition
711   needs:
712     job: amd64-ubuntu2004-container
713   variables:
714     IMAGE: ubuntu2004
715     CONFIGURE_ARGS: --with-coroutine=sigaltstack --disable-tcg
716     MAKE_CHECK_ARGS: check-unit
718 # Most jobs test latest gcrypt or nettle builds
720 # These jobs test old gcrypt and nettle from RHEL7
721 # which had some API differences.
722 build-crypto-old-nettle:
723   <<: *native_build_job_definition
724   needs:
725     job: amd64-centos7-container
726   variables:
727     IMAGE: centos7
728     TARGETS: x86_64-softmmu x86_64-linux-user
729     CONFIGURE_ARGS: --disable-gcrypt --enable-nettle
730     MAKE_CHECK_ARGS: check-build
731   artifacts:
732     paths:
733       - build
735 check-crypto-old-nettle:
736   <<: *native_test_job_definition
737   needs:
738     - job: build-crypto-old-nettle
739       artifacts: true
740   variables:
741     IMAGE: centos7
742     MAKE_CHECK_ARGS: check
745 build-crypto-old-gcrypt:
746   <<: *native_build_job_definition
747   needs:
748     job: amd64-centos7-container
749   variables:
750     IMAGE: centos7
751     TARGETS: x86_64-softmmu x86_64-linux-user
752     CONFIGURE_ARGS: --disable-nettle --enable-gcrypt
753     MAKE_CHECK_ARGS: check-build
754   artifacts:
755     paths:
756       - build
758 check-crypto-old-gcrypt:
759   <<: *native_test_job_definition
760   needs:
761     - job: build-crypto-old-gcrypt
762       artifacts: true
763   variables:
764     IMAGE: centos7
765     MAKE_CHECK_ARGS: check
768 build-crypto-only-gnutls:
769   <<: *native_build_job_definition
770   needs:
771     job: amd64-centos7-container
772   variables:
773     IMAGE: centos7
774     TARGETS: x86_64-softmmu x86_64-linux-user
775     CONFIGURE_ARGS: --disable-nettle --disable-gcrypt --enable-gnutls
776     MAKE_CHECK_ARGS: check-build
777   artifacts:
778     paths:
779       - build
781 check-crypto-only-gnutls:
782   <<: *native_test_job_definition
783   needs:
784     - job: build-crypto-only-gnutls
785       artifacts: true
786   variables:
787     IMAGE: centos7
788     MAKE_CHECK_ARGS: check
790 # We don't need to exercise every backend with every front-end
791 build-trace-multi-user:
792   <<: *native_build_job_definition
793   needs:
794     job: amd64-ubuntu2004-container
795   variables:
796     IMAGE: ubuntu2004
797     CONFIGURE_ARGS: --enable-trace-backends=log,simple,syslog --disable-system
799 build-trace-ftrace-system:
800   <<: *native_build_job_definition
801   needs:
802     job: amd64-ubuntu2004-container
803   variables:
804     IMAGE: ubuntu2004
805     CONFIGURE_ARGS: --enable-trace-backends=ftrace --target-list=x86_64-softmmu
807 build-trace-ust-system:
808   <<: *native_build_job_definition
809   needs:
810     job: amd64-ubuntu2004-container
811   variables:
812     IMAGE: ubuntu2004
813     CONFIGURE_ARGS: --enable-trace-backends=ust --target-list=x86_64-softmmu
815 # Check our reduced build configurations
816 build-without-default-devices:
817   <<: *native_build_job_definition
818   needs:
819     job: amd64-centos8-container
820   variables:
821     IMAGE: centos8
822     CONFIGURE_ARGS: --without-default-devices --disable-user
824 build-without-default-features:
825   <<: *native_build_job_definition
826   needs:
827     job: amd64-debian-container
828   variables:
829     IMAGE: debian-amd64
830     CONFIGURE_ARGS: --without-default-features --disable-user
831         --target-list-exclude=arm-softmmu,i386-softmmu,mipsel-softmmu,mips64-softmmu,ppc-softmmu
832     MAKE_CHECK_ARGS: check-unit
834 check-patch:
835   stage: build
836   image: $CI_REGISTRY_IMAGE/qemu/centos8:latest
837   needs:
838     job: amd64-centos8-container
839   script: .gitlab-ci.d/check-patch.py
840   except:
841     variables:
842       - $CI_PROJECT_NAMESPACE == 'qemu-project' && $CI_COMMIT_BRANCH == 'master'
843   variables:
844     GIT_DEPTH: 1000
845   allow_failure: true
847 check-dco:
848   stage: build
849   image: $CI_REGISTRY_IMAGE/qemu/centos8:latest
850   needs:
851     job: amd64-centos8-container
852   script: .gitlab-ci.d/check-dco.py
853   except:
854     variables:
855       - $CI_PROJECT_NAMESPACE == 'qemu-project' && $CI_COMMIT_BRANCH == 'master'
856   variables:
857     GIT_DEPTH: 1000
859 build-libvhost-user:
860   stage: build
861   image: $CI_REGISTRY_IMAGE/qemu/fedora:latest
862   needs:
863     job: amd64-fedora-container
864   before_script:
865     - dnf install -y meson ninja-build
866   script:
867     - mkdir subprojects/libvhost-user/build
868     - cd subprojects/libvhost-user/build
869     - meson
870     - ninja
872 # Prepare for GitLab pages deployment. Anything copied into the
873 # "public" directory will be deployed to $USER.gitlab.io/$PROJECT
874 pages:
875   image: $CI_REGISTRY_IMAGE/qemu/debian-amd64:latest
876   stage: test
877   needs:
878     - job: build-tools-and-docs-debian
879   script:
880     - mkdir -p public
881     # HTML-ised source tree
882     - make gtags
883     - htags -anT --tree-view=filetree -m qemu_init
884         -t "Welcome to the QEMU sourcecode"
885     - mv HTML public/src
886     # Project documentation
887     - make -C build install DESTDIR=$(pwd)/temp-install
888     - mv temp-install/usr/local/share/doc/qemu/* public/
889   artifacts:
890     paths:
891       - public