]> git.proxmox.com Git - mirror_qemu.git/blame - .gitlab-ci.d/buildtest.yml
ci: Disable migration compatibility tests for aarch64
[mirror_qemu.git] / .gitlab-ci.d / buildtest.yml
CommitLineData
f2f5c3e6
PMD
1include:
2 - local: '/.gitlab-ci.d/buildtest-template.yml'
3
4build-system-alpine:
88b19e4e
AB
5 extends:
6 - .native_build_job_template
7 - .native_build_artifact_template
f2f5c3e6
PMD
8 needs:
9 - job: amd64-alpine-container
10 variables:
11 IMAGE: alpine
d4f784c5 12 TARGETS: avr-softmmu loongarch64-softmmu mips64-softmmu mipsel-softmmu
f2f5c3e6
PMD
13 MAKE_CHECK_ARGS: check-build
14 CONFIGURE_ARGS: --enable-docs --enable-trace-backends=log,simple,syslog
f2f5c3e6
PMD
15
16check-system-alpine:
17 extends: .native_test_job_template
18 needs:
19 - job: build-system-alpine
20 artifacts: true
21 variables:
22 IMAGE: alpine
f178c62a 23 MAKE_CHECK_ARGS: check-unit check-qtest
f2f5c3e6 24
bbbd9b6e
WR
25avocado-system-alpine:
26 extends: .avocado_test_job_template
f2f5c3e6
PMD
27 needs:
28 - job: build-system-alpine
29 artifacts: true
30 variables:
31 IMAGE: alpine
bbbd9b6e 32 MAKE_CHECK_ARGS: check-avocado
78ebc00b 33 AVOCADO_TAGS: arch:avr arch:loongarch64 arch:mips64 arch:mipsel
f2f5c3e6
PMD
34
35build-system-ubuntu:
88b19e4e
AB
36 extends:
37 - .native_build_job_template
38 - .native_build_artifact_template
f2f5c3e6 39 needs:
171080d8 40 job: amd64-ubuntu2204-container
f2f5c3e6 41 variables:
171080d8 42 IMAGE: ubuntu2204
eda2321d 43 CONFIGURE_ARGS: --enable-docs
2d41bf0f 44 TARGETS: alpha-softmmu microblazeel-softmmu mips64el-softmmu
f2f5c3e6 45 MAKE_CHECK_ARGS: check-build
f2f5c3e6
PMD
46
47check-system-ubuntu:
48 extends: .native_test_job_template
49 needs:
50 - job: build-system-ubuntu
51 artifacts: true
52 variables:
171080d8 53 IMAGE: ubuntu2204
f2f5c3e6
PMD
54 MAKE_CHECK_ARGS: check
55
bbbd9b6e
WR
56avocado-system-ubuntu:
57 extends: .avocado_test_job_template
f2f5c3e6
PMD
58 needs:
59 - job: build-system-ubuntu
60 artifacts: true
61 variables:
171080d8 62 IMAGE: ubuntu2204
bbbd9b6e 63 MAKE_CHECK_ARGS: check-avocado
2d41bf0f 64 AVOCADO_TAGS: arch:alpha arch:microblazeel arch:mips64el
f2f5c3e6
PMD
65
66build-system-debian:
88b19e4e
AB
67 extends:
68 - .native_build_job_template
69 - .native_build_artifact_template
f2f5c3e6
PMD
70 needs:
71 job: amd64-debian-container
72 variables:
8e721c32 73 IMAGE: debian
2f5a375f 74 CONFIGURE_ARGS: --with-coroutine=sigaltstack
d4f784c5 75 TARGETS: arm-softmmu i386-softmmu riscv64-softmmu sh4eb-softmmu
78ebc00b 76 sparc-softmmu xtensa-softmmu
f2f5c3e6 77 MAKE_CHECK_ARGS: check-build
f2f5c3e6
PMD
78
79check-system-debian:
80 extends: .native_test_job_template
81 needs:
82 - job: build-system-debian
83 artifacts: true
84 variables:
8e721c32 85 IMAGE: debian
f2f5c3e6
PMD
86 MAKE_CHECK_ARGS: check
87
bbbd9b6e
WR
88avocado-system-debian:
89 extends: .avocado_test_job_template
f2f5c3e6
PMD
90 needs:
91 - job: build-system-debian
92 artifacts: true
93 variables:
8e721c32 94 IMAGE: debian
bbbd9b6e 95 MAKE_CHECK_ARGS: check-avocado
78ebc00b 96 AVOCADO_TAGS: arch:arm arch:i386 arch:riscv64 arch:sh4 arch:sparc arch:xtensa
f2f5c3e6 97
f462be4c
TH
98crash-test-debian:
99 extends: .native_test_job_template
100 needs:
101 - job: build-system-debian
102 artifacts: true
103 variables:
8e721c32 104 IMAGE: debian
f462be4c
TH
105 script:
106 - cd build
4d3bd91b 107 - make NINJA=":" check-venv
c03f57fd 108 - pyvenv/bin/python3 scripts/device-crash-test -q --tcg-only ./qemu-system-i386
f462be4c 109
f2f5c3e6 110build-system-fedora:
88b19e4e
AB
111 extends:
112 - .native_build_job_template
113 - .native_build_artifact_template
f2f5c3e6
PMD
114 needs:
115 job: amd64-fedora-container
116 variables:
117 IMAGE: fedora
118 CONFIGURE_ARGS: --disable-gcrypt --enable-nettle --enable-docs
78ebc00b 119 TARGETS: microblaze-softmmu mips-softmmu
f2f5c3e6
PMD
120 xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
121 MAKE_CHECK_ARGS: check-build
f2f5c3e6
PMD
122
123check-system-fedora:
124 extends: .native_test_job_template
125 needs:
126 - job: build-system-fedora
127 artifacts: true
128 variables:
129 IMAGE: fedora
130 MAKE_CHECK_ARGS: check
131
bbbd9b6e
WR
132avocado-system-fedora:
133 extends: .avocado_test_job_template
f2f5c3e6
PMD
134 needs:
135 - job: build-system-fedora
136 artifacts: true
137 variables:
138 IMAGE: fedora
bbbd9b6e 139 MAKE_CHECK_ARGS: check-avocado
78ebc00b
AB
140 AVOCADO_TAGS: arch:microblaze arch:mips arch:xtensa arch:m68k
141 arch:riscv32 arch:ppc arch:sparc64
f2f5c3e6 142
f462be4c
TH
143crash-test-fedora:
144 extends: .native_test_job_template
145 needs:
146 - job: build-system-fedora
147 artifacts: true
148 variables:
149 IMAGE: fedora
150 script:
151 - cd build
4d3bd91b 152 - make NINJA=":" check-venv
c03f57fd
PB
153 - pyvenv/bin/python3 scripts/device-crash-test -q ./qemu-system-ppc
154 - pyvenv/bin/python3 scripts/device-crash-test -q ./qemu-system-riscv32
f462be4c 155
f2f5c3e6 156build-system-centos:
88b19e4e
AB
157 extends:
158 - .native_build_job_template
159 - .native_build_artifact_template
f2f5c3e6
PMD
160 needs:
161 job: amd64-centos8-container
162 variables:
163 IMAGE: centos8
eda2321d 164 CONFIGURE_ARGS: --disable-nettle --enable-gcrypt --enable-vfio-user-server
4cc75ce6 165 --enable-modules --enable-trace-backends=dtrace --enable-docs
f2f5c3e6
PMD
166 TARGETS: ppc64-softmmu or1k-softmmu s390x-softmmu
167 x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu
168 MAKE_CHECK_ARGS: check-build
f2f5c3e6 169
94766edb
FR
170# Previous QEMU release. Used for cross-version migration tests.
171build-previous-qemu:
172 extends: .native_build_job_template
173 artifacts:
174 when: on_success
175 expire_in: 2 days
176 paths:
177 - build-previous
178 exclude:
179 - build-previous/**/*.p
180 - build-previous/**/*.a.p
181 - build-previous/**/*.fa.p
182 - build-previous/**/*.c.o
183 - build-previous/**/*.c.o.d
184 - build-previous/**/*.fa
185 needs:
186 job: amd64-opensuse-leap-container
187 variables:
188 IMAGE: opensuse-leap
189 TARGETS: x86_64-softmmu aarch64-softmmu
190 before_script:
191 - export QEMU_PREV_VERSION="$(sed 's/\([0-9.]*\)\.[0-9]*/v\1.0/' VERSION)"
192 - git checkout $QEMU_PREV_VERSION
193 after_script:
194 - mv build build-previous
195
196.migration-compat-common:
197 extends: .common_test_job_template
198 needs:
199 - job: build-previous-qemu
200 - job: build-system-opensuse
201 # The old QEMU could have bugs unrelated to migration that are
202 # already fixed in the current development branch, so this test
203 # might fail.
204 allow_failure: true
205 variables:
206 IMAGE: opensuse-leap
207 MAKE_CHECK_ARGS: check-build
208 script:
209 # Use the migration-tests from the older QEMU tree. This avoids
210 # testing an old QEMU against new features/tests that it is not
211 # compatible with.
212 - cd build-previous
213 # old to new
214 - QTEST_QEMU_BINARY_SRC=./qemu-system-${TARGET}
215 QTEST_QEMU_BINARY=../build/qemu-system-${TARGET} ./tests/qtest/migration-test
216 # new to old
217 - QTEST_QEMU_BINARY_DST=./qemu-system-${TARGET}
218 QTEST_QEMU_BINARY=../build/qemu-system-${TARGET} ./tests/qtest/migration-test
219
079687e4
FR
220# This job is disabled until we release 9.0. The existing
221# migration-test in 8.2 is broken on aarch64. The fix was already
222# commited, but it will only take effect once 9.0 is out.
94766edb
FR
223migration-compat-aarch64:
224 extends: .migration-compat-common
225 variables:
226 TARGET: aarch64
079687e4 227 QEMU_JOB_SKIPPED: 1
94766edb
FR
228
229migration-compat-x86_64:
230 extends: .migration-compat-common
231 variables:
232 TARGET: x86_64
233
f2f5c3e6
PMD
234check-system-centos:
235 extends: .native_test_job_template
236 needs:
237 - job: build-system-centos
238 artifacts: true
239 variables:
240 IMAGE: centos8
241 MAKE_CHECK_ARGS: check
242
bbbd9b6e
WR
243avocado-system-centos:
244 extends: .avocado_test_job_template
f2f5c3e6
PMD
245 needs:
246 - job: build-system-centos
247 artifacts: true
248 variables:
249 IMAGE: centos8
bbbd9b6e 250 MAKE_CHECK_ARGS: check-avocado
cdd30f36 251 AVOCADO_TAGS: arch:ppc64 arch:or1k arch:s390x arch:x86_64 arch:rx
78ebc00b 252 arch:sh4 arch:nios2
f2f5c3e6
PMD
253
254build-system-opensuse:
88b19e4e
AB
255 extends:
256 - .native_build_job_template
257 - .native_build_artifact_template
f2f5c3e6
PMD
258 needs:
259 job: amd64-opensuse-leap-container
260 variables:
261 IMAGE: opensuse-leap
f2f5c3e6
PMD
262 TARGETS: s390x-softmmu x86_64-softmmu aarch64-softmmu
263 MAKE_CHECK_ARGS: check-build
f2f5c3e6
PMD
264
265check-system-opensuse:
266 extends: .native_test_job_template
267 needs:
268 - job: build-system-opensuse
269 artifacts: true
270 variables:
271 IMAGE: opensuse-leap
272 MAKE_CHECK_ARGS: check
273
bbbd9b6e
WR
274avocado-system-opensuse:
275 extends: .avocado_test_job_template
f2f5c3e6
PMD
276 needs:
277 - job: build-system-opensuse
278 artifacts: true
279 variables:
280 IMAGE: opensuse-leap
bbbd9b6e 281 MAKE_CHECK_ARGS: check-avocado
78ebc00b 282 AVOCADO_TAGS: arch:s390x arch:x86_64 arch:aarch64
f2f5c3e6 283
5d25fcb7
AB
284#
285# Flaky tests. We don't run these by default and they are allow fail
286# but often the CI system is the only way to trigger the failures.
287#
288
289build-system-flaky:
290 extends:
291 - .native_build_job_template
292 - .native_build_artifact_template
293 needs:
294 job: amd64-debian-container
295 variables:
296 IMAGE: debian
297 QEMU_JOB_OPTIONAL: 1
298 TARGETS: aarch64-softmmu arm-softmmu mips64el-softmmu
299 ppc64-softmmu rx-softmmu s390x-softmmu sh4-softmmu x86_64-softmmu
300 MAKE_CHECK_ARGS: check-build
301
302avocado-system-flaky:
303 extends: .avocado_test_job_template
304 needs:
305 - job: build-system-flaky
306 artifacts: true
307 allow_failure: true
308 variables:
309 IMAGE: debian
310 MAKE_CHECK_ARGS: check-avocado
311 QEMU_JOB_OPTIONAL: 1
312 QEMU_TEST_FLAKY_TESTS: 1
313 AVOCADO_TAGS: flaky
f2f5c3e6 314
f2f5c3e6
PMD
315# This jobs explicitly disable TCG (--disable-tcg), KVM is detected by
316# the configure script. The container doesn't contain Xen headers so
317# Xen accelerator is not detected / selected. As result it build the
318# i386-softmmu and x86_64-softmmu with KVM being the single accelerator
319# available.
320# Also use a different coroutine implementation (which is only really of
321# interest to KVM users, i.e. with TCG disabled)
322build-tcg-disabled:
323 extends: .native_build_job_template
324 needs:
325 job: amd64-centos8-container
326 variables:
327 IMAGE: centos8
328 script:
329 - mkdir build
330 - cd build
331 - ../configure --disable-tcg --audio-drv-list="" --with-coroutine=ucontext
3b4f9119 332 --disable-docs --disable-sdl --disable-gtk --disable-vnc
f2f5c3e6
PMD
333 || { cat config.log meson-logs/meson-log.txt && exit 1; }
334 - make -j"$JOBS"
335 - make check-unit
336 - make check-qapi-schema
337 - cd tests/qemu-iotests/
338 - ./check -raw 001 002 003 004 005 008 009 010 011 012 021 025 032 033 048
339 052 063 077 086 101 104 106 113 148 150 151 152 157 159 160 163
c88f0789 340 170 171 183 184 192 194 208 221 226 227 236 253 277 image-fleecing
f2f5c3e6 341 - ./check -qcow2 028 051 056 057 058 065 068 082 085 091 095 096 102 122
db1e1192 342 124 132 139 142 144 145 151 152 155 157 165 194 196 200 202
c88f0789
VSO
343 208 209 216 218 227 234 246 247 248 250 254 255 257 258
344 260 261 262 263 264 270 272 273 277 279 image-fleecing
f2f5c3e6
PMD
345
346build-user:
347 extends: .native_build_job_template
348 needs:
349 job: amd64-debian-user-cross-container
350 variables:
351 IMAGE: debian-all-test-cross
352 CONFIGURE_ARGS: --disable-tools --disable-system
4e76d98a 353 --target-list-exclude=alpha-linux-user,sh4-linux-user
f2f5c3e6
PMD
354 MAKE_CHECK_ARGS: check-tcg
355
356build-user-static:
357 extends: .native_build_job_template
358 needs:
359 job: amd64-debian-user-cross-container
360 variables:
361 IMAGE: debian-all-test-cross
362 CONFIGURE_ARGS: --disable-tools --disable-system --static
4e76d98a 363 --target-list-exclude=alpha-linux-user,sh4-linux-user
aa39c4c0
AB
364 MAKE_CHECK_ARGS: check-tcg
365
366# targets stuck on older compilers
367build-legacy:
368 extends: .native_build_job_template
369 needs:
370 job: amd64-debian-legacy-cross-container
371 variables:
372 IMAGE: debian-legacy-test-cross
4e76d98a 373 TARGETS: alpha-linux-user alpha-softmmu sh4-linux-user
aa39c4c0 374 CONFIGURE_ARGS: --disable-tools
f2f5c3e6
PMD
375 MAKE_CHECK_ARGS: check-tcg
376
f2f5c3e6
PMD
377build-user-hexagon:
378 extends: .native_build_job_template
379 needs:
380 job: hexagon-cross-container
f2f5c3e6
PMD
381 variables:
382 IMAGE: debian-hexagon-cross
383 TARGETS: hexagon-linux-user
384 CONFIGURE_ARGS: --disable-tools --disable-docs --enable-debug-tcg
385 MAKE_CHECK_ARGS: check-tcg
386
6f6c3999
AB
387# Build the softmmu targets we have check-tcg tests and compilers in
388# our omnibus all-test-cross container. Those targets that haven't got
389# Debian cross compiler support need to use special containers.
f2f5c3e6
PMD
390build-some-softmmu:
391 extends: .native_build_job_template
392 needs:
393 job: amd64-debian-user-cross-container
394 variables:
395 IMAGE: debian-all-test-cross
396 CONFIGURE_ARGS: --disable-tools --enable-debug
6f6c3999
AB
397 TARGETS: arm-softmmu aarch64-softmmu i386-softmmu riscv64-softmmu
398 s390x-softmmu x86_64-softmmu
399 MAKE_CHECK_ARGS: check-tcg
cb8715bf
AB
400
401build-loongarch64:
402 extends: .native_build_job_template
403 needs:
404 job: loongarch-debian-cross-container
405 variables:
406 IMAGE: debian-loongarch-cross
407 CONFIGURE_ARGS: --disable-tools --enable-debug
408 TARGETS: loongarch64-linux-user loongarch64-softmmu
f2f5c3e6
PMD
409 MAKE_CHECK_ARGS: check-tcg
410
39ce9237
AB
411# We build tricore in a very minimal tricore only container
412build-tricore-softmmu:
413 extends: .native_build_job_template
414 needs:
415 job: tricore-debian-cross-container
416 variables:
417 IMAGE: debian-tricore-cross
418 CONFIGURE_ARGS: --disable-tools --disable-fdt --enable-debug
419 TARGETS: tricore-softmmu
420 MAKE_CHECK_ARGS: check-tcg
421
f2f5c3e6
PMD
422clang-system:
423 extends: .native_build_job_template
424 needs:
425 job: amd64-fedora-container
426 variables:
427 IMAGE: fedora
428 CONFIGURE_ARGS: --cc=clang --cxx=clang++
429 --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
7c4f7150 430 TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu s390x-softmmu
f2f5c3e6
PMD
431 MAKE_CHECK_ARGS: check-qtest check-tcg
432
433clang-user:
434 extends: .native_build_job_template
435 needs:
436 job: amd64-debian-user-cross-container
765de32d 437 timeout: 70m
f2f5c3e6
PMD
438 variables:
439 IMAGE: debian-all-test-cross
440 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --disable-system
aa39c4c0 441 --target-list-exclude=alpha-linux-user,microblazeel-linux-user,aarch64_be-linux-user,i386-linux-user,m68k-linux-user,mipsn32el-linux-user,xtensaeb-linux-user
f2f5c3e6
PMD
442 --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
443 MAKE_CHECK_ARGS: check-unit check-tcg
444
445# Set LD_JOBS=1 because this requires LTO and ld consumes a large amount of memory.
446# On gitlab runners, default value sometimes end up calling 2 lds concurrently and
447# triggers an Out-Of-Memory error
448#
5890258a
TH
449# Since slirp callbacks are used in QEMU Timers, we cannot use libslirp with
450# CFI builds, and thus have to disable it here.
f2f5c3e6 451#
bbbd9b6e 452# Split in three sets of build/check/avocado to limit the execution time of each
f2f5c3e6
PMD
453# job
454build-cfi-aarch64:
88b19e4e
AB
455 extends:
456 - .native_build_job_template
457 - .native_build_artifact_template
f2f5c3e6
PMD
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
5890258a 465 --enable-safe-stack --disable-slirp
f2f5c3e6
PMD
466 TARGETS: aarch64-softmmu
467 MAKE_CHECK_ARGS: check-build
e37264eb
TH
468 # FIXME: This job is often failing, likely due to out-of-memory problems in
469 # the constrained containers of the shared runners. Thus this is marked as
e312d1fd
DB
470 # skipped until the situation has been solved.
471 QEMU_JOB_SKIPPED: 1
72ec89bf 472 timeout: 90m
f2f5c3e6
PMD
473
474check-cfi-aarch64:
475 extends: .native_test_job_template
476 needs:
477 - job: build-cfi-aarch64
478 artifacts: true
479 variables:
480 IMAGE: fedora
481 MAKE_CHECK_ARGS: check
482
bbbd9b6e
WR
483avocado-cfi-aarch64:
484 extends: .avocado_test_job_template
f2f5c3e6
PMD
485 needs:
486 - job: build-cfi-aarch64
487 artifacts: true
488 variables:
489 IMAGE: fedora
bbbd9b6e 490 MAKE_CHECK_ARGS: check-avocado
f2f5c3e6
PMD
491
492build-cfi-ppc64-s390x:
88b19e4e
AB
493 extends:
494 - .native_build_job_template
495 - .native_build_artifact_template
f2f5c3e6
PMD
496 needs:
497 - job: amd64-fedora-container
498 variables:
499 LD_JOBS: 1
500 AR: llvm-ar
501 IMAGE: fedora
502 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
5890258a 503 --enable-safe-stack --disable-slirp
f2f5c3e6
PMD
504 TARGETS: ppc64-softmmu s390x-softmmu
505 MAKE_CHECK_ARGS: check-build
e37264eb
TH
506 # FIXME: This job is often failing, likely due to out-of-memory problems in
507 # the constrained containers of the shared runners. Thus this is marked as
e312d1fd
DB
508 # skipped until the situation has been solved.
509 QEMU_JOB_SKIPPED: 1
72ec89bf 510 timeout: 80m
f2f5c3e6
PMD
511
512check-cfi-ppc64-s390x:
513 extends: .native_test_job_template
514 needs:
515 - job: build-cfi-ppc64-s390x
516 artifacts: true
517 variables:
518 IMAGE: fedora
519 MAKE_CHECK_ARGS: check
520
bbbd9b6e
WR
521avocado-cfi-ppc64-s390x:
522 extends: .avocado_test_job_template
f2f5c3e6
PMD
523 needs:
524 - job: build-cfi-ppc64-s390x
525 artifacts: true
526 variables:
527 IMAGE: fedora
bbbd9b6e 528 MAKE_CHECK_ARGS: check-avocado
f2f5c3e6
PMD
529
530build-cfi-x86_64:
88b19e4e
AB
531 extends:
532 - .native_build_job_template
533 - .native_build_artifact_template
f2f5c3e6
PMD
534 needs:
535 - job: amd64-fedora-container
536 variables:
537 LD_JOBS: 1
538 AR: llvm-ar
539 IMAGE: fedora
540 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
5890258a 541 --enable-safe-stack --disable-slirp
f2f5c3e6
PMD
542 TARGETS: x86_64-softmmu
543 MAKE_CHECK_ARGS: check-build
544 timeout: 70m
f2f5c3e6
PMD
545
546check-cfi-x86_64:
547 extends: .native_test_job_template
548 needs:
549 - job: build-cfi-x86_64
550 artifacts: true
551 variables:
552 IMAGE: fedora
553 MAKE_CHECK_ARGS: check
554
bbbd9b6e
WR
555avocado-cfi-x86_64:
556 extends: .avocado_test_job_template
f2f5c3e6
PMD
557 needs:
558 - job: build-cfi-x86_64
559 artifacts: true
560 variables:
561 IMAGE: fedora
bbbd9b6e 562 MAKE_CHECK_ARGS: check-avocado
f2f5c3e6
PMD
563
564tsan-build:
565 extends: .native_build_job_template
566 needs:
171080d8 567 job: amd64-ubuntu2204-container
f2f5c3e6 568 variables:
171080d8
AB
569 IMAGE: ubuntu2204
570 CONFIGURE_ARGS: --enable-tsan --cc=clang --cxx=clang++
eda2321d 571 --enable-trace-backends=ust --disable-slirp
f2f5c3e6 572 TARGETS: x86_64-softmmu ppc64-softmmu riscv64-softmmu x86_64-linux-user
f2f5c3e6 573
bb9ecae7
AB
574# gcov is a GCC features
575gcov:
f2f5c3e6
PMD
576 extends: .native_build_job_template
577 needs:
171080d8 578 job: amd64-ubuntu2204-container
bb9ecae7 579 timeout: 80m
f2f5c3e6 580 variables:
171080d8 581 IMAGE: ubuntu2204
bb9ecae7 582 CONFIGURE_ARGS: --enable-gcov
f2f5c3e6 583 TARGETS: aarch64-softmmu ppc64-softmmu s390x-softmmu x86_64-softmmu
dc389ce1 584 MAKE_CHECK_ARGS: check-unit check-softfloat
f2f5c3e6 585 after_script:
5544d33d
AB
586 - cd build
587 - gcovr --xml-pretty --exclude-unreachable-branches --print-summary
588 -o coverage.xml --root ${CI_PROJECT_DIR} . *.p
589 coverage: /^\s*lines:\s*\d+.\d+\%/
590 artifacts:
591 name: ${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}
dcb242c8 592 when: always
5544d33d 593 expire_in: 2 days
dcb242c8
DB
594 paths:
595 - build/meson-logs/testlog.txt
5544d33d 596 reports:
dcb242c8 597 junit: build/meson-logs/testlog.junit.xml
5544d33d
AB
598 coverage_report:
599 coverage_format: cobertura
600 path: build/coverage.xml
f2f5c3e6
PMD
601
602build-oss-fuzz:
603 extends: .native_build_job_template
604 needs:
605 job: amd64-fedora-container
606 variables:
607 IMAGE: fedora
608 script:
609 - mkdir build-oss-fuzz
3ab8bf83 610 - export LSAN_OPTIONS=suppressions=scripts/oss-fuzz/lsan_suppressions.txt
f2f5c3e6
PMD
611 - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address"
612 ./scripts/oss-fuzz/build.sh
613 - export ASAN_OPTIONS="fast_unwind_on_malloc=0"
614 - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f
615 | grep -v slirp); do
616 grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ;
617 echo Testing ${fuzzer} ... ;
618 "${fuzzer}" -runs=1 -seed=1 || exit 1 ;
619 done
f2f5c3e6
PMD
620
621build-tci:
622 extends: .native_build_job_template
623 needs:
624 job: amd64-debian-user-cross-container
625 variables:
626 IMAGE: debian-all-test-cross
627 script:
aa39c4c0 628 - TARGETS="aarch64 arm hppa m68k microblaze ppc64 s390x x86_64"
f2f5c3e6
PMD
629 - mkdir build
630 - cd build
3b4f9119
TH
631 - ../configure --enable-tcg-interpreter --disable-docs --disable-gtk --disable-vnc
632 --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)"
633 || { cat config.log meson-logs/meson-log.txt && exit 1; }
f2f5c3e6
PMD
634 - make -j"$JOBS"
635 - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
636 - for tg in $TARGETS ; do
637 export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
638 ./tests/qtest/boot-serial-test || exit 1 ;
639 ./tests/qtest/cdrom-test || exit 1 ;
640 done
641 - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
642 - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
643 - make check-tcg
644
f2f5c3e6 645# Check our reduced build configurations
e030d08c 646build-without-defaults:
f2f5c3e6
PMD
647 extends: .native_build_job_template
648 needs:
649 job: amd64-centos8-container
650 variables:
651 IMAGE: centos8
8d316275 652 CONFIGURE_ARGS:
e030d08c 653 --without-default-devices
8d316275 654 --without-default-features
e030d08c 655 --disable-fdt
8d316275
TH
656 --disable-pie
657 --disable-qom-cast-debug
8d316275 658 --disable-strip
e030d08c 659 TARGETS: avr-softmmu mips64-softmmu s390x-softmmu sh4-softmmu
8d316275 660 sparc64-softmmu hexagon-linux-user i386-linux-user s390x-linux-user
bb6e4734 661 MAKE_CHECK_ARGS: check
f2f5c3e6
PMD
662
663build-libvhost-user:
e312d1fd 664 extends: .base_job_template
f2f5c3e6 665 stage: build
d4c7a565 666 image: $CI_REGISTRY_IMAGE/qemu/fedora:$QEMU_CI_CONTAINER_TAG
f2f5c3e6
PMD
667 needs:
668 job: amd64-fedora-container
f2f5c3e6
PMD
669 script:
670 - mkdir subprojects/libvhost-user/build
671 - cd subprojects/libvhost-user/build
672 - meson
673 - ninja
674
675# No targets are built here, just tools, docs, and unit tests. This
676# also feeds into the eventual documentation deployment steps later
677build-tools-and-docs-debian:
88b19e4e
AB
678 extends:
679 - .native_build_job_template
680 - .native_build_artifact_template
f2f5c3e6
PMD
681 needs:
682 job: amd64-debian-container
e312d1fd
DB
683 # when running on 'master' we use pre-existing container
684 optional: true
f2f5c3e6 685 variables:
8e721c32 686 IMAGE: debian
7630156d 687 MAKE_CHECK_ARGS: check-unit ctags TAGS cscope
f2f5c3e6 688 CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools
e312d1fd 689 QEMU_JOB_PUBLISH: 1
f2f5c3e6
PMD
690
691# Prepare for GitLab pages deployment. Anything copied into the
692# "public" directory will be deployed to $USER.gitlab.io/$PROJECT
eafadbbb
DB
693#
694# GitLab publishes from any branch that triggers a CI pipeline
695#
696# For the main repo we don't want to publish from 'staging'
697# since that content may not be pushed, nor do we wish to
698# publish from 'stable-NNN' branches as that content is outdated.
699# Thus we restrict to just the default branch
700#
701# For contributor forks we want to publish from any repo so
702# that users can see the results of their commits, regardless
703# of what topic branch they're currently using
f2f5c3e6 704pages:
e312d1fd 705 extends: .base_job_template
8e721c32 706 image: $CI_REGISTRY_IMAGE/qemu/debian:$QEMU_CI_CONTAINER_TAG
f2f5c3e6
PMD
707 stage: test
708 needs:
709 - job: build-tools-and-docs-debian
710 script:
711 - mkdir -p public
712 # HTML-ised source tree
713 - make gtags
52a21689
PM
714 # We unset variables to work around a bug in some htags versions
715 # which causes it to fail when the environment is large
716 - CI_COMMIT_MESSAGE= CI_COMMIT_TAG_MESSAGE= htags
717 -anT --tree-view=filetree -m qemu_init
f2f5c3e6
PMD
718 -t "Welcome to the QEMU sourcecode"
719 - mv HTML public/src
720 # Project documentation
721 - make -C build install DESTDIR=$(pwd)/temp-install
722 - mv temp-install/usr/local/share/doc/qemu/* public/
723 artifacts:
cef63308 724 when: on_success
f2f5c3e6
PMD
725 paths:
726 - public
e312d1fd
DB
727 variables:
728 QEMU_JOB_PUBLISH: 1