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