MAINTAINERS: Merge the Gitlab-CI section into the generic CI section
[qemu/ar7.git] / .gitlab-ci.yml
blob0ada3dbb90a4180f33273f43787f2ff4c1e2bf1f
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 # Also use a different coroutine implementation (which is only really of
370 # interest to KVM users, i.e. with TCG disabled)
371 build-tcg-disabled:
372   <<: *native_build_job_definition
373   needs:
374     job: amd64-centos8-container
375   variables:
376     IMAGE: centos8
377   script:
378     - mkdir build
379     - cd build
380     - ../configure --disable-tcg --audio-drv-list="" --with-coroutine=ucontext
381       || { cat config.log meson-logs/meson-log.txt && exit 1; }
382     - make -j"$JOBS"
383     - make check-unit
384     - make check-qapi-schema
385     - cd tests/qemu-iotests/
386     - ./check -raw 001 002 003 004 005 008 009 010 011 012 021 025 032 033 048
387             052 063 077 086 101 104 106 113 148 150 151 152 157 159 160 163
388             170 171 183 184 192 194 197 208 215 221 222 226 227 236 253 277
389     - ./check -qcow2 028 051 056 057 058 065 068 082 085 091 095 096 102 122
390             124 132 139 142 144 145 151 152 155 157 165 194 196 197 200 202
391             208 209 215 216 218 222 227 234 246 247 248 250 254 255 257 258
392             260 261 262 263 264 270 272 273 277 279
394 build-user:
395   <<: *native_build_job_definition
396   needs:
397     job: amd64-debian-user-cross-container
398   variables:
399     IMAGE: debian-all-test-cross
400     CONFIGURE_ARGS: --disable-tools --disable-system
401     MAKE_CHECK_ARGS: check-tcg
403 build-user-static:
404   <<: *native_build_job_definition
405   needs:
406     job: amd64-debian-user-cross-container
407   variables:
408     IMAGE: debian-all-test-cross
409     CONFIGURE_ARGS: --disable-tools --disable-system --static
410     MAKE_CHECK_ARGS: check-tcg
412 # Only build the softmmu targets we have check-tcg tests for
413 build-some-softmmu:
414   <<: *native_build_job_definition
415   needs:
416     job: amd64-debian-user-cross-container
417   variables:
418     IMAGE: debian-all-test-cross
419     CONFIGURE_ARGS: --disable-tools --enable-debug
420     TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu
421     MAKE_CHECK_ARGS: check-tcg
423 # Run check-tcg against linux-user (with plugins)
424 # we skip sparc64-linux-user until it has been fixed somewhat
425 # we skip cris-linux-user as it doesn't use the common run loop
426 build-user-plugins:
427   <<: *native_build_job_definition
428   needs:
429     job: amd64-debian-user-cross-container
430   variables:
431     IMAGE: debian-all-test-cross
432     CONFIGURE_ARGS: --disable-tools --disable-system --enable-plugins --enable-debug-tcg --target-list-exclude=sparc64-linux-user,cris-linux-user
433     MAKE_CHECK_ARGS: check-tcg
434   timeout: 1h 30m
436 build-user-centos7:
437   <<: *native_build_job_definition
438   needs:
439     job: amd64-centos7-container
440   variables:
441     IMAGE: centos7
442     CONFIGURE_ARGS: --disable-system --disable-tools --disable-docs
443     MAKE_CHECK_ARGS: check-tcg
445 build-some-softmmu-plugins:
446   <<: *native_build_job_definition
447   needs:
448     job: amd64-debian-user-cross-container
449   variables:
450     IMAGE: debian-all-test-cross
451     CONFIGURE_ARGS: --disable-tools --disable-user --enable-plugins --enable-debug-tcg
452     TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu
453     MAKE_CHECK_ARGS: check-tcg
455 clang-system:
456   <<: *native_build_job_definition
457   needs:
458     job: amd64-fedora-container
459   variables:
460     IMAGE: fedora
461     CONFIGURE_ARGS: --cc=clang --cxx=clang++
462       --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
463     TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu
464       ppc-softmmu s390x-softmmu
465     MAKE_CHECK_ARGS: check-qtest check-tcg
467 clang-user:
468   <<: *native_build_job_definition
469   needs:
470     job: amd64-debian-user-cross-container
471   variables:
472     IMAGE: debian-all-test-cross
473     CONFIGURE_ARGS: --cc=clang --cxx=clang++ --disable-system
474       --target-list-exclude=microblazeel-linux-user,aarch64_be-linux-user,i386-linux-user,m68k-linux-user,mipsn32el-linux-user,xtensaeb-linux-user
475       --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
476     MAKE_CHECK_ARGS: check-unit check-tcg
478 tsan-build:
479   <<: *native_build_job_definition
480   needs:
481     job: amd64-ubuntu2004-container
482   variables:
483     IMAGE: ubuntu2004
484     CONFIGURE_ARGS: --enable-tsan --cc=clang-10 --cxx=clang++-10 --disable-docs
485                     --enable-fdt=system --enable-slirp=system
486     TARGETS: x86_64-softmmu ppc64-softmmu riscv64-softmmu x86_64-linux-user
487     MAKE_CHECK_ARGS: bench V=1
489 # These targets are on the way out
490 build-deprecated:
491   <<: *native_build_job_definition
492   needs:
493     job: amd64-debian-user-cross-container
494   variables:
495     IMAGE: debian-all-test-cross
496     CONFIGURE_ARGS: --disable-docs --disable-tools
497     MAKE_CHECK_ARGS: build-tcg
498     TARGETS: ppc64abi32-linux-user lm32-softmmu unicore32-softmmu
499   artifacts:
500     expire_in: 2 days
501     paths:
502       - build
504 # We split the check-tcg step as test failures are expected but we still
505 # want to catch the build breaking.
506 check-deprecated:
507   <<: *native_test_job_definition
508   needs:
509     - job: build-deprecated
510       artifacts: true
511   variables:
512     IMAGE: debian-all-test-cross
513     MAKE_CHECK_ARGS: check-tcg
514   allow_failure: true
516 # gprof/gcov are GCC features
517 gprof-gcov:
518   <<: *native_build_job_definition
519   needs:
520     job: amd64-ubuntu2004-container
521   variables:
522     IMAGE: ubuntu2004
523     CONFIGURE_ARGS: --enable-gprof --enable-gcov
524     MAKE_CHECK_ARGS: check
525     TARGETS: aarch64-softmmu ppc64-softmmu s390x-softmmu x86_64-softmmu
526   timeout: 70m
527   after_script:
528     - ${CI_PROJECT_DIR}/scripts/ci/coverage-summary.sh
530 build-oss-fuzz:
531   <<: *native_build_job_definition
532   needs:
533     job: amd64-fedora-container
534   variables:
535     IMAGE: fedora
536   script:
537     - mkdir build-oss-fuzz
538     - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address"
539       ./scripts/oss-fuzz/build.sh
540     - export ASAN_OPTIONS="fast_unwind_on_malloc=0"
541     - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f
542                       | grep -v slirp); do
543         grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ;
544         echo Testing ${fuzzer} ... ;
545         "${fuzzer}" -runs=1 -seed=1 || exit 1 ;
546       done
547     # Unrelated to fuzzer: run some tests with -fsanitize=address
548     - cd build-oss-fuzz && make check-qtest-i386 check-unit
550 build-tci:
551   <<: *native_build_job_definition
552   needs:
553     job: amd64-debian-user-cross-container
554   variables:
555     IMAGE: debian-all-test-cross
556   script:
557     - TARGETS="aarch64 alpha arm hppa m68k microblaze moxie ppc64 s390x x86_64"
558     - mkdir build
559     - cd build
560     - ../configure --enable-tcg-interpreter
561         --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)" || { cat config.log meson-logs/meson-log.txt && exit 1; }
562     - make -j"$JOBS"
563     - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
564     - for tg in $TARGETS ; do
565         export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
566         ./tests/qtest/boot-serial-test || exit 1 ;
567         ./tests/qtest/cdrom-test || exit 1 ;
568       done
569     - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
570     - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
571     - make check-tcg
573 # Alternate coroutines implementations are only really of interest to KVM users
574 # However we can't test against KVM on Gitlab-CI so we can only run unit tests
575 build-coroutine-sigaltstack:
576   <<: *native_build_job_definition
577   needs:
578     job: amd64-ubuntu2004-container
579   variables:
580     IMAGE: ubuntu2004
581     CONFIGURE_ARGS: --with-coroutine=sigaltstack --disable-tcg
582     MAKE_CHECK_ARGS: check-unit
584 # Most jobs test latest gcrypt or nettle builds
586 # These jobs test old gcrypt and nettle from RHEL7
587 # which had some API differences.
588 crypto-old-nettle:
589   <<: *native_build_job_definition
590   needs:
591     job: amd64-centos7-container
592   variables:
593     IMAGE: centos7
594     TARGETS: x86_64-softmmu x86_64-linux-user
595     CONFIGURE_ARGS: --disable-gcrypt --enable-nettle
596     MAKE_CHECK_ARGS: check
598 crypto-old-gcrypt:
599   <<: *native_build_job_definition
600   needs:
601     job: amd64-centos7-container
602   variables:
603     IMAGE: centos7
604     TARGETS: x86_64-softmmu x86_64-linux-user
605     CONFIGURE_ARGS: --disable-nettle --enable-gcrypt
606     MAKE_CHECK_ARGS: check
608 crypto-only-gnutls:
609   <<: *native_build_job_definition
610   needs:
611     job: amd64-centos7-container
612   variables:
613     IMAGE: centos7
614     TARGETS: x86_64-softmmu x86_64-linux-user
615     CONFIGURE_ARGS: --disable-nettle --disable-gcrypt --enable-gnutls
616     MAKE_CHECK_ARGS: check
619 # We don't need to exercise every backend with every front-end
620 build-trace-multi-user:
621   <<: *native_build_job_definition
622   needs:
623     job: amd64-ubuntu2004-container
624   variables:
625     IMAGE: ubuntu2004
626     CONFIGURE_ARGS: --enable-trace-backends=log,simple,syslog --disable-system
628 build-trace-ftrace-system:
629   <<: *native_build_job_definition
630   needs:
631     job: amd64-ubuntu2004-container
632   variables:
633     IMAGE: ubuntu2004
634     CONFIGURE_ARGS: --enable-trace-backends=ftrace --target-list=x86_64-softmmu
636 build-trace-ust-system:
637   <<: *native_build_job_definition
638   needs:
639     job: amd64-ubuntu2004-container
640   variables:
641     IMAGE: ubuntu2004
642     CONFIGURE_ARGS: --enable-trace-backends=ust --target-list=x86_64-softmmu
644 # Check our reduced build configurations
645 build-without-default-devices:
646   <<: *native_build_job_definition
647   needs:
648     job: amd64-centos8-container
649   variables:
650     IMAGE: centos8
651     CONFIGURE_ARGS: --without-default-devices --disable-user
653 build-without-default-features:
654   <<: *native_build_job_definition
655   needs:
656     job: amd64-debian-container
657   variables:
658     IMAGE: debian-amd64
659     CONFIGURE_ARGS: --without-default-features --disable-user
660         --target-list-exclude=arm-softmmu,i386-softmmu,mipsel-softmmu,mips64-softmmu,ppc-softmmu
661     MAKE_CHECK_ARGS: check-unit
663 check-patch:
664   stage: build
665   image: $CI_REGISTRY_IMAGE/qemu/centos8:latest
666   needs:
667     job: amd64-centos8-container
668   script: .gitlab-ci.d/check-patch.py
669   except:
670     variables:
671       - $CI_PROJECT_NAMESPACE == 'qemu-project' && $CI_COMMIT_BRANCH == 'master'
672   variables:
673     GIT_DEPTH: 1000
674   allow_failure: true
676 check-dco:
677   stage: build
678   image: $CI_REGISTRY_IMAGE/qemu/centos8:latest
679   needs:
680     job: amd64-centos8-container
681   script: .gitlab-ci.d/check-dco.py
682   except:
683     variables:
684       - $CI_PROJECT_NAMESPACE == 'qemu-project' && $CI_COMMIT_BRANCH == 'master'
685   variables:
686     GIT_DEPTH: 1000
688 build-libvhost-user:
689   stage: build
690   image: $CI_REGISTRY_IMAGE/qemu/fedora:latest
691   needs:
692     job: amd64-fedora-container
693   before_script:
694     - dnf install -y meson ninja-build
695   script:
696     - mkdir subprojects/libvhost-user/build
697     - cd subprojects/libvhost-user/build
698     - meson
699     - ninja
701 # No targets are built here, just tools, docs, and unit tests. This
702 # also feeds into the eventual documentation deployment steps later
703 build-tools-and-docs-debian:
704   <<: *native_build_job_definition
705   needs:
706     job: amd64-debian-container
707   variables:
708     IMAGE: debian-amd64
709     MAKE_CHECK_ARGS: check-unit check-softfloat ctags TAGS cscope
710     CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools
711   artifacts:
712     expire_in: 2 days
713     paths:
714       - build
716 # Prepare for GitLab pages deployment. Anything copied into the
717 # "public" directory will be deployed to $USER.gitlab.io/$PROJECT
718 pages:
719   image: $CI_REGISTRY_IMAGE/qemu/debian-amd64:latest
720   stage: test
721   needs:
722     - job: build-tools-and-docs-debian
723   script:
724     - mkdir -p public
725     # HTML-ised source tree
726     - make gtags
727     - htags -anT --tree-view=filetree -m qemu_init
728         -t "Welcome to the QEMU sourcecode"
729     - mv HTML public/src
730     # Project documentation
731     - make -C build install DESTDIR=$(pwd)/temp-install
732     - mv temp-install/usr/local/share/doc/qemu/* public/
733   artifacts:
734     paths:
735       - public