gitlab-ci: increase clang-user timeout
[qemu/ar7.git] / .gitlab-ci.d / buildtest.yml
blob7173749c528a385d0a65dbf857cb0515c07a271d
1 include:
2   - local: '/.gitlab-ci.d/buildtest-template.yml'
4 build-system-alpine:
5   extends: .native_build_job_template
6   needs:
7     - job: amd64-alpine-container
8   variables:
9     IMAGE: alpine
10     TARGETS: aarch64-softmmu alpha-softmmu cris-softmmu hppa-softmmu
11       microblazeel-softmmu mips64el-softmmu
12     MAKE_CHECK_ARGS: check-build
13     CONFIGURE_ARGS: --enable-docs --enable-trace-backends=log,simple,syslog
14   artifacts:
15     expire_in: 2 days
16     paths:
17       - .git-submodule-status
18       - build
20 check-system-alpine:
21   extends: .native_test_job_template
22   needs:
23     - job: build-system-alpine
24       artifacts: true
25   variables:
26     IMAGE: alpine
27     MAKE_CHECK_ARGS: check-unit check-qtest
29 avocado-system-alpine:
30   extends: .avocado_test_job_template
31   needs:
32     - job: build-system-alpine
33       artifacts: true
34   variables:
35     IMAGE: alpine
36     MAKE_CHECK_ARGS: check-avocado
38 build-system-ubuntu:
39   extends: .native_build_job_template
40   needs:
41     job: amd64-ubuntu2004-container
42   variables:
43     IMAGE: ubuntu2004
44     CONFIGURE_ARGS: --enable-docs --enable-fdt=system --enable-capstone
45     TARGETS: aarch64-softmmu alpha-softmmu cris-softmmu hppa-softmmu
46       microblazeel-softmmu mips64el-softmmu
47     MAKE_CHECK_ARGS: check-build
48   artifacts:
49     expire_in: 2 days
50     paths:
51       - build
53 check-system-ubuntu:
54   extends: .native_test_job_template
55   needs:
56     - job: build-system-ubuntu
57       artifacts: true
58   variables:
59     IMAGE: ubuntu2004
60     MAKE_CHECK_ARGS: check
62 avocado-system-ubuntu:
63   extends: .avocado_test_job_template
64   needs:
65     - job: build-system-ubuntu
66       artifacts: true
67   variables:
68     IMAGE: ubuntu2004
69     MAKE_CHECK_ARGS: check-avocado
71 build-system-debian:
72   extends: .native_build_job_template
73   needs:
74     job: amd64-debian-container
75   variables:
76     IMAGE: debian-amd64
77     TARGETS: arm-softmmu avr-softmmu i386-softmmu mipsel-softmmu
78       riscv64-softmmu sh4eb-softmmu sparc-softmmu xtensaeb-softmmu
79     MAKE_CHECK_ARGS: check-build
80   artifacts:
81     expire_in: 2 days
82     paths:
83       - build
85 check-system-debian:
86   extends: .native_test_job_template
87   needs:
88     - job: build-system-debian
89       artifacts: true
90   variables:
91     IMAGE: debian-amd64
92     MAKE_CHECK_ARGS: check
94 avocado-system-debian:
95   extends: .avocado_test_job_template
96   needs:
97     - job: build-system-debian
98       artifacts: true
99   variables:
100     IMAGE: debian-amd64
101     MAKE_CHECK_ARGS: check-avocado
103 crash-test-debian:
104   extends: .native_test_job_template
105   needs:
106     - job: build-system-debian
107       artifacts: true
108   variables:
109     IMAGE: debian-amd64
110   script:
111     - cd build
112     - make check-venv
113     - tests/venv/bin/python3 scripts/device-crash-test -q ./qemu-system-i386
115 build-system-fedora:
116   extends: .native_build_job_template
117   needs:
118     job: amd64-fedora-container
119   variables:
120     IMAGE: fedora
121     CONFIGURE_ARGS: --disable-gcrypt --enable-nettle --enable-docs
122              --enable-fdt=system --enable-slirp --enable-capstone
123     TARGETS: tricore-softmmu microblaze-softmmu mips-softmmu
124       xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
125     MAKE_CHECK_ARGS: check-build
126   artifacts:
127     expire_in: 2 days
128     paths:
129       - build
131 check-system-fedora:
132   extends: .native_test_job_template
133   needs:
134     - job: build-system-fedora
135       artifacts: true
136   variables:
137     IMAGE: fedora
138     MAKE_CHECK_ARGS: check
140 avocado-system-fedora:
141   extends: .avocado_test_job_template
142   needs:
143     - job: build-system-fedora
144       artifacts: true
145   variables:
146     IMAGE: fedora
147     MAKE_CHECK_ARGS: check-avocado
149 crash-test-fedora:
150   extends: .native_test_job_template
151   needs:
152     - job: build-system-fedora
153       artifacts: true
154   variables:
155     IMAGE: fedora
156   script:
157     - cd build
158     - make check-venv
159     - tests/venv/bin/python3 scripts/device-crash-test -q ./qemu-system-ppc
160     - tests/venv/bin/python3 scripts/device-crash-test -q ./qemu-system-riscv32
162 build-system-centos:
163   extends: .native_build_job_template
164   needs:
165     job: amd64-centos8-container
166   variables:
167     IMAGE: centos8
168     CONFIGURE_ARGS: --disable-nettle --enable-gcrypt --enable-fdt=system
169       --enable-modules --enable-trace-backends=dtrace --enable-docs
170       --enable-vfio-user-server
171     TARGETS: ppc64-softmmu or1k-softmmu s390x-softmmu
172       x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu
173     MAKE_CHECK_ARGS: check-build
174   artifacts:
175     expire_in: 2 days
176     paths:
177       - build
179 check-system-centos:
180   extends: .native_test_job_template
181   needs:
182     - job: build-system-centos
183       artifacts: true
184   variables:
185     IMAGE: centos8
186     MAKE_CHECK_ARGS: check
188 avocado-system-centos:
189   extends: .avocado_test_job_template
190   needs:
191     - job: build-system-centos
192       artifacts: true
193   variables:
194     IMAGE: centos8
195     MAKE_CHECK_ARGS: check-avocado
197 build-system-opensuse:
198   extends: .native_build_job_template
199   needs:
200     job: amd64-opensuse-leap-container
201   variables:
202     IMAGE: opensuse-leap
203     CONFIGURE_ARGS: --enable-fdt=system
204     TARGETS: s390x-softmmu x86_64-softmmu aarch64-softmmu
205     MAKE_CHECK_ARGS: check-build
206   artifacts:
207     expire_in: 2 days
208     paths:
209       - build
211 check-system-opensuse:
212   extends: .native_test_job_template
213   needs:
214     - job: build-system-opensuse
215       artifacts: true
216   variables:
217     IMAGE: opensuse-leap
218     MAKE_CHECK_ARGS: check
220 avocado-system-opensuse:
221   extends: .avocado_test_job_template
222   needs:
223     - job: build-system-opensuse
224       artifacts: true
225   variables:
226     IMAGE: opensuse-leap
227     MAKE_CHECK_ARGS: check-avocado
230 # This jobs explicitly disable TCG (--disable-tcg), KVM is detected by
231 # the configure script. The container doesn't contain Xen headers so
232 # Xen accelerator is not detected / selected. As result it build the
233 # i386-softmmu and x86_64-softmmu with KVM being the single accelerator
234 # available.
235 # Also use a different coroutine implementation (which is only really of
236 # interest to KVM users, i.e. with TCG disabled)
237 build-tcg-disabled:
238   extends: .native_build_job_template
239   needs:
240     job: amd64-centos8-container
241   variables:
242     IMAGE: centos8
243   script:
244     - mkdir build
245     - cd build
246     - ../configure --disable-tcg --audio-drv-list="" --with-coroutine=ucontext
247       || { cat config.log meson-logs/meson-log.txt && exit 1; }
248     - make -j"$JOBS"
249     - make check-unit
250     - make check-qapi-schema
251     - cd tests/qemu-iotests/
252     - ./check -raw 001 002 003 004 005 008 009 010 011 012 021 025 032 033 048
253             052 063 077 086 101 104 106 113 148 150 151 152 157 159 160 163
254             170 171 183 184 192 194 208 221 226 227 236 253 277 image-fleecing
255     - ./check -qcow2 028 051 056 057 058 065 068 082 085 091 095 096 102 122
256             124 132 139 142 144 145 151 152 155 157 165 194 196 200 202
257             208 209 216 218 227 234 246 247 248 250 254 255 257 258
258             260 261 262 263 264 270 272 273 277 279 image-fleecing
260 build-user:
261   extends: .native_build_job_template
262   needs:
263     job: amd64-debian-user-cross-container
264   variables:
265     IMAGE: debian-all-test-cross
266     CONFIGURE_ARGS: --disable-tools --disable-system
267     MAKE_CHECK_ARGS: check-tcg
269 build-user-static:
270   extends: .native_build_job_template
271   needs:
272     job: amd64-debian-user-cross-container
273   variables:
274     IMAGE: debian-all-test-cross
275     CONFIGURE_ARGS: --disable-tools --disable-system --static
276     MAKE_CHECK_ARGS: check-tcg
278 # Because the hexagon cross-compiler takes so long to build we don't rely
279 # on the CI system to build it and hence this job has an optional dependency
280 # declared. The image is manually uploaded.
281 build-user-hexagon:
282   extends: .native_build_job_template
283   needs:
284     job: hexagon-cross-container
285     optional: true
286   variables:
287     IMAGE: debian-hexagon-cross
288     TARGETS: hexagon-linux-user
289     CONFIGURE_ARGS: --disable-tools --disable-docs --enable-debug-tcg
290     MAKE_CHECK_ARGS: check-tcg
292 # Only build the softmmu targets we have check-tcg tests for
293 build-some-softmmu:
294   extends: .native_build_job_template
295   needs:
296     job: amd64-debian-user-cross-container
297   variables:
298     IMAGE: debian-all-test-cross
299     CONFIGURE_ARGS: --disable-tools --enable-debug
300     TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu
301     MAKE_CHECK_ARGS: check-tcg
303 # We build tricore in a very minimal tricore only container
304 build-tricore-softmmu:
305   extends: .native_build_job_template
306   needs:
307     job: tricore-debian-cross-container
308   variables:
309     IMAGE: debian-tricore-cross
310     CONFIGURE_ARGS: --disable-tools --disable-fdt --enable-debug
311     TARGETS: tricore-softmmu
312     MAKE_CHECK_ARGS: check-tcg
314 clang-system:
315   extends: .native_build_job_template
316   needs:
317     job: amd64-fedora-container
318   variables:
319     IMAGE: fedora
320     CONFIGURE_ARGS: --cc=clang --cxx=clang++
321       --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
322     TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu
323       ppc-softmmu s390x-softmmu
324     MAKE_CHECK_ARGS: check-qtest check-tcg
326 clang-user:
327   extends: .native_build_job_template
328   needs:
329     job: amd64-debian-user-cross-container
330   timeout: 70m
331   variables:
332     IMAGE: debian-all-test-cross
333     CONFIGURE_ARGS: --cc=clang --cxx=clang++ --disable-system
334       --target-list-exclude=microblazeel-linux-user,aarch64_be-linux-user,i386-linux-user,m68k-linux-user,mipsn32el-linux-user,xtensaeb-linux-user
335       --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
336     MAKE_CHECK_ARGS: check-unit check-tcg
338 # Set LD_JOBS=1 because this requires LTO and ld consumes a large amount of memory.
339 # On gitlab runners, default value sometimes end up calling 2 lds concurrently and
340 # triggers an Out-Of-Memory error
342 # Since slirp callbacks are used in QEMU Timers, we cannot use libslirp with
343 # CFI builds, and thus have to disable it here.
345 # Split in three sets of build/check/avocado to limit the execution time of each
346 # job
347 build-cfi-aarch64:
348   extends: .native_build_job_template
349   needs:
350   - job: amd64-fedora-container
351   variables:
352     LD_JOBS: 1
353     AR: llvm-ar
354     IMAGE: fedora
355     CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
356       --enable-safe-stack --disable-slirp
357     TARGETS: aarch64-softmmu
358     MAKE_CHECK_ARGS: check-build
359     # FIXME: This job is often failing, likely due to out-of-memory problems in
360     # the constrained containers of the shared runners. Thus this is marked as
361     # skipped until the situation has been solved.
362     QEMU_JOB_SKIPPED: 1
363   timeout: 90m
364   artifacts:
365     expire_in: 2 days
366     paths:
367       - build
369 check-cfi-aarch64:
370   extends: .native_test_job_template
371   needs:
372     - job: build-cfi-aarch64
373       artifacts: true
374   variables:
375     IMAGE: fedora
376     MAKE_CHECK_ARGS: check
378 avocado-cfi-aarch64:
379   extends: .avocado_test_job_template
380   needs:
381     - job: build-cfi-aarch64
382       artifacts: true
383   variables:
384     IMAGE: fedora
385     MAKE_CHECK_ARGS: check-avocado
387 build-cfi-ppc64-s390x:
388   extends: .native_build_job_template
389   needs:
390   - job: amd64-fedora-container
391   variables:
392     LD_JOBS: 1
393     AR: llvm-ar
394     IMAGE: fedora
395     CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
396       --enable-safe-stack --disable-slirp
397     TARGETS: ppc64-softmmu s390x-softmmu
398     MAKE_CHECK_ARGS: check-build
399     # FIXME: This job is often failing, likely due to out-of-memory problems in
400     # the constrained containers of the shared runners. Thus this is marked as
401     # skipped until the situation has been solved.
402     QEMU_JOB_SKIPPED: 1
403   timeout: 80m
404   artifacts:
405     expire_in: 2 days
406     paths:
407       - build
409 check-cfi-ppc64-s390x:
410   extends: .native_test_job_template
411   needs:
412     - job: build-cfi-ppc64-s390x
413       artifacts: true
414   variables:
415     IMAGE: fedora
416     MAKE_CHECK_ARGS: check
418 avocado-cfi-ppc64-s390x:
419   extends: .avocado_test_job_template
420   needs:
421     - job: build-cfi-ppc64-s390x
422       artifacts: true
423   variables:
424     IMAGE: fedora
425     MAKE_CHECK_ARGS: check-avocado
427 build-cfi-x86_64:
428   extends: .native_build_job_template
429   needs:
430   - job: amd64-fedora-container
431   variables:
432     LD_JOBS: 1
433     AR: llvm-ar
434     IMAGE: fedora
435     CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
436       --enable-safe-stack --disable-slirp
437     TARGETS: x86_64-softmmu
438     MAKE_CHECK_ARGS: check-build
439   timeout: 70m
440   artifacts:
441     expire_in: 2 days
442     paths:
443       - build
445 check-cfi-x86_64:
446   extends: .native_test_job_template
447   needs:
448     - job: build-cfi-x86_64
449       artifacts: true
450   variables:
451     IMAGE: fedora
452     MAKE_CHECK_ARGS: check
454 avocado-cfi-x86_64:
455   extends: .avocado_test_job_template
456   needs:
457     - job: build-cfi-x86_64
458       artifacts: true
459   variables:
460     IMAGE: fedora
461     MAKE_CHECK_ARGS: check-avocado
463 tsan-build:
464   extends: .native_build_job_template
465   needs:
466     job: amd64-ubuntu2004-container
467   variables:
468     IMAGE: ubuntu2004
469     CONFIGURE_ARGS: --enable-tsan --cc=clang-10 --cxx=clang++-10
470           --enable-trace-backends=ust --enable-fdt=system --disable-slirp
471     TARGETS: x86_64-softmmu ppc64-softmmu riscv64-softmmu x86_64-linux-user
472     MAKE_CHECK_ARGS: bench V=1
474 # gprof/gcov are GCC features
475 build-gprof-gcov:
476   extends: .native_build_job_template
477   needs:
478     job: amd64-ubuntu2004-container
479   variables:
480     IMAGE: ubuntu2004
481     CONFIGURE_ARGS: --enable-gprof --enable-gcov
482     TARGETS: aarch64-softmmu ppc64-softmmu s390x-softmmu x86_64-softmmu
483   artifacts:
484     expire_in: 1 days
485     paths:
486       - build
488 check-gprof-gcov:
489   extends: .native_test_job_template
490   needs:
491     - job: build-gprof-gcov
492       artifacts: true
493   variables:
494     IMAGE: ubuntu2004
495     MAKE_CHECK_ARGS: check
496   after_script:
497     - ${CI_PROJECT_DIR}/scripts/ci/coverage-summary.sh
499 build-oss-fuzz:
500   extends: .native_build_job_template
501   needs:
502     job: amd64-fedora-container
503   variables:
504     IMAGE: fedora
505   script:
506     - mkdir build-oss-fuzz
507     - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address"
508       ./scripts/oss-fuzz/build.sh
509     - export ASAN_OPTIONS="fast_unwind_on_malloc=0"
510     - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f
511                       | grep -v slirp); do
512         grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ;
513         echo Testing ${fuzzer} ... ;
514         "${fuzzer}" -runs=1 -seed=1 || exit 1 ;
515       done
517 build-tci:
518   extends: .native_build_job_template
519   needs:
520     job: amd64-debian-user-cross-container
521   variables:
522     IMAGE: debian-all-test-cross
523   script:
524     - TARGETS="aarch64 alpha arm hppa m68k microblaze ppc64 s390x x86_64"
525     - mkdir build
526     - cd build
527     - ../configure --enable-tcg-interpreter
528         --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)" || { cat config.log meson-logs/meson-log.txt && exit 1; }
529     - make -j"$JOBS"
530     - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
531     - for tg in $TARGETS ; do
532         export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
533         ./tests/qtest/boot-serial-test || exit 1 ;
534         ./tests/qtest/cdrom-test || exit 1 ;
535       done
536     - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
537     - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
538     - make check-tcg
540 # Alternate coroutines implementations are only really of interest to KVM users
541 # However we can't test against KVM on Gitlab-CI so we can only run unit tests
542 build-coroutine-sigaltstack:
543   extends: .native_build_job_template
544   needs:
545     job: amd64-ubuntu2004-container
546   variables:
547     IMAGE: ubuntu2004
548     CONFIGURE_ARGS: --with-coroutine=sigaltstack --disable-tcg
549                     --enable-trace-backends=ftrace
550     MAKE_CHECK_ARGS: check-unit
552 # Check our reduced build configurations
553 build-without-default-devices:
554   extends: .native_build_job_template
555   needs:
556     job: amd64-centos8-container
557   variables:
558     IMAGE: centos8
559     CONFIGURE_ARGS: --without-default-devices --disable-user
561 build-without-default-features:
562   extends: .native_build_job_template
563   needs:
564     job: amd64-fedora-container
565   variables:
566     IMAGE: fedora
567     CONFIGURE_ARGS:
568       --without-default-features
569       --disable-capstone
570       --disable-pie
571       --disable-qom-cast-debug
572       --disable-strip
573     TARGETS: avr-softmmu i386-softmmu mips64-softmmu s390x-softmmu sh4-softmmu
574       sparc64-softmmu hexagon-linux-user i386-linux-user s390x-linux-user
575     MAKE_CHECK_ARGS: check-unit check-qtest SPEED=slow
577 build-libvhost-user:
578   extends: .base_job_template
579   stage: build
580   image: $CI_REGISTRY_IMAGE/qemu/fedora:latest
581   needs:
582     job: amd64-fedora-container
583   script:
584     - mkdir subprojects/libvhost-user/build
585     - cd subprojects/libvhost-user/build
586     - meson
587     - ninja
589 # No targets are built here, just tools, docs, and unit tests. This
590 # also feeds into the eventual documentation deployment steps later
591 build-tools-and-docs-debian:
592   extends: .native_build_job_template
593   needs:
594     job: amd64-debian-container
595     # when running on 'master' we use pre-existing container
596     optional: true
597   variables:
598     IMAGE: debian-amd64
599     MAKE_CHECK_ARGS: check-unit ctags TAGS cscope
600     CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools
601     QEMU_JOB_PUBLISH: 1
602   artifacts:
603     expire_in: 2 days
604     paths:
605       - build
607 # Prepare for GitLab pages deployment. Anything copied into the
608 # "public" directory will be deployed to $USER.gitlab.io/$PROJECT
610 # GitLab publishes from any branch that triggers a CI pipeline
612 # For the main repo we don't want to publish from 'staging'
613 # since that content may not be pushed, nor do we wish to
614 # publish from 'stable-NNN' branches as that content is outdated.
615 # Thus we restrict to just the default branch
617 # For contributor forks we want to publish from any repo so
618 # that users can see the results of their commits, regardless
619 # of what topic branch they're currently using
620 pages:
621   extends: .base_job_template
622   image: $CI_REGISTRY_IMAGE/qemu/debian-amd64:latest
623   stage: test
624   needs:
625     - job: build-tools-and-docs-debian
626   script:
627     - mkdir -p public
628     # HTML-ised source tree
629     - make gtags
630     - htags -anT --tree-view=filetree -m qemu_init
631         -t "Welcome to the QEMU sourcecode"
632     - mv HTML public/src
633     # Project documentation
634     - make -C build install DESTDIR=$(pwd)/temp-install
635     - mv temp-install/usr/local/share/doc/qemu/* public/
636   artifacts:
637     paths:
638       - public
639   variables:
640     QEMU_JOB_PUBLISH: 1