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