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