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