xref: /qemu/.gitlab-ci.yml (revision dcaf5e8f)
1include:
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'
9
10build-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
25
26check-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
34
35acceptance-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
43
44build-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
58
59check-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
67
68acceptance-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
76
77build-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
91
92check-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
100
101acceptance-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
109
110build-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
125
126check-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
134
135acceptance-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
143
144build-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
159
160check-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
168
169acceptance-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
177
178build-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
191
192check-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
200
201acceptance-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
209
210
211build-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
289
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)
297build-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
319
320build-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
328
329build-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
337
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.
341build-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
351
352# Only build the softmmu targets we have check-tcg tests for
353build-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
362
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
366build-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
375
376build-some-softmmu-plugins:
377  extends: .native_build_job_template
378  needs:
379    job: amd64-debian-user-cross-container
380  variables:
381    IMAGE: debian-all-test-cross
382    CONFIGURE_ARGS: --disable-tools --disable-user --enable-plugins --enable-debug-tcg
383    TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu
384    MAKE_CHECK_ARGS: check-tcg
385
386clang-system:
387  extends: .native_build_job_template
388  needs:
389    job: amd64-fedora-container
390  variables:
391    IMAGE: fedora
392    CONFIGURE_ARGS: --cc=clang --cxx=clang++
393      --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
394    TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu
395      ppc-softmmu s390x-softmmu
396    MAKE_CHECK_ARGS: check-qtest check-tcg
397
398clang-user:
399  extends: .native_build_job_template
400  needs:
401    job: amd64-debian-user-cross-container
402  variables:
403    IMAGE: debian-all-test-cross
404    CONFIGURE_ARGS: --cc=clang --cxx=clang++ --disable-system
405      --target-list-exclude=microblazeel-linux-user,aarch64_be-linux-user,i386-linux-user,m68k-linux-user,mipsn32el-linux-user,xtensaeb-linux-user
406      --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
407    MAKE_CHECK_ARGS: check-unit check-tcg
408
409# Set LD_JOBS=1 because this requires LTO and ld consumes a large amount of memory.
410# On gitlab runners, default value sometimes end up calling 2 lds concurrently and
411# triggers an Out-Of-Memory error
412#
413# Since slirp callbacks are used in QEMU Timers, slirp needs to be compiled together
414# with QEMU and linked as a static library to avoid false positives in CFI checks.
415# This can be accomplished by using -enable-slirp=git, which avoids the use of
416# a system-wide version of the library
417#
418# Split in three sets of build/check/acceptance to limit the execution time of each
419# job
420build-cfi-aarch64:
421  extends: .native_build_job_template
422  needs:
423  - job: amd64-fedora-container
424  variables:
425    LD_JOBS: 1
426    AR: llvm-ar
427    IMAGE: fedora
428    CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
429      --enable-safe-stack --enable-slirp=git
430    TARGETS: aarch64-softmmu
431    MAKE_CHECK_ARGS: check-build
432  timeout: 70m
433  artifacts:
434    expire_in: 2 days
435    paths:
436      - build
437
438check-cfi-aarch64:
439  extends: .native_test_job_template
440  needs:
441    - job: build-cfi-aarch64
442      artifacts: true
443  variables:
444    IMAGE: fedora
445    MAKE_CHECK_ARGS: check
446
447acceptance-cfi-aarch64:
448  extends: .acceptance_test_job_template
449  needs:
450    - job: build-cfi-aarch64
451      artifacts: true
452  variables:
453    IMAGE: fedora
454    MAKE_CHECK_ARGS: check-acceptance
455
456build-cfi-ppc64-s390x:
457  extends: .native_build_job_template
458  needs:
459  - job: amd64-fedora-container
460  variables:
461    LD_JOBS: 1
462    AR: llvm-ar
463    IMAGE: fedora
464    CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
465      --enable-safe-stack --enable-slirp=git
466    TARGETS: ppc64-softmmu s390x-softmmu
467    MAKE_CHECK_ARGS: check-build
468  timeout: 70m
469  artifacts:
470    expire_in: 2 days
471    paths:
472      - build
473
474check-cfi-ppc64-s390x:
475  extends: .native_test_job_template
476  needs:
477    - job: build-cfi-ppc64-s390x
478      artifacts: true
479  variables:
480    IMAGE: fedora
481    MAKE_CHECK_ARGS: check
482
483acceptance-cfi-ppc64-s390x:
484  extends: .acceptance_test_job_template
485  needs:
486    - job: build-cfi-ppc64-s390x
487      artifacts: true
488  variables:
489    IMAGE: fedora
490    MAKE_CHECK_ARGS: check-acceptance
491
492build-cfi-x86_64:
493  extends: .native_build_job_template
494  needs:
495  - job: amd64-fedora-container
496  variables:
497    LD_JOBS: 1
498    AR: llvm-ar
499    IMAGE: fedora
500    CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
501      --enable-safe-stack --enable-slirp=git
502    TARGETS: x86_64-softmmu
503    MAKE_CHECK_ARGS: check-build
504  timeout: 70m
505  artifacts:
506    expire_in: 2 days
507    paths:
508      - build
509
510check-cfi-x86_64:
511  extends: .native_test_job_template
512  needs:
513    - job: build-cfi-x86_64
514      artifacts: true
515  variables:
516    IMAGE: fedora
517    MAKE_CHECK_ARGS: check
518
519acceptance-cfi-x86_64:
520  extends: .acceptance_test_job_template
521  needs:
522    - job: build-cfi-x86_64
523      artifacts: true
524  variables:
525    IMAGE: fedora
526    MAKE_CHECK_ARGS: check-acceptance
527
528tsan-build:
529  extends: .native_build_job_template
530  needs:
531    job: amd64-ubuntu2004-container
532  variables:
533    IMAGE: ubuntu2004
534    CONFIGURE_ARGS: --enable-tsan --cc=clang-10 --cxx=clang++-10
535          --enable-trace-backends=ust --enable-fdt=system --enable-slirp=system
536    TARGETS: x86_64-softmmu ppc64-softmmu riscv64-softmmu x86_64-linux-user
537    MAKE_CHECK_ARGS: bench V=1
538
539# These targets are on the way out
540build-deprecated:
541  extends: .native_build_job_template
542  needs:
543    job: amd64-debian-user-cross-container
544  variables:
545    IMAGE: debian-all-test-cross
546    CONFIGURE_ARGS: --disable-tools
547    MAKE_CHECK_ARGS: build-tcg
548    TARGETS: ppc64abi32-linux-user
549  artifacts:
550    expire_in: 2 days
551    paths:
552      - build
553
554# We split the check-tcg step as test failures are expected but we still
555# want to catch the build breaking.
556check-deprecated:
557  extends: .native_test_job_template
558  needs:
559    - job: build-deprecated
560      artifacts: true
561  variables:
562    IMAGE: debian-all-test-cross
563    MAKE_CHECK_ARGS: check-tcg
564  allow_failure: true
565
566# gprof/gcov are GCC features
567gprof-gcov:
568  extends: .native_build_job_template
569  needs:
570    job: amd64-ubuntu2004-container
571  variables:
572    IMAGE: ubuntu2004
573    CONFIGURE_ARGS: --enable-gprof --enable-gcov
574    MAKE_CHECK_ARGS: check
575    TARGETS: aarch64-softmmu ppc64-softmmu s390x-softmmu x86_64-softmmu
576  timeout: 70m
577  after_script:
578    - ${CI_PROJECT_DIR}/scripts/ci/coverage-summary.sh
579
580build-oss-fuzz:
581  extends: .native_build_job_template
582  needs:
583    job: amd64-fedora-container
584  variables:
585    IMAGE: fedora
586  script:
587    - mkdir build-oss-fuzz
588    - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address"
589      ./scripts/oss-fuzz/build.sh
590    - export ASAN_OPTIONS="fast_unwind_on_malloc=0"
591    - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f
592                      | grep -v slirp); do
593        grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ;
594        echo Testing ${fuzzer} ... ;
595        "${fuzzer}" -runs=1 -seed=1 || exit 1 ;
596      done
597    # Unrelated to fuzzer: run some tests with -fsanitize=address
598    - cd build-oss-fuzz && make check-qtest-i386 check-unit
599
600build-tci:
601  extends: .native_build_job_template
602  needs:
603    job: amd64-debian-user-cross-container
604  variables:
605    IMAGE: debian-all-test-cross
606  script:
607    - TARGETS="aarch64 alpha arm hppa m68k microblaze ppc64 s390x x86_64"
608    - mkdir build
609    - cd build
610    - ../configure --enable-tcg-interpreter
611        --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)" || { cat config.log meson-logs/meson-log.txt && exit 1; }
612    - make -j"$JOBS"
613    - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
614    - for tg in $TARGETS ; do
615        export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
616        ./tests/qtest/boot-serial-test || exit 1 ;
617        ./tests/qtest/cdrom-test || exit 1 ;
618      done
619    - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
620    - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
621    - make check-tcg
622
623# Alternate coroutines implementations are only really of interest to KVM users
624# However we can't test against KVM on Gitlab-CI so we can only run unit tests
625build-coroutine-sigaltstack:
626  extends: .native_build_job_template
627  needs:
628    job: amd64-ubuntu2004-container
629  variables:
630    IMAGE: ubuntu2004
631    CONFIGURE_ARGS: --with-coroutine=sigaltstack --disable-tcg
632                    --enable-trace-backends=ftrace
633    MAKE_CHECK_ARGS: check-unit
634
635# Most jobs test latest gcrypt or nettle builds
636#
637# These jobs test old gcrypt and nettle from RHEL7
638# which had some API differences.
639crypto-old-nettle:
640  extends: .native_build_job_template
641  needs:
642    job: amd64-centos7-container
643  variables:
644    IMAGE: centos7
645    TARGETS: x86_64-softmmu x86_64-linux-user
646    CONFIGURE_ARGS: --disable-gcrypt --enable-nettle
647    MAKE_CHECK_ARGS: check
648
649crypto-old-gcrypt:
650  extends: .native_build_job_template
651  needs:
652    job: amd64-centos7-container
653  variables:
654    IMAGE: centos7
655    TARGETS: x86_64-softmmu x86_64-linux-user
656    CONFIGURE_ARGS: --disable-nettle --enable-gcrypt
657    MAKE_CHECK_ARGS: check
658
659crypto-only-gnutls:
660  extends: .native_build_job_template
661  needs:
662    job: amd64-centos7-container
663  variables:
664    IMAGE: centos7
665    TARGETS: x86_64-softmmu x86_64-linux-user
666    CONFIGURE_ARGS: --disable-nettle --disable-gcrypt --enable-gnutls
667    MAKE_CHECK_ARGS: check
668
669
670# Check our reduced build configurations
671build-without-default-devices:
672  extends: .native_build_job_template
673  needs:
674    job: amd64-centos8-container
675  variables:
676    IMAGE: centos8
677    CONFIGURE_ARGS: --without-default-devices --disable-user
678
679build-without-default-features:
680  extends: .native_build_job_template
681  needs:
682    job: amd64-debian-container
683  variables:
684    IMAGE: debian-amd64
685    CONFIGURE_ARGS: --without-default-features --disable-user
686        --target-list-exclude=arm-softmmu,i386-softmmu,mipsel-softmmu,mips64-softmmu,ppc-softmmu
687    MAKE_CHECK_ARGS: check-unit
688
689build-libvhost-user:
690  stage: build
691  image: $CI_REGISTRY_IMAGE/qemu/fedora:latest
692  needs:
693    job: amd64-fedora-container
694  before_script:
695    - dnf install -y meson ninja-build
696  script:
697    - mkdir subprojects/libvhost-user/build
698    - cd subprojects/libvhost-user/build
699    - meson
700    - ninja
701
702# No targets are built here, just tools, docs, and unit tests. This
703# also feeds into the eventual documentation deployment steps later
704build-tools-and-docs-debian:
705  extends: .native_build_job_template
706  needs:
707    job: amd64-debian-container
708  variables:
709    IMAGE: debian-amd64
710    MAKE_CHECK_ARGS: check-unit check-softfloat ctags TAGS cscope
711    CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools
712  artifacts:
713    expire_in: 2 days
714    paths:
715      - build
716
717# Prepare for GitLab pages deployment. Anything copied into the
718# "public" directory will be deployed to $USER.gitlab.io/$PROJECT
719pages:
720  image: $CI_REGISTRY_IMAGE/qemu/debian-amd64:latest
721  stage: test
722  needs:
723    - job: build-tools-and-docs-debian
724  script:
725    - mkdir -p public
726    # HTML-ised source tree
727    - make gtags
728    - htags -anT --tree-view=filetree -m qemu_init
729        -t "Welcome to the QEMU sourcecode"
730    - mv HTML public/src
731    # Project documentation
732    - make -C build install DESTDIR=$(pwd)/temp-install
733    - mv temp-install/usr/local/share/doc/qemu/* public/
734  artifacts:
735    paths:
736      - public
737