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