xref: /qemu/.gitlab-ci.yml (revision 6cd5251b)
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-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
384
385build-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
394
395clang-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
406
407clang-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
417
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
421#
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
426#
427# Split in three sets of build/check/acceptance to limit the execution time of each
428# job
429build-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
446
447check-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
455
456acceptance-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
464
465build-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
482
483check-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
491
492acceptance-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
500
501build-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
518
519check-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
527
528acceptance-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
536
537tsan-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
547
548# These targets are on the way out
549build-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
562
563# We split the check-tcg step as test failures are expected but we still
564# want to catch the build breaking.
565check-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
574
575# gprof/gcov are GCC features
576gprof-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
588
589build-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
608
609build-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
631
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
634build-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
643
644# Most jobs test latest gcrypt or nettle builds
645#
646# These jobs test old gcrypt and nettle from RHEL7
647# which had some API differences.
648crypto-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
657
658crypto-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
667
668crypto-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
677
678
679# Check our reduced build configurations
680build-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
687
688build-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
697
698build-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
710
711# No targets are built here, just tools, docs, and unit tests. This
712# also feeds into the eventual documentation deployment steps later
713build-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
725
726# Prepare for GitLab pages deployment. Anything copied into the
727# "public" directory will be deployed to $USER.gitlab.io/$PROJECT
728pages:
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
746