xref: /openbmc/qemu/.gitlab-ci.d/buildtest.yml (revision a1dacb66915eb7d08a0596cc97068a37c39930d3)
1f2f5c3e6SPhilippe Mathieu-Daudéinclude:
2f2f5c3e6SPhilippe Mathieu-Daudé  - local: '/.gitlab-ci.d/buildtest-template.yml'
3f2f5c3e6SPhilippe Mathieu-Daudé
4f2f5c3e6SPhilippe Mathieu-Daudébuild-system-alpine:
588b19e4eSAlex Bennée  extends:
688b19e4eSAlex Bennée    - .native_build_job_template
788b19e4eSAlex Bennée    - .native_build_artifact_template
8f2f5c3e6SPhilippe Mathieu-Daudé  needs:
9f2f5c3e6SPhilippe Mathieu-Daudé    - job: amd64-alpine-container
10f2f5c3e6SPhilippe Mathieu-Daudé  variables:
11f2f5c3e6SPhilippe Mathieu-Daudé    IMAGE: alpine
12d4f784c5SThomas Huth    TARGETS: avr-softmmu loongarch64-softmmu mips64-softmmu mipsel-softmmu
13f2f5c3e6SPhilippe Mathieu-Daudé    MAKE_CHECK_ARGS: check-build
14f2f5c3e6SPhilippe Mathieu-Daudé    CONFIGURE_ARGS: --enable-docs --enable-trace-backends=log,simple,syslog
15f2f5c3e6SPhilippe Mathieu-Daudé
16f2f5c3e6SPhilippe Mathieu-Daudécheck-system-alpine:
17f2f5c3e6SPhilippe Mathieu-Daudé  extends: .native_test_job_template
18f2f5c3e6SPhilippe Mathieu-Daudé  needs:
19f2f5c3e6SPhilippe Mathieu-Daudé    - job: build-system-alpine
20f2f5c3e6SPhilippe Mathieu-Daudé      artifacts: true
21f2f5c3e6SPhilippe Mathieu-Daudé  variables:
22f2f5c3e6SPhilippe Mathieu-Daudé    IMAGE: alpine
23f178c62aSDaniel P. Berrangé    MAKE_CHECK_ARGS: check-unit check-qtest
24f2f5c3e6SPhilippe Mathieu-Daudé
256d62722eSThomas Huthfunctional-system-alpine:
266d62722eSThomas Huth  extends: .functional_test_job_template
27f2f5c3e6SPhilippe Mathieu-Daudé  needs:
28f2f5c3e6SPhilippe Mathieu-Daudé    - job: build-system-alpine
29f2f5c3e6SPhilippe Mathieu-Daudé      artifacts: true
30f2f5c3e6SPhilippe Mathieu-Daudé  variables:
31f2f5c3e6SPhilippe Mathieu-Daudé    IMAGE: alpine
326d62722eSThomas Huth    MAKE_CHECK_ARGS: check-avocado check-functional
3378ebc00bSAlex Bennée    AVOCADO_TAGS: arch:avr arch:loongarch64 arch:mips64 arch:mipsel
34f2f5c3e6SPhilippe Mathieu-Daudé
35f2f5c3e6SPhilippe Mathieu-Daudébuild-system-ubuntu:
3688b19e4eSAlex Bennée  extends:
3788b19e4eSAlex Bennée    - .native_build_job_template
3888b19e4eSAlex Bennée    - .native_build_artifact_template
39f2f5c3e6SPhilippe Mathieu-Daudé  needs:
40171080d8SAlex Bennée    job: amd64-ubuntu2204-container
41f2f5c3e6SPhilippe Mathieu-Daudé  variables:
42171080d8SAlex Bennée    IMAGE: ubuntu2204
43eda2321dSThomas Huth    CONFIGURE_ARGS: --enable-docs
442d41bf0fSAlex Bennée    TARGETS: alpha-softmmu microblazeel-softmmu mips64el-softmmu
45f2f5c3e6SPhilippe Mathieu-Daudé    MAKE_CHECK_ARGS: check-build
46f2f5c3e6SPhilippe Mathieu-Daudé
47f2f5c3e6SPhilippe Mathieu-Daudécheck-system-ubuntu:
48f2f5c3e6SPhilippe Mathieu-Daudé  extends: .native_test_job_template
49f2f5c3e6SPhilippe Mathieu-Daudé  needs:
50f2f5c3e6SPhilippe Mathieu-Daudé    - job: build-system-ubuntu
51f2f5c3e6SPhilippe Mathieu-Daudé      artifacts: true
52f2f5c3e6SPhilippe Mathieu-Daudé  variables:
53171080d8SAlex Bennée    IMAGE: ubuntu2204
54f2f5c3e6SPhilippe Mathieu-Daudé    MAKE_CHECK_ARGS: check
55f2f5c3e6SPhilippe Mathieu-Daudé
566d62722eSThomas Huthfunctional-system-ubuntu:
576d62722eSThomas Huth  extends: .functional_test_job_template
58f2f5c3e6SPhilippe Mathieu-Daudé  needs:
59f2f5c3e6SPhilippe Mathieu-Daudé    - job: build-system-ubuntu
60f2f5c3e6SPhilippe Mathieu-Daudé      artifacts: true
61f2f5c3e6SPhilippe Mathieu-Daudé  variables:
62171080d8SAlex Bennée    IMAGE: ubuntu2204
636d62722eSThomas Huth    MAKE_CHECK_ARGS: check-avocado check-functional
642d41bf0fSAlex Bennée    AVOCADO_TAGS: arch:alpha arch:microblazeel arch:mips64el
65f2f5c3e6SPhilippe Mathieu-Daudé
66f2f5c3e6SPhilippe Mathieu-Daudébuild-system-debian:
6788b19e4eSAlex Bennée  extends:
6888b19e4eSAlex Bennée    - .native_build_job_template
6988b19e4eSAlex Bennée    - .native_build_artifact_template
70f2f5c3e6SPhilippe Mathieu-Daudé  needs:
71f2f5c3e6SPhilippe Mathieu-Daudé    job: amd64-debian-container
72f2f5c3e6SPhilippe Mathieu-Daudé  variables:
738e721c32SAlex Bennée    IMAGE: debian
742f5a375fSThomas Huth    CONFIGURE_ARGS: --with-coroutine=sigaltstack
7551cdb680SThomas Huth    TARGETS: arm-softmmu i386-softmmu riscv64-softmmu sh4eb-softmmu
7678ebc00bSAlex Bennée      sparc-softmmu xtensa-softmmu
77f2f5c3e6SPhilippe Mathieu-Daudé    MAKE_CHECK_ARGS: check-build
78f2f5c3e6SPhilippe Mathieu-Daudé
79f2f5c3e6SPhilippe Mathieu-Daudécheck-system-debian:
80f2f5c3e6SPhilippe Mathieu-Daudé  extends: .native_test_job_template
81f2f5c3e6SPhilippe Mathieu-Daudé  needs:
82f2f5c3e6SPhilippe Mathieu-Daudé    - job: build-system-debian
83f2f5c3e6SPhilippe Mathieu-Daudé      artifacts: true
84f2f5c3e6SPhilippe Mathieu-Daudé  variables:
858e721c32SAlex Bennée    IMAGE: debian
86f2f5c3e6SPhilippe Mathieu-Daudé    MAKE_CHECK_ARGS: check
87f2f5c3e6SPhilippe Mathieu-Daudé
886d62722eSThomas Huthfunctional-system-debian:
896d62722eSThomas Huth  extends: .functional_test_job_template
90f2f5c3e6SPhilippe Mathieu-Daudé  needs:
91f2f5c3e6SPhilippe Mathieu-Daudé    - job: build-system-debian
92f2f5c3e6SPhilippe Mathieu-Daudé      artifacts: true
93f2f5c3e6SPhilippe Mathieu-Daudé  variables:
948e721c32SAlex Bennée    IMAGE: debian
956d62722eSThomas Huth    MAKE_CHECK_ARGS: check-avocado check-functional
9678ebc00bSAlex Bennée    AVOCADO_TAGS: arch:arm arch:i386 arch:riscv64 arch:sh4 arch:sparc arch:xtensa
97f2f5c3e6SPhilippe Mathieu-Daudé
98f462be4cSThomas Huthcrash-test-debian:
99f462be4cSThomas Huth  extends: .native_test_job_template
100f462be4cSThomas Huth  needs:
101f462be4cSThomas Huth    - job: build-system-debian
102f462be4cSThomas Huth      artifacts: true
103f462be4cSThomas Huth  variables:
1048e721c32SAlex Bennée    IMAGE: debian
105f462be4cSThomas Huth  script:
106f462be4cSThomas Huth    - cd build
1074d3bd91bSThomas Huth    - make NINJA=":" check-venv
108c03f57fdSPaolo Bonzini    - pyvenv/bin/python3 scripts/device-crash-test -q --tcg-only ./qemu-system-i386
109f462be4cSThomas Huth
110f2f5c3e6SPhilippe Mathieu-Daudébuild-system-fedora:
11188b19e4eSAlex Bennée  extends:
11288b19e4eSAlex Bennée    - .native_build_job_template
11388b19e4eSAlex Bennée    - .native_build_artifact_template
114f2f5c3e6SPhilippe Mathieu-Daudé  needs:
115f2f5c3e6SPhilippe Mathieu-Daudé    job: amd64-fedora-container
116f2f5c3e6SPhilippe Mathieu-Daudé  variables:
117f2f5c3e6SPhilippe Mathieu-Daudé    IMAGE: fedora
11815195de6SDaniel P. Berrangé    CONFIGURE_ARGS: --disable-gcrypt --enable-nettle --enable-docs --enable-crypto-afalg --enable-rust
11978ebc00bSAlex Bennée    TARGETS: microblaze-softmmu mips-softmmu
120f2f5c3e6SPhilippe Mathieu-Daudé      xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
121f2f5c3e6SPhilippe Mathieu-Daudé    MAKE_CHECK_ARGS: check-build
122f2f5c3e6SPhilippe Mathieu-Daudé
123872e9581SPaolo Bonzinibuild-system-fedora-rust-nightly:
124872e9581SPaolo Bonzini  extends:
125872e9581SPaolo Bonzini    - .native_build_job_template
126872e9581SPaolo Bonzini    - .native_build_artifact_template
127872e9581SPaolo Bonzini  needs:
128872e9581SPaolo Bonzini    job: amd64-fedora-rust-nightly-container
129872e9581SPaolo Bonzini  variables:
130872e9581SPaolo Bonzini    IMAGE: fedora-rust-nightly
131*c6ea723dSPaolo Bonzini    CONFIGURE_ARGS: --disable-docs --enable-rust --enable-strict-rust-lints
132872e9581SPaolo Bonzini    TARGETS: aarch64-softmmu
133872e9581SPaolo Bonzini    MAKE_CHECK_ARGS: check-build
134872e9581SPaolo Bonzini  allow_failure: true
135872e9581SPaolo Bonzini
136f2f5c3e6SPhilippe Mathieu-Daudécheck-system-fedora:
137f2f5c3e6SPhilippe Mathieu-Daudé  extends: .native_test_job_template
138f2f5c3e6SPhilippe Mathieu-Daudé  needs:
139f2f5c3e6SPhilippe Mathieu-Daudé    - job: build-system-fedora
140f2f5c3e6SPhilippe Mathieu-Daudé      artifacts: true
141f2f5c3e6SPhilippe Mathieu-Daudé  variables:
142f2f5c3e6SPhilippe Mathieu-Daudé    IMAGE: fedora
143f2f5c3e6SPhilippe Mathieu-Daudé    MAKE_CHECK_ARGS: check
144f2f5c3e6SPhilippe Mathieu-Daudé
1456d62722eSThomas Huthfunctional-system-fedora:
1466d62722eSThomas Huth  extends: .functional_test_job_template
147f2f5c3e6SPhilippe Mathieu-Daudé  needs:
148f2f5c3e6SPhilippe Mathieu-Daudé    - job: build-system-fedora
149f2f5c3e6SPhilippe Mathieu-Daudé      artifacts: true
150f2f5c3e6SPhilippe Mathieu-Daudé  variables:
151f2f5c3e6SPhilippe Mathieu-Daudé    IMAGE: fedora
1526d62722eSThomas Huth    MAKE_CHECK_ARGS: check-avocado check-functional
15378ebc00bSAlex Bennée    AVOCADO_TAGS: arch:microblaze arch:mips arch:xtensa arch:m68k
15478ebc00bSAlex Bennée      arch:riscv32 arch:ppc arch:sparc64
155f2f5c3e6SPhilippe Mathieu-Daudé
156f462be4cSThomas Huthcrash-test-fedora:
157f462be4cSThomas Huth  extends: .native_test_job_template
158f462be4cSThomas Huth  needs:
159f462be4cSThomas Huth    - job: build-system-fedora
160f462be4cSThomas Huth      artifacts: true
161f462be4cSThomas Huth  variables:
162f462be4cSThomas Huth    IMAGE: fedora
163f462be4cSThomas Huth  script:
164f462be4cSThomas Huth    - cd build
1654d3bd91bSThomas Huth    - make NINJA=":" check-venv
166c03f57fdSPaolo Bonzini    - pyvenv/bin/python3 scripts/device-crash-test -q ./qemu-system-ppc
167c03f57fdSPaolo Bonzini    - pyvenv/bin/python3 scripts/device-crash-test -q ./qemu-system-riscv32
168f462be4cSThomas Huth
169f2f5c3e6SPhilippe Mathieu-Daudébuild-system-centos:
17088b19e4eSAlex Bennée  extends:
17188b19e4eSAlex Bennée    - .native_build_job_template
17288b19e4eSAlex Bennée    - .native_build_artifact_template
173f2f5c3e6SPhilippe Mathieu-Daudé  needs:
174641b1efeSThomas Huth    job: amd64-centos9-container
175f2f5c3e6SPhilippe Mathieu-Daudé  variables:
176641b1efeSThomas Huth    IMAGE: centos9
177eda2321dSThomas Huth    CONFIGURE_ARGS: --disable-nettle --enable-gcrypt --enable-vfio-user-server
1784cc75ce6SThomas Huth      --enable-modules --enable-trace-backends=dtrace --enable-docs
179f2f5c3e6SPhilippe Mathieu-Daudé    TARGETS: ppc64-softmmu or1k-softmmu s390x-softmmu
1806c301485SPhilippe Mathieu-Daudé      x86_64-softmmu rx-softmmu sh4-softmmu
181f2f5c3e6SPhilippe Mathieu-Daudé    MAKE_CHECK_ARGS: check-build
182f2f5c3e6SPhilippe Mathieu-Daudé
18394766edbSFabiano Rosas# Previous QEMU release. Used for cross-version migration tests.
18494766edbSFabiano Rosasbuild-previous-qemu:
18594766edbSFabiano Rosas  extends: .native_build_job_template
18694766edbSFabiano Rosas  artifacts:
18794766edbSFabiano Rosas    when: on_success
18894766edbSFabiano Rosas    expire_in: 2 days
18994766edbSFabiano Rosas    paths:
19094766edbSFabiano Rosas      - build-previous
19194766edbSFabiano Rosas    exclude:
19294766edbSFabiano Rosas      - build-previous/**/*.p
19394766edbSFabiano Rosas      - build-previous/**/*.a.p
19494766edbSFabiano Rosas      - build-previous/**/*.c.o
19594766edbSFabiano Rosas      - build-previous/**/*.c.o.d
19694766edbSFabiano Rosas  needs:
19794766edbSFabiano Rosas    job: amd64-opensuse-leap-container
19894766edbSFabiano Rosas  variables:
19994766edbSFabiano Rosas    IMAGE: opensuse-leap
20094766edbSFabiano Rosas    TARGETS: x86_64-softmmu aarch64-softmmu
2019837697bSAlex Bennée    # Override the default flags as we need more to grab the old version
2029837697bSAlex Bennée    GIT_FETCH_EXTRA_FLAGS: --prune --quiet
20394766edbSFabiano Rosas  before_script:
204dc05b262SPeter Maydell    - source scripts/ci/gitlab-ci-section
20594766edbSFabiano Rosas    - export QEMU_PREV_VERSION="$(sed 's/\([0-9.]*\)\.[0-9]*/v\1.0/' VERSION)"
20670704779SPeter Xu    - git remote add upstream https://gitlab.com/qemu-project/qemu
2075f9beb50SPaolo Bonzini    - git fetch upstream refs/tags/$QEMU_PREV_VERSION:refs/tags/$QEMU_PREV_VERSION
20894766edbSFabiano Rosas    - git checkout $QEMU_PREV_VERSION
20994766edbSFabiano Rosas  after_script:
21094766edbSFabiano Rosas    - mv build build-previous
21194766edbSFabiano Rosas
21294766edbSFabiano Rosas.migration-compat-common:
21394766edbSFabiano Rosas  extends: .common_test_job_template
21494766edbSFabiano Rosas  needs:
21594766edbSFabiano Rosas    - job: build-previous-qemu
21694766edbSFabiano Rosas    - job: build-system-opensuse
21794766edbSFabiano Rosas  # The old QEMU could have bugs unrelated to migration that are
21894766edbSFabiano Rosas  # already fixed in the current development branch, so this test
21994766edbSFabiano Rosas  # might fail.
22094766edbSFabiano Rosas  allow_failure: true
22194766edbSFabiano Rosas  variables:
22294766edbSFabiano Rosas    IMAGE: opensuse-leap
22394766edbSFabiano Rosas    MAKE_CHECK_ARGS: check-build
22494766edbSFabiano Rosas  script:
22594766edbSFabiano Rosas    # Use the migration-tests from the older QEMU tree. This avoids
22694766edbSFabiano Rosas    # testing an old QEMU against new features/tests that it is not
22794766edbSFabiano Rosas    # compatible with.
22894766edbSFabiano Rosas    - cd build-previous
22958073366SFabiano Rosas    # Don't allow python-based tests to run. The
23058073366SFabiano Rosas    # vmstate-checker-script test has a race that causes it to fail
23158073366SFabiano Rosas    # sometimes. It cannot be fixed it because this job runs the test
23258073366SFabiano Rosas    # from the old QEMU version. The test will be removed on master,
23358073366SFabiano Rosas    # but this job will only see the change in the next release.
23458073366SFabiano Rosas    #
23558073366SFabiano Rosas    # TODO: remove this line after 9.2 release
23658073366SFabiano Rosas    - unset PYTHON
23794766edbSFabiano Rosas    # old to new
23894766edbSFabiano Rosas    - QTEST_QEMU_BINARY_SRC=./qemu-system-${TARGET}
23994766edbSFabiano Rosas          QTEST_QEMU_BINARY=../build/qemu-system-${TARGET} ./tests/qtest/migration-test
24094766edbSFabiano Rosas    # new to old
24194766edbSFabiano Rosas    - QTEST_QEMU_BINARY_DST=./qemu-system-${TARGET}
24294766edbSFabiano Rosas          QTEST_QEMU_BINARY=../build/qemu-system-${TARGET} ./tests/qtest/migration-test
24394766edbSFabiano Rosas
244940bf8ffSPeter Xu# This job needs to be disabled until we can have an aarch64 CPU model that
245940bf8ffSPeter Xu# will both (1) support both KVM and TCG, and (2) provide a stable ABI.
246940bf8ffSPeter Xu# Currently only "-cpu max" can provide (1), however it doesn't guarantee
247940bf8ffSPeter Xu# (2).  Mark this test skipped until later.
24894766edbSFabiano Rosasmigration-compat-aarch64:
24994766edbSFabiano Rosas  extends: .migration-compat-common
25094766edbSFabiano Rosas  variables:
25194766edbSFabiano Rosas    TARGET: aarch64
252079687e4SFabiano Rosas    QEMU_JOB_SKIPPED: 1
25394766edbSFabiano Rosas
25494766edbSFabiano Rosasmigration-compat-x86_64:
25594766edbSFabiano Rosas  extends: .migration-compat-common
25694766edbSFabiano Rosas  variables:
25794766edbSFabiano Rosas    TARGET: x86_64
25894766edbSFabiano Rosas
259f2f5c3e6SPhilippe Mathieu-Daudécheck-system-centos:
260f2f5c3e6SPhilippe Mathieu-Daudé  extends: .native_test_job_template
261f2f5c3e6SPhilippe Mathieu-Daudé  needs:
262f2f5c3e6SPhilippe Mathieu-Daudé    - job: build-system-centos
263f2f5c3e6SPhilippe Mathieu-Daudé      artifacts: true
264f2f5c3e6SPhilippe Mathieu-Daudé  variables:
265641b1efeSThomas Huth    IMAGE: centos9
266f2f5c3e6SPhilippe Mathieu-Daudé    MAKE_CHECK_ARGS: check
267f2f5c3e6SPhilippe Mathieu-Daudé
2686d62722eSThomas Huthfunctional-system-centos:
2696d62722eSThomas Huth  extends: .functional_test_job_template
270f2f5c3e6SPhilippe Mathieu-Daudé  needs:
271f2f5c3e6SPhilippe Mathieu-Daudé    - job: build-system-centos
272f2f5c3e6SPhilippe Mathieu-Daudé      artifacts: true
273f2f5c3e6SPhilippe Mathieu-Daudé  variables:
274641b1efeSThomas Huth    IMAGE: centos9
2756d62722eSThomas Huth    MAKE_CHECK_ARGS: check-avocado check-functional
276cdd30f36SNicholas Piggin    AVOCADO_TAGS: arch:ppc64 arch:or1k arch:s390x arch:x86_64 arch:rx
2776c301485SPhilippe Mathieu-Daudé      arch:sh4
278f2f5c3e6SPhilippe Mathieu-Daudé
279f2f5c3e6SPhilippe Mathieu-Daudébuild-system-opensuse:
28088b19e4eSAlex Bennée  extends:
28188b19e4eSAlex Bennée    - .native_build_job_template
28288b19e4eSAlex Bennée    - .native_build_artifact_template
283f2f5c3e6SPhilippe Mathieu-Daudé  needs:
284f2f5c3e6SPhilippe Mathieu-Daudé    job: amd64-opensuse-leap-container
285f2f5c3e6SPhilippe Mathieu-Daudé  variables:
286f2f5c3e6SPhilippe Mathieu-Daudé    IMAGE: opensuse-leap
287f2f5c3e6SPhilippe Mathieu-Daudé    TARGETS: s390x-softmmu x86_64-softmmu aarch64-softmmu
288f2f5c3e6SPhilippe Mathieu-Daudé    MAKE_CHECK_ARGS: check-build
289f2f5c3e6SPhilippe Mathieu-Daudé
290f2f5c3e6SPhilippe Mathieu-Daudécheck-system-opensuse:
291f2f5c3e6SPhilippe Mathieu-Daudé  extends: .native_test_job_template
292f2f5c3e6SPhilippe Mathieu-Daudé  needs:
293f2f5c3e6SPhilippe Mathieu-Daudé    - job: build-system-opensuse
294f2f5c3e6SPhilippe Mathieu-Daudé      artifacts: true
295f2f5c3e6SPhilippe Mathieu-Daudé  variables:
296f2f5c3e6SPhilippe Mathieu-Daudé    IMAGE: opensuse-leap
297f2f5c3e6SPhilippe Mathieu-Daudé    MAKE_CHECK_ARGS: check
298f2f5c3e6SPhilippe Mathieu-Daudé
2996d62722eSThomas Huthfunctional-system-opensuse:
3006d62722eSThomas Huth  extends: .functional_test_job_template
301f2f5c3e6SPhilippe Mathieu-Daudé  needs:
302f2f5c3e6SPhilippe Mathieu-Daudé    - job: build-system-opensuse
303f2f5c3e6SPhilippe Mathieu-Daudé      artifacts: true
304f2f5c3e6SPhilippe Mathieu-Daudé  variables:
305f2f5c3e6SPhilippe Mathieu-Daudé    IMAGE: opensuse-leap
3066d62722eSThomas Huth    MAKE_CHECK_ARGS: check-avocado check-functional
30778ebc00bSAlex Bennée    AVOCADO_TAGS: arch:s390x arch:x86_64 arch:aarch64
308f2f5c3e6SPhilippe Mathieu-Daudé
3095d25fcb7SAlex Bennée#
3105d25fcb7SAlex Bennée# Flaky tests. We don't run these by default and they are allow fail
3115d25fcb7SAlex Bennée# but often the CI system is the only way to trigger the failures.
3125d25fcb7SAlex Bennée#
3135d25fcb7SAlex Bennée
3145d25fcb7SAlex Bennéebuild-system-flaky:
3155d25fcb7SAlex Bennée  extends:
3165d25fcb7SAlex Bennée    - .native_build_job_template
3175d25fcb7SAlex Bennée    - .native_build_artifact_template
3185d25fcb7SAlex Bennée  needs:
3195d25fcb7SAlex Bennée    job: amd64-debian-container
3205d25fcb7SAlex Bennée  variables:
3215d25fcb7SAlex Bennée    IMAGE: debian
3225d25fcb7SAlex Bennée    QEMU_JOB_OPTIONAL: 1
3235d25fcb7SAlex Bennée    TARGETS: aarch64-softmmu arm-softmmu mips64el-softmmu
3245d25fcb7SAlex Bennée      ppc64-softmmu rx-softmmu s390x-softmmu sh4-softmmu x86_64-softmmu
3255d25fcb7SAlex Bennée    MAKE_CHECK_ARGS: check-build
3265d25fcb7SAlex Bennée
3276d62722eSThomas Huthfunctional-system-flaky:
3286d62722eSThomas Huth  extends: .functional_test_job_template
3295d25fcb7SAlex Bennée  needs:
3305d25fcb7SAlex Bennée    - job: build-system-flaky
3315d25fcb7SAlex Bennée      artifacts: true
3325d25fcb7SAlex Bennée  allow_failure: true
3335d25fcb7SAlex Bennée  variables:
3345d25fcb7SAlex Bennée    IMAGE: debian
3356d62722eSThomas Huth    MAKE_CHECK_ARGS: check-avocado check-functional
3365d25fcb7SAlex Bennée    QEMU_JOB_OPTIONAL: 1
3375d25fcb7SAlex Bennée    QEMU_TEST_FLAKY_TESTS: 1
3385d25fcb7SAlex Bennée    AVOCADO_TAGS: flaky
339f2f5c3e6SPhilippe Mathieu-Daudé
340f2f5c3e6SPhilippe Mathieu-Daudé# This jobs explicitly disable TCG (--disable-tcg), KVM is detected by
341f2f5c3e6SPhilippe Mathieu-Daudé# the configure script. The container doesn't contain Xen headers so
342f2f5c3e6SPhilippe Mathieu-Daudé# Xen accelerator is not detected / selected. As result it build the
343f2f5c3e6SPhilippe Mathieu-Daudé# i386-softmmu and x86_64-softmmu with KVM being the single accelerator
344f2f5c3e6SPhilippe Mathieu-Daudé# available.
345f2f5c3e6SPhilippe Mathieu-Daudé# Also use a different coroutine implementation (which is only really of
346f2f5c3e6SPhilippe Mathieu-Daudé# interest to KVM users, i.e. with TCG disabled)
347f2f5c3e6SPhilippe Mathieu-Daudébuild-tcg-disabled:
348f2f5c3e6SPhilippe Mathieu-Daudé  extends: .native_build_job_template
349f2f5c3e6SPhilippe Mathieu-Daudé  needs:
350641b1efeSThomas Huth    job: amd64-centos9-container
351f2f5c3e6SPhilippe Mathieu-Daudé  variables:
352641b1efeSThomas Huth    IMAGE: centos9
353f2f5c3e6SPhilippe Mathieu-Daudé  script:
354f2f5c3e6SPhilippe Mathieu-Daudé    - mkdir build
355f2f5c3e6SPhilippe Mathieu-Daudé    - cd build
356f2f5c3e6SPhilippe Mathieu-Daudé    - ../configure --disable-tcg --audio-drv-list="" --with-coroutine=ucontext
3573b4f9119SThomas Huth                   --disable-docs --disable-sdl --disable-gtk --disable-vnc
358f2f5c3e6SPhilippe Mathieu-Daudé      || { cat config.log meson-logs/meson-log.txt && exit 1; }
359f2f5c3e6SPhilippe Mathieu-Daudé    - make -j"$JOBS"
360f2f5c3e6SPhilippe Mathieu-Daudé    - make check-unit
361f2f5c3e6SPhilippe Mathieu-Daudé    - make check-qapi-schema
362f2f5c3e6SPhilippe Mathieu-Daudé    - cd tests/qemu-iotests/
363f2f5c3e6SPhilippe Mathieu-Daudé    - ./check -raw 001 002 003 004 005 008 009 010 011 012 021 025 032 033 048
364f2f5c3e6SPhilippe Mathieu-Daudé            052 063 077 086 101 104 106 113 148 150 151 152 157 159 160 163
36518d154f5SFabiano Rosas            170 171 184 192 194 208 221 226 227 236 253 277 image-fleecing
366f2f5c3e6SPhilippe Mathieu-Daudé    - ./check -qcow2 028 051 056 057 058 065 068 082 085 091 095 096 102 122
367db1e1192SThomas Huth            124 132 139 142 144 145 151 152 155 157 165 194 196 200 202
368c88f0789SVladimir Sementsov-Ogievskiy            208 209 216 218 227 234 246 247 248 250 254 255 257 258
369c88f0789SVladimir Sementsov-Ogievskiy            260 261 262 263 264 270 272 273 277 279 image-fleecing
3701231bc7dSThomas Huth    - cd ../..
3711231bc7dSThomas Huth    - make distclean
372f2f5c3e6SPhilippe Mathieu-Daudé
373f2f5c3e6SPhilippe Mathieu-Daudébuild-user:
374f2f5c3e6SPhilippe Mathieu-Daudé  extends: .native_build_job_template
375f2f5c3e6SPhilippe Mathieu-Daudé  needs:
376f2f5c3e6SPhilippe Mathieu-Daudé    job: amd64-debian-user-cross-container
377f2f5c3e6SPhilippe Mathieu-Daudé  variables:
378f2f5c3e6SPhilippe Mathieu-Daudé    IMAGE: debian-all-test-cross
379f2f5c3e6SPhilippe Mathieu-Daudé    CONFIGURE_ARGS: --disable-tools --disable-system
3804e76d98aSAlex Bennée      --target-list-exclude=alpha-linux-user,sh4-linux-user
381f2f5c3e6SPhilippe Mathieu-Daudé    MAKE_CHECK_ARGS: check-tcg
382f2f5c3e6SPhilippe Mathieu-Daudé
383f2f5c3e6SPhilippe Mathieu-Daudébuild-user-static:
384f2f5c3e6SPhilippe Mathieu-Daudé  extends: .native_build_job_template
385f2f5c3e6SPhilippe Mathieu-Daudé  needs:
386f2f5c3e6SPhilippe Mathieu-Daudé    job: amd64-debian-user-cross-container
387f2f5c3e6SPhilippe Mathieu-Daudé  variables:
388f2f5c3e6SPhilippe Mathieu-Daudé    IMAGE: debian-all-test-cross
389f2f5c3e6SPhilippe Mathieu-Daudé    CONFIGURE_ARGS: --disable-tools --disable-system --static
3904e76d98aSAlex Bennée      --target-list-exclude=alpha-linux-user,sh4-linux-user
391aa39c4c0SAlex Bennée    MAKE_CHECK_ARGS: check-tcg
392aa39c4c0SAlex Bennée
393aa39c4c0SAlex Bennée# targets stuck on older compilers
394aa39c4c0SAlex Bennéebuild-legacy:
395aa39c4c0SAlex Bennée  extends: .native_build_job_template
396aa39c4c0SAlex Bennée  needs:
397aa39c4c0SAlex Bennée    job: amd64-debian-legacy-cross-container
398aa39c4c0SAlex Bennée  variables:
399aa39c4c0SAlex Bennée    IMAGE: debian-legacy-test-cross
4004e76d98aSAlex Bennée    TARGETS: alpha-linux-user alpha-softmmu sh4-linux-user
401aa39c4c0SAlex Bennée    CONFIGURE_ARGS: --disable-tools
402f2f5c3e6SPhilippe Mathieu-Daudé    MAKE_CHECK_ARGS: check-tcg
403f2f5c3e6SPhilippe Mathieu-Daudé
404f2f5c3e6SPhilippe Mathieu-Daudébuild-user-hexagon:
405f2f5c3e6SPhilippe Mathieu-Daudé  extends: .native_build_job_template
406f2f5c3e6SPhilippe Mathieu-Daudé  needs:
407f2f5c3e6SPhilippe Mathieu-Daudé    job: hexagon-cross-container
408f2f5c3e6SPhilippe Mathieu-Daudé  variables:
409f2f5c3e6SPhilippe Mathieu-Daudé    IMAGE: debian-hexagon-cross
410f2f5c3e6SPhilippe Mathieu-Daudé    TARGETS: hexagon-linux-user
411f2f5c3e6SPhilippe Mathieu-Daudé    CONFIGURE_ARGS: --disable-tools --disable-docs --enable-debug-tcg
412f2f5c3e6SPhilippe Mathieu-Daudé    MAKE_CHECK_ARGS: check-tcg
413f2f5c3e6SPhilippe Mathieu-Daudé
4146f6c3999SAlex Bennée# Build the softmmu targets we have check-tcg tests and compilers in
4156f6c3999SAlex Bennée# our omnibus all-test-cross container. Those targets that haven't got
4166f6c3999SAlex Bennée# Debian cross compiler support need to use special containers.
417f2f5c3e6SPhilippe Mathieu-Daudébuild-some-softmmu:
418f2f5c3e6SPhilippe Mathieu-Daudé  extends: .native_build_job_template
419f2f5c3e6SPhilippe Mathieu-Daudé  needs:
420f2f5c3e6SPhilippe Mathieu-Daudé    job: amd64-debian-user-cross-container
421f2f5c3e6SPhilippe Mathieu-Daudé  variables:
422f2f5c3e6SPhilippe Mathieu-Daudé    IMAGE: debian-all-test-cross
423f2f5c3e6SPhilippe Mathieu-Daudé    CONFIGURE_ARGS: --disable-tools --enable-debug
4246f6c3999SAlex Bennée    TARGETS: arm-softmmu aarch64-softmmu i386-softmmu riscv64-softmmu
4256f6c3999SAlex Bennée      s390x-softmmu x86_64-softmmu
4266f6c3999SAlex Bennée    MAKE_CHECK_ARGS: check-tcg
427cb8715bfSAlex Bennée
428cb8715bfSAlex Bennéebuild-loongarch64:
429cb8715bfSAlex Bennée  extends: .native_build_job_template
430cb8715bfSAlex Bennée  needs:
431cb8715bfSAlex Bennée    job: loongarch-debian-cross-container
432cb8715bfSAlex Bennée  variables:
433cb8715bfSAlex Bennée    IMAGE: debian-loongarch-cross
434cb8715bfSAlex Bennée    CONFIGURE_ARGS: --disable-tools --enable-debug
435cb8715bfSAlex Bennée    TARGETS: loongarch64-linux-user loongarch64-softmmu
436f2f5c3e6SPhilippe Mathieu-Daudé    MAKE_CHECK_ARGS: check-tcg
437f2f5c3e6SPhilippe Mathieu-Daudé
43839ce9237SAlex Bennée# We build tricore in a very minimal tricore only container
43939ce9237SAlex Bennéebuild-tricore-softmmu:
44039ce9237SAlex Bennée  extends: .native_build_job_template
44139ce9237SAlex Bennée  needs:
44239ce9237SAlex Bennée    job: tricore-debian-cross-container
44339ce9237SAlex Bennée  variables:
44439ce9237SAlex Bennée    IMAGE: debian-tricore-cross
44539ce9237SAlex Bennée    CONFIGURE_ARGS: --disable-tools --disable-fdt --enable-debug
44639ce9237SAlex Bennée    TARGETS: tricore-softmmu
44739ce9237SAlex Bennée    MAKE_CHECK_ARGS: check-tcg
44839ce9237SAlex Bennée
449f2f5c3e6SPhilippe Mathieu-Daudéclang-system:
450f2f5c3e6SPhilippe Mathieu-Daudé  extends: .native_build_job_template
451f2f5c3e6SPhilippe Mathieu-Daudé  needs:
452f2f5c3e6SPhilippe Mathieu-Daudé    job: amd64-fedora-container
453f2f5c3e6SPhilippe Mathieu-Daudé  variables:
454f2f5c3e6SPhilippe Mathieu-Daudé    IMAGE: fedora
455db770a20SRichard Henderson    CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-ubsan
456db770a20SRichard Henderson      --extra-cflags=-fno-sanitize-recover=undefined
4577c4f7150SThomas Huth    TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu s390x-softmmu
458f2f5c3e6SPhilippe Mathieu-Daudé    MAKE_CHECK_ARGS: check-qtest check-tcg
459f2f5c3e6SPhilippe Mathieu-Daudé
460f2f5c3e6SPhilippe Mathieu-Daudéclang-user:
461f2f5c3e6SPhilippe Mathieu-Daudé  extends: .native_build_job_template
462f2f5c3e6SPhilippe Mathieu-Daudé  needs:
463f2f5c3e6SPhilippe Mathieu-Daudé    job: amd64-debian-user-cross-container
464765de32dSStefan Hajnoczi  timeout: 70m
465f2f5c3e6SPhilippe Mathieu-Daudé  variables:
466f2f5c3e6SPhilippe Mathieu-Daudé    IMAGE: debian-all-test-cross
467db770a20SRichard Henderson    CONFIGURE_ARGS: --cc=clang --cxx=clang++ --disable-system --enable-ubsan
468aa39c4c0SAlex Bennée      --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
469db770a20SRichard Henderson      --extra-cflags=-fno-sanitize-recover=undefined
470f2f5c3e6SPhilippe Mathieu-Daudé    MAKE_CHECK_ARGS: check-unit check-tcg
471f2f5c3e6SPhilippe Mathieu-Daudé
472f2f5c3e6SPhilippe Mathieu-Daudé# Set LD_JOBS=1 because this requires LTO and ld consumes a large amount of memory.
473f2f5c3e6SPhilippe Mathieu-Daudé# On gitlab runners, default value sometimes end up calling 2 lds concurrently and
474f2f5c3e6SPhilippe Mathieu-Daudé# triggers an Out-Of-Memory error
475f2f5c3e6SPhilippe Mathieu-Daudé#
4765890258aSThomas Huth# Since slirp callbacks are used in QEMU Timers, we cannot use libslirp with
4775890258aSThomas Huth# CFI builds, and thus have to disable it here.
478f2f5c3e6SPhilippe Mathieu-Daudé#
479bbbd9b6eSWillian Rampazzo# Split in three sets of build/check/avocado to limit the execution time of each
480f2f5c3e6SPhilippe Mathieu-Daudé# job
481f2f5c3e6SPhilippe Mathieu-Daudébuild-cfi-aarch64:
48288b19e4eSAlex Bennée  extends:
48388b19e4eSAlex Bennée    - .native_build_job_template
48488b19e4eSAlex Bennée    - .native_build_artifact_template
485f2f5c3e6SPhilippe Mathieu-Daudé  needs:
486f2f5c3e6SPhilippe Mathieu-Daudé  - job: amd64-fedora-container
487f2f5c3e6SPhilippe Mathieu-Daudé  variables:
488f2f5c3e6SPhilippe Mathieu-Daudé    LD_JOBS: 1
489f2f5c3e6SPhilippe Mathieu-Daudé    AR: llvm-ar
490f2f5c3e6SPhilippe Mathieu-Daudé    IMAGE: fedora
491f2f5c3e6SPhilippe Mathieu-Daudé    CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
4925890258aSThomas Huth      --enable-safe-stack --disable-slirp
493f2f5c3e6SPhilippe Mathieu-Daudé    TARGETS: aarch64-softmmu
494f2f5c3e6SPhilippe Mathieu-Daudé    MAKE_CHECK_ARGS: check-build
495e37264ebSThomas Huth    # FIXME: This job is often failing, likely due to out-of-memory problems in
496e37264ebSThomas Huth    # the constrained containers of the shared runners. Thus this is marked as
497e312d1fdSDaniel P. Berrangé    # skipped until the situation has been solved.
498e312d1fdSDaniel P. Berrangé    QEMU_JOB_SKIPPED: 1
49972ec89bfSThomas Huth  timeout: 90m
500f2f5c3e6SPhilippe Mathieu-Daudé
501f2f5c3e6SPhilippe Mathieu-Daudécheck-cfi-aarch64:
502f2f5c3e6SPhilippe Mathieu-Daudé  extends: .native_test_job_template
503f2f5c3e6SPhilippe Mathieu-Daudé  needs:
504f2f5c3e6SPhilippe Mathieu-Daudé    - job: build-cfi-aarch64
505f2f5c3e6SPhilippe Mathieu-Daudé      artifacts: true
506f2f5c3e6SPhilippe Mathieu-Daudé  variables:
507f2f5c3e6SPhilippe Mathieu-Daudé    IMAGE: fedora
508f2f5c3e6SPhilippe Mathieu-Daudé    MAKE_CHECK_ARGS: check
509f2f5c3e6SPhilippe Mathieu-Daudé
5106d62722eSThomas Huthfunctional-cfi-aarch64:
5116d62722eSThomas Huth  extends: .functional_test_job_template
512f2f5c3e6SPhilippe Mathieu-Daudé  needs:
513f2f5c3e6SPhilippe Mathieu-Daudé    - job: build-cfi-aarch64
514f2f5c3e6SPhilippe Mathieu-Daudé      artifacts: true
515f2f5c3e6SPhilippe Mathieu-Daudé  variables:
516f2f5c3e6SPhilippe Mathieu-Daudé    IMAGE: fedora
5176d62722eSThomas Huth    MAKE_CHECK_ARGS: check-avocado check-functional
518f2f5c3e6SPhilippe Mathieu-Daudé
519f2f5c3e6SPhilippe Mathieu-Daudébuild-cfi-ppc64-s390x:
52088b19e4eSAlex Bennée  extends:
52188b19e4eSAlex Bennée    - .native_build_job_template
52288b19e4eSAlex Bennée    - .native_build_artifact_template
523f2f5c3e6SPhilippe Mathieu-Daudé  needs:
524f2f5c3e6SPhilippe Mathieu-Daudé  - job: amd64-fedora-container
525f2f5c3e6SPhilippe Mathieu-Daudé  variables:
526f2f5c3e6SPhilippe Mathieu-Daudé    LD_JOBS: 1
527f2f5c3e6SPhilippe Mathieu-Daudé    AR: llvm-ar
528f2f5c3e6SPhilippe Mathieu-Daudé    IMAGE: fedora
529f2f5c3e6SPhilippe Mathieu-Daudé    CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
5305890258aSThomas Huth      --enable-safe-stack --disable-slirp
531f2f5c3e6SPhilippe Mathieu-Daudé    TARGETS: ppc64-softmmu s390x-softmmu
532f2f5c3e6SPhilippe Mathieu-Daudé    MAKE_CHECK_ARGS: check-build
533e37264ebSThomas Huth    # FIXME: This job is often failing, likely due to out-of-memory problems in
534e37264ebSThomas Huth    # the constrained containers of the shared runners. Thus this is marked as
535e312d1fdSDaniel P. Berrangé    # skipped until the situation has been solved.
536e312d1fdSDaniel P. Berrangé    QEMU_JOB_SKIPPED: 1
53772ec89bfSThomas Huth  timeout: 80m
538f2f5c3e6SPhilippe Mathieu-Daudé
539f2f5c3e6SPhilippe Mathieu-Daudécheck-cfi-ppc64-s390x:
540f2f5c3e6SPhilippe Mathieu-Daudé  extends: .native_test_job_template
541f2f5c3e6SPhilippe Mathieu-Daudé  needs:
542f2f5c3e6SPhilippe Mathieu-Daudé    - job: build-cfi-ppc64-s390x
543f2f5c3e6SPhilippe Mathieu-Daudé      artifacts: true
544f2f5c3e6SPhilippe Mathieu-Daudé  variables:
545f2f5c3e6SPhilippe Mathieu-Daudé    IMAGE: fedora
546f2f5c3e6SPhilippe Mathieu-Daudé    MAKE_CHECK_ARGS: check
547f2f5c3e6SPhilippe Mathieu-Daudé
5486d62722eSThomas Huthfunctional-cfi-ppc64-s390x:
5496d62722eSThomas Huth  extends: .functional_test_job_template
550f2f5c3e6SPhilippe Mathieu-Daudé  needs:
551f2f5c3e6SPhilippe Mathieu-Daudé    - job: build-cfi-ppc64-s390x
552f2f5c3e6SPhilippe Mathieu-Daudé      artifacts: true
553f2f5c3e6SPhilippe Mathieu-Daudé  variables:
554f2f5c3e6SPhilippe Mathieu-Daudé    IMAGE: fedora
5556d62722eSThomas Huth    MAKE_CHECK_ARGS: check-avocado check-functional
556f2f5c3e6SPhilippe Mathieu-Daudé
557f2f5c3e6SPhilippe Mathieu-Daudébuild-cfi-x86_64:
55888b19e4eSAlex Bennée  extends:
55988b19e4eSAlex Bennée    - .native_build_job_template
56088b19e4eSAlex Bennée    - .native_build_artifact_template
561f2f5c3e6SPhilippe Mathieu-Daudé  needs:
562f2f5c3e6SPhilippe Mathieu-Daudé  - job: amd64-fedora-container
563f2f5c3e6SPhilippe Mathieu-Daudé  variables:
564f2f5c3e6SPhilippe Mathieu-Daudé    LD_JOBS: 1
565f2f5c3e6SPhilippe Mathieu-Daudé    AR: llvm-ar
566f2f5c3e6SPhilippe Mathieu-Daudé    IMAGE: fedora
567f2f5c3e6SPhilippe Mathieu-Daudé    CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
5685890258aSThomas Huth      --enable-safe-stack --disable-slirp
569f2f5c3e6SPhilippe Mathieu-Daudé    TARGETS: x86_64-softmmu
570f2f5c3e6SPhilippe Mathieu-Daudé    MAKE_CHECK_ARGS: check-build
571f2f5c3e6SPhilippe Mathieu-Daudé  timeout: 70m
572f2f5c3e6SPhilippe Mathieu-Daudé
573f2f5c3e6SPhilippe Mathieu-Daudécheck-cfi-x86_64:
574f2f5c3e6SPhilippe Mathieu-Daudé  extends: .native_test_job_template
575f2f5c3e6SPhilippe Mathieu-Daudé  needs:
576f2f5c3e6SPhilippe Mathieu-Daudé    - job: build-cfi-x86_64
577f2f5c3e6SPhilippe Mathieu-Daudé      artifacts: true
578f2f5c3e6SPhilippe Mathieu-Daudé  variables:
579f2f5c3e6SPhilippe Mathieu-Daudé    IMAGE: fedora
580f2f5c3e6SPhilippe Mathieu-Daudé    MAKE_CHECK_ARGS: check
581f2f5c3e6SPhilippe Mathieu-Daudé
5826d62722eSThomas Huthfunctional-cfi-x86_64:
5836d62722eSThomas Huth  extends: .functional_test_job_template
584f2f5c3e6SPhilippe Mathieu-Daudé  needs:
585f2f5c3e6SPhilippe Mathieu-Daudé    - job: build-cfi-x86_64
586f2f5c3e6SPhilippe Mathieu-Daudé      artifacts: true
587f2f5c3e6SPhilippe Mathieu-Daudé  variables:
588f2f5c3e6SPhilippe Mathieu-Daudé    IMAGE: fedora
5896d62722eSThomas Huth    MAKE_CHECK_ARGS: check-avocado check-functional
590f2f5c3e6SPhilippe Mathieu-Daudé
591f2f5c3e6SPhilippe Mathieu-Daudétsan-build:
592f2f5c3e6SPhilippe Mathieu-Daudé  extends: .native_build_job_template
593f2f5c3e6SPhilippe Mathieu-Daudé  needs:
594171080d8SAlex Bennée    job: amd64-ubuntu2204-container
595f2f5c3e6SPhilippe Mathieu-Daudé  variables:
596171080d8SAlex Bennée    IMAGE: ubuntu2204
597171080d8SAlex Bennée    CONFIGURE_ARGS: --enable-tsan --cc=clang --cxx=clang++
598eda2321dSThomas Huth          --enable-trace-backends=ust --disable-slirp
599f2f5c3e6SPhilippe Mathieu-Daudé    TARGETS: x86_64-softmmu ppc64-softmmu riscv64-softmmu x86_64-linux-user
600b563959bSDaniel P. Berrangé    # Remove when we switch to a distro with clang >= 18
601b563959bSDaniel P. Berrangé    # https://github.com/google/sanitizers/issues/1716
602b563959bSDaniel P. Berrangé    MAKE: setarch -R make
603f2f5c3e6SPhilippe Mathieu-Daudé
604bb9ecae7SAlex Bennée# gcov is a GCC features
605bb9ecae7SAlex Bennéegcov:
606f2f5c3e6SPhilippe Mathieu-Daudé  extends: .native_build_job_template
607f2f5c3e6SPhilippe Mathieu-Daudé  needs:
608171080d8SAlex Bennée    job: amd64-ubuntu2204-container
609bb9ecae7SAlex Bennée  timeout: 80m
610f2f5c3e6SPhilippe Mathieu-Daudé  variables:
611171080d8SAlex Bennée    IMAGE: ubuntu2204
612bb9ecae7SAlex Bennée    CONFIGURE_ARGS: --enable-gcov
613f2f5c3e6SPhilippe Mathieu-Daudé    TARGETS: aarch64-softmmu ppc64-softmmu s390x-softmmu x86_64-softmmu
614dc389ce1SAlex Bennée    MAKE_CHECK_ARGS: check-unit check-softfloat
615f2f5c3e6SPhilippe Mathieu-Daudé  after_script:
6165544d33dSAlex Bennée    - cd build
6175544d33dSAlex Bennée    - gcovr --xml-pretty --exclude-unreachable-branches --print-summary
6185544d33dSAlex Bennée        -o coverage.xml --root ${CI_PROJECT_DIR} . *.p
6195544d33dSAlex Bennée  coverage: /^\s*lines:\s*\d+.\d+\%/
6205544d33dSAlex Bennée  artifacts:
6215544d33dSAlex Bennée    name: ${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}
622dcb242c8SDaniel P. Berrangé    when: always
6235544d33dSAlex Bennée    expire_in: 2 days
624dcb242c8SDaniel P. Berrangé    paths:
625dcb242c8SDaniel P. Berrangé      - build/meson-logs/testlog.txt
6265544d33dSAlex Bennée    reports:
627dcb242c8SDaniel P. Berrangé      junit: build/meson-logs/testlog.junit.xml
6285544d33dSAlex Bennée      coverage_report:
6295544d33dSAlex Bennée        coverage_format: cobertura
6305544d33dSAlex Bennée        path: build/coverage.xml
631f2f5c3e6SPhilippe Mathieu-Daudé
632f2f5c3e6SPhilippe Mathieu-Daudébuild-oss-fuzz:
633f2f5c3e6SPhilippe Mathieu-Daudé  extends: .native_build_job_template
634f2f5c3e6SPhilippe Mathieu-Daudé  needs:
635f2f5c3e6SPhilippe Mathieu-Daudé    job: amd64-fedora-container
636f2f5c3e6SPhilippe Mathieu-Daudé  variables:
637f2f5c3e6SPhilippe Mathieu-Daudé    IMAGE: fedora
638f2f5c3e6SPhilippe Mathieu-Daudé  script:
639f2f5c3e6SPhilippe Mathieu-Daudé    - mkdir build-oss-fuzz
6403ab8bf83SAlex Bennée    - export LSAN_OPTIONS=suppressions=scripts/oss-fuzz/lsan_suppressions.txt
641f2f5c3e6SPhilippe Mathieu-Daudé    - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address"
642f2f5c3e6SPhilippe Mathieu-Daudé      ./scripts/oss-fuzz/build.sh
643f2f5c3e6SPhilippe Mathieu-Daudé    - export ASAN_OPTIONS="fast_unwind_on_malloc=0"
6447e9503f5SMichael Tokarev    - failures=0
645f2f5c3e6SPhilippe Mathieu-Daudé    - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f
646f2f5c3e6SPhilippe Mathieu-Daudé                      | grep -v slirp); do
647f2f5c3e6SPhilippe Mathieu-Daudé        grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ;
648f2f5c3e6SPhilippe Mathieu-Daudé        echo Testing ${fuzzer} ... ;
6497e9503f5SMichael Tokarev        "${fuzzer}" -runs=1 -seed=1 || { echo "FAILED:"" ${fuzzer} exit code is $?"; failures=$(($failures+1)); };
650f2f5c3e6SPhilippe Mathieu-Daudé      done
6517e9503f5SMichael Tokarev    - echo "Number of failures:"" $failures"
6527e9503f5SMichael Tokarev    - test $failures = 0
653f2f5c3e6SPhilippe Mathieu-Daudé
654f2f5c3e6SPhilippe Mathieu-Daudébuild-tci:
655f2f5c3e6SPhilippe Mathieu-Daudé  extends: .native_build_job_template
656f2f5c3e6SPhilippe Mathieu-Daudé  needs:
657f2f5c3e6SPhilippe Mathieu-Daudé    job: amd64-debian-user-cross-container
658f2f5c3e6SPhilippe Mathieu-Daudé  variables:
659f2f5c3e6SPhilippe Mathieu-Daudé    IMAGE: debian-all-test-cross
660f2f5c3e6SPhilippe Mathieu-Daudé  script:
661aa39c4c0SAlex Bennée    - TARGETS="aarch64 arm hppa m68k microblaze ppc64 s390x x86_64"
662f2f5c3e6SPhilippe Mathieu-Daudé    - mkdir build
663f2f5c3e6SPhilippe Mathieu-Daudé    - cd build
664a4ad4db4SAlex Bennée    - ../configure --enable-tcg-interpreter --disable-kvm --disable-docs --disable-gtk --disable-vnc
6653b4f9119SThomas Huth        --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)"
6663b4f9119SThomas Huth        || { cat config.log meson-logs/meson-log.txt && exit 1; }
667f2f5c3e6SPhilippe Mathieu-Daudé    - make -j"$JOBS"
668f2f5c3e6SPhilippe Mathieu-Daudé    - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
669f2f5c3e6SPhilippe Mathieu-Daudé    - for tg in $TARGETS ; do
670f2f5c3e6SPhilippe Mathieu-Daudé        export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
671f2f5c3e6SPhilippe Mathieu-Daudé        ./tests/qtest/boot-serial-test || exit 1 ;
672f2f5c3e6SPhilippe Mathieu-Daudé        ./tests/qtest/cdrom-test || exit 1 ;
673f2f5c3e6SPhilippe Mathieu-Daudé      done
674f2f5c3e6SPhilippe Mathieu-Daudé    - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
675f2f5c3e6SPhilippe Mathieu-Daudé    - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
676f2f5c3e6SPhilippe Mathieu-Daudé    - make check-tcg
677f2f5c3e6SPhilippe Mathieu-Daudé
678f2f5c3e6SPhilippe Mathieu-Daudé# Check our reduced build configurations
679e030d08cSThomas Huthbuild-without-defaults:
680f2f5c3e6SPhilippe Mathieu-Daudé  extends: .native_build_job_template
681f2f5c3e6SPhilippe Mathieu-Daudé  needs:
682641b1efeSThomas Huth    job: amd64-centos9-container
683f2f5c3e6SPhilippe Mathieu-Daudé  variables:
684641b1efeSThomas Huth    IMAGE: centos9
6858d316275SThomas Huth    CONFIGURE_ARGS:
686e030d08cSThomas Huth      --without-default-devices
6878d316275SThomas Huth      --without-default-features
688e030d08cSThomas Huth      --disable-fdt
6898d316275SThomas Huth      --disable-pie
6908d316275SThomas Huth      --disable-qom-cast-debug
6918d316275SThomas Huth      --disable-strip
692790761c4SThomas Huth      --target-list-exclude=aarch64-softmmu,microblaze-softmmu,mips64-softmmu,mipsel-softmmu,ppc64-softmmu,sh4el-softmmu,xtensa-softmmu,x86_64-softmmu
693bb6e4734SThomas Huth    MAKE_CHECK_ARGS: check
694f2f5c3e6SPhilippe Mathieu-Daudé
695f2f5c3e6SPhilippe Mathieu-Daudébuild-libvhost-user:
696e312d1fdSDaniel P. Berrangé  extends: .base_job_template
697f2f5c3e6SPhilippe Mathieu-Daudé  stage: build
698d4c7a565SDaniel P. Berrangé  image: $CI_REGISTRY_IMAGE/qemu/fedora:$QEMU_CI_CONTAINER_TAG
699f2f5c3e6SPhilippe Mathieu-Daudé  needs:
700f2f5c3e6SPhilippe Mathieu-Daudé    job: amd64-fedora-container
701f2f5c3e6SPhilippe Mathieu-Daudé  script:
702f2f5c3e6SPhilippe Mathieu-Daudé    - mkdir subprojects/libvhost-user/build
703f2f5c3e6SPhilippe Mathieu-Daudé    - cd subprojects/libvhost-user/build
704f2f5c3e6SPhilippe Mathieu-Daudé    - meson
705f2f5c3e6SPhilippe Mathieu-Daudé    - ninja
706f2f5c3e6SPhilippe Mathieu-Daudé
707f2f5c3e6SPhilippe Mathieu-Daudé# No targets are built here, just tools, docs, and unit tests. This
708f2f5c3e6SPhilippe Mathieu-Daudé# also feeds into the eventual documentation deployment steps later
709f2f5c3e6SPhilippe Mathieu-Daudébuild-tools-and-docs-debian:
71088b19e4eSAlex Bennée  extends:
71188b19e4eSAlex Bennée    - .native_build_job_template
71288b19e4eSAlex Bennée    - .native_build_artifact_template
713f2f5c3e6SPhilippe Mathieu-Daudé  needs:
714f2f5c3e6SPhilippe Mathieu-Daudé    job: amd64-debian-container
715e312d1fdSDaniel P. Berrangé    # when running on 'master' we use pre-existing container
716e312d1fdSDaniel P. Berrangé    optional: true
717f2f5c3e6SPhilippe Mathieu-Daudé  variables:
7188e721c32SAlex Bennée    IMAGE: debian
7197630156dSPhilippe Mathieu-Daudé    MAKE_CHECK_ARGS: check-unit ctags TAGS cscope
720f2f5c3e6SPhilippe Mathieu-Daudé    CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools
721e312d1fdSDaniel P. Berrangé    QEMU_JOB_PUBLISH: 1
722f2f5c3e6SPhilippe Mathieu-Daudé
723f2f5c3e6SPhilippe Mathieu-Daudé# Prepare for GitLab pages deployment. Anything copied into the
724f2f5c3e6SPhilippe Mathieu-Daudé# "public" directory will be deployed to $USER.gitlab.io/$PROJECT
725eafadbbbSDaniel P. Berrangé#
726eafadbbbSDaniel P. Berrangé# GitLab publishes from any branch that triggers a CI pipeline
727eafadbbbSDaniel P. Berrangé#
728eafadbbbSDaniel P. Berrangé# For the main repo we don't want to publish from 'staging'
729eafadbbbSDaniel P. Berrangé# since that content may not be pushed, nor do we wish to
730eafadbbbSDaniel P. Berrangé# publish from 'stable-NNN' branches as that content is outdated.
731eafadbbbSDaniel P. Berrangé# Thus we restrict to just the default branch
732eafadbbbSDaniel P. Berrangé#
733eafadbbbSDaniel P. Berrangé# For contributor forks we want to publish from any repo so
734eafadbbbSDaniel P. Berrangé# that users can see the results of their commits, regardless
735eafadbbbSDaniel P. Berrangé# of what topic branch they're currently using
736f2f5c3e6SPhilippe Mathieu-Daudépages:
737e312d1fdSDaniel P. Berrangé  extends: .base_job_template
7388e721c32SAlex Bennée  image: $CI_REGISTRY_IMAGE/qemu/debian:$QEMU_CI_CONTAINER_TAG
739f2f5c3e6SPhilippe Mathieu-Daudé  stage: test
740f2f5c3e6SPhilippe Mathieu-Daudé  needs:
741f2f5c3e6SPhilippe Mathieu-Daudé    - job: build-tools-and-docs-debian
742f2f5c3e6SPhilippe Mathieu-Daudé  script:
743f2f5c3e6SPhilippe Mathieu-Daudé    - mkdir -p public
744f2f5c3e6SPhilippe Mathieu-Daudé    # HTML-ised source tree
745f2f5c3e6SPhilippe Mathieu-Daudé    - make gtags
74652a21689SPeter Maydell    # We unset variables to work around a bug in some htags versions
74752a21689SPeter Maydell    # which causes it to fail when the environment is large
74852a21689SPeter Maydell    - CI_COMMIT_MESSAGE= CI_COMMIT_TAG_MESSAGE= htags
74952a21689SPeter Maydell        -anT --tree-view=filetree -m qemu_init
750f2f5c3e6SPhilippe Mathieu-Daudé        -t "Welcome to the QEMU sourcecode"
751f2f5c3e6SPhilippe Mathieu-Daudé    - mv HTML public/src
752f2f5c3e6SPhilippe Mathieu-Daudé    # Project documentation
753f2f5c3e6SPhilippe Mathieu-Daudé    - make -C build install DESTDIR=$(pwd)/temp-install
754f2f5c3e6SPhilippe Mathieu-Daudé    - mv temp-install/usr/local/share/doc/qemu/* public/
755f2f5c3e6SPhilippe Mathieu-Daudé  artifacts:
756cef63308SDaniel P. Berrangé    when: on_success
757f2f5c3e6SPhilippe Mathieu-Daudé    paths:
758f2f5c3e6SPhilippe Mathieu-Daudé      - public
759e312d1fdSDaniel P. Berrangé  variables:
760e312d1fdSDaniel P. Berrangé    QEMU_JOB_PUBLISH: 1
76183aa1baaSPaolo Bonzini
76283aa1baaSPaolo Bonzinicoverity:
76383aa1baaSPaolo Bonzini  image: $CI_REGISTRY_IMAGE/qemu/fedora:$QEMU_CI_CONTAINER_TAG
76483aa1baaSPaolo Bonzini  stage: build
76583aa1baaSPaolo Bonzini  allow_failure: true
76683aa1baaSPaolo Bonzini  timeout: 3h
76783aa1baaSPaolo Bonzini  needs:
76883aa1baaSPaolo Bonzini    - job: amd64-fedora-container
76983aa1baaSPaolo Bonzini      optional: true
77083aa1baaSPaolo Bonzini  before_script:
77183aa1baaSPaolo Bonzini    - dnf install -y curl wget
77283aa1baaSPaolo Bonzini  script:
77383aa1baaSPaolo Bonzini    # would be nice to cancel the job if over quota (https://gitlab.com/gitlab-org/gitlab/-/issues/256089)
77483aa1baaSPaolo Bonzini    # for example:
77583aa1baaSPaolo Bonzini    #   curl --request POST --header "PRIVATE-TOKEN: $CI_JOB_TOKEN" "${CI_SERVER_URL}/api/v4/projects/${CI_PROJECT_ID}/jobs/${CI_JOB_ID}/cancel
77683aa1baaSPaolo Bonzini    - 'scripts/coverity-scan/run-coverity-scan --check-upload-only || { exitcode=$?; if test $exitcode = 1; then
77783aa1baaSPaolo Bonzini        exit 0;
77883aa1baaSPaolo Bonzini      else
77983aa1baaSPaolo Bonzini        exit $exitcode;
78083aa1baaSPaolo Bonzini      fi; };
78183aa1baaSPaolo Bonzini      scripts/coverity-scan/run-coverity-scan --update-tools-only > update-tools.log 2>&1 || { cat update-tools.log; exit 1; };
78283aa1baaSPaolo Bonzini      scripts/coverity-scan/run-coverity-scan --no-update-tools'
78383aa1baaSPaolo Bonzini  rules:
78483aa1baaSPaolo Bonzini    - if: '$COVERITY_TOKEN == null'
78583aa1baaSPaolo Bonzini      when: never
78683aa1baaSPaolo Bonzini    - if: '$COVERITY_EMAIL == null'
78783aa1baaSPaolo Bonzini      when: never
78883aa1baaSPaolo Bonzini    # Never included on upstream pipelines, except for schedules
78983aa1baaSPaolo Bonzini    - if: '$CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_PIPELINE_SOURCE == "schedule"'
79083aa1baaSPaolo Bonzini      when: on_success
79183aa1baaSPaolo Bonzini    - if: '$CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM'
79283aa1baaSPaolo Bonzini      when: never
79383aa1baaSPaolo Bonzini    # Forks don't get any pipeline unless QEMU_CI=1 or QEMU_CI=2 is set
79483aa1baaSPaolo Bonzini    - if: '$QEMU_CI != "1" && $QEMU_CI != "2"'
79583aa1baaSPaolo Bonzini      when: never
79683aa1baaSPaolo Bonzini    # Always manual on forks even if $QEMU_CI == "2"
79783aa1baaSPaolo Bonzini    - when: manual
798