2021-05-11 07:10:23 +00:00
|
|
|
include:
|
|
|
|
- local: '/.gitlab-ci.d/buildtest-template.yml'
|
|
|
|
|
|
|
|
build-system-alpine:
|
2023-02-28 19:06:51 +00:00
|
|
|
extends:
|
|
|
|
- .native_build_job_template
|
|
|
|
- .native_build_artifact_template
|
2021-05-11 07:10:23 +00:00
|
|
|
needs:
|
|
|
|
- job: amd64-alpine-container
|
|
|
|
variables:
|
|
|
|
IMAGE: alpine
|
2023-03-09 16:48:50 +00:00
|
|
|
TARGETS: avr-softmmu loongarch64-softmmu mips64-softmmu mipsel-softmmu
|
2021-05-11 07:10:23 +00:00
|
|
|
MAKE_CHECK_ARGS: check-build
|
|
|
|
CONFIGURE_ARGS: --enable-docs --enable-trace-backends=log,simple,syslog
|
|
|
|
|
|
|
|
check-system-alpine:
|
|
|
|
extends: .native_test_job_template
|
|
|
|
needs:
|
|
|
|
- job: build-system-alpine
|
|
|
|
artifacts: true
|
|
|
|
variables:
|
|
|
|
IMAGE: alpine
|
2022-01-05 13:49:40 +00:00
|
|
|
MAKE_CHECK_ARGS: check-unit check-qtest
|
2021-05-11 07:10:23 +00:00
|
|
|
|
2021-11-05 15:53:54 +00:00
|
|
|
avocado-system-alpine:
|
|
|
|
extends: .avocado_test_job_template
|
2021-05-11 07:10:23 +00:00
|
|
|
needs:
|
|
|
|
- job: build-system-alpine
|
|
|
|
artifacts: true
|
|
|
|
variables:
|
|
|
|
IMAGE: alpine
|
2021-11-05 15:53:54 +00:00
|
|
|
MAKE_CHECK_ARGS: check-avocado
|
2021-05-11 07:10:23 +00:00
|
|
|
|
|
|
|
build-system-ubuntu:
|
2023-02-28 19:06:51 +00:00
|
|
|
extends:
|
|
|
|
- .native_build_job_template
|
|
|
|
- .native_build_artifact_template
|
2021-05-11 07:10:23 +00:00
|
|
|
needs:
|
2023-02-28 19:06:37 +00:00
|
|
|
job: amd64-ubuntu2204-container
|
2021-05-11 07:10:23 +00:00
|
|
|
variables:
|
2023-02-28 19:06:37 +00:00
|
|
|
IMAGE: ubuntu2204
|
2023-02-07 20:14:47 +00:00
|
|
|
CONFIGURE_ARGS: --enable-docs
|
2023-02-07 20:14:44 +00:00
|
|
|
TARGETS: alpha-softmmu cris-softmmu hppa-softmmu
|
2021-05-11 07:10:23 +00:00
|
|
|
microblazeel-softmmu mips64el-softmmu
|
|
|
|
MAKE_CHECK_ARGS: check-build
|
|
|
|
|
|
|
|
check-system-ubuntu:
|
|
|
|
extends: .native_test_job_template
|
|
|
|
needs:
|
|
|
|
- job: build-system-ubuntu
|
|
|
|
artifacts: true
|
|
|
|
variables:
|
2023-02-28 19:06:37 +00:00
|
|
|
IMAGE: ubuntu2204
|
2021-05-11 07:10:23 +00:00
|
|
|
MAKE_CHECK_ARGS: check
|
|
|
|
|
2021-11-05 15:53:54 +00:00
|
|
|
avocado-system-ubuntu:
|
|
|
|
extends: .avocado_test_job_template
|
2021-05-11 07:10:23 +00:00
|
|
|
needs:
|
|
|
|
- job: build-system-ubuntu
|
|
|
|
artifacts: true
|
|
|
|
variables:
|
2023-02-28 19:06:37 +00:00
|
|
|
IMAGE: ubuntu2204
|
2021-11-05 15:53:54 +00:00
|
|
|
MAKE_CHECK_ARGS: check-avocado
|
2021-05-11 07:10:23 +00:00
|
|
|
|
|
|
|
build-system-debian:
|
2023-02-28 19:06:51 +00:00
|
|
|
extends:
|
|
|
|
- .native_build_job_template
|
|
|
|
- .native_build_artifact_template
|
2021-05-11 07:10:23 +00:00
|
|
|
needs:
|
|
|
|
job: amd64-debian-container
|
|
|
|
variables:
|
|
|
|
IMAGE: debian-amd64
|
2023-02-07 20:14:45 +00:00
|
|
|
CONFIGURE_ARGS: --with-coroutine=sigaltstack
|
2023-03-09 16:48:50 +00:00
|
|
|
TARGETS: arm-softmmu i386-softmmu riscv64-softmmu sh4eb-softmmu
|
|
|
|
sparc-softmmu xtensaeb-softmmu
|
2021-05-11 07:10:23 +00:00
|
|
|
MAKE_CHECK_ARGS: check-build
|
|
|
|
|
|
|
|
check-system-debian:
|
|
|
|
extends: .native_test_job_template
|
|
|
|
needs:
|
|
|
|
- job: build-system-debian
|
|
|
|
artifacts: true
|
|
|
|
variables:
|
|
|
|
IMAGE: debian-amd64
|
|
|
|
MAKE_CHECK_ARGS: check
|
|
|
|
|
2021-11-05 15:53:54 +00:00
|
|
|
avocado-system-debian:
|
|
|
|
extends: .avocado_test_job_template
|
2021-05-11 07:10:23 +00:00
|
|
|
needs:
|
|
|
|
- job: build-system-debian
|
|
|
|
artifacts: true
|
|
|
|
variables:
|
|
|
|
IMAGE: debian-amd64
|
2021-11-05 15:53:54 +00:00
|
|
|
MAKE_CHECK_ARGS: check-avocado
|
2021-05-11 07:10:23 +00:00
|
|
|
|
2021-11-26 16:27:24 +00:00
|
|
|
crash-test-debian:
|
|
|
|
extends: .native_test_job_template
|
|
|
|
needs:
|
|
|
|
- job: build-system-debian
|
|
|
|
artifacts: true
|
|
|
|
variables:
|
|
|
|
IMAGE: debian-amd64
|
|
|
|
script:
|
|
|
|
- cd build
|
2023-04-24 09:22:35 +00:00
|
|
|
- make NINJA=":" check-venv
|
tests: Use separate virtual environment for avocado
This reverts commits eea2d141179 ("Makefile: remove $(TESTS_PYTHON)",
2023-05-26) and 9c6692db550 ("tests: Use configure-provided pyvenv for
tests", 2023-05-18).
Right now, there is a conflict between wanting a ">=" constraint when
using a distro-provided package and wanting a "==" constraint when
installing Avocado from PyPI; this would provide the best of both worlds
in terms of resiliency for both distros that have required packages and
distros that don't.
The conflict is visible also for meson, where we would like to install
the latest 0.63.x version but also accept a distro 1.1.x version.
But it is worse for avocado, for two reasons:
1) we cannot use an "==" constraint to install avocado if the venv
includes a system avocado. The distro will package plugins that have
"==" constraints on the version that is included in the distro, and, using
"pip install avocado==88.1" on a venv that includes system packages will
result in this error:
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
avocado-framework-plugin-varianter-yaml-to-mux 98.0 requires avocado-framework==98.0, but you have avocado-framework 88.1 which is incompatible.
avocado-framework-plugin-result-html 98.0 requires avocado-framework==98.0, but you have avocado-framework 88.1 which is incompatible.
make[1]: Leaving directory '/home/berrange/src/virt/qemu/build'
2) we cannot use ">=" either if the venv does _not_ include a system
avocado, because that would result in the installation of v101.0 which
is the one we've just reverted.
So the idea is to encode the dependencies as an (acceptable, locked)
tuple, like this hypothetical TOML that would be committed inside
python/ and used by mkvenv.py:
[meson]
meson = { minimum = "0.63.0", install = "0.63.3", canary = "meson" }
[docs]
# 6.0 drops support for Python 3.7
sphinx = { minimum = "1.6", install = "<6.0", canary = "sphinx-build" }
sphinx_rtd_theme = { minimum = "0.5" }
[avocado]
avocado-framework = { minimum = "88.1", install = "88.1", canary = "avocado" }
Once this is implemented, it would also be possible to install avocado in
pyvenv/ using "mkvenv.py ensure", thus using the distro package on Fedora
and CentOS Stream (the only distros where it's available). But until
this is implemented, keep avocado in a separate venv. There is still the
benefit of using a single python for meson custom_targets and for sphinx.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2023-06-05 15:30:38 +00:00
|
|
|
- tests/venv/bin/python3 scripts/device-crash-test -q --tcg-only ./qemu-system-i386
|
2021-11-26 16:27:24 +00:00
|
|
|
|
2021-05-11 07:10:23 +00:00
|
|
|
build-system-fedora:
|
2023-02-28 19:06:51 +00:00
|
|
|
extends:
|
|
|
|
- .native_build_job_template
|
|
|
|
- .native_build_artifact_template
|
2021-05-11 07:10:23 +00:00
|
|
|
needs:
|
|
|
|
job: amd64-fedora-container
|
|
|
|
variables:
|
|
|
|
IMAGE: fedora
|
|
|
|
CONFIGURE_ARGS: --disable-gcrypt --enable-nettle --enable-docs
|
|
|
|
TARGETS: tricore-softmmu microblaze-softmmu mips-softmmu
|
|
|
|
xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
|
|
|
|
MAKE_CHECK_ARGS: check-build
|
|
|
|
|
|
|
|
check-system-fedora:
|
|
|
|
extends: .native_test_job_template
|
|
|
|
needs:
|
|
|
|
- job: build-system-fedora
|
|
|
|
artifacts: true
|
|
|
|
variables:
|
|
|
|
IMAGE: fedora
|
|
|
|
MAKE_CHECK_ARGS: check
|
|
|
|
|
2021-11-05 15:53:54 +00:00
|
|
|
avocado-system-fedora:
|
|
|
|
extends: .avocado_test_job_template
|
2021-05-11 07:10:23 +00:00
|
|
|
needs:
|
|
|
|
- job: build-system-fedora
|
|
|
|
artifacts: true
|
|
|
|
variables:
|
|
|
|
IMAGE: fedora
|
2021-11-05 15:53:54 +00:00
|
|
|
MAKE_CHECK_ARGS: check-avocado
|
2021-05-11 07:10:23 +00:00
|
|
|
|
2021-11-26 16:27:24 +00:00
|
|
|
crash-test-fedora:
|
|
|
|
extends: .native_test_job_template
|
|
|
|
needs:
|
|
|
|
- job: build-system-fedora
|
|
|
|
artifacts: true
|
|
|
|
variables:
|
|
|
|
IMAGE: fedora
|
|
|
|
script:
|
|
|
|
- cd build
|
2023-04-24 09:22:35 +00:00
|
|
|
- make NINJA=":" check-venv
|
tests: Use separate virtual environment for avocado
This reverts commits eea2d141179 ("Makefile: remove $(TESTS_PYTHON)",
2023-05-26) and 9c6692db550 ("tests: Use configure-provided pyvenv for
tests", 2023-05-18).
Right now, there is a conflict between wanting a ">=" constraint when
using a distro-provided package and wanting a "==" constraint when
installing Avocado from PyPI; this would provide the best of both worlds
in terms of resiliency for both distros that have required packages and
distros that don't.
The conflict is visible also for meson, where we would like to install
the latest 0.63.x version but also accept a distro 1.1.x version.
But it is worse for avocado, for two reasons:
1) we cannot use an "==" constraint to install avocado if the venv
includes a system avocado. The distro will package plugins that have
"==" constraints on the version that is included in the distro, and, using
"pip install avocado==88.1" on a venv that includes system packages will
result in this error:
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
avocado-framework-plugin-varianter-yaml-to-mux 98.0 requires avocado-framework==98.0, but you have avocado-framework 88.1 which is incompatible.
avocado-framework-plugin-result-html 98.0 requires avocado-framework==98.0, but you have avocado-framework 88.1 which is incompatible.
make[1]: Leaving directory '/home/berrange/src/virt/qemu/build'
2) we cannot use ">=" either if the venv does _not_ include a system
avocado, because that would result in the installation of v101.0 which
is the one we've just reverted.
So the idea is to encode the dependencies as an (acceptable, locked)
tuple, like this hypothetical TOML that would be committed inside
python/ and used by mkvenv.py:
[meson]
meson = { minimum = "0.63.0", install = "0.63.3", canary = "meson" }
[docs]
# 6.0 drops support for Python 3.7
sphinx = { minimum = "1.6", install = "<6.0", canary = "sphinx-build" }
sphinx_rtd_theme = { minimum = "0.5" }
[avocado]
avocado-framework = { minimum = "88.1", install = "88.1", canary = "avocado" }
Once this is implemented, it would also be possible to install avocado in
pyvenv/ using "mkvenv.py ensure", thus using the distro package on Fedora
and CentOS Stream (the only distros where it's available). But until
this is implemented, keep avocado in a separate venv. There is still the
benefit of using a single python for meson custom_targets and for sphinx.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2023-06-05 15:30:38 +00:00
|
|
|
- tests/venv/bin/python3 scripts/device-crash-test -q ./qemu-system-ppc
|
|
|
|
- tests/venv/bin/python3 scripts/device-crash-test -q ./qemu-system-riscv32
|
2021-11-26 16:27:24 +00:00
|
|
|
|
2021-05-11 07:10:23 +00:00
|
|
|
build-system-centos:
|
2023-02-28 19:06:51 +00:00
|
|
|
extends:
|
|
|
|
- .native_build_job_template
|
|
|
|
- .native_build_artifact_template
|
2021-05-11 07:10:23 +00:00
|
|
|
needs:
|
|
|
|
job: amd64-centos8-container
|
|
|
|
variables:
|
|
|
|
IMAGE: centos8
|
2023-02-07 20:14:47 +00:00
|
|
|
CONFIGURE_ARGS: --disable-nettle --enable-gcrypt --enable-vfio-user-server
|
2022-01-04 09:12:40 +00:00
|
|
|
--enable-modules --enable-trace-backends=dtrace --enable-docs
|
2021-05-11 07:10:23 +00:00
|
|
|
TARGETS: ppc64-softmmu or1k-softmmu s390x-softmmu
|
|
|
|
x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu
|
|
|
|
MAKE_CHECK_ARGS: check-build
|
|
|
|
|
|
|
|
check-system-centos:
|
|
|
|
extends: .native_test_job_template
|
|
|
|
needs:
|
|
|
|
- job: build-system-centos
|
|
|
|
artifacts: true
|
|
|
|
variables:
|
|
|
|
IMAGE: centos8
|
|
|
|
MAKE_CHECK_ARGS: check
|
|
|
|
|
2021-11-05 15:53:54 +00:00
|
|
|
avocado-system-centos:
|
|
|
|
extends: .avocado_test_job_template
|
2021-05-11 07:10:23 +00:00
|
|
|
needs:
|
|
|
|
- job: build-system-centos
|
|
|
|
artifacts: true
|
|
|
|
variables:
|
|
|
|
IMAGE: centos8
|
2021-11-05 15:53:54 +00:00
|
|
|
MAKE_CHECK_ARGS: check-avocado
|
2021-05-11 07:10:23 +00:00
|
|
|
|
|
|
|
build-system-opensuse:
|
2023-02-28 19:06:51 +00:00
|
|
|
extends:
|
|
|
|
- .native_build_job_template
|
|
|
|
- .native_build_artifact_template
|
2021-05-11 07:10:23 +00:00
|
|
|
needs:
|
|
|
|
job: amd64-opensuse-leap-container
|
|
|
|
variables:
|
|
|
|
IMAGE: opensuse-leap
|
|
|
|
TARGETS: s390x-softmmu x86_64-softmmu aarch64-softmmu
|
|
|
|
MAKE_CHECK_ARGS: check-build
|
|
|
|
|
|
|
|
check-system-opensuse:
|
|
|
|
extends: .native_test_job_template
|
|
|
|
needs:
|
|
|
|
- job: build-system-opensuse
|
|
|
|
artifacts: true
|
|
|
|
variables:
|
|
|
|
IMAGE: opensuse-leap
|
|
|
|
MAKE_CHECK_ARGS: check
|
|
|
|
|
2021-11-05 15:53:54 +00:00
|
|
|
avocado-system-opensuse:
|
|
|
|
extends: .avocado_test_job_template
|
2021-05-11 07:10:23 +00:00
|
|
|
needs:
|
|
|
|
- job: build-system-opensuse
|
|
|
|
artifacts: true
|
|
|
|
variables:
|
|
|
|
IMAGE: opensuse-leap
|
2021-11-05 15:53:54 +00:00
|
|
|
MAKE_CHECK_ARGS: check-avocado
|
2021-05-11 07:10:23 +00:00
|
|
|
|
|
|
|
|
|
|
|
# This jobs explicitly disable TCG (--disable-tcg), KVM is detected by
|
|
|
|
# the configure script. The container doesn't contain Xen headers so
|
|
|
|
# Xen accelerator is not detected / selected. As result it build the
|
|
|
|
# i386-softmmu and x86_64-softmmu with KVM being the single accelerator
|
|
|
|
# available.
|
|
|
|
# Also use a different coroutine implementation (which is only really of
|
|
|
|
# interest to KVM users, i.e. with TCG disabled)
|
|
|
|
build-tcg-disabled:
|
|
|
|
extends: .native_build_job_template
|
|
|
|
needs:
|
|
|
|
job: amd64-centos8-container
|
|
|
|
variables:
|
|
|
|
IMAGE: centos8
|
|
|
|
script:
|
|
|
|
- mkdir build
|
|
|
|
- cd build
|
|
|
|
- ../configure --disable-tcg --audio-drv-list="" --with-coroutine=ucontext
|
2022-12-21 09:04:11 +00:00
|
|
|
--disable-docs --disable-sdl --disable-gtk --disable-vnc
|
2021-05-11 07:10:23 +00:00
|
|
|
|| { cat config.log meson-logs/meson-log.txt && exit 1; }
|
|
|
|
- make -j"$JOBS"
|
|
|
|
- make check-unit
|
|
|
|
- make check-qapi-schema
|
|
|
|
- cd tests/qemu-iotests/
|
|
|
|
- ./check -raw 001 002 003 004 005 008 009 010 011 012 021 025 032 033 048
|
|
|
|
052 063 077 086 101 104 106 113 148 150 151 152 157 159 160 163
|
2021-08-24 08:38:50 +00:00
|
|
|
170 171 183 184 192 194 208 221 226 227 236 253 277 image-fleecing
|
2021-05-11 07:10:23 +00:00
|
|
|
- ./check -qcow2 028 051 056 057 058 065 068 082 085 091 095 096 102 122
|
2021-07-27 16:25:42 +00:00
|
|
|
124 132 139 142 144 145 151 152 155 157 165 194 196 200 202
|
2021-08-24 08:38:50 +00:00
|
|
|
208 209 216 218 227 234 246 247 248 250 254 255 257 258
|
|
|
|
260 261 262 263 264 270 272 273 277 279 image-fleecing
|
2021-05-11 07:10:23 +00:00
|
|
|
|
|
|
|
build-user:
|
|
|
|
extends: .native_build_job_template
|
|
|
|
needs:
|
|
|
|
job: amd64-debian-user-cross-container
|
|
|
|
variables:
|
|
|
|
IMAGE: debian-all-test-cross
|
|
|
|
CONFIGURE_ARGS: --disable-tools --disable-system
|
|
|
|
MAKE_CHECK_ARGS: check-tcg
|
|
|
|
|
|
|
|
build-user-static:
|
|
|
|
extends: .native_build_job_template
|
|
|
|
needs:
|
|
|
|
job: amd64-debian-user-cross-container
|
|
|
|
variables:
|
|
|
|
IMAGE: debian-all-test-cross
|
|
|
|
CONFIGURE_ARGS: --disable-tools --disable-system --static
|
|
|
|
MAKE_CHECK_ARGS: check-tcg
|
|
|
|
|
|
|
|
build-user-hexagon:
|
|
|
|
extends: .native_build_job_template
|
|
|
|
needs:
|
|
|
|
job: hexagon-cross-container
|
|
|
|
variables:
|
|
|
|
IMAGE: debian-hexagon-cross
|
|
|
|
TARGETS: hexagon-linux-user
|
|
|
|
CONFIGURE_ARGS: --disable-tools --disable-docs --enable-debug-tcg
|
|
|
|
MAKE_CHECK_ARGS: check-tcg
|
|
|
|
|
|
|
|
# Only build the softmmu targets we have check-tcg tests for
|
|
|
|
build-some-softmmu:
|
|
|
|
extends: .native_build_job_template
|
|
|
|
needs:
|
|
|
|
job: amd64-debian-user-cross-container
|
|
|
|
variables:
|
|
|
|
IMAGE: debian-all-test-cross
|
|
|
|
CONFIGURE_ARGS: --disable-tools --enable-debug
|
|
|
|
TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu
|
|
|
|
MAKE_CHECK_ARGS: check-tcg
|
|
|
|
|
2021-07-20 23:27:01 +00:00
|
|
|
# We build tricore in a very minimal tricore only container
|
|
|
|
build-tricore-softmmu:
|
|
|
|
extends: .native_build_job_template
|
|
|
|
needs:
|
|
|
|
job: tricore-debian-cross-container
|
|
|
|
variables:
|
|
|
|
IMAGE: debian-tricore-cross
|
|
|
|
CONFIGURE_ARGS: --disable-tools --disable-fdt --enable-debug
|
|
|
|
TARGETS: tricore-softmmu
|
|
|
|
MAKE_CHECK_ARGS: check-tcg
|
|
|
|
|
2021-05-11 07:10:23 +00:00
|
|
|
clang-system:
|
|
|
|
extends: .native_build_job_template
|
|
|
|
needs:
|
|
|
|
job: amd64-fedora-container
|
|
|
|
variables:
|
|
|
|
IMAGE: fedora
|
|
|
|
CONFIGURE_ARGS: --cc=clang --cxx=clang++
|
|
|
|
--extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
|
2023-01-30 10:44:41 +00:00
|
|
|
TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu s390x-softmmu
|
2021-05-11 07:10:23 +00:00
|
|
|
MAKE_CHECK_ARGS: check-qtest check-tcg
|
|
|
|
|
|
|
|
clang-user:
|
|
|
|
extends: .native_build_job_template
|
|
|
|
needs:
|
|
|
|
job: amd64-debian-user-cross-container
|
2022-11-04 11:36:59 +00:00
|
|
|
timeout: 70m
|
2021-05-11 07:10:23 +00:00
|
|
|
variables:
|
|
|
|
IMAGE: debian-all-test-cross
|
|
|
|
CONFIGURE_ARGS: --cc=clang --cxx=clang++ --disable-system
|
|
|
|
--target-list-exclude=microblazeel-linux-user,aarch64_be-linux-user,i386-linux-user,m68k-linux-user,mipsn32el-linux-user,xtensaeb-linux-user
|
|
|
|
--extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
|
|
|
|
MAKE_CHECK_ARGS: check-unit check-tcg
|
|
|
|
|
|
|
|
# Set LD_JOBS=1 because this requires LTO and ld consumes a large amount of memory.
|
|
|
|
# On gitlab runners, default value sometimes end up calling 2 lds concurrently and
|
|
|
|
# triggers an Out-Of-Memory error
|
|
|
|
#
|
2022-04-08 16:20:47 +00:00
|
|
|
# Since slirp callbacks are used in QEMU Timers, we cannot use libslirp with
|
|
|
|
# CFI builds, and thus have to disable it here.
|
2021-05-11 07:10:23 +00:00
|
|
|
#
|
2021-11-05 15:53:54 +00:00
|
|
|
# Split in three sets of build/check/avocado to limit the execution time of each
|
2021-05-11 07:10:23 +00:00
|
|
|
# job
|
|
|
|
build-cfi-aarch64:
|
2023-02-28 19:06:51 +00:00
|
|
|
extends:
|
|
|
|
- .native_build_job_template
|
|
|
|
- .native_build_artifact_template
|
2021-05-11 07:10:23 +00:00
|
|
|
needs:
|
|
|
|
- job: amd64-fedora-container
|
|
|
|
variables:
|
|
|
|
LD_JOBS: 1
|
|
|
|
AR: llvm-ar
|
|
|
|
IMAGE: fedora
|
|
|
|
CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
|
2022-04-08 16:20:47 +00:00
|
|
|
--enable-safe-stack --disable-slirp
|
2021-05-11 07:10:23 +00:00
|
|
|
TARGETS: aarch64-softmmu
|
|
|
|
MAKE_CHECK_ARGS: check-build
|
2021-07-28 07:09:14 +00:00
|
|
|
# FIXME: This job is often failing, likely due to out-of-memory problems in
|
|
|
|
# the constrained containers of the shared runners. Thus this is marked as
|
2022-05-27 15:36:01 +00:00
|
|
|
# skipped until the situation has been solved.
|
|
|
|
QEMU_JOB_SKIPPED: 1
|
2022-06-13 17:12:54 +00:00
|
|
|
timeout: 90m
|
2021-05-11 07:10:23 +00:00
|
|
|
|
|
|
|
check-cfi-aarch64:
|
|
|
|
extends: .native_test_job_template
|
|
|
|
needs:
|
|
|
|
- job: build-cfi-aarch64
|
|
|
|
artifacts: true
|
|
|
|
variables:
|
|
|
|
IMAGE: fedora
|
|
|
|
MAKE_CHECK_ARGS: check
|
|
|
|
|
2021-11-05 15:53:54 +00:00
|
|
|
avocado-cfi-aarch64:
|
|
|
|
extends: .avocado_test_job_template
|
2021-05-11 07:10:23 +00:00
|
|
|
needs:
|
|
|
|
- job: build-cfi-aarch64
|
|
|
|
artifacts: true
|
|
|
|
variables:
|
|
|
|
IMAGE: fedora
|
2021-11-05 15:53:54 +00:00
|
|
|
MAKE_CHECK_ARGS: check-avocado
|
2021-05-11 07:10:23 +00:00
|
|
|
|
|
|
|
build-cfi-ppc64-s390x:
|
2023-02-28 19:06:51 +00:00
|
|
|
extends:
|
|
|
|
- .native_build_job_template
|
|
|
|
- .native_build_artifact_template
|
2021-05-11 07:10:23 +00:00
|
|
|
needs:
|
|
|
|
- job: amd64-fedora-container
|
|
|
|
variables:
|
|
|
|
LD_JOBS: 1
|
|
|
|
AR: llvm-ar
|
|
|
|
IMAGE: fedora
|
|
|
|
CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
|
2022-04-08 16:20:47 +00:00
|
|
|
--enable-safe-stack --disable-slirp
|
2021-05-11 07:10:23 +00:00
|
|
|
TARGETS: ppc64-softmmu s390x-softmmu
|
|
|
|
MAKE_CHECK_ARGS: check-build
|
2021-07-28 07:09:14 +00:00
|
|
|
# FIXME: This job is often failing, likely due to out-of-memory problems in
|
|
|
|
# the constrained containers of the shared runners. Thus this is marked as
|
2022-05-27 15:36:01 +00:00
|
|
|
# skipped until the situation has been solved.
|
|
|
|
QEMU_JOB_SKIPPED: 1
|
2022-06-13 17:12:54 +00:00
|
|
|
timeout: 80m
|
2021-05-11 07:10:23 +00:00
|
|
|
|
|
|
|
check-cfi-ppc64-s390x:
|
|
|
|
extends: .native_test_job_template
|
|
|
|
needs:
|
|
|
|
- job: build-cfi-ppc64-s390x
|
|
|
|
artifacts: true
|
|
|
|
variables:
|
|
|
|
IMAGE: fedora
|
|
|
|
MAKE_CHECK_ARGS: check
|
|
|
|
|
2021-11-05 15:53:54 +00:00
|
|
|
avocado-cfi-ppc64-s390x:
|
|
|
|
extends: .avocado_test_job_template
|
2021-05-11 07:10:23 +00:00
|
|
|
needs:
|
|
|
|
- job: build-cfi-ppc64-s390x
|
|
|
|
artifacts: true
|
|
|
|
variables:
|
|
|
|
IMAGE: fedora
|
2021-11-05 15:53:54 +00:00
|
|
|
MAKE_CHECK_ARGS: check-avocado
|
2021-05-11 07:10:23 +00:00
|
|
|
|
|
|
|
build-cfi-x86_64:
|
2023-02-28 19:06:51 +00:00
|
|
|
extends:
|
|
|
|
- .native_build_job_template
|
|
|
|
- .native_build_artifact_template
|
2021-05-11 07:10:23 +00:00
|
|
|
needs:
|
|
|
|
- job: amd64-fedora-container
|
|
|
|
variables:
|
|
|
|
LD_JOBS: 1
|
|
|
|
AR: llvm-ar
|
|
|
|
IMAGE: fedora
|
|
|
|
CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
|
2022-04-08 16:20:47 +00:00
|
|
|
--enable-safe-stack --disable-slirp
|
2021-05-11 07:10:23 +00:00
|
|
|
TARGETS: x86_64-softmmu
|
|
|
|
MAKE_CHECK_ARGS: check-build
|
|
|
|
timeout: 70m
|
|
|
|
|
|
|
|
check-cfi-x86_64:
|
|
|
|
extends: .native_test_job_template
|
|
|
|
needs:
|
|
|
|
- job: build-cfi-x86_64
|
|
|
|
artifacts: true
|
|
|
|
variables:
|
|
|
|
IMAGE: fedora
|
|
|
|
MAKE_CHECK_ARGS: check
|
|
|
|
|
2021-11-05 15:53:54 +00:00
|
|
|
avocado-cfi-x86_64:
|
|
|
|
extends: .avocado_test_job_template
|
2021-05-11 07:10:23 +00:00
|
|
|
needs:
|
|
|
|
- job: build-cfi-x86_64
|
|
|
|
artifacts: true
|
|
|
|
variables:
|
|
|
|
IMAGE: fedora
|
2021-11-05 15:53:54 +00:00
|
|
|
MAKE_CHECK_ARGS: check-avocado
|
2021-05-11 07:10:23 +00:00
|
|
|
|
|
|
|
tsan-build:
|
|
|
|
extends: .native_build_job_template
|
|
|
|
needs:
|
2023-02-28 19:06:37 +00:00
|
|
|
job: amd64-ubuntu2204-container
|
2021-05-11 07:10:23 +00:00
|
|
|
variables:
|
2023-02-28 19:06:37 +00:00
|
|
|
IMAGE: ubuntu2204
|
|
|
|
CONFIGURE_ARGS: --enable-tsan --cc=clang --cxx=clang++
|
2023-02-07 20:14:47 +00:00
|
|
|
--enable-trace-backends=ust --disable-slirp
|
2021-05-11 07:10:23 +00:00
|
|
|
TARGETS: x86_64-softmmu ppc64-softmmu riscv64-softmmu x86_64-linux-user
|
|
|
|
|
2023-01-31 09:42:23 +00:00
|
|
|
# gcov is a GCC features
|
|
|
|
gcov:
|
2021-05-11 07:10:23 +00:00
|
|
|
extends: .native_build_job_template
|
|
|
|
needs:
|
2023-02-28 19:06:37 +00:00
|
|
|
job: amd64-ubuntu2204-container
|
2023-01-31 09:42:23 +00:00
|
|
|
timeout: 80m
|
2021-05-11 07:10:23 +00:00
|
|
|
variables:
|
2023-02-28 19:06:37 +00:00
|
|
|
IMAGE: ubuntu2204
|
2023-01-31 09:42:23 +00:00
|
|
|
CONFIGURE_ARGS: --enable-gcov
|
2021-05-11 07:10:23 +00:00
|
|
|
TARGETS: aarch64-softmmu ppc64-softmmu s390x-softmmu x86_64-softmmu
|
2021-05-25 08:25:53 +00:00
|
|
|
MAKE_CHECK_ARGS: check
|
2021-05-11 07:10:23 +00:00
|
|
|
after_script:
|
2022-11-17 17:25:30 +00:00
|
|
|
- cd build
|
|
|
|
- gcovr --xml-pretty --exclude-unreachable-branches --print-summary
|
|
|
|
-o coverage.xml --root ${CI_PROJECT_DIR} . *.p
|
|
|
|
coverage: /^\s*lines:\s*\d+.\d+\%/
|
|
|
|
artifacts:
|
|
|
|
name: ${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}
|
|
|
|
expire_in: 2 days
|
|
|
|
reports:
|
|
|
|
coverage_report:
|
|
|
|
coverage_format: cobertura
|
|
|
|
path: build/coverage.xml
|
2021-05-11 07:10:23 +00:00
|
|
|
|
|
|
|
build-oss-fuzz:
|
|
|
|
extends: .native_build_job_template
|
|
|
|
needs:
|
|
|
|
job: amd64-fedora-container
|
|
|
|
variables:
|
|
|
|
IMAGE: fedora
|
|
|
|
script:
|
|
|
|
- mkdir build-oss-fuzz
|
2023-01-24 18:01:01 +00:00
|
|
|
- export LSAN_OPTIONS=suppressions=scripts/oss-fuzz/lsan_suppressions.txt
|
2021-05-11 07:10:23 +00:00
|
|
|
- CC="clang" CXX="clang++" CFLAGS="-fsanitize=address"
|
|
|
|
./scripts/oss-fuzz/build.sh
|
|
|
|
- export ASAN_OPTIONS="fast_unwind_on_malloc=0"
|
|
|
|
- for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f
|
|
|
|
| grep -v slirp); do
|
|
|
|
grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ;
|
|
|
|
echo Testing ${fuzzer} ... ;
|
|
|
|
"${fuzzer}" -runs=1 -seed=1 || exit 1 ;
|
|
|
|
done
|
|
|
|
|
|
|
|
build-tci:
|
|
|
|
extends: .native_build_job_template
|
|
|
|
needs:
|
|
|
|
job: amd64-debian-user-cross-container
|
|
|
|
variables:
|
|
|
|
IMAGE: debian-all-test-cross
|
|
|
|
script:
|
|
|
|
- TARGETS="aarch64 alpha arm hppa m68k microblaze ppc64 s390x x86_64"
|
|
|
|
- mkdir build
|
|
|
|
- cd build
|
2022-12-21 09:04:11 +00:00
|
|
|
- ../configure --enable-tcg-interpreter --disable-docs --disable-gtk --disable-vnc
|
|
|
|
--target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)"
|
|
|
|
|| { cat config.log meson-logs/meson-log.txt && exit 1; }
|
2021-05-11 07:10:23 +00:00
|
|
|
- make -j"$JOBS"
|
|
|
|
- make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
|
|
|
|
- for tg in $TARGETS ; do
|
|
|
|
export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
|
|
|
|
./tests/qtest/boot-serial-test || exit 1 ;
|
|
|
|
./tests/qtest/cdrom-test || exit 1 ;
|
|
|
|
done
|
|
|
|
- QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
|
|
|
|
- QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
|
|
|
|
- make check-tcg
|
|
|
|
|
|
|
|
# Check our reduced build configurations
|
2023-01-30 10:44:44 +00:00
|
|
|
build-without-defaults:
|
2021-05-11 07:10:23 +00:00
|
|
|
extends: .native_build_job_template
|
|
|
|
needs:
|
|
|
|
job: amd64-centos8-container
|
|
|
|
variables:
|
|
|
|
IMAGE: centos8
|
2021-08-06 14:10:13 +00:00
|
|
|
CONFIGURE_ARGS:
|
2023-01-30 10:44:44 +00:00
|
|
|
--without-default-devices
|
2021-08-06 14:10:13 +00:00
|
|
|
--without-default-features
|
2023-01-30 10:44:44 +00:00
|
|
|
--disable-fdt
|
2021-08-06 14:10:13 +00:00
|
|
|
--disable-pie
|
|
|
|
--disable-qom-cast-debug
|
|
|
|
--disable-strip
|
2023-01-30 10:44:44 +00:00
|
|
|
TARGETS: avr-softmmu mips64-softmmu s390x-softmmu sh4-softmmu
|
2021-08-06 14:10:13 +00:00
|
|
|
sparc64-softmmu hexagon-linux-user i386-linux-user s390x-linux-user
|
2023-05-11 16:32:39 +00:00
|
|
|
MAKE_CHECK_ARGS: check
|
2021-05-11 07:10:23 +00:00
|
|
|
|
|
|
|
build-libvhost-user:
|
2022-05-27 15:36:01 +00:00
|
|
|
extends: .base_job_template
|
2021-05-11 07:10:23 +00:00
|
|
|
stage: build
|
|
|
|
image: $CI_REGISTRY_IMAGE/qemu/fedora:latest
|
|
|
|
needs:
|
|
|
|
job: amd64-fedora-container
|
|
|
|
script:
|
|
|
|
- mkdir subprojects/libvhost-user/build
|
|
|
|
- cd subprojects/libvhost-user/build
|
|
|
|
- meson
|
|
|
|
- ninja
|
|
|
|
|
|
|
|
# No targets are built here, just tools, docs, and unit tests. This
|
|
|
|
# also feeds into the eventual documentation deployment steps later
|
|
|
|
build-tools-and-docs-debian:
|
2023-02-28 19:06:51 +00:00
|
|
|
extends:
|
|
|
|
- .native_build_job_template
|
|
|
|
- .native_build_artifact_template
|
2021-05-11 07:10:23 +00:00
|
|
|
needs:
|
|
|
|
job: amd64-debian-container
|
2022-05-27 15:36:01 +00:00
|
|
|
# when running on 'master' we use pre-existing container
|
|
|
|
optional: true
|
2021-05-11 07:10:23 +00:00
|
|
|
variables:
|
|
|
|
IMAGE: debian-amd64
|
2022-02-04 14:54:47 +00:00
|
|
|
MAKE_CHECK_ARGS: check-unit ctags TAGS cscope
|
2021-05-11 07:10:23 +00:00
|
|
|
CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools
|
2022-05-27 15:36:01 +00:00
|
|
|
QEMU_JOB_PUBLISH: 1
|
2021-05-11 07:10:23 +00:00
|
|
|
|
|
|
|
# Prepare for GitLab pages deployment. Anything copied into the
|
|
|
|
# "public" directory will be deployed to $USER.gitlab.io/$PROJECT
|
2021-07-23 11:30:51 +00:00
|
|
|
#
|
|
|
|
# GitLab publishes from any branch that triggers a CI pipeline
|
|
|
|
#
|
|
|
|
# For the main repo we don't want to publish from 'staging'
|
|
|
|
# since that content may not be pushed, nor do we wish to
|
|
|
|
# publish from 'stable-NNN' branches as that content is outdated.
|
|
|
|
# Thus we restrict to just the default branch
|
|
|
|
#
|
|
|
|
# For contributor forks we want to publish from any repo so
|
|
|
|
# that users can see the results of their commits, regardless
|
|
|
|
# of what topic branch they're currently using
|
2021-05-11 07:10:23 +00:00
|
|
|
pages:
|
2022-05-27 15:36:01 +00:00
|
|
|
extends: .base_job_template
|
2021-05-11 07:10:23 +00:00
|
|
|
image: $CI_REGISTRY_IMAGE/qemu/debian-amd64:latest
|
|
|
|
stage: test
|
|
|
|
needs:
|
|
|
|
- job: build-tools-and-docs-debian
|
|
|
|
script:
|
|
|
|
- mkdir -p public
|
|
|
|
# HTML-ised source tree
|
|
|
|
- make gtags
|
|
|
|
- htags -anT --tree-view=filetree -m qemu_init
|
|
|
|
-t "Welcome to the QEMU sourcecode"
|
|
|
|
- mv HTML public/src
|
|
|
|
# Project documentation
|
|
|
|
- make -C build install DESTDIR=$(pwd)/temp-install
|
|
|
|
- mv temp-install/usr/local/share/doc/qemu/* public/
|
|
|
|
artifacts:
|
|
|
|
paths:
|
|
|
|
- public
|
2022-05-27 15:36:01 +00:00
|
|
|
variables:
|
|
|
|
QEMU_JOB_PUBLISH: 1
|