[PATCH v2 00/27] CI/build-sys fixes to enable Rust more widely

From: Marc-André Lureau <marcandre.lureau@redhat.com> Hi, This patch series fixes a number of issues with the build system and CI and enable Rust for many of our jobs, getting us closer to enable Rust by default. emscripten is difficult to enable, help welcome. v2: - add a rust-to-clang-target-test.sh configure script - drop "RFC: configure: use the same machine as the host triple" - replace "tests: move mips to debian-legacy-test-cross" with "RFC: build-sys: deprecate mips host" - start tackling emscripten - fix mis-placed submodule update - other minor changes, commit message tweaks, bz links - add r-b tags Marc-André Lureau (27): build-sys: require -lrt when no shm_open() in std libs gitlab-ci: fix 'needs' property type must be array scripts/archive-source: speed up downloading subprojects scripts/archive-source: silence subprojects downloads scripts/archive-source: use a bash array configure: fix rust meson configuration configure: set the bindgen cross target tests/docker/common: print errors to stderr tests/docker: use fully qualified image name for emsdk tests/docker/common: print meson log on configure failure build-sys: cfi_debug and safe_stack are not compatible lcitool: update, switch to f41 lcitool/qemu: include libclang-rt for TSAN lcitool/alpine: workaround bindgen issue tests/lcitool: add missing rust-std dep tests/lcitool: update to debian13 tests/docker: add ENABLE_RUST environment tests/lcitool: enable rust & refresh configure: set the meson executable suffix/ext tests/freebsd: enable Rust meson: rust-bindgen limit allowlist-file to srcdir/include RFC: tests/docker: add rust to debian-legacy-test-cross WIP: gitlab-ci: enable rust for msys2-64bit WIP: cirrus/macos: enable Rust RFC: build-sys: deprecate mips host build-sys: pass -fvisibility=default for wasm bindgen WIP: enable rust for wasm/emscripten docs/about/build-platforms.rst | 2 - docs/about/deprecated.rst | 9 +-- configure | 27 +++++++- meson.build | 34 +++++++--- .gitlab-ci.d/buildtest-template.yml | 2 +- .gitlab-ci.d/buildtest.yml | 66 +++++++++---------- .gitlab-ci.d/cirrus.yml | 4 +- .gitlab-ci.d/crossbuilds.yml | 46 ++++++------- .gitlab-ci.d/static_checks.yml | 6 +- .gitlab-ci.d/windows.yml | 8 ++- rust/bql/meson.build | 1 + rust/chardev/meson.build | 1 + rust/hw/char/pl011/meson.build | 1 + rust/hw/core/meson.build | 1 + rust/migration/meson.build | 3 +- rust/qom/meson.build | 1 + rust/system/meson.build | 1 + rust/util/meson.build | 1 + scripts/archive-source.sh | 33 +++++++--- .../ci/setup/ubuntu/ubuntu-2204-aarch64.yaml | 5 +- .../ci/setup/ubuntu/ubuntu-2204-s390x.yaml | 5 +- scripts/rust-to-clang-target-test.sh | 43 ++++++++++++ scripts/rust-to-clang-target.sh | 62 +++++++++++++++++ tests/docker/common.rc | 11 +++- tests/docker/dockerfiles/alpine.docker | 6 +- tests/docker/dockerfiles/centos9.docker | 4 ++ .../dockerfiles/debian-amd64-cross.docker | 18 +++-- .../dockerfiles/debian-arm64-cross.docker | 18 +++-- .../dockerfiles/debian-armhf-cross.docker | 21 +++--- .../dockerfiles/debian-i686-cross.docker | 20 ++++-- .../debian-legacy-test-cross.docker | 9 ++- .../dockerfiles/debian-mips64el-cross.docker | 9 ++- .../dockerfiles/debian-mipsel-cross.docker | 9 ++- .../dockerfiles/debian-ppc64el-cross.docker | 18 +++-- .../dockerfiles/debian-riscv64-cross.docker | 10 ++- .../dockerfiles/debian-s390x-cross.docker | 18 +++-- tests/docker/dockerfiles/debian.docker | 18 +++-- .../dockerfiles/emsdk-wasm32-cross.docker | 29 +++++++- .../dockerfiles/fedora-rust-nightly.docker | 18 +++-- .../dockerfiles/fedora-win64-cross.docker | 15 +++-- tests/docker/dockerfiles/fedora.docker | 18 +++-- tests/docker/dockerfiles/opensuse-leap.docker | 7 +- tests/docker/dockerfiles/ubuntu2204.docker | 7 +- tests/docker/test-wasm | 12 ++++ tests/lcitool/libvirt-ci | 2 +- tests/lcitool/projects/qemu.yml | 3 +- tests/lcitool/refresh | 48 +++++++++----- tests/vm/freebsd | 4 +- 48 files changed, 531 insertions(+), 183 deletions(-) create mode 100755 scripts/rust-to-clang-target-test.sh create mode 100644 scripts/rust-to-clang-target.sh create mode 100755 tests/docker/test-wasm -- 2.51.0

From: Marc-André Lureau <marcandre.lureau@redhat.com> Fail during configure time if the shm functions are missing, as required by oslib-posix.c. Note, we could further check the presence of the function in librt. This is a minor cleanup/improvement. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- meson.build | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/meson.build b/meson.build index 72da97829a..35d1f96180 100644 --- a/meson.build +++ b/meson.build @@ -1349,7 +1349,13 @@ if get_option('spice') \ endif spice_headers = spice.partial_dependency(compile_args: true, includes: true) -rt = cc.find_library('rt', required: false) +rt = not_found +if host_os != 'windows' + have_shm_open = cc.has_function('shm_open') + if not have_shm_open + rt = cc.find_library('rt', required: true) + endif +endif libiscsi = not_found if not get_option('libiscsi').auto() or have_block @@ -3811,14 +3817,10 @@ util_ss = util_ss.apply({}) libqemuutil = static_library('qemuutil', build_by_default: false, sources: util_ss.sources() + stub_ss.sources() + genh, - dependencies: [util_ss.dependencies(), libm, threads, glib, socket, malloc]) -qemuutil_deps = [event_loop_base] -if host_os != 'windows' - qemuutil_deps += [rt] -endif + dependencies: [util_ss.dependencies(), libm, threads, glib, socket, malloc, rt]) qemuutil = declare_dependency(link_with: libqemuutil, sources: genh + version_res, - dependencies: qemuutil_deps) + dependencies: [event_loop_base]) if have_system or have_user decodetree = generator(find_program('scripts/decodetree.py'), -- 2.51.0

marcandre.lureau@redhat.com writes:
From: Marc-André Lureau <marcandre.lureau@redhat.com>
Fail during configure time if the shm functions are missing, as required by oslib-posix.c. Note, we could further check the presence of the function in librt.
This is a minor cleanup/improvement.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> -- Alex Bennée Virtualisation Tech Lead @ Linaro

From: Marc-André Lureau <marcandre.lureau@redhat.com> The gitlab "Pipeline editor" has some warnings, and gitlab-ci-local fails. Read also from the docs https://docs.gitlab.com/ci/yaml/#needs "Supported values: An array of jobs (maximum of 50 jobs). An empty array ([]), to set the job to start as soon as the pipeline is created." Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> --- .gitlab-ci.d/buildtest.yml | 56 +++++++++++++++++----------------- .gitlab-ci.d/crossbuilds.yml | 46 ++++++++++++++-------------- .gitlab-ci.d/static_checks.yml | 6 ++-- 3 files changed, 54 insertions(+), 54 deletions(-) diff --git a/.gitlab-ci.d/buildtest.yml b/.gitlab-ci.d/buildtest.yml index f01978fb40..f8d7b6c3ac 100644 --- a/.gitlab-ci.d/buildtest.yml +++ b/.gitlab-ci.d/buildtest.yml @@ -36,7 +36,7 @@ build-system-ubuntu: - .native_build_job_template - .native_build_artifact_template needs: - job: amd64-ubuntu2204-container + - job: amd64-ubuntu2204-container variables: IMAGE: ubuntu2204 CONFIGURE_ARGS: --enable-docs @@ -66,7 +66,7 @@ build-system-debian: - .native_build_job_template - .native_build_artifact_template needs: - job: amd64-debian-container + - job: amd64-debian-container variables: IMAGE: debian CONFIGURE_ARGS: --with-coroutine=sigaltstack --enable-rust @@ -109,7 +109,7 @@ build-system-fedora: - .native_build_job_template - .native_build_artifact_template needs: - job: amd64-fedora-container + - job: amd64-fedora-container variables: IMAGE: fedora CONFIGURE_ARGS: --disable-gcrypt --enable-nettle --enable-docs --enable-crypto-afalg --enable-rust @@ -122,7 +122,7 @@ build-system-fedora-rust-nightly: - .native_build_job_template - .native_build_artifact_template needs: - job: amd64-fedora-rust-nightly-container + - job: amd64-fedora-rust-nightly-container variables: IMAGE: fedora-rust-nightly CONFIGURE_ARGS: --disable-docs --enable-rust --enable-strict-rust-lints @@ -167,7 +167,7 @@ build-system-centos: - .native_build_job_template - .native_build_artifact_template needs: - job: amd64-centos9-container + - job: amd64-centos9-container variables: IMAGE: centos9 CONFIGURE_ARGS: --disable-nettle --enable-gcrypt --enable-vfio-user-server @@ -189,7 +189,7 @@ build-previous-qemu: - build-previous/tests/qtest/migration-test - build-previous/scripts needs: - job: amd64-opensuse-leap-container + - job: amd64-opensuse-leap-container variables: IMAGE: opensuse-leap TARGETS: x86_64-softmmu aarch64-softmmu @@ -274,7 +274,7 @@ build-system-opensuse: - .native_build_job_template - .native_build_artifact_template needs: - job: amd64-opensuse-leap-container + - job: amd64-opensuse-leap-container variables: IMAGE: opensuse-leap TARGETS: s390x-softmmu x86_64-softmmu aarch64-softmmu @@ -308,7 +308,7 @@ build-system-flaky: - .native_build_job_template - .native_build_artifact_template needs: - job: amd64-debian-container + - job: amd64-debian-container variables: IMAGE: debian QEMU_JOB_OPTIONAL: 1 @@ -338,7 +338,7 @@ functional-system-flaky: build-tcg-disabled: extends: .native_build_job_template needs: - job: amd64-centos9-container + - job: amd64-centos9-container variables: IMAGE: centos9 script: @@ -364,7 +364,7 @@ build-tcg-disabled: build-user: extends: .native_build_job_template needs: - job: amd64-debian-user-cross-container + - job: amd64-debian-user-cross-container variables: IMAGE: debian-all-test-cross CONFIGURE_ARGS: --disable-tools --disable-system @@ -374,7 +374,7 @@ build-user: build-user-static: extends: .native_build_job_template needs: - job: amd64-debian-user-cross-container + - job: amd64-debian-user-cross-container variables: IMAGE: debian-all-test-cross CONFIGURE_ARGS: --disable-tools --disable-system --static @@ -385,7 +385,7 @@ build-user-static: build-legacy: extends: .native_build_job_template needs: - job: amd64-debian-legacy-cross-container + - job: amd64-debian-legacy-cross-container variables: IMAGE: debian-legacy-test-cross TARGETS: alpha-linux-user alpha-softmmu sh4-linux-user @@ -395,7 +395,7 @@ build-legacy: build-user-hexagon: extends: .native_build_job_template needs: - job: hexagon-cross-container + - job: hexagon-cross-container variables: IMAGE: debian-hexagon-cross TARGETS: hexagon-linux-user @@ -408,7 +408,7 @@ build-user-hexagon: build-some-softmmu: extends: .native_build_job_template needs: - job: amd64-debian-user-cross-container + - job: amd64-debian-user-cross-container variables: IMAGE: debian-all-test-cross CONFIGURE_ARGS: --disable-tools --enable-debug @@ -419,7 +419,7 @@ build-some-softmmu: build-loongarch64: extends: .native_build_job_template needs: - job: loongarch-debian-cross-container + - job: loongarch-debian-cross-container variables: IMAGE: debian-loongarch-cross CONFIGURE_ARGS: --disable-tools --enable-debug @@ -430,7 +430,7 @@ build-loongarch64: build-tricore-softmmu: extends: .native_build_job_template needs: - job: tricore-debian-cross-container + - job: tricore-debian-cross-container variables: IMAGE: debian-tricore-cross CONFIGURE_ARGS: --disable-tools --disable-fdt --enable-debug @@ -440,7 +440,7 @@ build-tricore-softmmu: clang-system: extends: .native_build_job_template needs: - job: amd64-fedora-container + - job: amd64-fedora-container variables: IMAGE: fedora CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-ubsan @@ -451,7 +451,7 @@ clang-system: clang-user: extends: .native_build_job_template needs: - job: amd64-debian-user-cross-container + - job: amd64-debian-user-cross-container timeout: 70m variables: IMAGE: debian-all-test-cross @@ -582,7 +582,7 @@ functional-cfi-x86_64: tsan-build: extends: .native_build_job_template needs: - job: amd64-ubuntu2204-container + - job: amd64-ubuntu2204-container variables: IMAGE: ubuntu2204 CONFIGURE_ARGS: --enable-tsan --cc=clang --cxx=clang++ @@ -596,7 +596,7 @@ tsan-build: gcov: extends: .native_build_job_template needs: - job: amd64-ubuntu2204-container + - job: amd64-ubuntu2204-container timeout: 80m variables: IMAGE: ubuntu2204 @@ -623,7 +623,7 @@ gcov: build-oss-fuzz: extends: .native_build_job_template needs: - job: amd64-fedora-container + - job: amd64-fedora-container variables: IMAGE: fedora script: @@ -645,7 +645,7 @@ build-oss-fuzz: build-tci: extends: .native_build_job_template needs: - job: amd64-debian-user-cross-container + - job: amd64-debian-user-cross-container variables: IMAGE: debian-all-test-cross script: @@ -670,7 +670,7 @@ build-tci: build-without-defaults: extends: .native_build_job_template needs: - job: amd64-centos9-container + - job: amd64-centos9-container variables: IMAGE: centos9 CONFIGURE_ARGS: @@ -688,7 +688,7 @@ build-libvhost-user: stage: build image: $CI_REGISTRY_IMAGE/qemu/fedora:$QEMU_CI_CONTAINER_TAG needs: - job: amd64-fedora-container + - job: amd64-fedora-container script: - mkdir subprojects/libvhost-user/build - cd subprojects/libvhost-user/build @@ -702,9 +702,9 @@ build-tools-and-docs-debian: - .native_build_job_template - .native_build_artifact_template needs: - job: amd64-debian-container - # when running on 'master' we use pre-existing container - optional: true + - job: amd64-debian-container + # when running on 'master' we use pre-existing container + optional: true variables: IMAGE: debian MAKE_CHECK_ARGS: check-unit ctags TAGS cscope @@ -791,7 +791,7 @@ build-wasm: extends: .wasm_build_job_template timeout: 2h needs: - job: wasm-emsdk-cross-container + - job: wasm-emsdk-cross-container variables: IMAGE: emsdk-wasm32-cross CONFIGURE_ARGS: --static --disable-tools --enable-debug --enable-tcg-interpreter diff --git a/.gitlab-ci.d/crossbuilds.yml b/.gitlab-ci.d/crossbuilds.yml index 3f76c901ba..8ff0c27f74 100644 --- a/.gitlab-ci.d/crossbuilds.yml +++ b/.gitlab-ci.d/crossbuilds.yml @@ -4,28 +4,28 @@ include: cross-armhf-user: extends: .cross_user_build_job needs: - job: armhf-debian-cross-container + - job: armhf-debian-cross-container variables: IMAGE: debian-armhf-cross cross-arm64-system: extends: .cross_system_build_job needs: - job: arm64-debian-cross-container + - job: arm64-debian-cross-container variables: IMAGE: debian-arm64-cross cross-arm64-user: extends: .cross_user_build_job needs: - job: arm64-debian-cross-container + - job: arm64-debian-cross-container variables: IMAGE: debian-arm64-cross cross-arm64-kvm-only: extends: .cross_accel_build_job needs: - job: arm64-debian-cross-container + - job: arm64-debian-cross-container variables: IMAGE: debian-arm64-cross EXTRA_CONFIGURE_OPTS: --disable-tcg --without-default-features @@ -35,7 +35,7 @@ cross-i686-system: - .cross_system_build_job - .cross_test_artifacts needs: - job: i686-debian-cross-container + - job: i686-debian-cross-container variables: IMAGE: debian-i686-cross EXTRA_CONFIGURE_OPTS: --disable-kvm @@ -46,7 +46,7 @@ cross-i686-user: - .cross_user_build_job - .cross_test_artifacts needs: - job: i686-debian-cross-container + - job: i686-debian-cross-container variables: IMAGE: debian-i686-cross MAKE_CHECK_ARGS: check @@ -57,7 +57,7 @@ cross-i686-tci: - .cross_test_artifacts timeout: 60m needs: - job: i686-debian-cross-container + - job: i686-debian-cross-container variables: IMAGE: debian-i686-cross ACCEL: tcg-interpreter @@ -71,49 +71,49 @@ cross-i686-tci: cross-mipsel-system: extends: .cross_system_build_job needs: - job: mipsel-debian-cross-container + - job: mipsel-debian-cross-container variables: IMAGE: debian-mipsel-cross cross-mipsel-user: extends: .cross_user_build_job needs: - job: mipsel-debian-cross-container + - job: mipsel-debian-cross-container variables: IMAGE: debian-mipsel-cross cross-mips64el-system: extends: .cross_system_build_job needs: - job: mips64el-debian-cross-container + - job: mips64el-debian-cross-container variables: IMAGE: debian-mips64el-cross cross-mips64el-user: extends: .cross_user_build_job needs: - job: mips64el-debian-cross-container + - job: mips64el-debian-cross-container variables: IMAGE: debian-mips64el-cross cross-ppc64el-system: extends: .cross_system_build_job needs: - job: ppc64el-debian-cross-container + - job: ppc64el-debian-cross-container variables: IMAGE: debian-ppc64el-cross cross-ppc64el-user: extends: .cross_user_build_job needs: - job: ppc64el-debian-cross-container + - job: ppc64el-debian-cross-container variables: IMAGE: debian-ppc64el-cross cross-ppc64el-kvm-only: extends: .cross_accel_build_job needs: - job: ppc64el-debian-cross-container + - job: ppc64el-debian-cross-container variables: IMAGE: debian-ppc64el-cross EXTRA_CONFIGURE_OPTS: --disable-tcg --without-default-devices @@ -121,35 +121,35 @@ cross-ppc64el-kvm-only: cross-riscv64-system: extends: .cross_system_build_job needs: - job: riscv64-debian-cross-container + - job: riscv64-debian-cross-container variables: IMAGE: debian-riscv64-cross cross-riscv64-user: extends: .cross_user_build_job needs: - job: riscv64-debian-cross-container + - job: riscv64-debian-cross-container variables: IMAGE: debian-riscv64-cross cross-s390x-system: extends: .cross_system_build_job needs: - job: s390x-debian-cross-container + - job: s390x-debian-cross-container variables: IMAGE: debian-s390x-cross cross-s390x-user: extends: .cross_user_build_job needs: - job: s390x-debian-cross-container + - job: s390x-debian-cross-container variables: IMAGE: debian-s390x-cross cross-s390x-kvm-only: extends: .cross_accel_build_job needs: - job: s390x-debian-cross-container + - job: s390x-debian-cross-container variables: IMAGE: debian-s390x-cross EXTRA_CONFIGURE_OPTS: --disable-tcg --enable-trace-backends=ftrace @@ -157,7 +157,7 @@ cross-s390x-kvm-only: cross-mips64el-kvm-only: extends: .cross_accel_build_job needs: - job: mips64el-debian-cross-container + - job: mips64el-debian-cross-container variables: IMAGE: debian-mips64el-cross EXTRA_CONFIGURE_OPTS: --disable-tcg --target-list=mips64el-softmmu @@ -165,7 +165,7 @@ cross-mips64el-kvm-only: cross-win64-system: extends: .cross_system_build_job needs: - job: win64-fedora-cross-container + - job: win64-fedora-cross-container variables: IMAGE: fedora-win64-cross EXTRA_CONFIGURE_OPTS: --enable-fdt=internal --disable-plugins @@ -181,7 +181,7 @@ cross-win64-system: cross-amd64-xen-only: extends: .cross_accel_build_job needs: - job: amd64-debian-cross-container + - job: amd64-debian-cross-container variables: IMAGE: debian-amd64-cross ACCEL: xen @@ -190,7 +190,7 @@ cross-amd64-xen-only: cross-arm64-xen-only: extends: .cross_accel_build_job needs: - job: arm64-debian-cross-container + - job: arm64-debian-cross-container variables: IMAGE: debian-arm64-cross ACCEL: xen diff --git a/.gitlab-ci.d/static_checks.yml b/.gitlab-ci.d/static_checks.yml index c3ed6de453..61fe2fa39a 100644 --- a/.gitlab-ci.d/static_checks.yml +++ b/.gitlab-ci.d/static_checks.yml @@ -32,7 +32,7 @@ check-python-minreqs: variables: GIT_DEPTH: 1 needs: - job: python-container + - job: python-container check-python-tox: extends: .base_job_template @@ -45,7 +45,7 @@ check-python-tox: QEMU_TOX_EXTRA_ARGS: --skip-missing-interpreters=false QEMU_JOB_OPTIONAL: 1 needs: - job: python-container + - job: python-container check-rust-tools-nightly: extends: .base_job_template @@ -76,7 +76,7 @@ check-build-units: stage: build image: $CI_REGISTRY_IMAGE/qemu/debian:$QEMU_CI_CONTAINER_TAG needs: - job: amd64-debian-container + - job: amd64-debian-container before_script: - source scripts/ci/gitlab-ci-section - section_start setup "Install Tools" -- 2.51.0

From: Marc-André Lureau <marcandre.lureau@redhat.com> Running meson on each subproject is quite slow. According to Paolo, meson will run download tasks in parallel. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- scripts/archive-source.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/archive-source.sh b/scripts/archive-source.sh index 035828c532..85cd0a63a0 100755 --- a/scripts/archive-source.sh +++ b/scripts/archive-source.sh @@ -77,9 +77,10 @@ function subproject_dir() { git archive --format tar "$(tree_ish)" > "$tar_file" test $? -ne 0 && error "failed to archive qemu" +meson subprojects download $subprojects +test $? -ne 0 && error "failed to download subprojects $subprojects" + for sp in $subprojects; do - meson subprojects download $sp - test $? -ne 0 && error "failed to download subproject $sp" tar --append --file "$tar_file" --exclude=.git subprojects/"$(subproject_dir $sp)" test $? -ne 0 && error "failed to append subproject $sp to $tar_file" done -- 2.51.0

marcandre.lureau@redhat.com writes:
From: Marc-André Lureau <marcandre.lureau@redhat.com>
Running meson on each subproject is quite slow.
According to Paolo, meson will run download tasks in parallel.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> -- Alex Bennée Virtualisation Tech Lead @ Linaro

From: Marc-André Lureau <marcandre.lureau@redhat.com> It's too verbose. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- scripts/archive-source.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/archive-source.sh b/scripts/archive-source.sh index 85cd0a63a0..68eb9672de 100755 --- a/scripts/archive-source.sh +++ b/scripts/archive-source.sh @@ -77,7 +77,7 @@ function subproject_dir() { git archive --format tar "$(tree_ish)" > "$tar_file" test $? -ne 0 && error "failed to archive qemu" -meson subprojects download $subprojects +meson subprojects download $subprojects >/dev/null test $? -ne 0 && error "failed to download subprojects $subprojects" for sp in $subprojects; do -- 2.51.0

marcandre.lureau@redhat.com writes:
From: Marc-André Lureau <marcandre.lureau@redhat.com>
It's too verbose.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> -- Alex Bennée Virtualisation Tech Lead @ Linaro

From: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- scripts/archive-source.sh | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/scripts/archive-source.sh b/scripts/archive-source.sh index 68eb9672de..f55130ec34 100755 --- a/scripts/archive-source.sh +++ b/scripts/archive-source.sh @@ -26,12 +26,26 @@ sub_file="${sub_tdir}/submodule.tar" # independent of what the developer currently has initialized # in their checkout, because the build environment is completely # different to the host OS. -subprojects="keycodemapdb libvfio-user berkeley-softfloat-3 - berkeley-testfloat-3 anyhow-1-rs arbitrary-int-1-rs bilge-0.2-rs - bilge-impl-0.2-rs either-1-rs foreign-0.3-rs itertools-0.11-rs - libc-0.2-rs proc-macro2-1-rs - proc-macro-error-1-rs proc-macro-error-attr-1-rs quote-1-rs - syn-2-rs unicode-ident-1-rs" +subprojects=( + anyhow-1-rs + arbitrary-int-1-rs + berkeley-softfloat-3 + berkeley-testfloat-3 + bilge-0.2-rs + bilge-impl-0.2-rs + either-1-rs + foreign-0.3-rs + itertools-0.11-rs + keycodemapdb + libc-0.2-rs + libvfio-user + proc-macro-error-1-rs + proc-macro-error-attr-1-rs + proc-macro2-1-rs + quote-1-rs + syn-2-rs + unicode-ident-1-rs +) sub_deinit="" function cleanup() { @@ -77,10 +91,10 @@ function subproject_dir() { git archive --format tar "$(tree_ish)" > "$tar_file" test $? -ne 0 && error "failed to archive qemu" -meson subprojects download $subprojects >/dev/null +meson subprojects download ${subprojects[@]} >/dev/null test $? -ne 0 && error "failed to download subprojects $subprojects" -for sp in $subprojects; do +for sp in "${subprojects[@]}"; do tar --append --file "$tar_file" --exclude=.git subprojects/"$(subproject_dir $sp)" test $? -ne 0 && error "failed to append subproject $sp to $tar_file" done -- 2.51.0

marcandre.lureau@redhat.com writes:
From: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> -- Alex Bennée Virtualisation Tech Lead @ Linaro

From: Marc-André Lureau <marcandre.lureau@redhat.com> It was incorrectly set on the [host_machine] and caused error: File "/tmp/qemu-test/build/pyvenv/lib/python3.11/site-packages/mesonbuild/envconfig.py", line 281, in from_literal assert all(isinstance(v, str) for v in raw.values()), 'for mypy' AssertionError: for mypy Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index 0f7eb95586..66613f3f4c 100755 --- a/configure +++ b/configure @@ -1958,7 +1958,7 @@ if test "$skip_meson" = no; then echo "[binaries]" >> $native echo "c = [$(meson_quote $host_cc)]" >> $native if test "$rust" != disabled; then - echo "rust = [$(meson_quote $rustc)]" >> $cross + echo "rust = [$(meson_quote $rustc)]" >> $native fi mv $native config-meson.native meson_option_add --native-file -- 2.51.0

From: Marc-André Lureau <marcandre.lureau@redhat.com> Implement a bash version of rust-bindgen rust_to_clang_target() to convert from rust target to clang target. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- configure | 7 ++++ scripts/rust-to-clang-target-test.sh | 43 +++++++++++++++++++ scripts/rust-to-clang-target.sh | 62 ++++++++++++++++++++++++++++ 3 files changed, 112 insertions(+) create mode 100755 scripts/rust-to-clang-target-test.sh create mode 100644 scripts/rust-to-clang-target.sh diff --git a/configure b/configure index 66613f3f4c..bf964947b8 100755 --- a/configure +++ b/configure @@ -1878,6 +1878,13 @@ if test "$skip_meson" = no; then eval "c=\$devices_${a}" echo "${a}-softmmu = '$c'" >> $cross done + if test "$rust" != disabled; then + if test "$cross_compile" = "yes"; then + . "$source_path/scripts/rust-to-clang-target.sh" + clang_target=$(rust_to_clang_target "$rust_target_triple") + echo "bindgen_clang_arguments = [$(meson_quote --target="$clang_target")]" >> $cross + fi + fi echo "[built-in options]" >> $cross echo "c_args = [$(meson_quote $CFLAGS $EXTRA_CFLAGS)]" >> $cross diff --git a/scripts/rust-to-clang-target-test.sh b/scripts/rust-to-clang-target-test.sh new file mode 100755 index 0000000000..ff6f8fcdc5 --- /dev/null +++ b/scripts/rust-to-clang-target-test.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env sh +# +# Copyright (C) 2025 Red Hat, Inc. +# +# Based on rust_to_clang_target() tests from rust-bindgen. +# +# SPDX-License-Identifier: GPL-2.0-or-later + +scripts_dir=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd) +. "$scripts_dir/rust-to-clang-target.sh" + +test_case() { + input="$1" + expected="$2" + result=$(rust_to_clang_target "$input") + + if [ "$result" = "$expected" ]; then + echo " OK: '$input' -> '$result'" + else + echo " FAILED: '$input'" + echo " Expected: '$expected'" + echo " Got: '$result'" + exit 1 + fi +} + +echo "Running tests..." + +test_case "aarch64-apple-ios" "arm64-apple-ios" +test_case "riscv64gc-unknown-linux-gnu" "riscv64-unknown-linux-gnu" +test_case "riscv64imac-unknown-none-elf" "riscv64-unknown-none-elf" +test_case "riscv32imc-unknown-none-elf" "riscv32-unknown-none-elf" +test_case "riscv32imac-unknown-none-elf" "riscv32-unknown-none-elf" +test_case "riscv32imafc-unknown-none-elf" "riscv32-unknown-none-elf" +test_case "riscv32i-unknown-none-elf" "riscv32-unknown-none-elf" +test_case "riscv32imc-esp-espidf" "riscv32-esp-elf" +test_case "xtensa-esp32-espidf" "xtensa-esp32-elf" +test_case "aarch64-apple-ios-sim" "arm64-apple-ios-simulator" +test_case "aarch64-apple-tvos-sim" "arm64-apple-tvos-simulator" +test_case "aarch64-apple-watchos-sim" "arm64-apple-watchos-simulator" + +echo "" +echo "All tests passed!" diff --git a/scripts/rust-to-clang-target.sh b/scripts/rust-to-clang-target.sh new file mode 100644 index 0000000000..5451807888 --- /dev/null +++ b/scripts/rust-to-clang-target.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env sh +# +# Copyright (C) 2025 Red Hat, Inc. +# +# Based on rust_to_clang_target() from rust-bindgen. +# +# SPDX-License-Identifier: GPL-2.0-or-later + +rust_to_clang_target() { + rust_target="$1" + + # Split the string by hyphens + triple_parts="" + old_IFS="$IFS" + IFS='-' + for part in $rust_target; do + triple_parts="$triple_parts $part" + done + IFS="$old_IFS" + set -- $triple_parts + + # RISC-V + case "$1" in + riscv32*) + set -- "riscv32" "${2}" "${3}" "${4}" + ;; + riscv64*) + set -- "riscv64" "${2}" "${3}" "${4}" + ;; + esac + + # Apple + if [ "$2" = "apple" ]; then + if [ "$1" = "aarch64" ]; then + set -- "arm64" "${2}" "${3}" "${4}" + fi + if [ "$4" = "sim" ]; then + set -- "${1}" "${2}" "${3}" "simulator" + fi + fi + + # ESP-IDF + if [ "$3" = "espidf" ]; then + set -- "${1}" "${2}" "elf" "${4}" + fi + + # Reassemble the string + new_triple="" + first=1 + for part in "$@"; do + if [ -n "$part" ]; then + if [ "$first" -eq 1 ]; then + new_triple="$part" + first=0 + else + new_triple="$new_triple-$part" + fi + fi + done + + echo "$new_triple" +} -- 2.51.0

On 9/24/25 14:04, marcandre.lureau@redhat.com wrote:
diff --git a/scripts/rust-to-clang-target.sh b/scripts/rust-to-clang-target.sh new file mode 100644 index 0000000000..5451807888 --- /dev/null +++ b/scripts/rust-to-clang-target.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env sh
No shebang is needed, since the file is sourced into the configure script. Otherwise, Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Paolo
+# +# Copyright (C) 2025 Red Hat, Inc. +# +# Based on rust_to_clang_target() from rust-bindgen. +# +# SPDX-License-Identifier: GPL-2.0-or-later + +rust_to_clang_target() { + rust_target="$1" + + # Split the string by hyphens + triple_parts="" + old_IFS="$IFS" + IFS='-' + for part in $rust_target; do + triple_parts="$triple_parts $part" + done + IFS="$old_IFS" + set -- $triple_parts + + # RISC-V + case "$1" in + riscv32*) + set -- "riscv32" "${2}" "${3}" "${4}" + ;; + riscv64*) + set -- "riscv64" "${2}" "${3}" "${4}" + ;; + esac + + # Apple + if [ "$2" = "apple" ]; then + if [ "$1" = "aarch64" ]; then + set -- "arm64" "${2}" "${3}" "${4}" + fi + if [ "$4" = "sim" ]; then + set -- "${1}" "${2}" "${3}" "simulator" + fi + fi + + # ESP-IDF + if [ "$3" = "espidf" ]; then + set -- "${1}" "${2}" "elf" "${4}" + fi + + # Reassemble the string + new_triple="" + first=1 + for part in "$@"; do + if [ -n "$part" ]; then + if [ "$first" -eq 1 ]; then + new_triple="$part" + first=0 + else + new_triple="$new_triple-$part" + fi + fi + done + + echo "$new_triple" +}

On 9/24/25 14:04, marcandre.lureau@redhat.com wrote:
From: Marc-André Lureau <marcandre.lureau@redhat.com>
Implement a bash version of rust-bindgen rust_to_clang_target() to convert from rust target to clang target.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
--- configure | 7 ++++ scripts/rust-to-clang-target-test.sh | 43 +++++++++++++++++++ scripts/rust-to-clang-target.sh | 62 ++++++++++++++++++++++++++++ 3 files changed, 112 insertions(+) create mode 100755 scripts/rust-to-clang-target-test.sh create mode 100644 scripts/rust-to-clang-target.sh
diff --git a/configure b/configure index 66613f3f4c..bf964947b8 100755 --- a/configure +++ b/configure @@ -1878,6 +1878,13 @@ if test "$skip_meson" = no; then eval "c=\$devices_${a}" echo "${a}-softmmu = '$c'" >> $cross done + if test "$rust" != disabled; then + if test "$cross_compile" = "yes"; then + . "$source_path/scripts/rust-to-clang-target.sh" + clang_target=$(rust_to_clang_target "$rust_target_triple") + echo "bindgen_clang_arguments = [$(meson_quote --target="$clang_target")]" >> $cross + fi + fi
echo "[built-in options]" >> $cross echo "c_args = [$(meson_quote $CFLAGS $EXTRA_CFLAGS)]" >> $cross diff --git a/scripts/rust-to-clang-target-test.sh b/scripts/rust-to-clang-target-test.sh new file mode 100755 index 0000000000..ff6f8fcdc5 --- /dev/null +++ b/scripts/rust-to-clang-target-test.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env sh +# +# Copyright (C) 2025 Red Hat, Inc. +# +# Based on rust_to_clang_target() tests from rust-bindgen. +# +# SPDX-License-Identifier: GPL-2.0-or-later + +scripts_dir=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd) +. "$scripts_dir/rust-to-clang-target.sh" + +test_case() { + input="$1" + expected="$2" + result=$(rust_to_clang_target "$input") + + if [ "$result" = "$expected" ]; then + echo " OK: '$input' -> '$result'" + else + echo " FAILED: '$input'" + echo " Expected: '$expected'" + echo " Got: '$result'" + exit 1 + fi +} + +echo "Running tests..." + +test_case "aarch64-apple-ios" "arm64-apple-ios" +test_case "riscv64gc-unknown-linux-gnu" "riscv64-unknown-linux-gnu" +test_case "riscv64imac-unknown-none-elf" "riscv64-unknown-none-elf" +test_case "riscv32imc-unknown-none-elf" "riscv32-unknown-none-elf" +test_case "riscv32imac-unknown-none-elf" "riscv32-unknown-none-elf" +test_case "riscv32imafc-unknown-none-elf" "riscv32-unknown-none-elf" +test_case "riscv32i-unknown-none-elf" "riscv32-unknown-none-elf" +test_case "riscv32imc-esp-espidf" "riscv32-esp-elf" +test_case "xtensa-esp32-espidf" "xtensa-esp32-elf" +test_case "aarch64-apple-ios-sim" "arm64-apple-ios-simulator" +test_case "aarch64-apple-tvos-sim" "arm64-apple-tvos-simulator" +test_case "aarch64-apple-watchos-sim" "arm64-apple-watchos-simulator" + +echo "" +echo "All tests passed!" diff --git a/scripts/rust-to-clang-target.sh b/scripts/rust-to-clang-target.sh new file mode 100644 index 0000000000..5451807888 --- /dev/null +++ b/scripts/rust-to-clang-target.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env sh +# +# Copyright (C) 2025 Red Hat, Inc. +# +# Based on rust_to_clang_target() from rust-bindgen. +# +# SPDX-License-Identifier: GPL-2.0-or-later + +rust_to_clang_target() { + rust_target="$1" + + # Split the string by hyphens + triple_parts="" + old_IFS="$IFS" + IFS='-' + for part in $rust_target; do + triple_parts="$triple_parts $part" + done + IFS="$old_IFS" + set -- $triple_parts + + # RISC-V + case "$1" in + riscv32*) + set -- "riscv32" "${2}" "${3}" "${4}" + ;; + riscv64*) + set -- "riscv64" "${2}" "${3}" "${4}" + ;; + esac + + # Apple + if [ "$2" = "apple" ]; then + if [ "$1" = "aarch64" ]; then + set -- "arm64" "${2}" "${3}" "${4}" + fi + if [ "$4" = "sim" ]; then + set -- "${1}" "${2}" "${3}" "simulator" + fi + fi + + # ESP-IDF + if [ "$3" = "espidf" ]; then + set -- "${1}" "${2}" "elf" "${4}" + fi + + # Reassemble the string + new_triple="" + first=1 + for part in "$@"; do + if [ -n "$part" ]; then + if [ "$first" -eq 1 ]; then + new_triple="$part" + first=0 + else + new_triple="$new_triple-$part" + fi + fi + done + + echo "$new_triple" +}

From: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> --- tests/docker/common.rc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/docker/common.rc b/tests/docker/common.rc index a611e6adf9..2ed2365a61 100755 --- a/tests/docker/common.rc +++ b/tests/docker/common.rc @@ -50,7 +50,7 @@ configure_qemu() echo "Configure options:" echo $config_opts $QEMU_SRC/configure $config_opts || \ - { cat config.log && test_fail "Failed to run 'configure'"; } + { cat config.log >&2 && test_fail "Failed to run 'configure'"; } } build_qemu() @@ -73,7 +73,7 @@ check_qemu() test_fail() { - echo "$@" + echo "$@" >&2 exit 1 } -- 2.51.0

From: Marc-André Lureau <marcandre.lureau@redhat.com> Without it, at least it fails with podman on fc42: [1/6] STEP 1/15: FROM emscripten/emsdk:3.1.50 AS build-base Error: creating build container: short-name resolution enforced but cannot prompt without a TTY Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Reviewed-by: Kohei Tokunaga <ktokunaga.mail@gmail.com> --- tests/docker/dockerfiles/emsdk-wasm32-cross.docker | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/docker/dockerfiles/emsdk-wasm32-cross.docker b/tests/docker/dockerfiles/emsdk-wasm32-cross.docker index 60a7d02f56..6b1642a207 100644 --- a/tests/docker/dockerfiles/emsdk-wasm32-cross.docker +++ b/tests/docker/dockerfiles/emsdk-wasm32-cross.docker @@ -8,7 +8,7 @@ ARG PIXMAN_VERSION=0.44.2 ARG FFI_VERSION=v3.4.7 ARG MESON_VERSION=1.5.0 -FROM emscripten/emsdk:$EMSDK_VERSION_QEMU AS build-base +FROM docker.io/emscripten/emsdk:$EMSDK_VERSION_QEMU AS build-base ARG MESON_VERSION ENV TARGET=/builddeps/target ENV CPATH="$TARGET/include" -- 2.51.0

From: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> --- tests/docker/common.rc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/docker/common.rc b/tests/docker/common.rc index 2ed2365a61..d202c0c666 100755 --- a/tests/docker/common.rc +++ b/tests/docker/common.rc @@ -50,7 +50,7 @@ configure_qemu() echo "Configure options:" echo $config_opts $QEMU_SRC/configure $config_opts || \ - { cat config.log >&2 && test_fail "Failed to run 'configure'"; } + { cat config.log >&2 ; cat meson-logs/meson-log.txt >&2 ; test_fail "Failed to run 'configure'"; } } build_qemu() -- 2.51.0

From: Marc-André Lureau <marcandre.lureau@redhat.com> It fails to link on fedora >= 41: /usr/bin/ld: /usr/bin/../lib/clang/20/lib/x86_64-redhat-linux-gnu/libclang_rt.safestack.a(safestack.cpp.o): in function `__sanitizer_internal_memcpy': (.text.__sanitizer_internal_memcpy+0x0): multiple definition of `__sanitizer_internal_memcpy'; /usr/bin/../lib/clang/20/lib/x86_64-redhat-linux-gnu/libclang_rt.ubsan_standalone.a(sanitizer_libc.cpp.o):(.text.__sanitizer_internal_memcpy+0x0): first defined here /usr/bin/ld: /usr/bin/../lib/clang/20/lib/x86_64-redhat-linux-gnu/libclang_rt.safestack.a(safestack.cpp.o): in function `__sanitizer_internal_memmove': (.text.__sanitizer_internal_memmove+0x0): multiple definition of `__sanitizer_internal_memmove'; /usr/bin/../lib/clang/20/lib/x86_64-redhat-linux-gnu/libclang_rt.ubsan_standalone.a(sanitizer_libc.cpp.o):(.text.__sanitizer_internal_memmove+0x0): first defined here /usr/bin/ld: /usr/bin/../lib/clang/20/lib/x86_64-redhat-linux-gnu/libclang_rt.safestack.a(safestack.cpp.o): in function `__sanitizer_internal_memset': (.text.__sanitizer_internal_memset+0x0): multiple definition of `__sanitizer_internal_memset'; /usr/bin/../lib/clang/20/lib/x86_64-redhat-linux-gnu/libclang_rt.ubsan_standalone.a(sanitizer_libc.cpp.o):(.text.__sanitizer_internal_memset+0x0): first defined here cfi_debug seems to pull ubsan which has conflicting symbols with safe_stack. See also: https://bugzilla.redhat.com/show_bug.cgi?id=2397265 Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- meson.build | 3 +++ .gitlab-ci.d/buildtest.yml | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/meson.build b/meson.build index 35d1f96180..9663725529 100644 --- a/meson.build +++ b/meson.build @@ -681,6 +681,9 @@ if get_option('cfi') error('-fsanitize-cfi-icall-generalize-pointers is not supported by the compiler') endif if get_option('cfi_debug') + if get_option('safe_stack') + error('cfi_debug is not compatible with safe_stack') + endif if cc.compiles('int main () { return 0; }', name: '-fno-sanitize-trap=cfi-icall', args: ['-flto', '-fsanitize=cfi-icall', diff --git a/.gitlab-ci.d/buildtest.yml b/.gitlab-ci.d/buildtest.yml index f8d7b6c3ac..c3467200f4 100644 --- a/.gitlab-ci.d/buildtest.yml +++ b/.gitlab-ci.d/buildtest.yml @@ -479,7 +479,7 @@ build-cfi-aarch64: LD_JOBS: 1 AR: llvm-ar IMAGE: fedora - CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug + CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-safe-stack --disable-slirp TARGETS: aarch64-softmmu MAKE_CHECK_ARGS: check-build @@ -517,7 +517,7 @@ build-cfi-ppc64-s390x: LD_JOBS: 1 AR: llvm-ar IMAGE: fedora - CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug + CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-safe-stack --disable-slirp TARGETS: ppc64-softmmu s390x-softmmu MAKE_CHECK_ARGS: check-build @@ -555,7 +555,7 @@ build-cfi-x86_64: LD_JOBS: 1 AR: llvm-ar IMAGE: fedora - CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug + CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-safe-stack --disable-slirp TARGETS: x86_64-softmmu MAKE_CHECK_ARGS: check-build -- 2.51.0

On Wed, Sep 24, 2025 at 04:04:08PM +0400, marcandre.lureau@redhat.com wrote:
From: Marc-André Lureau <marcandre.lureau@redhat.com>
It fails to link on fedora >= 41: /usr/bin/ld: /usr/bin/../lib/clang/20/lib/x86_64-redhat-linux-gnu/libclang_rt.safestack.a(safestack.cpp.o): in function `__sanitizer_internal_memcpy': (.text.__sanitizer_internal_memcpy+0x0): multiple definition of `__sanitizer_internal_memcpy'; /usr/bin/../lib/clang/20/lib/x86_64-redhat-linux-gnu/libclang_rt.ubsan_standalone.a(sanitizer_libc.cpp.o):(.text.__sanitizer_internal_memcpy+0x0): first defined here /usr/bin/ld: /usr/bin/../lib/clang/20/lib/x86_64-redhat-linux-gnu/libclang_rt.safestack.a(safestack.cpp.o): in function `__sanitizer_internal_memmove': (.text.__sanitizer_internal_memmove+0x0): multiple definition of `__sanitizer_internal_memmove'; /usr/bin/../lib/clang/20/lib/x86_64-redhat-linux-gnu/libclang_rt.ubsan_standalone.a(sanitizer_libc.cpp.o):(.text.__sanitizer_internal_memmove+0x0): first defined here /usr/bin/ld: /usr/bin/../lib/clang/20/lib/x86_64-redhat-linux-gnu/libclang_rt.safestack.a(safestack.cpp.o): in function `__sanitizer_internal_memset': (.text.__sanitizer_internal_memset+0x0): multiple definition of `__sanitizer_internal_memset'; /usr/bin/../lib/clang/20/lib/x86_64-redhat-linux-gnu/libclang_rt.ubsan_standalone.a(sanitizer_libc.cpp.o):(.text.__sanitizer_internal_memset+0x0): first defined here
cfi_debug seems to pull ubsan which has conflicting symbols with safe_stack.
See also: https://bugzilla.redhat.com/show_bug.cgi?id=2397265
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- meson.build | 3 +++ .gitlab-ci.d/buildtest.yml | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-)
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|

From: Marc-André Lureau <marcandre.lureau@redhat.com> Newer lcitool version has various fixes helping QEMU CI and this series. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- scripts/ci/setup/ubuntu/ubuntu-2204-aarch64.yaml | 3 ++- scripts/ci/setup/ubuntu/ubuntu-2204-s390x.yaml | 3 ++- tests/docker/dockerfiles/alpine.docker | 2 +- tests/docker/dockerfiles/debian-amd64-cross.docker | 5 ++++- tests/docker/dockerfiles/debian-arm64-cross.docker | 5 ++++- tests/docker/dockerfiles/debian-armhf-cross.docker | 5 ++++- tests/docker/dockerfiles/debian-i686-cross.docker | 5 ++++- .../dockerfiles/debian-mips64el-cross.docker | 5 ++++- .../docker/dockerfiles/debian-mipsel-cross.docker | 5 ++++- .../docker/dockerfiles/debian-ppc64el-cross.docker | 5 ++++- .../docker/dockerfiles/debian-riscv64-cross.docker | 8 ++++++-- tests/docker/dockerfiles/debian-s390x-cross.docker | 5 ++++- tests/docker/dockerfiles/debian.docker | 5 ++++- .../docker/dockerfiles/fedora-rust-nightly.docker | 14 ++++++++------ tests/docker/dockerfiles/fedora-win64-cross.docker | 11 +++++++---- tests/docker/dockerfiles/fedora.docker | 14 ++++++++------ tests/docker/dockerfiles/opensuse-leap.docker | 4 ++-- tests/docker/dockerfiles/ubuntu2204.docker | 5 ++++- tests/lcitool/libvirt-ci | 2 +- tests/lcitool/projects/qemu.yml | 1 - tests/lcitool/refresh | 6 +++--- 21 files changed, 80 insertions(+), 38 deletions(-) diff --git a/scripts/ci/setup/ubuntu/ubuntu-2204-aarch64.yaml b/scripts/ci/setup/ubuntu/ubuntu-2204-aarch64.yaml index f11e980826..bbcb5dd4ac 100644 --- a/scripts/ci/setup/ubuntu/ubuntu-2204-aarch64.yaml +++ b/scripts/ci/setup/ubuntu/ubuntu-2204-aarch64.yaml @@ -95,7 +95,6 @@ packages: - llvm - locales - make - - meson - mtools - multipath-tools - ncat @@ -108,10 +107,12 @@ packages: - python3-opencv - python3-pillow - python3-pip + - python3-setuptools - python3-sphinx - python3-sphinx-rtd-theme - python3-tomli - python3-venv + - python3-wheel - python3-yaml - rpm2cpio - rustc-1.77 diff --git a/scripts/ci/setup/ubuntu/ubuntu-2204-s390x.yaml b/scripts/ci/setup/ubuntu/ubuntu-2204-s390x.yaml index 6559cb2934..00eb1b0f91 100644 --- a/scripts/ci/setup/ubuntu/ubuntu-2204-s390x.yaml +++ b/scripts/ci/setup/ubuntu/ubuntu-2204-s390x.yaml @@ -93,7 +93,6 @@ packages: - llvm - locales - make - - meson - mtools - multipath-tools - ncat @@ -106,10 +105,12 @@ packages: - python3-opencv - python3-pillow - python3-pip + - python3-setuptools - python3-sphinx - python3-sphinx-rtd-theme - python3-tomli - python3-venv + - python3-wheel - python3-yaml - rpm2cpio - rustc-1.77 diff --git a/tests/docker/dockerfiles/alpine.docker b/tests/docker/dockerfiles/alpine.docker index bf3bd5a30d..bd1ef5505d 100644 --- a/tests/docker/dockerfiles/alpine.docker +++ b/tests/docker/dockerfiles/alpine.docker @@ -78,7 +78,7 @@ RUN apk update && \ nmap-ncat \ numactl-dev \ openssh-client \ - pcre-dev \ + pcre2-dev \ pipewire-dev \ pixman-dev \ pkgconf \ diff --git a/tests/docker/dockerfiles/debian-amd64-cross.docker b/tests/docker/dockerfiles/debian-amd64-cross.docker index 081f3e00f7..bba6de4e2d 100644 --- a/tests/docker/dockerfiles/debian-amd64-cross.docker +++ b/tests/docker/dockerfiles/debian-amd64-cross.docker @@ -34,7 +34,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ llvm \ locales \ make \ - meson \ mtools \ ncat \ ninja-build \ @@ -45,9 +44,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ python3-opencv \ python3-pillow \ python3-pip \ + python3-setuptools \ python3-sphinx \ python3-sphinx-rtd-theme \ python3-venv \ + python3-wheel \ python3-yaml \ rpm2cpio \ rustc-web \ @@ -67,6 +68,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ dpkg-reconfigure locales && \ rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED +RUN /usr/bin/pip3 install meson==1.8.1 + ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" ENV LANG "en_US.UTF-8" ENV MAKE "/usr/bin/make" diff --git a/tests/docker/dockerfiles/debian-arm64-cross.docker b/tests/docker/dockerfiles/debian-arm64-cross.docker index 91c555a36e..8bbcd75157 100644 --- a/tests/docker/dockerfiles/debian-arm64-cross.docker +++ b/tests/docker/dockerfiles/debian-arm64-cross.docker @@ -34,7 +34,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ llvm \ locales \ make \ - meson \ mtools \ ncat \ ninja-build \ @@ -45,9 +44,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ python3-opencv \ python3-pillow \ python3-pip \ + python3-setuptools \ python3-sphinx \ python3-sphinx-rtd-theme \ python3-venv \ + python3-wheel \ python3-yaml \ rpm2cpio \ rustc-web \ @@ -67,6 +68,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ dpkg-reconfigure locales && \ rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED +RUN /usr/bin/pip3 install meson==1.8.1 + ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" ENV LANG "en_US.UTF-8" ENV MAKE "/usr/bin/make" diff --git a/tests/docker/dockerfiles/debian-armhf-cross.docker b/tests/docker/dockerfiles/debian-armhf-cross.docker index f0e2efcda0..455b84424c 100644 --- a/tests/docker/dockerfiles/debian-armhf-cross.docker +++ b/tests/docker/dockerfiles/debian-armhf-cross.docker @@ -34,7 +34,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ llvm \ locales \ make \ - meson \ mtools \ ncat \ ninja-build \ @@ -45,9 +44,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ python3-opencv \ python3-pillow \ python3-pip \ + python3-setuptools \ python3-sphinx \ python3-sphinx-rtd-theme \ python3-venv \ + python3-wheel \ python3-yaml \ rpm2cpio \ rustc-web \ @@ -67,6 +68,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ dpkg-reconfigure locales && \ rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED +RUN /usr/bin/pip3 install meson==1.8.1 + ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" ENV LANG "en_US.UTF-8" ENV MAKE "/usr/bin/make" diff --git a/tests/docker/dockerfiles/debian-i686-cross.docker b/tests/docker/dockerfiles/debian-i686-cross.docker index 025beb1ce2..8b8993ffe4 100644 --- a/tests/docker/dockerfiles/debian-i686-cross.docker +++ b/tests/docker/dockerfiles/debian-i686-cross.docker @@ -34,7 +34,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ llvm \ locales \ make \ - meson \ mtools \ ncat \ ninja-build \ @@ -45,9 +44,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ python3-opencv \ python3-pillow \ python3-pip \ + python3-setuptools \ python3-sphinx \ python3-sphinx-rtd-theme \ python3-venv \ + python3-wheel \ python3-yaml \ rpm2cpio \ rustc-web \ @@ -67,6 +68,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ dpkg-reconfigure locales && \ rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED +RUN /usr/bin/pip3 install meson==1.8.1 + ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" ENV LANG "en_US.UTF-8" ENV MAKE "/usr/bin/make" diff --git a/tests/docker/dockerfiles/debian-mips64el-cross.docker b/tests/docker/dockerfiles/debian-mips64el-cross.docker index 4a941dd870..c89cb6c680 100644 --- a/tests/docker/dockerfiles/debian-mips64el-cross.docker +++ b/tests/docker/dockerfiles/debian-mips64el-cross.docker @@ -34,7 +34,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ llvm \ locales \ make \ - meson \ mtools \ ncat \ ninja-build \ @@ -45,9 +44,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ python3-opencv \ python3-pillow \ python3-pip \ + python3-setuptools \ python3-sphinx \ python3-sphinx-rtd-theme \ python3-venv \ + python3-wheel \ python3-yaml \ rpm2cpio \ rustc-web \ @@ -67,6 +68,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ dpkg-reconfigure locales && \ rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED +RUN /usr/bin/pip3 install meson==1.8.1 + ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" ENV LANG "en_US.UTF-8" ENV MAKE "/usr/bin/make" diff --git a/tests/docker/dockerfiles/debian-mipsel-cross.docker b/tests/docker/dockerfiles/debian-mipsel-cross.docker index 4d3e5d711b..4e10d9501f 100644 --- a/tests/docker/dockerfiles/debian-mipsel-cross.docker +++ b/tests/docker/dockerfiles/debian-mipsel-cross.docker @@ -34,7 +34,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ llvm \ locales \ make \ - meson \ mtools \ ncat \ ninja-build \ @@ -45,9 +44,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ python3-opencv \ python3-pillow \ python3-pip \ + python3-setuptools \ python3-sphinx \ python3-sphinx-rtd-theme \ python3-venv \ + python3-wheel \ python3-yaml \ rpm2cpio \ rustc-web \ @@ -67,6 +68,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ dpkg-reconfigure locales && \ rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED +RUN /usr/bin/pip3 install meson==1.8.1 + ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" ENV LANG "en_US.UTF-8" ENV MAKE "/usr/bin/make" diff --git a/tests/docker/dockerfiles/debian-ppc64el-cross.docker b/tests/docker/dockerfiles/debian-ppc64el-cross.docker index 22b4457ba9..cf61cb7f4a 100644 --- a/tests/docker/dockerfiles/debian-ppc64el-cross.docker +++ b/tests/docker/dockerfiles/debian-ppc64el-cross.docker @@ -34,7 +34,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ llvm \ locales \ make \ - meson \ mtools \ ncat \ ninja-build \ @@ -45,9 +44,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ python3-opencv \ python3-pillow \ python3-pip \ + python3-setuptools \ python3-sphinx \ python3-sphinx-rtd-theme \ python3-venv \ + python3-wheel \ python3-yaml \ rpm2cpio \ rustc-web \ @@ -67,6 +68,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ dpkg-reconfigure locales && \ rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED +RUN /usr/bin/pip3 install meson==1.8.1 + ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" ENV LANG "en_US.UTF-8" ENV MAKE "/usr/bin/make" diff --git a/tests/docker/dockerfiles/debian-riscv64-cross.docker b/tests/docker/dockerfiles/debian-riscv64-cross.docker index b0386cd3a1..79ec37616d 100644 --- a/tests/docker/dockerfiles/debian-riscv64-cross.docker +++ b/tests/docker/dockerfiles/debian-riscv64-cross.docker @@ -4,7 +4,7 @@ # # https://gitlab.com/libvirt/libvirt-ci -FROM docker.io/library/debian:trixie-slim +FROM docker.io/library/debian:13-slim RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ @@ -23,11 +23,13 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libglib2.0-dev \ locales \ make \ - meson \ ninja-build \ pkgconf \ python3 \ + python3-pip \ + python3-setuptools \ python3-venv \ + python3-wheel \ sed \ tar && \ eatmydata apt-get autoremove -y && \ @@ -36,6 +38,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ dpkg-reconfigure locales && \ rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED +RUN /usr/bin/pip3 install meson==1.8.1 + ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" ENV LANG "en_US.UTF-8" ENV MAKE "/usr/bin/make" diff --git a/tests/docker/dockerfiles/debian-s390x-cross.docker b/tests/docker/dockerfiles/debian-s390x-cross.docker index 13ec52c8ad..1782e0e90f 100644 --- a/tests/docker/dockerfiles/debian-s390x-cross.docker +++ b/tests/docker/dockerfiles/debian-s390x-cross.docker @@ -34,7 +34,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ llvm \ locales \ make \ - meson \ mtools \ ncat \ ninja-build \ @@ -45,9 +44,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ python3-opencv \ python3-pillow \ python3-pip \ + python3-setuptools \ python3-sphinx \ python3-sphinx-rtd-theme \ python3-venv \ + python3-wheel \ python3-yaml \ rpm2cpio \ rustc-web \ @@ -67,6 +68,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ dpkg-reconfigure locales && \ rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED +RUN /usr/bin/pip3 install meson==1.8.1 + ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" ENV LANG "en_US.UTF-8" ENV MAKE "/usr/bin/make" diff --git a/tests/docker/dockerfiles/debian.docker b/tests/docker/dockerfiles/debian.docker index 0a57c1a1d3..62f89e4d8c 100644 --- a/tests/docker/dockerfiles/debian.docker +++ b/tests/docker/dockerfiles/debian.docker @@ -104,7 +104,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ llvm \ locales \ make \ - meson \ mtools \ multipath-tools \ ncat \ @@ -117,9 +116,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ python3-opencv \ python3-pillow \ python3-pip \ + python3-setuptools \ python3-sphinx \ python3-sphinx-rtd-theme \ python3-venv \ + python3-wheel \ python3-yaml \ rpm2cpio \ rustc-web \ @@ -146,6 +147,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc +RUN /usr/bin/pip3 install meson==1.8.1 + ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" ENV LANG "en_US.UTF-8" ENV MAKE "/usr/bin/make" diff --git a/tests/docker/dockerfiles/fedora-rust-nightly.docker b/tests/docker/dockerfiles/fedora-rust-nightly.docker index 4a033309b3..fd71dd8790 100644 --- a/tests/docker/dockerfiles/fedora-rust-nightly.docker +++ b/tests/docker/dockerfiles/fedora-rust-nightly.docker @@ -1,10 +1,10 @@ # THIS FILE WAS AUTO-GENERATED # -# $ lcitool dockerfile --layers all fedora-40 qemu +# $ lcitool dockerfile --layers all fedora-41 qemu # # https://gitlab.com/libvirt/libvirt-ci -FROM registry.fedoraproject.org/fedora:40 +FROM registry.fedoraproject.org/fedora:41 RUN dnf install -y nosync && \ printf '#!/bin/sh\n\ @@ -91,7 +91,6 @@ exec "$@"\n' > /usr/bin/nosync && \ lzo-devel \ make \ mesa-libgbm-devel \ - meson \ mtools \ ncurses-devel \ nettle-devel \ @@ -100,7 +99,7 @@ exec "$@"\n' > /usr/bin/nosync && \ numactl-devel \ openssh-clients \ pam-devel \ - pcre-static \ + pcre2-static \ pipewire-devel \ pixman-devel \ pkgconfig \ @@ -111,9 +110,10 @@ exec "$@"\n' > /usr/bin/nosync && \ python3-opencv \ python3-pillow \ python3-pip \ + python3-setuptools \ python3-sphinx \ python3-sphinx_rtd_theme \ - python3-zombie-imp \ + python3-wheel \ rdma-core-devel \ rust \ sed \ @@ -124,7 +124,7 @@ exec "$@"\n' > /usr/bin/nosync && \ spice-server-devel \ swtpm \ systemd-devel \ - systemtap-sdt-devel \ + systemtap-sdt-dtrace \ tar \ tesseract \ tesseract-langpack-eng \ @@ -148,6 +148,8 @@ exec "$@"\n' > /usr/bin/nosync && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc +RUN /usr/bin/pip3 install meson==1.8.1 + ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" ENV LANG "en_US.UTF-8" ENV MAKE "/usr/bin/make" diff --git a/tests/docker/dockerfiles/fedora-win64-cross.docker b/tests/docker/dockerfiles/fedora-win64-cross.docker index a950344402..ed7d270984 100644 --- a/tests/docker/dockerfiles/fedora-win64-cross.docker +++ b/tests/docker/dockerfiles/fedora-win64-cross.docker @@ -1,10 +1,10 @@ # THIS FILE WAS AUTO-GENERATED # -# $ lcitool dockerfile --layers all --cross-arch mingw64 fedora-40 qemu,qemu-win-installer +# $ lcitool dockerfile --layers all --cross-arch mingw64 fedora-41 qemu,qemu-win-installer # # https://gitlab.com/libvirt/libvirt-ci -FROM registry.fedoraproject.org/fedora:40 +FROM registry.fedoraproject.org/fedora:41 RUN dnf install -y nosync && \ printf '#!/bin/sh\n\ @@ -38,7 +38,6 @@ exec "$@"\n' > /usr/bin/nosync && \ hostname \ llvm \ make \ - meson \ mtools \ ninja-build \ nmap-ncat \ @@ -49,9 +48,10 @@ exec "$@"\n' > /usr/bin/nosync && \ python3-opencv \ python3-pillow \ python3-pip \ + python3-setuptools \ python3-sphinx \ python3-sphinx_rtd_theme \ - python3-zombie-imp \ + python3-wheel \ rust \ sed \ socat \ @@ -69,6 +69,8 @@ exec "$@"\n' > /usr/bin/nosync && \ nosync dnf clean all -y && \ rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED +RUN /usr/bin/pip3 install meson==1.8.1 + ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" ENV LANG "en_US.UTF-8" ENV MAKE "/usr/bin/make" @@ -90,6 +92,7 @@ RUN nosync dnf install -y \ mingw64-gtk-vnc2 \ mingw64-gtk3 \ mingw64-libepoxy \ + mingw64-libfdt \ mingw64-libgcrypt \ mingw64-libjpeg-turbo \ mingw64-libpng \ diff --git a/tests/docker/dockerfiles/fedora.docker b/tests/docker/dockerfiles/fedora.docker index 014e3ccf17..e367c53c09 100644 --- a/tests/docker/dockerfiles/fedora.docker +++ b/tests/docker/dockerfiles/fedora.docker @@ -1,10 +1,10 @@ # THIS FILE WAS AUTO-GENERATED # -# $ lcitool dockerfile --layers all fedora-40 qemu +# $ lcitool dockerfile --layers all fedora-41 qemu # # https://gitlab.com/libvirt/libvirt-ci -FROM registry.fedoraproject.org/fedora:40 +FROM registry.fedoraproject.org/fedora:41 RUN dnf install -y nosync && \ printf '#!/bin/sh\n\ @@ -91,7 +91,6 @@ exec "$@"\n' > /usr/bin/nosync && \ lzo-devel \ make \ mesa-libgbm-devel \ - meson \ mtools \ ncurses-devel \ nettle-devel \ @@ -100,7 +99,7 @@ exec "$@"\n' > /usr/bin/nosync && \ numactl-devel \ openssh-clients \ pam-devel \ - pcre-static \ + pcre2-static \ pipewire-devel \ pixman-devel \ pkgconfig \ @@ -111,9 +110,10 @@ exec "$@"\n' > /usr/bin/nosync && \ python3-opencv \ python3-pillow \ python3-pip \ + python3-setuptools \ python3-sphinx \ python3-sphinx_rtd_theme \ - python3-zombie-imp \ + python3-wheel \ rdma-core-devel \ rust \ sed \ @@ -124,7 +124,7 @@ exec "$@"\n' > /usr/bin/nosync && \ spice-server-devel \ swtpm \ systemd-devel \ - systemtap-sdt-devel \ + systemtap-sdt-dtrace \ tar \ tesseract \ tesseract-langpack-eng \ @@ -148,6 +148,8 @@ exec "$@"\n' > /usr/bin/nosync && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc +RUN /usr/bin/pip3 install meson==1.8.1 + ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" ENV LANG "en_US.UTF-8" ENV MAKE "/usr/bin/make" diff --git a/tests/docker/dockerfiles/opensuse-leap.docker b/tests/docker/dockerfiles/opensuse-leap.docker index e90225dc23..60763857bb 100644 --- a/tests/docker/dockerfiles/opensuse-leap.docker +++ b/tests/docker/dockerfiles/opensuse-leap.docker @@ -89,7 +89,7 @@ RUN zypper update -y && \ ninja \ openssh \ pam-devel \ - pcre-devel-static \ + pcre2-devel-static \ pipewire-devel \ pkgconfig \ python311 \ @@ -132,7 +132,7 @@ RUN zypper update -y && \ RUN /usr/bin/pip3.11 install \ PyYAML \ - meson==1.5.0 \ + meson==1.8.1 \ pillow \ sphinx \ sphinx-rtd-theme diff --git a/tests/docker/dockerfiles/ubuntu2204.docker b/tests/docker/dockerfiles/ubuntu2204.docker index 28a6f93243..ea67c7602a 100644 --- a/tests/docker/dockerfiles/ubuntu2204.docker +++ b/tests/docker/dockerfiles/ubuntu2204.docker @@ -102,7 +102,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ llvm \ locales \ make \ - meson \ mtools \ multipath-tools \ ncat \ @@ -115,10 +114,12 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ python3-opencv \ python3-pillow \ python3-pip \ + python3-setuptools \ python3-sphinx \ python3-sphinx-rtd-theme \ python3-tomli \ python3-venv \ + python3-wheel \ python3-yaml \ rpm2cpio \ rustc-1.77 \ @@ -145,6 +146,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/clang && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc +RUN /usr/bin/pip3 install meson==1.8.1 + ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" ENV LANG "en_US.UTF-8" ENV MAKE "/usr/bin/make" diff --git a/tests/lcitool/libvirt-ci b/tests/lcitool/libvirt-ci index 18c4bfe02c..9da20ff7c3 160000 --- a/tests/lcitool/libvirt-ci +++ b/tests/lcitool/libvirt-ci @@ -1 +1 @@ -Subproject commit 18c4bfe02c467e5639bf9a687139735ccd7a3fff +Subproject commit 9da20ff7c3bc9067804a7561c2ff87583b434853 diff --git a/tests/lcitool/projects/qemu.yml b/tests/lcitool/projects/qemu.yml index c07242f272..f22fc46fdc 100644 --- a/tests/lcitool/projects/qemu.yml +++ b/tests/lcitool/projects/qemu.yml @@ -91,7 +91,6 @@ packages: - pkg-config - pulseaudio - python3 - - python3-imp - python3-numpy - python3-opencv - python3-pillow diff --git a/tests/lcitool/refresh b/tests/lcitool/refresh index d3488b2679..f49eb638f8 100755 --- a/tests/lcitool/refresh +++ b/tests/lcitool/refresh @@ -171,7 +171,7 @@ try: generate_dockerfile("centos9", "centos-stream-9") generate_dockerfile("debian", "debian-12", trailer="".join(debian12_extras)) - generate_dockerfile("fedora", "fedora-40") + generate_dockerfile("fedora", "fedora-41") generate_dockerfile("opensuse-leap", "opensuse-leap-15") generate_dockerfile("ubuntu2204", "ubuntu-2204", trailer="".join(ubuntu2204_rust_extras)) @@ -179,7 +179,7 @@ try: # # Non-fatal Rust-enabled build # - generate_dockerfile("fedora-rust-nightly", "fedora-40", + generate_dockerfile("fedora-rust-nightly", "fedora-41", trailer="".join(fedora_rustup_nightly_extras)) # @@ -237,7 +237,7 @@ try: trailer=cross_build("s390x-linux-gnu-", "s390x-softmmu,s390x-linux-user")) - generate_dockerfile("fedora-win64-cross", "fedora-40", + generate_dockerfile("fedora-win64-cross", "fedora-41", project='qemu,qemu-win-installer', cross="mingw64", trailer=cross_build("x86_64-w64-mingw32-", -- 2.51.0

On Wed, Sep 24, 2025 at 04:04:09PM +0400, marcandre.lureau@redhat.com wrote:
From: Marc-André Lureau <marcandre.lureau@redhat.com>
Newer lcitool version has various fixes helping QEMU CI and this series.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- scripts/ci/setup/ubuntu/ubuntu-2204-aarch64.yaml | 3 ++- scripts/ci/setup/ubuntu/ubuntu-2204-s390x.yaml | 3 ++- tests/docker/dockerfiles/alpine.docker | 2 +- tests/docker/dockerfiles/debian-amd64-cross.docker | 5 ++++- tests/docker/dockerfiles/debian-arm64-cross.docker | 5 ++++- tests/docker/dockerfiles/debian-armhf-cross.docker | 5 ++++- tests/docker/dockerfiles/debian-i686-cross.docker | 5 ++++- .../dockerfiles/debian-mips64el-cross.docker | 5 ++++- .../docker/dockerfiles/debian-mipsel-cross.docker | 5 ++++- .../docker/dockerfiles/debian-ppc64el-cross.docker | 5 ++++- .../docker/dockerfiles/debian-riscv64-cross.docker | 8 ++++++-- tests/docker/dockerfiles/debian-s390x-cross.docker | 5 ++++- tests/docker/dockerfiles/debian.docker | 5 ++++- .../docker/dockerfiles/fedora-rust-nightly.docker | 14 ++++++++------ tests/docker/dockerfiles/fedora-win64-cross.docker | 11 +++++++---- tests/docker/dockerfiles/fedora.docker | 14 ++++++++------ tests/docker/dockerfiles/opensuse-leap.docker | 4 ++-- tests/docker/dockerfiles/ubuntu2204.docker | 5 ++++- tests/lcitool/libvirt-ci | 2 +- tests/lcitool/projects/qemu.yml | 1 - tests/lcitool/refresh | 6 +++--- 21 files changed, 80 insertions(+), 38 deletions(-)
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|

From: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> --- scripts/ci/setup/ubuntu/ubuntu-2204-aarch64.yaml | 1 + scripts/ci/setup/ubuntu/ubuntu-2204-s390x.yaml | 1 + tests/docker/dockerfiles/centos9.docker | 1 + tests/docker/dockerfiles/debian-amd64-cross.docker | 1 + tests/docker/dockerfiles/debian-arm64-cross.docker | 1 + tests/docker/dockerfiles/debian-armhf-cross.docker | 1 + tests/docker/dockerfiles/debian-i686-cross.docker | 1 + tests/docker/dockerfiles/debian-mips64el-cross.docker | 1 + tests/docker/dockerfiles/debian-mipsel-cross.docker | 1 + tests/docker/dockerfiles/debian-ppc64el-cross.docker | 1 + tests/docker/dockerfiles/debian-s390x-cross.docker | 1 + tests/docker/dockerfiles/debian.docker | 1 + tests/docker/dockerfiles/fedora-rust-nightly.docker | 1 + tests/docker/dockerfiles/fedora-win64-cross.docker | 1 + tests/docker/dockerfiles/fedora.docker | 1 + tests/docker/dockerfiles/opensuse-leap.docker | 1 + tests/docker/dockerfiles/ubuntu2204.docker | 1 + tests/lcitool/projects/qemu.yml | 1 + 18 files changed, 18 insertions(+) diff --git a/scripts/ci/setup/ubuntu/ubuntu-2204-aarch64.yaml b/scripts/ci/setup/ubuntu/ubuntu-2204-aarch64.yaml index bbcb5dd4ac..f446217f2c 100644 --- a/scripts/ci/setup/ubuntu/ubuntu-2204-aarch64.yaml +++ b/scripts/ci/setup/ubuntu/ubuntu-2204-aarch64.yaml @@ -36,6 +36,7 @@ packages: - libcap-ng-dev - libcapstone-dev - libcbor-dev + - libclang-dev - libcmocka-dev - libcurl4-gnutls-dev - libdaxctl-dev diff --git a/scripts/ci/setup/ubuntu/ubuntu-2204-s390x.yaml b/scripts/ci/setup/ubuntu/ubuntu-2204-s390x.yaml index 00eb1b0f91..25c3368c54 100644 --- a/scripts/ci/setup/ubuntu/ubuntu-2204-s390x.yaml +++ b/scripts/ci/setup/ubuntu/ubuntu-2204-s390x.yaml @@ -36,6 +36,7 @@ packages: - libcap-ng-dev - libcapstone-dev - libcbor-dev + - libclang-dev - libcmocka-dev - libcurl4-gnutls-dev - libdaxctl-dev diff --git a/tests/docker/dockerfiles/centos9.docker b/tests/docker/dockerfiles/centos9.docker index a942835a1d..33c62033ce 100644 --- a/tests/docker/dockerfiles/centos9.docker +++ b/tests/docker/dockerfiles/centos9.docker @@ -25,6 +25,7 @@ RUN dnf distro-sync -y && \ capstone-devel \ ccache \ clang \ + compiler-rt \ ctags \ cyrus-sasl-devel \ daxctl-devel \ diff --git a/tests/docker/dockerfiles/debian-amd64-cross.docker b/tests/docker/dockerfiles/debian-amd64-cross.docker index bba6de4e2d..d4d3cebfdc 100644 --- a/tests/docker/dockerfiles/debian-amd64-cross.docker +++ b/tests/docker/dockerfiles/debian-amd64-cross.docker @@ -30,6 +30,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ gettext \ git \ hostname \ + libclang-rt-dev \ libglib2.0-dev \ llvm \ locales \ diff --git a/tests/docker/dockerfiles/debian-arm64-cross.docker b/tests/docker/dockerfiles/debian-arm64-cross.docker index 8bbcd75157..cd9c9a0def 100644 --- a/tests/docker/dockerfiles/debian-arm64-cross.docker +++ b/tests/docker/dockerfiles/debian-arm64-cross.docker @@ -30,6 +30,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ gettext \ git \ hostname \ + libclang-rt-dev \ libglib2.0-dev \ llvm \ locales \ diff --git a/tests/docker/dockerfiles/debian-armhf-cross.docker b/tests/docker/dockerfiles/debian-armhf-cross.docker index 455b84424c..21a5bbc81d 100644 --- a/tests/docker/dockerfiles/debian-armhf-cross.docker +++ b/tests/docker/dockerfiles/debian-armhf-cross.docker @@ -30,6 +30,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ gettext \ git \ hostname \ + libclang-rt-dev \ libglib2.0-dev \ llvm \ locales \ diff --git a/tests/docker/dockerfiles/debian-i686-cross.docker b/tests/docker/dockerfiles/debian-i686-cross.docker index 8b8993ffe4..c41a4805fe 100644 --- a/tests/docker/dockerfiles/debian-i686-cross.docker +++ b/tests/docker/dockerfiles/debian-i686-cross.docker @@ -30,6 +30,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ gettext \ git \ hostname \ + libclang-rt-dev \ libglib2.0-dev \ llvm \ locales \ diff --git a/tests/docker/dockerfiles/debian-mips64el-cross.docker b/tests/docker/dockerfiles/debian-mips64el-cross.docker index c89cb6c680..77d5d43f4b 100644 --- a/tests/docker/dockerfiles/debian-mips64el-cross.docker +++ b/tests/docker/dockerfiles/debian-mips64el-cross.docker @@ -30,6 +30,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ gettext \ git \ hostname \ + libclang-rt-dev \ libglib2.0-dev \ llvm \ locales \ diff --git a/tests/docker/dockerfiles/debian-mipsel-cross.docker b/tests/docker/dockerfiles/debian-mipsel-cross.docker index 4e10d9501f..9e60fe0eb4 100644 --- a/tests/docker/dockerfiles/debian-mipsel-cross.docker +++ b/tests/docker/dockerfiles/debian-mipsel-cross.docker @@ -30,6 +30,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ gettext \ git \ hostname \ + libclang-rt-dev \ libglib2.0-dev \ llvm \ locales \ diff --git a/tests/docker/dockerfiles/debian-ppc64el-cross.docker b/tests/docker/dockerfiles/debian-ppc64el-cross.docker index cf61cb7f4a..dc683bd498 100644 --- a/tests/docker/dockerfiles/debian-ppc64el-cross.docker +++ b/tests/docker/dockerfiles/debian-ppc64el-cross.docker @@ -30,6 +30,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ gettext \ git \ hostname \ + libclang-rt-dev \ libglib2.0-dev \ llvm \ locales \ diff --git a/tests/docker/dockerfiles/debian-s390x-cross.docker b/tests/docker/dockerfiles/debian-s390x-cross.docker index 1782e0e90f..ef6e961460 100644 --- a/tests/docker/dockerfiles/debian-s390x-cross.docker +++ b/tests/docker/dockerfiles/debian-s390x-cross.docker @@ -30,6 +30,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ gettext \ git \ hostname \ + libclang-rt-dev \ libglib2.0-dev \ llvm \ locales \ diff --git a/tests/docker/dockerfiles/debian.docker b/tests/docker/dockerfiles/debian.docker index 62f89e4d8c..ef9ba62f2a 100644 --- a/tests/docker/dockerfiles/debian.docker +++ b/tests/docker/dockerfiles/debian.docker @@ -43,6 +43,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libcap-ng-dev \ libcapstone-dev \ libcbor-dev \ + libclang-rt-dev \ libcmocka-dev \ libcurl4-gnutls-dev \ libdaxctl-dev \ diff --git a/tests/docker/dockerfiles/fedora-rust-nightly.docker b/tests/docker/dockerfiles/fedora-rust-nightly.docker index fd71dd8790..bdbcebda8d 100644 --- a/tests/docker/dockerfiles/fedora-rust-nightly.docker +++ b/tests/docker/dockerfiles/fedora-rust-nightly.docker @@ -32,6 +32,7 @@ exec "$@"\n' > /usr/bin/nosync && \ capstone-devel \ ccache \ clang \ + compiler-rt \ ctags \ cyrus-sasl-devel \ daxctl-devel \ diff --git a/tests/docker/dockerfiles/fedora-win64-cross.docker b/tests/docker/dockerfiles/fedora-win64-cross.docker index ed7d270984..3c54486d2f 100644 --- a/tests/docker/dockerfiles/fedora-win64-cross.docker +++ b/tests/docker/dockerfiles/fedora-win64-cross.docker @@ -25,6 +25,7 @@ exec "$@"\n' > /usr/bin/nosync && \ bzip2 \ ca-certificates \ ccache \ + compiler-rt \ ctags \ dbus-daemon \ diffutils \ diff --git a/tests/docker/dockerfiles/fedora.docker b/tests/docker/dockerfiles/fedora.docker index e367c53c09..f758efd2b7 100644 --- a/tests/docker/dockerfiles/fedora.docker +++ b/tests/docker/dockerfiles/fedora.docker @@ -32,6 +32,7 @@ exec "$@"\n' > /usr/bin/nosync && \ capstone-devel \ ccache \ clang \ + compiler-rt \ ctags \ cyrus-sasl-devel \ daxctl-devel \ diff --git a/tests/docker/dockerfiles/opensuse-leap.docker b/tests/docker/dockerfiles/opensuse-leap.docker index 60763857bb..d71dbc30c7 100644 --- a/tests/docker/dockerfiles/opensuse-leap.docker +++ b/tests/docker/dockerfiles/opensuse-leap.docker @@ -19,6 +19,7 @@ RUN zypper update -y && \ ca-certificates \ ccache \ clang \ + clang-devel \ ctags \ cyrus-sasl-devel \ dbus-1 \ diff --git a/tests/docker/dockerfiles/ubuntu2204.docker b/tests/docker/dockerfiles/ubuntu2204.docker index ea67c7602a..146ad7fce2 100644 --- a/tests/docker/dockerfiles/ubuntu2204.docker +++ b/tests/docker/dockerfiles/ubuntu2204.docker @@ -42,6 +42,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libcap-ng-dev \ libcapstone-dev \ libcbor-dev \ + libclang-dev \ libcmocka-dev \ libcurl4-gnutls-dev \ libdaxctl-dev \ diff --git a/tests/lcitool/projects/qemu.yml b/tests/lcitool/projects/qemu.yml index f22fc46fdc..301d0e1ea0 100644 --- a/tests/lcitool/projects/qemu.yml +++ b/tests/lcitool/projects/qemu.yml @@ -44,6 +44,7 @@ packages: - libcacard - libcap-ng - libcbor + - libclang-rt - libcurl - libdrm - libepoxy -- 2.51.0

From: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> --- tests/docker/dockerfiles/alpine.docker | 2 ++ tests/lcitool/refresh | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/tests/docker/dockerfiles/alpine.docker b/tests/docker/dockerfiles/alpine.docker index bd1ef5505d..b50fbc3dba 100644 --- a/tests/docker/dockerfiles/alpine.docker +++ b/tests/docker/dockerfiles/alpine.docker @@ -131,6 +131,8 @@ ENV LANG "en_US.UTF-8" ENV MAKE "/usr/bin/make" ENV NINJA "/usr/bin/ninja" ENV PYTHON "/usr/bin/python3" +# https://gitlab.alpinelinux.org/alpine/aports/-/issues/17463 +RUN apk add clang19-libclang # As a final step configure the user (if env is defined) ARG USER ARG UID diff --git a/tests/lcitool/refresh b/tests/lcitool/refresh index f49eb638f8..6f98a91277 100755 --- a/tests/lcitool/refresh +++ b/tests/lcitool/refresh @@ -97,6 +97,11 @@ def generate_yaml(os, target, arch, trailer=None): generate(filename, cmd, trailer) +alpine_extras = [ + "# https://gitlab.alpinelinux.org/alpine/aports/-/issues/17463\n", + "RUN apk add clang19-libclang\n", +] + # Netmap still needs to be manually built as it is yet to be packaged # into a distro. We also add cscope and gtags which are used in the CI # test @@ -167,7 +172,8 @@ try: # # Standard native builds # - generate_dockerfile("alpine", "alpine-321") + generate_dockerfile("alpine", "alpine-321", + trailer="".join(alpine_extras)) generate_dockerfile("centos9", "centos-stream-9") generate_dockerfile("debian", "debian-12", trailer="".join(debian12_extras)) -- 2.51.0

From: Marc-André Lureau <marcandre.lureau@redhat.com> Some distros/targets may pull it by default, but some don't. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> --- scripts/ci/setup/ubuntu/ubuntu-2204-aarch64.yaml | 1 + scripts/ci/setup/ubuntu/ubuntu-2204-s390x.yaml | 1 + tests/docker/dockerfiles/centos9.docker | 1 + tests/docker/dockerfiles/debian-amd64-cross.docker | 1 + tests/docker/dockerfiles/debian-arm64-cross.docker | 1 + tests/docker/dockerfiles/debian-armhf-cross.docker | 1 + tests/docker/dockerfiles/debian-i686-cross.docker | 1 + tests/docker/dockerfiles/debian-mips64el-cross.docker | 1 + tests/docker/dockerfiles/debian-mipsel-cross.docker | 1 + tests/docker/dockerfiles/debian-ppc64el-cross.docker | 1 + tests/docker/dockerfiles/debian-s390x-cross.docker | 1 + tests/docker/dockerfiles/debian.docker | 1 + tests/docker/dockerfiles/fedora-rust-nightly.docker | 1 + tests/docker/dockerfiles/fedora-win64-cross.docker | 3 ++- tests/docker/dockerfiles/fedora.docker | 1 + tests/docker/dockerfiles/ubuntu2204.docker | 1 + tests/lcitool/projects/qemu.yml | 1 + 17 files changed, 18 insertions(+), 1 deletion(-) diff --git a/scripts/ci/setup/ubuntu/ubuntu-2204-aarch64.yaml b/scripts/ci/setup/ubuntu/ubuntu-2204-aarch64.yaml index f446217f2c..2ca4a5392f 100644 --- a/scripts/ci/setup/ubuntu/ubuntu-2204-aarch64.yaml +++ b/scripts/ci/setup/ubuntu/ubuntu-2204-aarch64.yaml @@ -81,6 +81,7 @@ packages: - libspice-protocol-dev - libspice-server-dev - libssh-dev + - libstd-rust-dev - libsystemd-dev - libtasn1-6-dev - libubsan1 diff --git a/scripts/ci/setup/ubuntu/ubuntu-2204-s390x.yaml b/scripts/ci/setup/ubuntu/ubuntu-2204-s390x.yaml index 25c3368c54..7198fbbcbb 100644 --- a/scripts/ci/setup/ubuntu/ubuntu-2204-s390x.yaml +++ b/scripts/ci/setup/ubuntu/ubuntu-2204-s390x.yaml @@ -80,6 +80,7 @@ packages: - libsndio-dev - libspice-protocol-dev - libssh-dev + - libstd-rust-dev - libsystemd-dev - libtasn1-6-dev - libubsan1 diff --git a/tests/docker/dockerfiles/centos9.docker b/tests/docker/dockerfiles/centos9.docker index 33c62033ce..e7fc688ee9 100644 --- a/tests/docker/dockerfiles/centos9.docker +++ b/tests/docker/dockerfiles/centos9.docker @@ -105,6 +105,7 @@ RUN dnf distro-sync -y && \ python3-tomli \ rdma-core-devel \ rust \ + rust-std-static \ sed \ snappy-devel \ socat \ diff --git a/tests/docker/dockerfiles/debian-amd64-cross.docker b/tests/docker/dockerfiles/debian-amd64-cross.docker index d4d3cebfdc..f3ad2205a7 100644 --- a/tests/docker/dockerfiles/debian-amd64-cross.docker +++ b/tests/docker/dockerfiles/debian-amd64-cross.docker @@ -141,6 +141,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libspice-protocol-dev:amd64 \ libspice-server-dev:amd64 \ libssh-dev:amd64 \ + libstd-rust-dev:amd64 \ libsystemd-dev:amd64 \ libtasn1-6-dev:amd64 \ libubsan1:amd64 \ diff --git a/tests/docker/dockerfiles/debian-arm64-cross.docker b/tests/docker/dockerfiles/debian-arm64-cross.docker index cd9c9a0def..7d42227fa1 100644 --- a/tests/docker/dockerfiles/debian-arm64-cross.docker +++ b/tests/docker/dockerfiles/debian-arm64-cross.docker @@ -140,6 +140,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libspice-protocol-dev:arm64 \ libspice-server-dev:arm64 \ libssh-dev:arm64 \ + libstd-rust-dev:arm64 \ libsystemd-dev:arm64 \ libtasn1-6-dev:arm64 \ libubsan1:arm64 \ diff --git a/tests/docker/dockerfiles/debian-armhf-cross.docker b/tests/docker/dockerfiles/debian-armhf-cross.docker index 21a5bbc81d..8ad4d2bebf 100644 --- a/tests/docker/dockerfiles/debian-armhf-cross.docker +++ b/tests/docker/dockerfiles/debian-armhf-cross.docker @@ -140,6 +140,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libspice-protocol-dev:armhf \ libspice-server-dev:armhf \ libssh-dev:armhf \ + libstd-rust-dev:armhf \ libsystemd-dev:armhf \ libtasn1-6-dev:armhf \ libubsan1:armhf \ diff --git a/tests/docker/dockerfiles/debian-i686-cross.docker b/tests/docker/dockerfiles/debian-i686-cross.docker index c41a4805fe..e7e8d8e0f1 100644 --- a/tests/docker/dockerfiles/debian-i686-cross.docker +++ b/tests/docker/dockerfiles/debian-i686-cross.docker @@ -140,6 +140,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libspice-protocol-dev:i386 \ libspice-server-dev:i386 \ libssh-dev:i386 \ + libstd-rust-dev:i386 \ libsystemd-dev:i386 \ libtasn1-6-dev:i386 \ libubsan1:i386 \ diff --git a/tests/docker/dockerfiles/debian-mips64el-cross.docker b/tests/docker/dockerfiles/debian-mips64el-cross.docker index 77d5d43f4b..cca04a4594 100644 --- a/tests/docker/dockerfiles/debian-mips64el-cross.docker +++ b/tests/docker/dockerfiles/debian-mips64el-cross.docker @@ -139,6 +139,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libspice-protocol-dev:mips64el \ libspice-server-dev:mips64el \ libssh-dev:mips64el \ + libstd-rust-dev:mips64el \ libsystemd-dev:mips64el \ libtasn1-6-dev:mips64el \ libudev-dev:mips64el \ diff --git a/tests/docker/dockerfiles/debian-mipsel-cross.docker b/tests/docker/dockerfiles/debian-mipsel-cross.docker index 9e60fe0eb4..59c6f92248 100644 --- a/tests/docker/dockerfiles/debian-mipsel-cross.docker +++ b/tests/docker/dockerfiles/debian-mipsel-cross.docker @@ -139,6 +139,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libspice-protocol-dev:mipsel \ libspice-server-dev:mipsel \ libssh-dev:mipsel \ + libstd-rust-dev:mipsel \ libsystemd-dev:mipsel \ libtasn1-6-dev:mipsel \ libudev-dev:mipsel \ diff --git a/tests/docker/dockerfiles/debian-ppc64el-cross.docker b/tests/docker/dockerfiles/debian-ppc64el-cross.docker index dc683bd498..97ef64d934 100644 --- a/tests/docker/dockerfiles/debian-ppc64el-cross.docker +++ b/tests/docker/dockerfiles/debian-ppc64el-cross.docker @@ -140,6 +140,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libspice-protocol-dev:ppc64el \ libspice-server-dev:ppc64el \ libssh-dev:ppc64el \ + libstd-rust-dev:ppc64el \ libsystemd-dev:ppc64el \ libtasn1-6-dev:ppc64el \ libubsan1:ppc64el \ diff --git a/tests/docker/dockerfiles/debian-s390x-cross.docker b/tests/docker/dockerfiles/debian-s390x-cross.docker index ef6e961460..3afe91494d 100644 --- a/tests/docker/dockerfiles/debian-s390x-cross.docker +++ b/tests/docker/dockerfiles/debian-s390x-cross.docker @@ -139,6 +139,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libsndio-dev:s390x \ libspice-protocol-dev:s390x \ libssh-dev:s390x \ + libstd-rust-dev:s390x \ libsystemd-dev:s390x \ libtasn1-6-dev:s390x \ libubsan1:s390x \ diff --git a/tests/docker/dockerfiles/debian.docker b/tests/docker/dockerfiles/debian.docker index ef9ba62f2a..f68fcc83a9 100644 --- a/tests/docker/dockerfiles/debian.docker +++ b/tests/docker/dockerfiles/debian.docker @@ -89,6 +89,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libspice-protocol-dev \ libspice-server-dev \ libssh-dev \ + libstd-rust-dev \ libsystemd-dev \ libtasn1-6-dev \ libubsan1 \ diff --git a/tests/docker/dockerfiles/fedora-rust-nightly.docker b/tests/docker/dockerfiles/fedora-rust-nightly.docker index bdbcebda8d..167246f0f5 100644 --- a/tests/docker/dockerfiles/fedora-rust-nightly.docker +++ b/tests/docker/dockerfiles/fedora-rust-nightly.docker @@ -117,6 +117,7 @@ exec "$@"\n' > /usr/bin/nosync && \ python3-wheel \ rdma-core-devel \ rust \ + rust-std-static \ sed \ snappy-devel \ socat \ diff --git a/tests/docker/dockerfiles/fedora-win64-cross.docker b/tests/docker/dockerfiles/fedora-win64-cross.docker index 3c54486d2f..c76a70c368 100644 --- a/tests/docker/dockerfiles/fedora-win64-cross.docker +++ b/tests/docker/dockerfiles/fedora-win64-cross.docker @@ -100,7 +100,8 @@ RUN nosync dnf install -y \ mingw64-libtasn1 \ mingw64-nettle \ mingw64-pixman \ - mingw64-pkg-config && \ + mingw64-pkg-config \ + rust-std-static-x86_64-pc-windows-gnu && \ nosync dnf clean all -y && \ rpm -qa | sort > /packages.txt && \ mkdir -p /usr/libexec/ccache-wrappers && \ diff --git a/tests/docker/dockerfiles/fedora.docker b/tests/docker/dockerfiles/fedora.docker index f758efd2b7..56a1ad8a18 100644 --- a/tests/docker/dockerfiles/fedora.docker +++ b/tests/docker/dockerfiles/fedora.docker @@ -117,6 +117,7 @@ exec "$@"\n' > /usr/bin/nosync && \ python3-wheel \ rdma-core-devel \ rust \ + rust-std-static \ sed \ snappy-devel \ socat \ diff --git a/tests/docker/dockerfiles/ubuntu2204.docker b/tests/docker/dockerfiles/ubuntu2204.docker index 146ad7fce2..b393db55a8 100644 --- a/tests/docker/dockerfiles/ubuntu2204.docker +++ b/tests/docker/dockerfiles/ubuntu2204.docker @@ -88,6 +88,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libspice-protocol-dev \ libspice-server-dev \ libssh-dev \ + libstd-rust-dev \ libsystemd-dev \ libtasn1-6-dev \ libubsan1 \ diff --git a/tests/lcitool/projects/qemu.yml b/tests/lcitool/projects/qemu.yml index 301d0e1ea0..82812e7736 100644 --- a/tests/lcitool/projects/qemu.yml +++ b/tests/lcitool/projects/qemu.yml @@ -104,6 +104,7 @@ packages: - python3-venv - rpm2cpio - rust + - rust-std - sdl2 - sdl2-image - sed -- 2.51.0

From: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> --- .../dockerfiles/debian-amd64-cross.docker | 9 +++++---- .../dockerfiles/debian-arm64-cross.docker | 9 +++++---- .../dockerfiles/debian-armhf-cross.docker | 12 +++++------ .../dockerfiles/debian-i686-cross.docker | 11 +++++----- .../dockerfiles/debian-ppc64el-cross.docker | 9 +++++---- .../dockerfiles/debian-s390x-cross.docker | 9 +++++---- tests/docker/dockerfiles/debian.docker | 9 +++++---- tests/lcitool/refresh | 20 ++++++++++--------- 8 files changed, 46 insertions(+), 42 deletions(-) diff --git a/tests/docker/dockerfiles/debian-amd64-cross.docker b/tests/docker/dockerfiles/debian-amd64-cross.docker index f3ad2205a7..08621879dd 100644 --- a/tests/docker/dockerfiles/debian-amd64-cross.docker +++ b/tests/docker/dockerfiles/debian-amd64-cross.docker @@ -1,10 +1,10 @@ # THIS FILE WAS AUTO-GENERATED # -# $ lcitool dockerfile --layers all --cross-arch x86_64 debian-12 qemu +# $ lcitool dockerfile --layers all --cross-arch x86_64 debian-13 qemu # # https://gitlab.com/libvirt/libvirt-ci -FROM docker.io/library/debian:12-slim +FROM docker.io/library/debian:13-slim RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ @@ -48,11 +48,12 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ python3-setuptools \ python3-sphinx \ python3-sphinx-rtd-theme \ + python3-tomli \ python3-venv \ python3-wheel \ python3-yaml \ rpm2cpio \ - rustc-web \ + rustc \ sed \ socat \ sparse \ @@ -85,7 +86,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ eatmydata apt-get install --no-install-recommends -y \ gcc-x86-64-linux-gnu \ libaio-dev:amd64 \ - libasan6:amd64 \ + libasan8:amd64 \ libasound2-dev:amd64 \ libattr1-dev:amd64 \ libbpf-dev:amd64 \ diff --git a/tests/docker/dockerfiles/debian-arm64-cross.docker b/tests/docker/dockerfiles/debian-arm64-cross.docker index 7d42227fa1..725cccbee1 100644 --- a/tests/docker/dockerfiles/debian-arm64-cross.docker +++ b/tests/docker/dockerfiles/debian-arm64-cross.docker @@ -1,10 +1,10 @@ # THIS FILE WAS AUTO-GENERATED # -# $ lcitool dockerfile --layers all --cross-arch aarch64 debian-12 qemu +# $ lcitool dockerfile --layers all --cross-arch aarch64 debian-13 qemu # # https://gitlab.com/libvirt/libvirt-ci -FROM docker.io/library/debian:12-slim +FROM docker.io/library/debian:13-slim RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ @@ -48,11 +48,12 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ python3-setuptools \ python3-sphinx \ python3-sphinx-rtd-theme \ + python3-tomli \ python3-venv \ python3-wheel \ python3-yaml \ rpm2cpio \ - rustc-web \ + rustc \ sed \ socat \ sparse \ @@ -85,7 +86,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ eatmydata apt-get install --no-install-recommends -y \ gcc-aarch64-linux-gnu \ libaio-dev:arm64 \ - libasan6:arm64 \ + libasan8:arm64 \ libasound2-dev:arm64 \ libattr1-dev:arm64 \ libbpf-dev:arm64 \ diff --git a/tests/docker/dockerfiles/debian-armhf-cross.docker b/tests/docker/dockerfiles/debian-armhf-cross.docker index 8ad4d2bebf..50f7e0e986 100644 --- a/tests/docker/dockerfiles/debian-armhf-cross.docker +++ b/tests/docker/dockerfiles/debian-armhf-cross.docker @@ -1,10 +1,10 @@ # THIS FILE WAS AUTO-GENERATED # -# $ lcitool dockerfile --layers all --cross-arch armv7l debian-12 qemu +# $ lcitool dockerfile --layers all --cross-arch armv7l debian-13 qemu # # https://gitlab.com/libvirt/libvirt-ci -FROM docker.io/library/debian:12-slim +FROM docker.io/library/debian:13-slim RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ @@ -48,11 +48,12 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ python3-setuptools \ python3-sphinx \ python3-sphinx-rtd-theme \ + python3-tomli \ python3-venv \ python3-wheel \ python3-yaml \ rpm2cpio \ - rustc-web \ + rustc \ sed \ socat \ sparse \ @@ -85,7 +86,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ eatmydata apt-get install --no-install-recommends -y \ gcc-arm-linux-gnueabihf \ libaio-dev:armhf \ - libasan6:armhf \ + libasan8:armhf \ libasound2-dev:armhf \ libattr1-dev:armhf \ libbpf-dev:armhf \ @@ -107,7 +108,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libgbm-dev:armhf \ libgcrypt20-dev:armhf \ libglib2.0-dev:armhf \ - libglusterfs-dev:armhf \ libgnutls28-dev:armhf \ libgtk-3-dev:armhf \ libgtk-vnc-2.0-dev:armhf \ @@ -127,7 +127,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libpixman-1-dev:armhf \ libpng-dev:armhf \ libpulse-dev:armhf \ - librbd-dev:armhf \ librdmacm-dev:armhf \ libsasl2-dev:armhf \ libsdl2-dev:armhf \ @@ -152,7 +151,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libvirglrenderer-dev:armhf \ libvte-2.91-dev:armhf \ libxdp-dev:armhf \ - libxen-dev:armhf \ libzstd-dev:armhf \ nettle-dev:armhf \ systemtap-sdt-dev:armhf \ diff --git a/tests/docker/dockerfiles/debian-i686-cross.docker b/tests/docker/dockerfiles/debian-i686-cross.docker index e7e8d8e0f1..f53b77cb62 100644 --- a/tests/docker/dockerfiles/debian-i686-cross.docker +++ b/tests/docker/dockerfiles/debian-i686-cross.docker @@ -1,10 +1,10 @@ # THIS FILE WAS AUTO-GENERATED # -# $ lcitool dockerfile --layers all --cross-arch i686 debian-12 qemu +# $ lcitool dockerfile --layers all --cross-arch i686 debian-13 qemu # # https://gitlab.com/libvirt/libvirt-ci -FROM docker.io/library/debian:12-slim +FROM docker.io/library/debian:13-slim RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ @@ -48,11 +48,12 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ python3-setuptools \ python3-sphinx \ python3-sphinx-rtd-theme \ + python3-tomli \ python3-venv \ python3-wheel \ python3-yaml \ rpm2cpio \ - rustc-web \ + rustc \ sed \ socat \ sparse \ @@ -85,7 +86,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ eatmydata apt-get install --no-install-recommends -y \ gcc-i686-linux-gnu \ libaio-dev:i386 \ - libasan6:i386 \ + libasan8:i386 \ libasound2-dev:i386 \ libattr1-dev:i386 \ libbpf-dev:i386 \ @@ -107,7 +108,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libgbm-dev:i386 \ libgcrypt20-dev:i386 \ libglib2.0-dev:i386 \ - libglusterfs-dev:i386 \ libgnutls28-dev:i386 \ libgtk-3-dev:i386 \ libgtk-vnc-2.0-dev:i386 \ @@ -127,7 +127,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libpixman-1-dev:i386 \ libpng-dev:i386 \ libpulse-dev:i386 \ - librbd-dev:i386 \ librdmacm-dev:i386 \ libsasl2-dev:i386 \ libsdl2-dev:i386 \ diff --git a/tests/docker/dockerfiles/debian-ppc64el-cross.docker b/tests/docker/dockerfiles/debian-ppc64el-cross.docker index 97ef64d934..09de265c26 100644 --- a/tests/docker/dockerfiles/debian-ppc64el-cross.docker +++ b/tests/docker/dockerfiles/debian-ppc64el-cross.docker @@ -1,10 +1,10 @@ # THIS FILE WAS AUTO-GENERATED # -# $ lcitool dockerfile --layers all --cross-arch ppc64le debian-12 qemu +# $ lcitool dockerfile --layers all --cross-arch ppc64le debian-13 qemu # # https://gitlab.com/libvirt/libvirt-ci -FROM docker.io/library/debian:12-slim +FROM docker.io/library/debian:13-slim RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ @@ -48,11 +48,12 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ python3-setuptools \ python3-sphinx \ python3-sphinx-rtd-theme \ + python3-tomli \ python3-venv \ python3-wheel \ python3-yaml \ rpm2cpio \ - rustc-web \ + rustc \ sed \ socat \ sparse \ @@ -85,7 +86,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ eatmydata apt-get install --no-install-recommends -y \ gcc-powerpc64le-linux-gnu \ libaio-dev:ppc64el \ - libasan6:ppc64el \ + libasan8:ppc64el \ libasound2-dev:ppc64el \ libattr1-dev:ppc64el \ libbpf-dev:ppc64el \ diff --git a/tests/docker/dockerfiles/debian-s390x-cross.docker b/tests/docker/dockerfiles/debian-s390x-cross.docker index 3afe91494d..d7b2ca99ce 100644 --- a/tests/docker/dockerfiles/debian-s390x-cross.docker +++ b/tests/docker/dockerfiles/debian-s390x-cross.docker @@ -1,10 +1,10 @@ # THIS FILE WAS AUTO-GENERATED # -# $ lcitool dockerfile --layers all --cross-arch s390x debian-12 qemu +# $ lcitool dockerfile --layers all --cross-arch s390x debian-13 qemu # # https://gitlab.com/libvirt/libvirt-ci -FROM docker.io/library/debian:12-slim +FROM docker.io/library/debian:13-slim RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ @@ -48,11 +48,12 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ python3-setuptools \ python3-sphinx \ python3-sphinx-rtd-theme \ + python3-tomli \ python3-venv \ python3-wheel \ python3-yaml \ rpm2cpio \ - rustc-web \ + rustc \ sed \ socat \ sparse \ @@ -85,7 +86,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ eatmydata apt-get install --no-install-recommends -y \ gcc-s390x-linux-gnu \ libaio-dev:s390x \ - libasan6:s390x \ + libasan8:s390x \ libasound2-dev:s390x \ libattr1-dev:s390x \ libbpf-dev:s390x \ diff --git a/tests/docker/dockerfiles/debian.docker b/tests/docker/dockerfiles/debian.docker index f68fcc83a9..2696cf2167 100644 --- a/tests/docker/dockerfiles/debian.docker +++ b/tests/docker/dockerfiles/debian.docker @@ -1,10 +1,10 @@ # THIS FILE WAS AUTO-GENERATED # -# $ lcitool dockerfile --layers all debian-12 qemu +# $ lcitool dockerfile --layers all debian-13 qemu # # https://gitlab.com/libvirt/libvirt-ci -FROM docker.io/library/debian:12-slim +FROM docker.io/library/debian:13-slim RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ @@ -32,7 +32,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ git \ hostname \ libaio-dev \ - libasan6 \ + libasan8 \ libasound2-dev \ libattr1-dev \ libbpf-dev \ @@ -121,11 +121,12 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ python3-setuptools \ python3-sphinx \ python3-sphinx-rtd-theme \ + python3-tomli \ python3-venv \ python3-wheel \ python3-yaml \ rpm2cpio \ - rustc-web \ + rustc \ sed \ socat \ sparse \ diff --git a/tests/lcitool/refresh b/tests/lcitool/refresh index 6f98a91277..f4d2721178 100755 --- a/tests/lcitool/refresh +++ b/tests/lcitool/refresh @@ -105,7 +105,7 @@ alpine_extras = [ # Netmap still needs to be manually built as it is yet to be packaged # into a distro. We also add cscope and gtags which are used in the CI # test -debian12_extras = [ +debian13_extras = [ "# netmap/cscope/global\n", "RUN DEBIAN_FRONTEND=noninteractive eatmydata \\\n", " apt install -y --no-install-recommends \\\n", @@ -175,8 +175,8 @@ try: generate_dockerfile("alpine", "alpine-321", trailer="".join(alpine_extras)) generate_dockerfile("centos9", "centos-stream-9") - generate_dockerfile("debian", "debian-12", - trailer="".join(debian12_extras)) + generate_dockerfile("debian", "debian-13", + trailer="".join(debian13_extras)) generate_dockerfile("fedora", "fedora-41") generate_dockerfile("opensuse-leap", "opensuse-leap-15") generate_dockerfile("ubuntu2204", "ubuntu-2204", @@ -191,30 +191,32 @@ try: # # Cross compiling builds # - generate_dockerfile("debian-amd64-cross", "debian-12", + generate_dockerfile("debian-amd64-cross", "debian-13", cross="x86_64", trailer=cross_build("x86_64-linux-gnu-", "x86_64-softmmu," "x86_64-linux-user," "i386-softmmu,i386-linux-user")) - generate_dockerfile("debian-arm64-cross", "debian-12", + generate_dockerfile("debian-arm64-cross", "debian-13", cross="aarch64", trailer=cross_build("aarch64-linux-gnu-", "aarch64-softmmu,aarch64-linux-user")) - generate_dockerfile("debian-armhf-cross", "debian-12", + generate_dockerfile("debian-armhf-cross", "debian-13", cross="armv7l", trailer=cross_build("arm-linux-gnueabihf-", "arm-softmmu,arm-linux-user")) - generate_dockerfile("debian-i686-cross", "debian-12", + generate_dockerfile("debian-i686-cross", "debian-13", cross="i686", trailer=cross_build("i686-linux-gnu-", "x86_64-softmmu," "x86_64-linux-user," "i386-softmmu,i386-linux-user")) + # mips no longer supported in debian-13 + # https://www.debian.org/releases/trixie/release-notes/issues.html#mips-archit... generate_dockerfile("debian-mips64el-cross", "debian-12", cross="mips64el", trailer=cross_build("mips64el-linux-gnuabi64-", @@ -225,7 +227,7 @@ try: trailer=cross_build("mipsel-linux-gnu-", "mipsel-softmmu,mipsel-linux-user")) - generate_dockerfile("debian-ppc64el-cross", "debian-12", + generate_dockerfile("debian-ppc64el-cross", "debian-13", cross="ppc64le", trailer=cross_build("powerpc64le-linux-gnu-", "ppc64-softmmu,ppc64-linux-user")) @@ -238,7 +240,7 @@ try: trailer=cross_build("riscv64-linux-gnu-", "riscv64-softmmu,riscv64-linux-user")) - generate_dockerfile("debian-s390x-cross", "debian-12", + generate_dockerfile("debian-s390x-cross", "debian-13", cross="s390x", trailer=cross_build("s390x-linux-gnu-", "s390x-softmmu,s390x-linux-user")) -- 2.51.0

On 24/9/25 14:04, marcandre.lureau@redhat.com wrote:
From: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> --- .../dockerfiles/debian-amd64-cross.docker | 9 +++++---- .../dockerfiles/debian-arm64-cross.docker | 9 +++++---- .../dockerfiles/debian-armhf-cross.docker | 12 +++++------ .../dockerfiles/debian-i686-cross.docker | 11 +++++----- .../dockerfiles/debian-ppc64el-cross.docker | 9 +++++---- .../dockerfiles/debian-s390x-cross.docker | 9 +++++---- tests/docker/dockerfiles/debian.docker | 9 +++++---- tests/lcitool/refresh | 20 ++++++++++--------- 8 files changed, 46 insertions(+), 42 deletions(-)
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>

marcandre.lureau@redhat.com writes:
From: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> --- .../dockerfiles/debian-amd64-cross.docker | 9 +++++---- .../dockerfiles/debian-arm64-cross.docker | 9 +++++---- .../dockerfiles/debian-armhf-cross.docker | 12 +++++------ .../dockerfiles/debian-i686-cross.docker | 11 +++++----- .../dockerfiles/debian-ppc64el-cross.docker | 9 +++++---- .../dockerfiles/debian-s390x-cross.docker | 9 +++++---- tests/docker/dockerfiles/debian.docker | 9 +++++---- tests/lcitool/refresh | 20 ++++++++++--------- 8 files changed, 46 insertions(+), 42 deletions(-)
diff --git a/tests/docker/dockerfiles/debian-amd64-cross.docker b/tests/docker/dockerfiles/debian-amd64-cross.docker index f3ad2205a7..08621879dd 100644 --- a/tests/docker/dockerfiles/debian-amd64-cross.docker +++ b/tests/docker/dockerfiles/debian-amd64-cross.docker @@ -1,10 +1,10 @@ # THIS FILE WAS AUTO-GENERATED # -# $ lcitool dockerfile --layers all --cross-arch x86_64 debian-12 qemu +# $ lcitool dockerfile --layers all --cross-arch x86_64 debian-13 qemu # # https://gitlab.com/libvirt/libvirt-ci
-FROM docker.io/library/debian:12-slim +FROM docker.io/library/debian:13-slim
RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ @@ -48,11 +48,12 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ python3-setuptools \ python3-sphinx \ python3-sphinx-rtd-theme \ + python3-tomli \ python3-venv \ python3-wheel \ python3-yaml \ rpm2cpio \ - rustc-web \ + rustc \ sed \ socat \ sparse \ @@ -85,7 +86,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ eatmydata apt-get install --no-install-recommends -y \ gcc-x86-64-linux-gnu \ libaio-dev:amd64 \ - libasan6:amd64 \ + libasan8:amd64 \ libasound2-dev:amd64 \ libattr1-dev:amd64 \ libbpf-dev:amd64 \ diff --git a/tests/docker/dockerfiles/debian-arm64-cross.docker b/tests/docker/dockerfiles/debian-arm64-cross.docker index 7d42227fa1..725cccbee1 100644 --- a/tests/docker/dockerfiles/debian-arm64-cross.docker +++ b/tests/docker/dockerfiles/debian-arm64-cross.docker @@ -1,10 +1,10 @@ # THIS FILE WAS AUTO-GENERATED # -# $ lcitool dockerfile --layers all --cross-arch aarch64 debian-12 qemu +# $ lcitool dockerfile --layers all --cross-arch aarch64 debian-13 qemu # # https://gitlab.com/libvirt/libvirt-ci
-FROM docker.io/library/debian:12-slim +FROM docker.io/library/debian:13-slim
RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ @@ -48,11 +48,12 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ python3-setuptools \ python3-sphinx \ python3-sphinx-rtd-theme \ + python3-tomli \ python3-venv \ python3-wheel \ python3-yaml \ rpm2cpio \ - rustc-web \ + rustc \ sed \ socat \ sparse \ @@ -85,7 +86,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ eatmydata apt-get install --no-install-recommends -y \ gcc-aarch64-linux-gnu \ libaio-dev:arm64 \ - libasan6:arm64 \ + libasan8:arm64 \ libasound2-dev:arm64 \ libattr1-dev:arm64 \ libbpf-dev:arm64 \ diff --git a/tests/docker/dockerfiles/debian-armhf-cross.docker b/tests/docker/dockerfiles/debian-armhf-cross.docker index 8ad4d2bebf..50f7e0e986 100644 --- a/tests/docker/dockerfiles/debian-armhf-cross.docker +++ b/tests/docker/dockerfiles/debian-armhf-cross.docker @@ -1,10 +1,10 @@ # THIS FILE WAS AUTO-GENERATED # -# $ lcitool dockerfile --layers all --cross-arch armv7l debian-12 qemu +# $ lcitool dockerfile --layers all --cross-arch armv7l debian-13 qemu # # https://gitlab.com/libvirt/libvirt-ci
-FROM docker.io/library/debian:12-slim +FROM docker.io/library/debian:13-slim
RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ @@ -48,11 +48,12 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ python3-setuptools \ python3-sphinx \ python3-sphinx-rtd-theme \ + python3-tomli \ python3-venv \ python3-wheel \ python3-yaml \ rpm2cpio \ - rustc-web \ + rustc \ sed \ socat \ sparse \ @@ -85,7 +86,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ eatmydata apt-get install --no-install-recommends -y \ gcc-arm-linux-gnueabihf \ libaio-dev:armhf \ - libasan6:armhf \ + libasan8:armhf \ libasound2-dev:armhf \ libattr1-dev:armhf \ libbpf-dev:armhf \ @@ -107,7 +108,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libgbm-dev:armhf \ libgcrypt20-dev:armhf \ libglib2.0-dev:armhf \ - libglusterfs-dev:armhf \ libgnutls28-dev:armhf \ libgtk-3-dev:armhf \ libgtk-vnc-2.0-dev:armhf \ @@ -127,7 +127,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libpixman-1-dev:armhf \ libpng-dev:armhf \ libpulse-dev:armhf \ - librbd-dev:armhf \ librdmacm-dev:armhf \ libsasl2-dev:armhf \ libsdl2-dev:armhf \ @@ -152,7 +151,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libvirglrenderer-dev:armhf \ libvte-2.91-dev:armhf \ libxdp-dev:armhf \ - libxen-dev:armhf \ libzstd-dev:armhf \ nettle-dev:armhf \ systemtap-sdt-dev:armhf \
This fails to build: Build started at 2025-09-26T16:02:34.986501 Main binary: /tmp/qemu-test/build/pyvenv/bin/python3 Build Options: -Dwerror=true -Dprefix=/tmp/qemu-test/install -Drust=enabled -Ddocs=enabled -Dplugins=true --cross-file=config-meson.cross --native-file=config-meson.native Python system: Linux The Meson build system Version: 1.9.0 Source dir: /tmp/qemu-test/src Build dir: /tmp/qemu-test/build Build type: cross build Project name: qemu Project version: 10.1.50 ----------- Detecting compiler via: `arm-linux-gnueabihf-gcc --version` -> 0 stdout: arm-linux-gnueabihf-gcc (Debian 14.2.0-19) 14.2.0 Copyright (C) 2024 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ----------- Running command: -cpp -x c -E -dM - ----- ----------- Detecting linker via: `arm-linux-gnueabihf-gcc -Wl,--version` -> 0 stdout: GNU ld (GNU Binutils for Debian) 2.44 Copyright (C) 2025 Free Software Foundation, Inc. This program is free software; you may redistribute it under the terms of the GNU General Public License version 3 or (at your option) a later version. This program has absolutely no warranty. ----------- stderr: collect2 version 14.2.0 /usr/lib/gcc-cross/arm-linux-gnueabihf/14/../../../../arm-linux-gnueabihf/bin/ld -plugin /usr/libexec/gcc-cross/arm-linux-gnueabihf/14/liblto_plugin.so -plugin-opt=/usr/libexec/gcc-cross/arm-linux-gnueabihf/14/lto-wrapper -plugin-opt=-fresolution=/tmp/ccSBX4gO.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --sysroot=/ --build-id --eh-frame-hdr -dynamic-linker /lib/ld-linux-armhf.so.3 -X --hash-style=gnu --as-needed -m armelf_linux_eabi -pie /lib/arm-linux-gnueabihf/Scrt1.o /lib/arm-linux-gnueabihf/crti.o /usr/lib/gcc-cross/arm-linux-gnueabihf/14/crtbeginS.o -L/usr/lib/gcc-cross/arm-linux-gnueabihf/14 -L/usr/lib/gcc-cross/arm-linux-gnueabihf/14/../../../../arm-linux-gnueabihf/lib -L/lib/arm-linux-gnueabihf -L/usr/lib/arm-linux-gnueabihf --version -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc-cross/arm-linux-gnueabihf/14/crtendS.o /lib/arm-linux-gnueabihf/crtn.o ----------- Sanity testing C compiler: arm-linux-gnueabihf-gcc Is cross compiler: True. Sanity check compiler command line: arm-linux-gnueabihf-gcc sanitycheckc.c -o sanitycheckc_cross.exe -D_FILE_OFFSET_BITS=64 -c Sanity check compile stdout: ----- Sanity check compile stderr: ----- C compiler for the host machine: arm-linux-gnueabihf-gcc (gcc 14.2.0 "arm-linux-gnueabihf-gcc (Debian 14.2.0-19) 14.2.0") C linker for the host machine: arm-linux-gnueabihf-gcc ld.bfd 2.44 ----------- Detecting archiver via: `arm-linux-gnueabihf-ar --version` -> 0 stdout: GNU ar (GNU Binutils for Debian) 2.44 Copyright (C) 2025 Free Software Foundation, Inc. This program is free software; you may redistribute it under the terms of the GNU General Public License version 3 or (at your option) any later version. This program has absolutely no warranty. ----------- ----------- Detecting compiler via: `cc --version` -> 0 stdout: cc (Debian 14.2.0-19) 14.2.0 Copyright (C) 2024 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ----------- Running command: -cpp -x c -E -dM - ----- ----------- Detecting linker via: `cc -Wl,--version` -> 0 stdout: GNU ld (GNU Binutils for Debian) 2.44 Copyright (C) 2025 Free Software Foundation, Inc. This program is free software; you may redistribute it under the terms of the GNU General Public License version 3 or (at your option) a later version. This program has absolutely no warranty. ----------- stderr: collect2 version 14.2.0 /usr/bin/ld -plugin /usr/libexec/gcc/x86_64-linux-gnu/14/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-linux-gnu/14/lto-wrapper -plugin-opt=-fresolution=/tmp/ccm2bSZj.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie /usr/lib/gcc/x86_64-linux-gnu/14/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/14/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/14/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/14 -L/usr/lib/gcc/x86_64-linux-gnu/14/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/14/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/14/../../.. --version -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/14/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/14/../../../x86_64-linux-gnu/crtn.o ----------- Sanity testing C compiler: cc Is cross compiler: False. Sanity check compiler command line: cc sanitycheckc.c -o sanitycheckc.exe -D_FILE_OFFSET_BITS=64 Sanity check compile stdout: ----- Sanity check compile stderr: ----- Running test binary command: /tmp/qemu-test/build/meson-private/sanitycheckc.exe ----------- Sanity check: `/tmp/qemu-test/build/meson-private/sanitycheckc.exe` -> 0 C compiler for the build machine: cc (gcc 14.2.0 "cc (Debian 14.2.0-19) 14.2.0") C linker for the build machine: cc ld.bfd 2.44 ----------- Detecting archiver via: `gcc-ar --version` -> 0 stdout: GNU ar (GNU Binutils for Debian) 2.44 Copyright (C) 2025 Free Software Foundation, Inc. This program is free software; you may redistribute it under the terms of the GNU General Public License version 3 or (at your option) any later version. This program has absolutely no warranty. ----------- Build machine cpu family: x86_64 Build machine cpu: x86_64 Host machine cpu family: arm Host machine cpu: arm Target machine cpu family: arm Target machine cpu: arm Program scripts/symlink-install-tree.py found: YES (/tmp/qemu-test/build/pyvenv/bin/python3 /tmp/qemu-test/src/scripts/symlink-install-tree.py) Program sh found: YES (/usr/bin/sh) Program python3 found: YES (/tmp/qemu-test/build/pyvenv/bin/python3) ----------- Detecting compiler via: `arm-linux-gnueabihf-gcc --version` -> 0 stdout: arm-linux-gnueabihf-gcc (Debian 14.2.0-19) 14.2.0 Copyright (C) 2024 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ----------- Running command: -cpp -x c -E -dM - ----- ----------- Detecting linker via: `arm-linux-gnueabihf-gcc -Wl,--version` -> 0 stdout: GNU ld (GNU Binutils for Debian) 2.44 Copyright (C) 2025 Free Software Foundation, Inc. This program is free software; you may redistribute it under the terms of the GNU General Public License version 3 or (at your option) a later version. This program has absolutely no warranty. ----------- stderr: collect2 version 14.2.0 /usr/lib/gcc-cross/arm-linux-gnueabihf/14/../../../../arm-linux-gnueabihf/bin/ld -plugin /usr/libexec/gcc-cross/arm-linux-gnueabihf/14/liblto_plugin.so -plugin-opt=/usr/libexec/gcc-cross/arm-linux-gnueabihf/14/lto-wrapper -plugin-opt=-fresolution=/tmp/ccDS7TeO.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --sysroot=/ --build-id --eh-frame-hdr -dynamic-linker /lib/ld-linux-armhf.so.3 -X --hash-style=gnu --as-needed -m armelf_linux_eabi -pie /lib/arm-linux-gnueabihf/Scrt1.o /lib/arm-linux-gnueabihf/crti.o /usr/lib/gcc-cross/arm-linux-gnueabihf/14/crtbeginS.o -L/usr/lib/gcc-cross/arm-linux-gnueabihf/14 -L/usr/lib/gcc-cross/arm-linux-gnueabihf/14/../../../../arm-linux-gnueabihf/lib -L/lib/arm-linux-gnueabihf -L/usr/lib/arm-linux-gnueabihf --version -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc-cross/arm-linux-gnueabihf/14/crtendS.o /lib/arm-linux-gnueabihf/crtn.o ----------- ----------- Detecting compiler via: `rustc --target arm-unknown-linux-gnueabi --version` -> 0 stdout: rustc 1.85.0 (4d91de4e4 2025-02-17) (built from a source tarball) ----------- ----------- Called: `rustc --target arm-unknown-linux-gnueabi -C linker=arm-linux-gnueabihf-gcc -o /tmp/qemu-test/build/meson-private/rusttest.exe /tmp/qemu-test/build/meson-private/sanity.rs` -> 1 stderr: error[E0463]: can't find crate for `std` | = note: the `arm-unknown-linux-gnueabi` target may not be installed = help: consider downloading the target with `rustup target add arm-unknown-linux-gnueabi` error: aborting due to 1 previous error For more information about this error, try `rustc --explain E0463`. ----------- ../src/meson.build:91:12: ERROR: Rust compiler rustc --target arm-unknown-linux-gnueabi -C linker=arm-linux-gnueabihf-gcc cannot compile programs. Failed to run 'configure' make[1]: *** [tests/docker/Makefile.include:203: docker-run] Error 1 make[1]: Leaving directory '/home/alex/lsrc/qemu.git' make: *** [tests/docker/Makefile.include:131: docker-test-build@debian-armhf-cross] Error 2 🕙17:02:35 alex@draig:qemu.git on testing/next:master [$!?⇡] took 12m1s [🔴 USAGE]
diff --git a/tests/docker/dockerfiles/debian-i686-cross.docker b/tests/docker/dockerfiles/debian-i686-cross.docker index e7e8d8e0f1..f53b77cb62 100644 --- a/tests/docker/dockerfiles/debian-i686-cross.docker +++ b/tests/docker/dockerfiles/debian-i686-cross.docker @@ -1,10 +1,10 @@ # THIS FILE WAS AUTO-GENERATED # -# $ lcitool dockerfile --layers all --cross-arch i686 debian-12 qemu +# $ lcitool dockerfile --layers all --cross-arch i686 debian-13 qemu # # https://gitlab.com/libvirt/libvirt-ci
-FROM docker.io/library/debian:12-slim +FROM docker.io/library/debian:13-slim
RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ @@ -48,11 +48,12 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ python3-setuptools \ python3-sphinx \ python3-sphinx-rtd-theme \ + python3-tomli \ python3-venv \ python3-wheel \ python3-yaml \ rpm2cpio \ - rustc-web \ + rustc \ sed \ socat \ sparse \ @@ -85,7 +86,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ eatmydata apt-get install --no-install-recommends -y \ gcc-i686-linux-gnu \ libaio-dev:i386 \ - libasan6:i386 \ + libasan8:i386 \ libasound2-dev:i386 \ libattr1-dev:i386 \ libbpf-dev:i386 \ @@ -107,7 +108,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libgbm-dev:i386 \ libgcrypt20-dev:i386 \ libglib2.0-dev:i386 \ - libglusterfs-dev:i386 \ libgnutls28-dev:i386 \ libgtk-3-dev:i386 \ libgtk-vnc-2.0-dev:i386 \ @@ -127,7 +127,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libpixman-1-dev:i386 \ libpng-dev:i386 \ libpulse-dev:i386 \ - librbd-dev:i386 \ librdmacm-dev:i386 \ libsasl2-dev:i386 \ libsdl2-dev:i386 \ diff --git a/tests/docker/dockerfiles/debian-ppc64el-cross.docker b/tests/docker/dockerfiles/debian-ppc64el-cross.docker index 97ef64d934..09de265c26 100644 --- a/tests/docker/dockerfiles/debian-ppc64el-cross.docker +++ b/tests/docker/dockerfiles/debian-ppc64el-cross.docker @@ -1,10 +1,10 @@ # THIS FILE WAS AUTO-GENERATED # -# $ lcitool dockerfile --layers all --cross-arch ppc64le debian-12 qemu +# $ lcitool dockerfile --layers all --cross-arch ppc64le debian-13 qemu # # https://gitlab.com/libvirt/libvirt-ci
-FROM docker.io/library/debian:12-slim +FROM docker.io/library/debian:13-slim
RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ @@ -48,11 +48,12 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ python3-setuptools \ python3-sphinx \ python3-sphinx-rtd-theme \ + python3-tomli \ python3-venv \ python3-wheel \ python3-yaml \ rpm2cpio \ - rustc-web \ + rustc \ sed \ socat \ sparse \ @@ -85,7 +86,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ eatmydata apt-get install --no-install-recommends -y \ gcc-powerpc64le-linux-gnu \ libaio-dev:ppc64el \ - libasan6:ppc64el \ + libasan8:ppc64el \ libasound2-dev:ppc64el \ libattr1-dev:ppc64el \ libbpf-dev:ppc64el \ diff --git a/tests/docker/dockerfiles/debian-s390x-cross.docker b/tests/docker/dockerfiles/debian-s390x-cross.docker index 3afe91494d..d7b2ca99ce 100644 --- a/tests/docker/dockerfiles/debian-s390x-cross.docker +++ b/tests/docker/dockerfiles/debian-s390x-cross.docker @@ -1,10 +1,10 @@ # THIS FILE WAS AUTO-GENERATED # -# $ lcitool dockerfile --layers all --cross-arch s390x debian-12 qemu +# $ lcitool dockerfile --layers all --cross-arch s390x debian-13 qemu # # https://gitlab.com/libvirt/libvirt-ci
-FROM docker.io/library/debian:12-slim +FROM docker.io/library/debian:13-slim
RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ @@ -48,11 +48,12 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ python3-setuptools \ python3-sphinx \ python3-sphinx-rtd-theme \ + python3-tomli \ python3-venv \ python3-wheel \ python3-yaml \ rpm2cpio \ - rustc-web \ + rustc \ sed \ socat \ sparse \ @@ -85,7 +86,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ eatmydata apt-get install --no-install-recommends -y \ gcc-s390x-linux-gnu \ libaio-dev:s390x \ - libasan6:s390x \ + libasan8:s390x \ libasound2-dev:s390x \ libattr1-dev:s390x \ libbpf-dev:s390x \ diff --git a/tests/docker/dockerfiles/debian.docker b/tests/docker/dockerfiles/debian.docker index f68fcc83a9..2696cf2167 100644 --- a/tests/docker/dockerfiles/debian.docker +++ b/tests/docker/dockerfiles/debian.docker @@ -1,10 +1,10 @@ # THIS FILE WAS AUTO-GENERATED # -# $ lcitool dockerfile --layers all debian-12 qemu +# $ lcitool dockerfile --layers all debian-13 qemu # # https://gitlab.com/libvirt/libvirt-ci
-FROM docker.io/library/debian:12-slim +FROM docker.io/library/debian:13-slim
RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ @@ -32,7 +32,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ git \ hostname \ libaio-dev \ - libasan6 \ + libasan8 \ libasound2-dev \ libattr1-dev \ libbpf-dev \ @@ -121,11 +121,12 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ python3-setuptools \ python3-sphinx \ python3-sphinx-rtd-theme \ + python3-tomli \ python3-venv \ python3-wheel \ python3-yaml \ rpm2cpio \ - rustc-web \ + rustc \ sed \ socat \ sparse \ diff --git a/tests/lcitool/refresh b/tests/lcitool/refresh index 6f98a91277..f4d2721178 100755 --- a/tests/lcitool/refresh +++ b/tests/lcitool/refresh @@ -105,7 +105,7 @@ alpine_extras = [ # Netmap still needs to be manually built as it is yet to be packaged # into a distro. We also add cscope and gtags which are used in the CI # test -debian12_extras = [ +debian13_extras = [ "# netmap/cscope/global\n", "RUN DEBIAN_FRONTEND=noninteractive eatmydata \\\n", " apt install -y --no-install-recommends \\\n", @@ -175,8 +175,8 @@ try: generate_dockerfile("alpine", "alpine-321", trailer="".join(alpine_extras)) generate_dockerfile("centos9", "centos-stream-9") - generate_dockerfile("debian", "debian-12", - trailer="".join(debian12_extras)) + generate_dockerfile("debian", "debian-13", + trailer="".join(debian13_extras)) generate_dockerfile("fedora", "fedora-41") generate_dockerfile("opensuse-leap", "opensuse-leap-15") generate_dockerfile("ubuntu2204", "ubuntu-2204", @@ -191,30 +191,32 @@ try: # # Cross compiling builds # - generate_dockerfile("debian-amd64-cross", "debian-12", + generate_dockerfile("debian-amd64-cross", "debian-13", cross="x86_64", trailer=cross_build("x86_64-linux-gnu-", "x86_64-softmmu," "x86_64-linux-user," "i386-softmmu,i386-linux-user"))
- generate_dockerfile("debian-arm64-cross", "debian-12", + generate_dockerfile("debian-arm64-cross", "debian-13", cross="aarch64", trailer=cross_build("aarch64-linux-gnu-", "aarch64-softmmu,aarch64-linux-user"))
- generate_dockerfile("debian-armhf-cross", "debian-12", + generate_dockerfile("debian-armhf-cross", "debian-13", cross="armv7l", trailer=cross_build("arm-linux-gnueabihf-", "arm-softmmu,arm-linux-user"))
- generate_dockerfile("debian-i686-cross", "debian-12", + generate_dockerfile("debian-i686-cross", "debian-13", cross="i686", trailer=cross_build("i686-linux-gnu-", "x86_64-softmmu," "x86_64-linux-user," "i386-softmmu,i386-linux-user"))
+ # mips no longer supported in debian-13 + # https://www.debian.org/releases/trixie/release-notes/issues.html#mips-archit... generate_dockerfile("debian-mips64el-cross", "debian-12", cross="mips64el", trailer=cross_build("mips64el-linux-gnuabi64-", @@ -225,7 +227,7 @@ try: trailer=cross_build("mipsel-linux-gnu-", "mipsel-softmmu,mipsel-linux-user"))
- generate_dockerfile("debian-ppc64el-cross", "debian-12", + generate_dockerfile("debian-ppc64el-cross", "debian-13", cross="ppc64le", trailer=cross_build("powerpc64le-linux-gnu-", "ppc64-softmmu,ppc64-linux-user")) @@ -238,7 +240,7 @@ try: trailer=cross_build("riscv64-linux-gnu-", "riscv64-softmmu,riscv64-linux-user"))
- generate_dockerfile("debian-s390x-cross", "debian-12", + generate_dockerfile("debian-s390x-cross", "debian-13", cross="s390x", trailer=cross_build("s390x-linux-gnu-", "s390x-softmmu,s390x-linux-user"))
-- Alex Bennée Virtualisation Tech Lead @ Linaro

From: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> --- tests/docker/common.rc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/docker/common.rc b/tests/docker/common.rc index d202c0c666..52f01848a3 100755 --- a/tests/docker/common.rc +++ b/tests/docker/common.rc @@ -21,6 +21,12 @@ else DEF_TARGET_LIST=${DEF_TARGET_LIST:-"x86_64-softmmu,aarch64-softmmu"} fi +if [ "$ENABLE_RUST" = "1" ]; then + enable_rust="--enable-rust" +else + enable_rust="" +fi + requires_binary() { found=0 @@ -46,6 +52,7 @@ configure_qemu() ${TARGET_LIST:+--target-list=${TARGET_LIST}} \ --prefix=$INSTALL_DIR \ $QEMU_CONFIGURE_OPTS $EXTRA_CONFIGURE_OPTS \ + $enable_rust \ $@" echo "Configure options:" echo $config_opts -- 2.51.0

From: Marc-André Lureau <marcandre.lureau@redhat.com> Enable Rust on various distro images: alpine, centos, debian, fedora, opensuse. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- tests/docker/dockerfiles/alpine.docker | 2 ++ tests/docker/dockerfiles/centos9.docker | 2 ++ tests/docker/dockerfiles/debian-amd64-cross.docker | 2 ++ tests/docker/dockerfiles/debian-arm64-cross.docker | 2 ++ tests/docker/dockerfiles/debian-armhf-cross.docker | 2 ++ tests/docker/dockerfiles/debian-i686-cross.docker | 2 ++ .../dockerfiles/debian-mips64el-cross.docker | 2 ++ .../docker/dockerfiles/debian-mipsel-cross.docker | 2 ++ .../docker/dockerfiles/debian-ppc64el-cross.docker | 2 ++ .../docker/dockerfiles/debian-riscv64-cross.docker | 2 ++ tests/docker/dockerfiles/debian-s390x-cross.docker | 2 ++ tests/docker/dockerfiles/debian.docker | 2 ++ .../docker/dockerfiles/fedora-rust-nightly.docker | 2 ++ tests/docker/dockerfiles/fedora.docker | 2 ++ tests/docker/dockerfiles/opensuse-leap.docker | 2 ++ tests/lcitool/refresh | 14 +++++++++++--- 16 files changed, 41 insertions(+), 3 deletions(-) diff --git a/tests/docker/dockerfiles/alpine.docker b/tests/docker/dockerfiles/alpine.docker index b50fbc3dba..52adf9ccbb 100644 --- a/tests/docker/dockerfiles/alpine.docker +++ b/tests/docker/dockerfiles/alpine.docker @@ -138,3 +138,5 @@ ARG USER ARG UID RUN if [ "${USER}" ]; then \ id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi + +ENV ENABLE_RUST 1 diff --git a/tests/docker/dockerfiles/centos9.docker b/tests/docker/dockerfiles/centos9.docker index e7fc688ee9..0674d77826 100644 --- a/tests/docker/dockerfiles/centos9.docker +++ b/tests/docker/dockerfiles/centos9.docker @@ -142,3 +142,5 @@ ARG USER ARG UID RUN if [ "${USER}" ]; then \ id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi + +ENV ENABLE_RUST 1 diff --git a/tests/docker/dockerfiles/debian-amd64-cross.docker b/tests/docker/dockerfiles/debian-amd64-cross.docker index 08621879dd..7f4674400d 100644 --- a/tests/docker/dockerfiles/debian-amd64-cross.docker +++ b/tests/docker/dockerfiles/debian-amd64-cross.docker @@ -188,3 +188,5 @@ ARG USER ARG UID RUN if [ "${USER}" ]; then \ id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi + +ENV ENABLE_RUST 1 diff --git a/tests/docker/dockerfiles/debian-arm64-cross.docker b/tests/docker/dockerfiles/debian-arm64-cross.docker index 725cccbee1..c7cd54ee5c 100644 --- a/tests/docker/dockerfiles/debian-arm64-cross.docker +++ b/tests/docker/dockerfiles/debian-arm64-cross.docker @@ -187,3 +187,5 @@ ARG USER ARG UID RUN if [ "${USER}" ]; then \ id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi + +ENV ENABLE_RUST 1 diff --git a/tests/docker/dockerfiles/debian-armhf-cross.docker b/tests/docker/dockerfiles/debian-armhf-cross.docker index 50f7e0e986..627d41c6de 100644 --- a/tests/docker/dockerfiles/debian-armhf-cross.docker +++ b/tests/docker/dockerfiles/debian-armhf-cross.docker @@ -184,3 +184,5 @@ ARG USER ARG UID RUN if [ "${USER}" ]; then \ id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi + +ENV ENABLE_RUST 1 diff --git a/tests/docker/dockerfiles/debian-i686-cross.docker b/tests/docker/dockerfiles/debian-i686-cross.docker index f53b77cb62..4e8b3a8293 100644 --- a/tests/docker/dockerfiles/debian-i686-cross.docker +++ b/tests/docker/dockerfiles/debian-i686-cross.docker @@ -184,3 +184,5 @@ ARG USER ARG UID RUN if [ "${USER}" ]; then \ id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi + +ENV ENABLE_RUST 1 diff --git a/tests/docker/dockerfiles/debian-mips64el-cross.docker b/tests/docker/dockerfiles/debian-mips64el-cross.docker index cca04a4594..6e88777f76 100644 --- a/tests/docker/dockerfiles/debian-mips64el-cross.docker +++ b/tests/docker/dockerfiles/debian-mips64el-cross.docker @@ -183,3 +183,5 @@ ARG USER ARG UID RUN if [ "${USER}" ]; then \ id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi + +ENV ENABLE_RUST 1 diff --git a/tests/docker/dockerfiles/debian-mipsel-cross.docker b/tests/docker/dockerfiles/debian-mipsel-cross.docker index 59c6f92248..5f4e3fa963 100644 --- a/tests/docker/dockerfiles/debian-mipsel-cross.docker +++ b/tests/docker/dockerfiles/debian-mipsel-cross.docker @@ -183,3 +183,5 @@ ARG USER ARG UID RUN if [ "${USER}" ]; then \ id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi + +ENV ENABLE_RUST 1 diff --git a/tests/docker/dockerfiles/debian-ppc64el-cross.docker b/tests/docker/dockerfiles/debian-ppc64el-cross.docker index 09de265c26..dfa690616d 100644 --- a/tests/docker/dockerfiles/debian-ppc64el-cross.docker +++ b/tests/docker/dockerfiles/debian-ppc64el-cross.docker @@ -186,3 +186,5 @@ ARG USER ARG UID RUN if [ "${USER}" ]; then \ id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi + +ENV ENABLE_RUST 1 diff --git a/tests/docker/dockerfiles/debian-riscv64-cross.docker b/tests/docker/dockerfiles/debian-riscv64-cross.docker index 79ec37616d..1c3f597340 100644 --- a/tests/docker/dockerfiles/debian-riscv64-cross.docker +++ b/tests/docker/dockerfiles/debian-riscv64-cross.docker @@ -89,3 +89,5 @@ ARG USER ARG UID RUN if [ "${USER}" ]; then \ id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi + +ENV ENABLE_RUST 1 diff --git a/tests/docker/dockerfiles/debian-s390x-cross.docker b/tests/docker/dockerfiles/debian-s390x-cross.docker index d7b2ca99ce..09a78c15ba 100644 --- a/tests/docker/dockerfiles/debian-s390x-cross.docker +++ b/tests/docker/dockerfiles/debian-s390x-cross.docker @@ -185,3 +185,5 @@ ARG USER ARG UID RUN if [ "${USER}" ]; then \ id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi + +ENV ENABLE_RUST 1 diff --git a/tests/docker/dockerfiles/debian.docker b/tests/docker/dockerfiles/debian.docker index 2696cf2167..8dd893be4b 100644 --- a/tests/docker/dockerfiles/debian.docker +++ b/tests/docker/dockerfiles/debian.docker @@ -175,3 +175,5 @@ ARG USER ARG UID RUN if [ "${USER}" ]; then \ id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi + +ENV ENABLE_RUST 1 diff --git a/tests/docker/dockerfiles/fedora-rust-nightly.docker b/tests/docker/dockerfiles/fedora-rust-nightly.docker index 167246f0f5..7d31c9f406 100644 --- a/tests/docker/dockerfiles/fedora-rust-nightly.docker +++ b/tests/docker/dockerfiles/fedora-rust-nightly.docker @@ -185,3 +185,5 @@ ARG USER ARG UID RUN if [ "${USER}" ]; then \ id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi + +ENV ENABLE_RUST 1 diff --git a/tests/docker/dockerfiles/fedora.docker b/tests/docker/dockerfiles/fedora.docker index 56a1ad8a18..891a740fcb 100644 --- a/tests/docker/dockerfiles/fedora.docker +++ b/tests/docker/dockerfiles/fedora.docker @@ -162,3 +162,5 @@ ARG USER ARG UID RUN if [ "${USER}" ]; then \ id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi + +ENV ENABLE_RUST 1 diff --git a/tests/docker/dockerfiles/opensuse-leap.docker b/tests/docker/dockerfiles/opensuse-leap.docker index d71dbc30c7..75e1747780 100644 --- a/tests/docker/dockerfiles/opensuse-leap.docker +++ b/tests/docker/dockerfiles/opensuse-leap.docker @@ -148,3 +148,5 @@ ARG USER ARG UID RUN if [ "${USER}" ]; then \ id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi + +ENV ENABLE_RUST 1 diff --git a/tests/lcitool/refresh b/tests/lcitool/refresh index f4d2721178..34381dac8f 100755 --- a/tests/lcitool/refresh +++ b/tests/lcitool/refresh @@ -63,7 +63,8 @@ add_user_mapping = [ " id ${USER} 2>/dev/null || useradd -u ${UID} -U ${USER}; fi\n" ] -def generate_dockerfile(host, target, project="qemu", cross=None, trailer=None): +def generate_dockerfile(host, target, project="qemu", cross=None, trailer=None, + enable_rust=True): filename = Path(src_dir, "tests", "docker", "dockerfiles", host + ".docker") cmd = lcitool_cmd + ["dockerfile"] if cross is not None: @@ -75,6 +76,8 @@ def generate_dockerfile(host, target, project="qemu", cross=None, trailer=None): else: trailer = "\n".join(add_user_mapping) + if enable_rust: + trailer += "\nENV ENABLE_RUST 1\n" generate(filename, cmd, trailer) @@ -180,7 +183,9 @@ try: generate_dockerfile("fedora", "fedora-41") generate_dockerfile("opensuse-leap", "opensuse-leap-15") generate_dockerfile("ubuntu2204", "ubuntu-2204", - trailer="".join(ubuntu2204_rust_extras)) + trailer="".join(ubuntu2204_rust_extras), + # https://bugs.launchpad.net/ubuntu/+source/rustc-1.83/+bug/2120318 + enable_rust=False) # # Non-fatal Rust-enabled build @@ -249,7 +254,10 @@ try: project='qemu,qemu-win-installer', cross="mingw64", trailer=cross_build("x86_64-w64-mingw32-", - "x86_64-softmmu")) + "x86_64-softmmu"), + # linking with rust is buggy: + # https://github.com/mesonbuild/meson/pull/14991 + enable_rust=False) # # Cirrus packages lists for GitLab -- 2.51.0

On 24/09/2025 14.04, marcandre.lureau@redhat.com wrote:
From: Marc-André Lureau <marcandre.lureau@redhat.com>
Enable Rust on various distro images: alpine, centos, debian, fedora, opensuse.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- tests/docker/dockerfiles/alpine.docker | 2 ++ tests/docker/dockerfiles/centos9.docker | 2 ++ tests/docker/dockerfiles/debian-amd64-cross.docker | 2 ++ tests/docker/dockerfiles/debian-arm64-cross.docker | 2 ++ tests/docker/dockerfiles/debian-armhf-cross.docker | 2 ++ tests/docker/dockerfiles/debian-i686-cross.docker | 2 ++ .../dockerfiles/debian-mips64el-cross.docker | 2 ++ .../docker/dockerfiles/debian-mipsel-cross.docker | 2 ++ .../docker/dockerfiles/debian-ppc64el-cross.docker | 2 ++ .../docker/dockerfiles/debian-riscv64-cross.docker | 2 ++ tests/docker/dockerfiles/debian-s390x-cross.docker | 2 ++ tests/docker/dockerfiles/debian.docker | 2 ++ .../docker/dockerfiles/fedora-rust-nightly.docker | 2 ++ tests/docker/dockerfiles/fedora.docker | 2 ++ tests/docker/dockerfiles/opensuse-leap.docker | 2 ++ tests/lcitool/refresh | 14 +++++++++++--- 16 files changed, 41 insertions(+), 3 deletions(-)
Reviewed-by: Thomas Huth <thuth@redhat.com>

From: Marc-André Lureau <marcandre.lureau@redhat.com> The 'rustfmt' target runs meson: it needs the correct path with extension on Windows. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- configure | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/configure b/configure index bf964947b8..78445cbb4b 100755 --- a/configure +++ b/configure @@ -1000,7 +1000,19 @@ $mkvenv ensuregroup --dir "${source_path}/python/wheels" \ # We ignore PATH completely here: we want to use the venv's Meson # *exclusively*. -meson="$(cd pyvenv/bin; pwd)/meson" +# for msys2 +get_pwd() { + if pwd -W >/dev/null 2>&1; then + pwd -W + else + pwd + fi +} + +meson="$(cd pyvenv/bin; get_pwd)/meson" +if [ -f "$meson$EXESUF" ]; then + meson="$meson$EXESUF" +fi # Conditionally ensure Sphinx is installed. -- 2.51.0

On Wed, Sep 24, 2025 at 04:04:16PM +0400, marcandre.lureau@redhat.com wrote:
From: Marc-André Lureau <marcandre.lureau@redhat.com>
The 'rustfmt' target runs meson: it needs the correct path with extension on Windows.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- configure | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-)
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|

From: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> --- .gitlab-ci.d/cirrus.yml | 2 +- tests/vm/freebsd | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.d/cirrus.yml b/.gitlab-ci.d/cirrus.yml index 75b611418e..13a0bf5bb9 100644 --- a/.gitlab-ci.d/cirrus.yml +++ b/.gitlab-ci.d/cirrus.yml @@ -42,7 +42,7 @@ x64-freebsd-14-build: CIRRUS_VM_RAM: 8G UPDATE_COMMAND: pkg update; pkg upgrade -y INSTALL_COMMAND: pkg install -y - CONFIGURE_ARGS: --target-list-exclude=arm-softmmu,i386-softmmu,microblaze-softmmu,mips64el-softmmu,mipsel-softmmu,mips-softmmu,ppc-softmmu,sh4eb-softmmu,xtensa-softmmu + CONFIGURE_ARGS: --target-list-exclude=arm-softmmu,i386-softmmu,microblaze-softmmu,mips64el-softmmu,mipsel-softmmu,mips-softmmu,ppc-softmmu,sh4eb-softmmu,xtensa-softmmu --enable-rust TEST_TARGETS: check aarch64-macos-build: diff --git a/tests/vm/freebsd b/tests/vm/freebsd index 2e96c9eba5..ea09b21fbc 100755 --- a/tests/vm/freebsd +++ b/tests/vm/freebsd @@ -40,7 +40,9 @@ class FreeBSDVM(basevm.BaseVM): tar -xf /dev/vtbd1; cd ../build; ../src/configure --extra-ldflags=-L/usr/local/lib \ - --extra-cflags=-I/usr/local/include {configure_opts}; + --extra-cflags=-I/usr/local/include \ + --enable-rust \ + {configure_opts}; gmake --output-sync -j{jobs} {target} {verbose}; """ -- 2.51.0

From: Marc-André Lureau <marcandre.lureau@redhat.com> gitlab CI restricts usage of directories for the build environment and cache. Msys64 is installed under project root ($srcdir/msys64). This confuses rust-bindgen allowlist-file which will generate bindings for all the system include headers under msys64/. blocklist-file is also too strict, as it prevents generating all the recursively dependent types coming from system includes. Instead, let's not use allowlist-file from the project root, Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- meson.build | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/meson.build b/meson.build index 9663725529..cf154fe67e 100644 --- a/meson.build +++ b/meson.build @@ -4237,8 +4237,7 @@ if have_rust '--no-layout-tests', '--no-prepend-enum-name', '--allowlist-file', meson.project_source_root() + '/include/.*', - '--allowlist-file', meson.project_source_root() + '/.*', - '--allowlist-file', meson.project_build_root() + '/.*' + '--allowlist-file', meson.project_build_root() + '/.*', ] if not rustfmt.found() if bindgen.version().version_compare('<0.65.0') -- 2.51.0

From: Marc-André Lureau <marcandre.lureau@redhat.com> Unfortunately, debian 11 has bindgen version 0.55... Should we install it with cargo install bindgen-cli? Linking is still failing with -lrt, despite it being present in the link arguments... Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- .gitlab-ci.d/buildtest.yml | 2 +- tests/docker/dockerfiles/debian-legacy-test-cross.docker | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.d/buildtest.yml b/.gitlab-ci.d/buildtest.yml index c3467200f4..34d8c1a496 100644 --- a/.gitlab-ci.d/buildtest.yml +++ b/.gitlab-ci.d/buildtest.yml @@ -389,7 +389,7 @@ build-legacy: variables: IMAGE: debian-legacy-test-cross TARGETS: alpha-linux-user alpha-softmmu sh4-linux-user - CONFIGURE_ARGS: --disable-tools + CONFIGURE_ARGS: --disable-tools --enable-rust MAKE_CHECK_ARGS: check-tcg build-user-hexagon: diff --git a/tests/docker/dockerfiles/debian-legacy-test-cross.docker b/tests/docker/dockerfiles/debian-legacy-test-cross.docker index 5a6616b7d3..f9b31b0eab 100644 --- a/tests/docker/dockerfiles/debian-legacy-test-cross.docker +++ b/tests/docker/dockerfiles/debian-legacy-test-cross.docker @@ -24,6 +24,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ RUN DEBIAN_FRONTEND=noninteractive eatmydata \ apt install -y --no-install-recommends \ bison \ + cargo-web \ ccache \ clang \ flex \ @@ -36,14 +37,20 @@ RUN DEBIAN_FRONTEND=noninteractive eatmydata \ python3-pip \ python3-setuptools \ python3-venv \ - python3-wheel && \ + python3-wheel \ + rustc-web \ + && \ dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt +ENV CARGO_HOME=/usr/local/cargo +RUN cargo install bindgen-cli + RUN /usr/bin/pip3 install tomli ENV QEMU_CONFIGURE_OPTS --disable-system --disable-docs --disable-tools ENV DEF_TARGET_LIST alpha-linux-user,sh4-linux-user ENV MAKE /usr/bin/make +ENV PATH=$CARGO_HOME/bin:$PATH # As a final step configure the user (if env is defined) ARG USER ARG UID -- 2.51.0

marcandre.lureau@redhat.com writes:
From: Marc-André Lureau <marcandre.lureau@redhat.com>
Unfortunately, debian 11 has bindgen version 0.55... Should we install it with cargo install bindgen-cli?
I wouldn't bother. This only exists for older targets that are either linux-user or unlikely to get a rust version of any of their device backends.
Linking is still failing with -lrt, despite it being present in the link arguments...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- .gitlab-ci.d/buildtest.yml | 2 +- tests/docker/dockerfiles/debian-legacy-test-cross.docker | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/.gitlab-ci.d/buildtest.yml b/.gitlab-ci.d/buildtest.yml index c3467200f4..34d8c1a496 100644 --- a/.gitlab-ci.d/buildtest.yml +++ b/.gitlab-ci.d/buildtest.yml @@ -389,7 +389,7 @@ build-legacy: variables: IMAGE: debian-legacy-test-cross TARGETS: alpha-linux-user alpha-softmmu sh4-linux-user - CONFIGURE_ARGS: --disable-tools + CONFIGURE_ARGS: --disable-tools --enable-rust MAKE_CHECK_ARGS: check-tcg
build-user-hexagon: diff --git a/tests/docker/dockerfiles/debian-legacy-test-cross.docker b/tests/docker/dockerfiles/debian-legacy-test-cross.docker index 5a6616b7d3..f9b31b0eab 100644 --- a/tests/docker/dockerfiles/debian-legacy-test-cross.docker +++ b/tests/docker/dockerfiles/debian-legacy-test-cross.docker @@ -24,6 +24,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ RUN DEBIAN_FRONTEND=noninteractive eatmydata \ apt install -y --no-install-recommends \ bison \ + cargo-web \ ccache \ clang \ flex \ @@ -36,14 +37,20 @@ RUN DEBIAN_FRONTEND=noninteractive eatmydata \ python3-pip \ python3-setuptools \ python3-venv \ - python3-wheel && \ + python3-wheel \ + rustc-web \ + && \ dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt
+ENV CARGO_HOME=/usr/local/cargo +RUN cargo install bindgen-cli + RUN /usr/bin/pip3 install tomli
ENV QEMU_CONFIGURE_OPTS --disable-system --disable-docs --disable-tools ENV DEF_TARGET_LIST alpha-linux-user,sh4-linux-user ENV MAKE /usr/bin/make +ENV PATH=$CARGO_HOME/bin:$PATH # As a final step configure the user (if env is defined) ARG USER ARG UID
-- Alex Bennée Virtualisation Tech Lead @ Linaro

From: Marc-André Lureau <marcandre.lureau@redhat.com> Currently fails with meson issue: https://github.com/mesonbuild/meson/pull/14991 Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- .gitlab-ci.d/windows.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.d/windows.yml b/.gitlab-ci.d/windows.yml index 1e6a01bd9a..51297d3647 100644 --- a/.gitlab-ci.d/windows.yml +++ b/.gitlab-ci.d/windows.yml @@ -17,7 +17,7 @@ msys2-64bit: # This feature doesn't (currently) work with PowerShell, it stops # the echo'ing of commands being run and doesn't show any timing FF_SCRIPT_SECTIONS: 0 - CONFIGURE_ARGS: --disable-system --enable-tools -Ddebug=false -Doptimization=0 + CONFIGURE_ARGS: --disable-system --enable-tools -Ddebug=false -Doptimization=0 --enable-rust # The Windows git is a bit older so override the default GIT_FETCH_EXTRA_FLAGS: --no-tags --prune --quiet artifacts: @@ -76,6 +76,7 @@ msys2-64bit: bison diffutils flex git grep make sed mingw-w64-x86_64-binutils + mingw-w64-x86_64-ca-certificates mingw-w64-x86_64-ccache mingw-w64-x86_64-curl-winssl mingw-w64-x86_64-gcc @@ -86,6 +87,9 @@ msys2-64bit: mingw-w64-x86_64-pixman mingw-w64-x86_64-pkgconf mingw-w64-x86_64-python + mingw-w64-x86_64-python-certifi + mingw-w64-x86_64-rust + mingw-w64-x86_64-rust-bindgen mingw-w64-x86_64-zstd" - Write-Output "Running build at $(Get-Date -Format u)" - $env:JOBS = $(.\msys64\usr\bin\bash -lc nproc) @@ -96,10 +100,12 @@ msys2-64bit: - $env:CCACHE_MAXSIZE = "500M" - $env:CCACHE_DEPEND = 1 # cache misses are too expensive with preprocessor mode - $env:CC = "ccache gcc" + - $env:LIBCLANG_PATH = Join-Path -Path $PWD.Path -ChildPath "msys64/mingw64/bin" - mkdir build - cd build - ..\msys64\usr\bin\bash -lc "ccache --zero-stats" - ..\msys64\usr\bin\bash -lc "../configure $CONFIGURE_ARGS" + - ..\msys64\usr\bin\bash -lc "make V=1 rust/util/bindings.inc.rs" - ..\msys64\usr\bin\bash -lc "make -j$env:JOBS" - ..\msys64\usr\bin\bash -lc "make check MTESTARGS='$TEST_ARGS' || { cat meson-logs/testlog.txt; exit 1; } ;" - ..\msys64\usr\bin\bash -lc "ccache --show-stats" -- 2.51.0

From: Marc-André Lureau <marcandre.lureau@redhat.com> Currently fails with a linking issue: = note: some arguments are omitted. use `--verbose` to show all linker arguments = note: ld: warning: ignoring duplicate libraries: '-lSystem', '-lc', '-llibgio-2.0.dylib', '-llibglib-2.0.dylib', '-llibgmodule-2.0.dylib', '-llibgnutls.dylib', '-llibgobject-2.0.dylib', '-llibintl.dylib', '-llibqemuutil.a', '-lm', 'libqemuutil.a' ld: library 'libqemuutil.a' not found clang: error: linker command failed with exit code 1 (use -v to see invocation) error: aborting due to 1 previous error Fixed in upcoming meson: https://github.com/mesonbuild/meson/pull/15024 Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- .gitlab-ci.d/cirrus.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.d/cirrus.yml b/.gitlab-ci.d/cirrus.yml index 13a0bf5bb9..17d52e8db3 100644 --- a/.gitlab-ci.d/cirrus.yml +++ b/.gitlab-ci.d/cirrus.yml @@ -56,5 +56,5 @@ aarch64-macos-build: INSTALL_COMMAND: brew install PATH_EXTRA: /opt/homebrew/ccache/libexec:/opt/homebrew/gettext/bin PKG_CONFIG_PATH: /opt/homebrew/curl/lib/pkgconfig:/opt/homebrew/ncurses/lib/pkgconfig:/opt/homebrew/readline/lib/pkgconfig - CONFIGURE_ARGS: --target-list-exclude=arm-softmmu,i386-softmmu,microblazeel-softmmu,mips64-softmmu,mipsel-softmmu,mips-softmmu,ppc-softmmu,sh4-softmmu,xtensaeb-softmmu + CONFIGURE_ARGS: --target-list-exclude=arm-softmmu,i386-softmmu,microblazeel-softmmu,mips64-softmmu,mipsel-softmmu,mips-softmmu,ppc-softmmu,sh4-softmmu,xtensaeb-softmmu --enable-rust TEST_TARGETS: check-unit check-block check-qapi-schema check-softfloat check-qtest-x86_64 -- 2.51.0

From: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- docs/about/build-platforms.rst | 2 -- docs/about/deprecated.rst | 9 +++------ meson.build | 8 ++++++++ 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/docs/about/build-platforms.rst b/docs/about/build-platforms.rst index 0160d3adb8..798cb4631d 100644 --- a/docs/about/build-platforms.rst +++ b/docs/about/build-platforms.rst @@ -44,8 +44,6 @@ Those hosts are officially supported, with various accelerators: - Accelerators * - Arm - hvf (64 bit only), kvm (64 bit only), tcg, xen - * - MIPS (64 bit little endian only) - - kvm, tcg * - PPC - kvm, tcg * - RISC-V diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst index aa300bbd50..285a8354f6 100644 --- a/docs/about/deprecated.rst +++ b/docs/about/deprecated.rst @@ -172,8 +172,8 @@ This argument has always been ignored. Host Architectures ------------------ -Big endian MIPS since 7.2; 32-bit little endian MIPS since 9.2 -'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +Big endian MIPS since 7.2; 32-bit little endian MIPS since 9.2, MIPS since 11.0 +''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' As Debian 10 ("Buster") moved into LTS the big endian 32 bit version of MIPS moved out of support making it hard to maintain our @@ -181,10 +181,7 @@ cross-compilation CI tests of the architecture. As we no longer have CI coverage support may bitrot away before the deprecation process completes. -Likewise, the little endian variant of 32 bit MIPS is not supported by -Debian 13 ("Trixie") and newer. - -64 bit little endian MIPS is still a supported host architecture. +Likewise, MIPS is not supported by Debian 13 ("Trixie") and newer. System emulation on 32-bit x86 hosts (since 8.0) '''''''''''''''''''''''''''''''''''''''''''''''' diff --git a/meson.build b/meson.build index cf154fe67e..2f134c9e75 100644 --- a/meson.build +++ b/meson.build @@ -5039,6 +5039,14 @@ elif host_long_bits < 64 message() message('Support for 32-bit CPU host architecture ' + cpu + ' is going') message('to be dropped in a future QEMU release.') +elif host_arch == 'mips' + message() + warning('DEPRECATED HOST CPU') + message() + message('Support for CPU host architecture ' + cpu + ' is going to be') + message('dropped as soon as the QEMU project stops supporting Debian 12') + message('("Bookworm"). Going forward, the QEMU project will not guarantee') + message('that QEMU will compile or work on this host CPU.') endif if not supported_oses.contains(host_os) -- 2.51.0

On 24/9/25 14:04, marcandre.lureau@redhat.com wrote:
From: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- docs/about/build-platforms.rst | 2 -- docs/about/deprecated.rst | 9 +++------ meson.build | 8 ++++++++ 3 files changed, 11 insertions(+), 8 deletions(-)
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>

On 24/9/25 14:04, marcandre.lureau@redhat.com wrote:
From: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- docs/about/build-platforms.rst | 2 -- docs/about/deprecated.rst | 9 +++------ meson.build | 8 ++++++++ 3 files changed, 11 insertions(+), 8 deletions(-)
diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst index aa300bbd50..285a8354f6 100644 --- a/docs/about/deprecated.rst +++ b/docs/about/deprecated.rst @@ -172,8 +172,8 @@ This argument has always been ignored. Host Architectures ------------------
-Big endian MIPS since 7.2; 32-bit little endian MIPS since 9.2 -'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +Big endian MIPS since 7.2; 32-bit little endian MIPS since 9.2, MIPS since 11.0 +'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Maybe just: "MIPS (since 11.0)".

From: Marc-André Lureau <marcandre.lureau@redhat.com> Otherwise, no functions are generated: https://github.com/rust-lang/rust-bindgen/issues/2989 Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- meson.build | 4 ++++ rust/bql/meson.build | 1 + rust/chardev/meson.build | 1 + rust/hw/char/pl011/meson.build | 1 + rust/hw/core/meson.build | 1 + rust/migration/meson.build | 3 ++- rust/qom/meson.build | 1 + rust/system/meson.build | 1 + rust/util/meson.build | 1 + 9 files changed, 13 insertions(+), 1 deletion(-) diff --git a/meson.build b/meson.build index 2f134c9e75..cd2b5fa863 100644 --- a/meson.build +++ b/meson.build @@ -4255,6 +4255,10 @@ if have_rust else bindgen_args_common += ['--merge-extern-blocks'] endif + bindgen_c_args = [] + if host_arch == 'wasm32' + bindgen_c_args += ['-fvisibility=default'] + endif subdir('rust') endif diff --git a/rust/bql/meson.build b/rust/bql/meson.build index f369209dfd..d020a519bf 100644 --- a/rust/bql/meson.build +++ b/rust/bql/meson.build @@ -21,6 +21,7 @@ _bql_bindings_inc_rs = rust.bindgen( include_directories: bindings_incdir, bindgen_version: ['>=0.60.0'], args: bindgen_args_common, + c_args: bindgen_c_args, ) _bql_rs = static_library( diff --git a/rust/chardev/meson.build b/rust/chardev/meson.build index 370895c111..e7ce02b3bc 100644 --- a/rust/chardev/meson.build +++ b/rust/chardev/meson.build @@ -20,6 +20,7 @@ _chardev_bindings_inc_rs = rust.bindgen( include_directories: bindings_incdir, bindgen_version: ['>=0.60.0'], args: bindgen_args_common + _chardev_bindgen_args, + c_args: bindgen_c_args, ) _chardev_rs = static_library( diff --git a/rust/hw/char/pl011/meson.build b/rust/hw/char/pl011/meson.build index ffdc8af53f..a33f32906e 100644 --- a/rust/hw/char/pl011/meson.build +++ b/rust/hw/char/pl011/meson.build @@ -12,6 +12,7 @@ _libpl011_bindings_inc_rs = rust.bindgen( include_directories: bindings_incdir, bindgen_version: ['>=0.60.0'], args: bindgen_args_common, + c_args: bindgen_c_args, ) _libpl011_rs = static_library( diff --git a/rust/hw/core/meson.build b/rust/hw/core/meson.build index 81d8c77f9a..e1ae95ed61 100644 --- a/rust/hw/core/meson.build +++ b/rust/hw/core/meson.build @@ -41,6 +41,7 @@ _hwcore_bindings_inc_rs = rust.bindgen( include_directories: bindings_incdir, bindgen_version: ['>=0.60.0'], args: bindgen_args_common + _hwcore_bindgen_args, + c_args: bindgen_c_args, ) _hwcore_rs = static_library( diff --git a/rust/migration/meson.build b/rust/migration/meson.build index 5e820d43f5..4f8e4ec9d3 100644 --- a/rust/migration/meson.build +++ b/rust/migration/meson.build @@ -22,7 +22,8 @@ _migration_bindings_inc_rs = rust.bindgen( include_directories: bindings_incdir, bindgen_version: ['>=0.60.0'], args: bindgen_args_common + _migration_bindgen_args, - ) + c_args: bindgen_c_args, +) _migration_rs = static_library( 'migration', diff --git a/rust/qom/meson.build b/rust/qom/meson.build index 40c51b71b2..9df09f62b4 100644 --- a/rust/qom/meson.build +++ b/rust/qom/meson.build @@ -12,6 +12,7 @@ _qom_bindings_inc_rs = rust.bindgen( include_directories: bindings_incdir, bindgen_version: ['>=0.60.0'], args: bindgen_args_common, + c_args: bindgen_c_args, ) _qom_rs = static_library( diff --git a/rust/system/meson.build b/rust/system/meson.build index 3ec140de01..0859f39745 100644 --- a/rust/system/meson.build +++ b/rust/system/meson.build @@ -20,6 +20,7 @@ _system_bindings_inc_rs = rust.bindgen( include_directories: bindings_incdir, bindgen_version: ['>=0.60.0'], args: bindgen_args_common + _system_bindgen_args, + c_args: bindgen_c_args, ) _system_rs = static_library( diff --git a/rust/util/meson.build b/rust/util/meson.build index 87a893673d..9dcde4fae0 100644 --- a/rust/util/meson.build +++ b/rust/util/meson.build @@ -22,6 +22,7 @@ _util_bindings_inc_rs = rust.bindgen( include_directories: bindings_incdir, bindgen_version: ['>=0.60.0'], args: bindgen_args_common + _util_bindgen_args, + c_args: bindgen_c_args, ) _util_rs = static_library( -- 2.51.0

From: Marc-André Lureau <marcandre.lureau@redhat.com>
Otherwise, no functions are generated: https://github.com/rust-lang/rust-bindgen/issues/2989
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- meson.build | 4 ++++ rust/bql/meson.build | 1 + rust/chardev/meson.build | 1 + rust/hw/char/pl011/meson.build | 1 + rust/hw/core/meson.build | 1 + rust/migration/meson.build | 3 ++- rust/qom/meson.build | 1 + rust/system/meson.build | 1 + rust/util/meson.build | 1 + 9 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/meson.build b/meson.build index 2f134c9e75..cd2b5fa863 100644 --- a/meson.build +++ b/meson.build @@ -4255,6 +4255,10 @@ if have_rust else bindgen_args_common += ['--merge-extern-blocks'] endif + bindgen_c_args = [] + if host_arch == 'wasm32' + bindgen_c_args += ['-fvisibility=default'] + endif subdir('rust') endif
diff --git a/rust/bql/meson.build b/rust/bql/meson.build index f369209dfd..d020a519bf 100644 --- a/rust/bql/meson.build +++ b/rust/bql/meson.build @@ -21,6 +21,7 @@ _bql_bindings_inc_rs = rust.bindgen( include_directories: bindings_incdir, bindgen_version: ['>=0.60.0'], args: bindgen_args_common, + c_args: bindgen_c_args, )
_bql_rs = static_library( diff --git a/rust/chardev/meson.build b/rust/chardev/meson.build index 370895c111..e7ce02b3bc 100644 --- a/rust/chardev/meson.build +++ b/rust/chardev/meson.build @@ -20,6 +20,7 @@ _chardev_bindings_inc_rs = rust.bindgen( include_directories: bindings_incdir, bindgen_version: ['>=0.60.0'], args: bindgen_args_common + _chardev_bindgen_args, + c_args: bindgen_c_args, )
_chardev_rs = static_library( diff --git a/rust/hw/char/pl011/meson.build b/rust/hw/char/pl011/meson.build index ffdc8af53f..a33f32906e 100644 --- a/rust/hw/char/pl011/meson.build +++ b/rust/hw/char/pl011/meson.build @@ -12,6 +12,7 @@ _libpl011_bindings_inc_rs = rust.bindgen( include_directories: bindings_incdir, bindgen_version: ['>=0.60.0'], args: bindgen_args_common, + c_args: bindgen_c_args, )
_libpl011_rs = static_library( diff --git a/rust/hw/core/meson.build b/rust/hw/core/meson.build index 81d8c77f9a..e1ae95ed61 100644 --- a/rust/hw/core/meson.build +++ b/rust/hw/core/meson.build @@ -41,6 +41,7 @@ _hwcore_bindings_inc_rs = rust.bindgen( include_directories: bindings_incdir, bindgen_version: ['>=0.60.0'], args: bindgen_args_common + _hwcore_bindgen_args, + c_args: bindgen_c_args, )
_hwcore_rs = static_library( diff --git a/rust/migration/meson.build b/rust/migration/meson.build index 5e820d43f5..4f8e4ec9d3 100644 --- a/rust/migration/meson.build +++ b/rust/migration/meson.build @@ -22,7 +22,8 @@ _migration_bindings_inc_rs = rust.bindgen( include_directories: bindings_incdir, bindgen_version: ['>=0.60.0'], args: bindgen_args_common + _migration_bindgen_args, - ) + c_args: bindgen_c_args, +)
_migration_rs = static_library( 'migration', diff --git a/rust/qom/meson.build b/rust/qom/meson.build index 40c51b71b2..9df09f62b4 100644 --- a/rust/qom/meson.build +++ b/rust/qom/meson.build @@ -12,6 +12,7 @@ _qom_bindings_inc_rs = rust.bindgen( include_directories: bindings_incdir, bindgen_version: ['>=0.60.0'], args: bindgen_args_common, + c_args: bindgen_c_args, )
_qom_rs = static_library( diff --git a/rust/system/meson.build b/rust/system/meson.build index 3ec140de01..0859f39745 100644 --- a/rust/system/meson.build +++ b/rust/system/meson.build @@ -20,6 +20,7 @@ _system_bindings_inc_rs = rust.bindgen( include_directories: bindings_incdir, bindgen_version: ['>=0.60.0'], args: bindgen_args_common + _system_bindgen_args, + c_args: bindgen_c_args, )
_system_rs = static_library( diff --git a/rust/util/meson.build b/rust/util/meson.build index 87a893673d..9dcde4fae0 100644 --- a/rust/util/meson.build +++ b/rust/util/meson.build @@ -22,6 +22,7 @@ _util_bindings_inc_rs = rust.bindgen( include_directories: bindings_incdir, bindgen_version: ['>=0.60.0'], args: bindgen_args_common + _util_bindgen_args, + c_args: bindgen_c_args, )
_util_rs = static_library(
Reviewed-by: Kohei Tokunaga <ktokunaga.mail@gmail.com> Regards, Kohei Tokunaga

From: Marc-André Lureau <marcandre.lureau@redhat.com> Note that Debian packaging & testing is currently lacking: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=979665 Furthermore, emsdk is based on Ubuntu Jammy. So we use rustup for now. bindgen doesn't use clang & libclang from /emsdk, it probably should but libclang is missing https://github.com/emscripten-core/emsdk/issues/1605 Finally, there is a linking issue I don't understand and I can't solve yet: wasm-ld: error: unable to find library -llibqemuutil.a ... A manual test like this work: emmake rustc -v --target wasm32-unknown-emscripten -C linker=/emsdk/upstream/emscripten/emcc --crate-type bin --edition=2021 -C link-arg=-m32 test.rs -Clink-arg=libfoo.a Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- configure | 4 +++ .gitlab-ci.d/buildtest-template.yml | 2 +- .gitlab-ci.d/buildtest.yml | 2 +- .../dockerfiles/emsdk-wasm32-cross.docker | 27 ++++++++++++++++++- tests/docker/test-wasm | 12 +++++++++ 5 files changed, 44 insertions(+), 3 deletions(-) create mode 100755 tests/docker/test-wasm diff --git a/configure b/configure index 78445cbb4b..fdae1b4133 100755 --- a/configure +++ b/configure @@ -1228,6 +1228,10 @@ if test "$rust" != disabled && test -z "$rust_target_triple"; then rust_machine=apple ;; + emscripten) + rust_arch=wasm32 + ;; + linux) # detect android/glibc/musl if check_define __ANDROID__; then diff --git a/.gitlab-ci.d/buildtest-template.yml b/.gitlab-ci.d/buildtest-template.yml index d866cb12bb..307b927927 100644 --- a/.gitlab-ci.d/buildtest-template.yml +++ b/.gitlab-ci.d/buildtest-template.yml @@ -148,5 +148,5 @@ fi || exit 1; - section_end configure - section_start build "Building QEMU" - - emmake make -j"$JOBS" + - CPATH="$CPATH:/emsdk/upstream/emscripten/cache/sysroot/include/fakesdl:/emsdk/upstream/emscripten/cache/sysroot/include/compat:/emsdk/upstream/lib/clang/18/include:/emsdk/upstream/emscripten/cache/sysroot/include" emmake make -j"$JOBS" - section_end build diff --git a/.gitlab-ci.d/buildtest.yml b/.gitlab-ci.d/buildtest.yml index 34d8c1a496..dc0a0282b2 100644 --- a/.gitlab-ci.d/buildtest.yml +++ b/.gitlab-ci.d/buildtest.yml @@ -794,4 +794,4 @@ build-wasm: - job: wasm-emsdk-cross-container variables: IMAGE: emsdk-wasm32-cross - CONFIGURE_ARGS: --static --disable-tools --enable-debug --enable-tcg-interpreter + CONFIGURE_ARGS: --static --disable-tools --enable-debug --enable-tcg-interpreter --enable-rust diff --git a/tests/docker/dockerfiles/emsdk-wasm32-cross.docker b/tests/docker/dockerfiles/emsdk-wasm32-cross.docker index 6b1642a207..85d0a0fd8d 100644 --- a/tests/docker/dockerfiles/emsdk-wasm32-cross.docker +++ b/tests/docker/dockerfiles/emsdk-wasm32-cross.docker @@ -17,10 +17,11 @@ ENV EM_PKG_CONFIG_PATH="$PKG_CONFIG_PATH" ENV CFLAGS="-O3 -pthread -DWASM_BIGINT" ENV CXXFLAGS="$CFLAGS" ENV LDFLAGS="-sWASM_BIGINT -sASYNCIFY=1 -L$TARGET/lib" -RUN apt-get update && apt-get install -y \ +RUN apt-get update && apt-get dist-upgrade -y && apt-get install -y \ autoconf \ build-essential \ libglib2.0-dev \ + libfdt-dev \ libtool \ pkgconf \ ninja-build \ @@ -46,6 +47,30 @@ pkgconfig = ['pkg-config', '--static'] EOT EOF +RUN apt-get update && apt-get install -y wget clang libclang-dev +ENV RUSTUP_HOME=/usr/local/rustup CARGO_HOME=/usr/local/cargo +ENV RUSTC=/usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/rustc +ENV RUSTDOC=/usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/rustdoc +ENV CARGO=/usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/cargo +RUN set -eux && \ + rustArch='x86_64-unknown-linux-gnu' && \ + rustupSha256='6aeece6993e902708983b209d04c0d1dbb14ebb405ddb87def578d41f920f56d' && \ + url="https://static.rust-lang.org/rustup/archive/1.27.1/${rustArch}/rustup-init" && \ + wget "$url" && \ + echo "${rustupSha256} *rustup-init" | sha256sum -c - && \ + chmod +x rustup-init && \ + ./rustup-init -y --no-modify-path --profile default --default-toolchain nightly --default-host ${rustArch} && \ + /usr/local/cargo/bin/rustup target add wasm32-unknown-emscripten && \ + chmod -R a+w $RUSTUP_HOME $CARGO_HOME && \ + /usr/local/cargo/bin/rustup --version && \ + /usr/local/cargo/bin/rustup run nightly cargo --version && \ + /usr/local/cargo/bin/rustup run nightly rustc --version && \ + test "$CARGO" = "$(/usr/local/cargo/bin/rustup +nightly which cargo)" && \ + test "$RUSTDOC" = "$(/usr/local/cargo/bin/rustup +nightly which rustdoc)" && \ + test "$RUSTC" = "$(/usr/local/cargo/bin/rustup +nightly which rustc)" +ENV PATH=$CARGO_HOME/bin:$PATH +RUN /usr/local/cargo/bin/rustup run nightly cargo install bindgen-cli + FROM build-base AS zlib-dev ARG ZLIB_VERSION RUN mkdir -p /zlib diff --git a/tests/docker/test-wasm b/tests/docker/test-wasm new file mode 100755 index 0000000000..5f3e4c401c --- /dev/null +++ b/tests/docker/test-wasm @@ -0,0 +1,12 @@ +#!/bin/bash -e +# +# SPDX-License-Identifier: GPL-2.0-or-later + +. common.rc + +cd "$BUILD_DIR" + +export CPATH="$CPATH:/emsdk/upstream/emscripten/cache/sysroot/include/fakesdl:/emsdk/upstream/emscripten/cache/sysroot/include/compat:/emsdk/upstream/lib/clang/18/include:/emsdk/upstream/emscripten/cache/sysroot/include" + +emconfigure $QEMU_SRC/configure --disable-docs --static --disable-tools --enable-debug --enable-tcg-interpreter --disable-sdl --enable-rust +emmake make $MAKEFLAGS -- 2.51.0

Hi Marc-André, Thank you for working on this patch.
wasm-ld: error: unable to find library -llibqemuutil.a
This issue looks similar to the one in "[PATCH v2 24/27] WIP: cirrus/macos: enable Rust" so I tried the upcoming meson change[1] mentioned in that patch for the wasm build. By also applying a patch for disabling the "verbatim" modifier for the Emscripten build[2], I was able to avoid the error. However the test build still fails with the following error[3] which I'm currently investigating. It seems that meson invokes rustc with duplicated linker flags (e.g. I saw three "-lstatic:-bundle=glib-2.0" flags in a single rustc invocation) and rustc doesn't seem capable of handling them.
error: overriding linking modifiers from command line is not supported
Aside from the test build, I also tried building the qemu binary. The build succeeded after rebuilding the Rust standard library as suggested in the documentation[4]. If you're interested, I've stored the patch to [5]. [1] https://github.com/mesonbuild/meson/pull/15024 [2] https://github.com/ktock/meson/commit/afd0366d1fafe0cee2915d4b60bc2b523e3c1c... [3] https://gitlab.com/ktock/qemu/-/jobs/11529682431#L3287 [4] https://github.com/rust-lang/rust/blob/5b9007bfc358817cf066ee27c6b440440727d... [5] https://gitlab.com/ktock/qemu/-/commits/test-rust-emscripten-c Regards, Kohei

On 9/29/25 10:52, Kohei Tokunaga wrote:
Hi Marc-André,
Thank you for working on this patch.
wasm-ld: error: unable to find library -llibqemuutil.a
This issue looks similar to the one in "[PATCH v2 24/27] WIP: cirrus/macos: enable Rust" so I tried the upcoming meson change[1] mentioned in that patch for the wasm build. By also applying a patch for disabling the "verbatim" modifier for the Emscripten build[2], I was able to avoid the error.
Hi Kohei, can you please open a PR for this patch? Thanks, Paolo

Hi Paolo,
can you please open a PR for this patch?
Sure, I've opened a PR: https://github.com/mesonbuild/meson/pull/15074 Regards, Kohei

marcandre.lureau@redhat.com writes:
From: Marc-André Lureau <marcandre.lureau@redhat.com>
Hi,
This patch series fixes a number of issues with the build system and CI and enable Rust for many of our jobs, getting us closer to enable Rust by default.
emscripten is difficult to enable, help welcome.
Also I think: https://gitlab.com/stsquad/qemu/-/pipelines/2065603411 And the: debian-armhf-cross debian-i686-cross debian-mipsel-cross debian-mips64el-cross debian-ppc64el-cross debian-riscv64-cross cross builds fail.
v2: - add a rust-to-clang-target-test.sh configure script - drop "RFC: configure: use the same machine as the host triple" - replace "tests: move mips to debian-legacy-test-cross" with "RFC: build-sys: deprecate mips host" - start tackling emscripten - fix mis-placed submodule update - other minor changes, commit message tweaks, bz links - add r-b tags
Marc-André Lureau (27): build-sys: require -lrt when no shm_open() in std libs gitlab-ci: fix 'needs' property type must be array scripts/archive-source: speed up downloading subprojects scripts/archive-source: silence subprojects downloads scripts/archive-source: use a bash array configure: fix rust meson configuration configure: set the bindgen cross target tests/docker/common: print errors to stderr tests/docker: use fully qualified image name for emsdk tests/docker/common: print meson log on configure failure build-sys: cfi_debug and safe_stack are not compatible lcitool: update, switch to f41 lcitool/qemu: include libclang-rt for TSAN lcitool/alpine: workaround bindgen issue tests/lcitool: add missing rust-std dep tests/lcitool: update to debian13 tests/docker: add ENABLE_RUST environment tests/lcitool: enable rust & refresh configure: set the meson executable suffix/ext tests/freebsd: enable Rust meson: rust-bindgen limit allowlist-file to srcdir/include RFC: tests/docker: add rust to debian-legacy-test-cross WIP: gitlab-ci: enable rust for msys2-64bit WIP: cirrus/macos: enable Rust RFC: build-sys: deprecate mips host build-sys: pass -fvisibility=default for wasm bindgen WIP: enable rust for wasm/emscripten
docs/about/build-platforms.rst | 2 - docs/about/deprecated.rst | 9 +-- configure | 27 +++++++- meson.build | 34 +++++++--- .gitlab-ci.d/buildtest-template.yml | 2 +- .gitlab-ci.d/buildtest.yml | 66 +++++++++---------- .gitlab-ci.d/cirrus.yml | 4 +- .gitlab-ci.d/crossbuilds.yml | 46 ++++++------- .gitlab-ci.d/static_checks.yml | 6 +- .gitlab-ci.d/windows.yml | 8 ++- rust/bql/meson.build | 1 + rust/chardev/meson.build | 1 + rust/hw/char/pl011/meson.build | 1 + rust/hw/core/meson.build | 1 + rust/migration/meson.build | 3 +- rust/qom/meson.build | 1 + rust/system/meson.build | 1 + rust/util/meson.build | 1 + scripts/archive-source.sh | 33 +++++++--- .../ci/setup/ubuntu/ubuntu-2204-aarch64.yaml | 5 +- .../ci/setup/ubuntu/ubuntu-2204-s390x.yaml | 5 +- scripts/rust-to-clang-target-test.sh | 43 ++++++++++++ scripts/rust-to-clang-target.sh | 62 +++++++++++++++++ tests/docker/common.rc | 11 +++- tests/docker/dockerfiles/alpine.docker | 6 +- tests/docker/dockerfiles/centos9.docker | 4 ++ .../dockerfiles/debian-amd64-cross.docker | 18 +++-- .../dockerfiles/debian-arm64-cross.docker | 18 +++-- .../dockerfiles/debian-armhf-cross.docker | 21 +++--- .../dockerfiles/debian-i686-cross.docker | 20 ++++-- .../debian-legacy-test-cross.docker | 9 ++- .../dockerfiles/debian-mips64el-cross.docker | 9 ++- .../dockerfiles/debian-mipsel-cross.docker | 9 ++- .../dockerfiles/debian-ppc64el-cross.docker | 18 +++-- .../dockerfiles/debian-riscv64-cross.docker | 10 ++- .../dockerfiles/debian-s390x-cross.docker | 18 +++-- tests/docker/dockerfiles/debian.docker | 18 +++-- .../dockerfiles/emsdk-wasm32-cross.docker | 29 +++++++- .../dockerfiles/fedora-rust-nightly.docker | 18 +++-- .../dockerfiles/fedora-win64-cross.docker | 15 +++-- tests/docker/dockerfiles/fedora.docker | 18 +++-- tests/docker/dockerfiles/opensuse-leap.docker | 7 +- tests/docker/dockerfiles/ubuntu2204.docker | 7 +- tests/docker/test-wasm | 12 ++++ tests/lcitool/libvirt-ci | 2 +- tests/lcitool/projects/qemu.yml | 3 +- tests/lcitool/refresh | 48 +++++++++----- tests/vm/freebsd | 4 +- 48 files changed, 531 insertions(+), 183 deletions(-) create mode 100755 scripts/rust-to-clang-target-test.sh create mode 100644 scripts/rust-to-clang-target.sh create mode 100755 tests/docker/test-wasm
-- Alex Bennée Virtualisation Tech Lead @ Linaro

On 9/27/25 19:17, Alex Bennée wrote:
marcandre.lureau@redhat.com writes:
From: Marc-André Lureau <marcandre.lureau@redhat.com>
Hi,
This patch series fixes a number of issues with the build system and CI and enable Rust for many of our jobs, getting us closer to enable Rust by default.
emscripten is difficult to enable, help welcome.
Also I think:
https://gitlab.com/stsquad/qemu/-/pipelines/2065603411
And the: debian-armhf-cross debian-i686-cross debian-mipsel-cross debian-mips64el-cross debian-ppc64el-cross debian-riscv64-cross
I'll test 1-21+26 and see what breaks with that subset. Paolo
cross builds fail.
v2: - add a rust-to-clang-target-test.sh configure script - drop "RFC: configure: use the same machine as the host triple" - replace "tests: move mips to debian-legacy-test-cross" with "RFC: build-sys: deprecate mips host" - start tackling emscripten - fix mis-placed submodule update - other minor changes, commit message tweaks, bz links - add r-b tags
Marc-André Lureau (27): build-sys: require -lrt when no shm_open() in std libs gitlab-ci: fix 'needs' property type must be array scripts/archive-source: speed up downloading subprojects scripts/archive-source: silence subprojects downloads scripts/archive-source: use a bash array configure: fix rust meson configuration configure: set the bindgen cross target tests/docker/common: print errors to stderr tests/docker: use fully qualified image name for emsdk tests/docker/common: print meson log on configure failure build-sys: cfi_debug and safe_stack are not compatible lcitool: update, switch to f41 lcitool/qemu: include libclang-rt for TSAN lcitool/alpine: workaround bindgen issue tests/lcitool: add missing rust-std dep tests/lcitool: update to debian13 tests/docker: add ENABLE_RUST environment tests/lcitool: enable rust & refresh configure: set the meson executable suffix/ext tests/freebsd: enable Rust meson: rust-bindgen limit allowlist-file to srcdir/include RFC: tests/docker: add rust to debian-legacy-test-cross WIP: gitlab-ci: enable rust for msys2-64bit WIP: cirrus/macos: enable Rust RFC: build-sys: deprecate mips host build-sys: pass -fvisibility=default for wasm bindgen WIP: enable rust for wasm/emscripten
docs/about/build-platforms.rst | 2 - docs/about/deprecated.rst | 9 +-- configure | 27 +++++++- meson.build | 34 +++++++--- .gitlab-ci.d/buildtest-template.yml | 2 +- .gitlab-ci.d/buildtest.yml | 66 +++++++++---------- .gitlab-ci.d/cirrus.yml | 4 +- .gitlab-ci.d/crossbuilds.yml | 46 ++++++------- .gitlab-ci.d/static_checks.yml | 6 +- .gitlab-ci.d/windows.yml | 8 ++- rust/bql/meson.build | 1 + rust/chardev/meson.build | 1 + rust/hw/char/pl011/meson.build | 1 + rust/hw/core/meson.build | 1 + rust/migration/meson.build | 3 +- rust/qom/meson.build | 1 + rust/system/meson.build | 1 + rust/util/meson.build | 1 + scripts/archive-source.sh | 33 +++++++--- .../ci/setup/ubuntu/ubuntu-2204-aarch64.yaml | 5 +- .../ci/setup/ubuntu/ubuntu-2204-s390x.yaml | 5 +- scripts/rust-to-clang-target-test.sh | 43 ++++++++++++ scripts/rust-to-clang-target.sh | 62 +++++++++++++++++ tests/docker/common.rc | 11 +++- tests/docker/dockerfiles/alpine.docker | 6 +- tests/docker/dockerfiles/centos9.docker | 4 ++ .../dockerfiles/debian-amd64-cross.docker | 18 +++-- .../dockerfiles/debian-arm64-cross.docker | 18 +++-- .../dockerfiles/debian-armhf-cross.docker | 21 +++--- .../dockerfiles/debian-i686-cross.docker | 20 ++++-- .../debian-legacy-test-cross.docker | 9 ++- .../dockerfiles/debian-mips64el-cross.docker | 9 ++- .../dockerfiles/debian-mipsel-cross.docker | 9 ++- .../dockerfiles/debian-ppc64el-cross.docker | 18 +++-- .../dockerfiles/debian-riscv64-cross.docker | 10 ++- .../dockerfiles/debian-s390x-cross.docker | 18 +++-- tests/docker/dockerfiles/debian.docker | 18 +++-- .../dockerfiles/emsdk-wasm32-cross.docker | 29 +++++++- .../dockerfiles/fedora-rust-nightly.docker | 18 +++-- .../dockerfiles/fedora-win64-cross.docker | 15 +++-- tests/docker/dockerfiles/fedora.docker | 18 +++-- tests/docker/dockerfiles/opensuse-leap.docker | 7 +- tests/docker/dockerfiles/ubuntu2204.docker | 7 +- tests/docker/test-wasm | 12 ++++ tests/lcitool/libvirt-ci | 2 +- tests/lcitool/projects/qemu.yml | 3 +- tests/lcitool/refresh | 48 +++++++++----- tests/vm/freebsd | 4 +- 48 files changed, 531 insertions(+), 183 deletions(-) create mode 100755 scripts/rust-to-clang-target-test.sh create mode 100644 scripts/rust-to-clang-target.sh create mode 100755 tests/docker/test-wasm

Hi On Tue, Sep 30, 2025 at 1:09 PM Paolo Bonzini via Devel <devel@lists.libvirt.org> wrote:
On 9/27/25 19:17, Alex Bennée wrote:
marcandre.lureau@redhat.com writes:
From: Marc-André Lureau <marcandre.lureau@redhat.com>
Hi,
This patch series fixes a number of issues with the build system and CI and enable Rust for many of our jobs, getting us closer to enable Rust by default.
emscripten is difficult to enable, help welcome.
Also I think:
https://gitlab.com/stsquad/qemu/-/pipelines/2065603411
And the: debian-armhf-cross debian-i686-cross debian-mipsel-cross debian-mips64el-cross debian-ppc64el-cross debian-riscv64-cross
I'll test 1-21+26 and see what breaks with that subset.
I am currently testing with this change: commit 757ef689a2d13a686411fb5b041412e8c73e36c0 Author: Marc-André Lureau <marcandre.lureau@redhat.com> Date: Tue Sep 30 14:16:44 2025 +0400 fixup! tests/docker: add ENABLE_RUST environment diff --git a/tests/docker/common.rc b/tests/docker/common.rc index 52f01848a3..752f4f3aed 100755 --- a/tests/docker/common.rc +++ b/tests/docker/common.rc @@ -21,10 +21,12 @@ else DEF_TARGET_LIST=${DEF_TARGET_LIST:-"x86_64-softmmu,aarch64-softmmu"} fi +enable_rust="" if [ "$ENABLE_RUST" = "1" ]; then enable_rust="--enable-rust" -else - enable_rust="" + if [ -n "$RUST_TARGET" ]; then + enable_rust="$enable_rust --rust-target-triple=$RUST_TARGET" + fi fi requires_binary()
Paolo
cross builds fail.
v2: - add a rust-to-clang-target-test.sh configure script - drop "RFC: configure: use the same machine as the host triple" - replace "tests: move mips to debian-legacy-test-cross" with "RFC: build-sys: deprecate mips host" - start tackling emscripten - fix mis-placed submodule update - other minor changes, commit message tweaks, bz links - add r-b tags
Marc-André Lureau (27): build-sys: require -lrt when no shm_open() in std libs gitlab-ci: fix 'needs' property type must be array scripts/archive-source: speed up downloading subprojects scripts/archive-source: silence subprojects downloads scripts/archive-source: use a bash array configure: fix rust meson configuration configure: set the bindgen cross target tests/docker/common: print errors to stderr tests/docker: use fully qualified image name for emsdk tests/docker/common: print meson log on configure failure build-sys: cfi_debug and safe_stack are not compatible lcitool: update, switch to f41 lcitool/qemu: include libclang-rt for TSAN lcitool/alpine: workaround bindgen issue tests/lcitool: add missing rust-std dep tests/lcitool: update to debian13 tests/docker: add ENABLE_RUST environment tests/lcitool: enable rust & refresh configure: set the meson executable suffix/ext tests/freebsd: enable Rust meson: rust-bindgen limit allowlist-file to srcdir/include RFC: tests/docker: add rust to debian-legacy-test-cross WIP: gitlab-ci: enable rust for msys2-64bit WIP: cirrus/macos: enable Rust RFC: build-sys: deprecate mips host build-sys: pass -fvisibility=default for wasm bindgen WIP: enable rust for wasm/emscripten
docs/about/build-platforms.rst | 2 - docs/about/deprecated.rst | 9 +-- configure | 27 +++++++- meson.build | 34 +++++++--- .gitlab-ci.d/buildtest-template.yml | 2 +- .gitlab-ci.d/buildtest.yml | 66 +++++++++---------- .gitlab-ci.d/cirrus.yml | 4 +- .gitlab-ci.d/crossbuilds.yml | 46 ++++++------- .gitlab-ci.d/static_checks.yml | 6 +- .gitlab-ci.d/windows.yml | 8 ++- rust/bql/meson.build | 1 + rust/chardev/meson.build | 1 + rust/hw/char/pl011/meson.build | 1 + rust/hw/core/meson.build | 1 + rust/migration/meson.build | 3 +- rust/qom/meson.build | 1 + rust/system/meson.build | 1 + rust/util/meson.build | 1 + scripts/archive-source.sh | 33 +++++++--- .../ci/setup/ubuntu/ubuntu-2204-aarch64.yaml | 5 +- .../ci/setup/ubuntu/ubuntu-2204-s390x.yaml | 5 +- scripts/rust-to-clang-target-test.sh | 43 ++++++++++++ scripts/rust-to-clang-target.sh | 62 +++++++++++++++++ tests/docker/common.rc | 11 +++- tests/docker/dockerfiles/alpine.docker | 6 +- tests/docker/dockerfiles/centos9.docker | 4 ++ .../dockerfiles/debian-amd64-cross.docker | 18 +++-- .../dockerfiles/debian-arm64-cross.docker | 18 +++-- .../dockerfiles/debian-armhf-cross.docker | 21 +++--- .../dockerfiles/debian-i686-cross.docker | 20 ++++-- .../debian-legacy-test-cross.docker | 9 ++- .../dockerfiles/debian-mips64el-cross.docker | 9 ++- .../dockerfiles/debian-mipsel-cross.docker | 9 ++- .../dockerfiles/debian-ppc64el-cross.docker | 18 +++-- .../dockerfiles/debian-riscv64-cross.docker | 10 ++- .../dockerfiles/debian-s390x-cross.docker | 18 +++-- tests/docker/dockerfiles/debian.docker | 18 +++-- .../dockerfiles/emsdk-wasm32-cross.docker | 29 +++++++- .../dockerfiles/fedora-rust-nightly.docker | 18 +++-- .../dockerfiles/fedora-win64-cross.docker | 15 +++-- tests/docker/dockerfiles/fedora.docker | 18 +++-- tests/docker/dockerfiles/opensuse-leap.docker | 7 +- tests/docker/dockerfiles/ubuntu2204.docker | 7 +- tests/docker/test-wasm | 12 ++++ tests/lcitool/libvirt-ci | 2 +- tests/lcitool/projects/qemu.yml | 3 +- tests/lcitool/refresh | 48 +++++++++----- tests/vm/freebsd | 4 +- 48 files changed, 531 insertions(+), 183 deletions(-) create mode 100755 scripts/rust-to-clang-target-test.sh create mode 100644 scripts/rust-to-clang-target.sh create mode 100755 tests/docker/test-wasm
-- Marc-André Lureau

On Sat, Sep 27, 2025 at 9:18 PM Alex Bennée <alex.bennee@linaro.org> wrote:
marcandre.lureau@redhat.com writes:
From: Marc-André Lureau <marcandre.lureau@redhat.com>
Hi,
This patch series fixes a number of issues with the build system and CI and enable Rust for many of our jobs, getting us closer to enable Rust by default.
emscripten is difficult to enable, help welcome.
Also I think:
Current ack/r-b series pass: https://gitlab.com/marcandre.lureau/qemu/-/pipelines/2071701923 I guess I should end a PR.
And the: debian-armhf-cross
debian-mipsel-cross
debian-mips64el-cross
debian-ppc64el-cross
debian-riscv64-cross
cross builds fail.
Fixed with the --rust-target-triple patch sent earlier
debian-i686-cross
This one fails with: ../src/meson.build:3394:4: ERROR: Problem encountered: No accelerator available for target x86_64-softmmu Paolo, any idea?
v2: - add a rust-to-clang-target-test.sh configure script - drop "RFC: configure: use the same machine as the host triple" - replace "tests: move mips to debian-legacy-test-cross" with "RFC:
build-sys: deprecate mips host"
- start tackling emscripten - fix mis-placed submodule update - other minor changes, commit message tweaks, bz links - add r-b tags
Marc-André Lureau (27): build-sys: require -lrt when no shm_open() in std libs gitlab-ci: fix 'needs' property type must be array scripts/archive-source: speed up downloading subprojects scripts/archive-source: silence subprojects downloads scripts/archive-source: use a bash array configure: fix rust meson configuration configure: set the bindgen cross target tests/docker/common: print errors to stderr tests/docker: use fully qualified image name for emsdk tests/docker/common: print meson log on configure failure build-sys: cfi_debug and safe_stack are not compatible lcitool: update, switch to f41 lcitool/qemu: include libclang-rt for TSAN lcitool/alpine: workaround bindgen issue tests/lcitool: add missing rust-std dep tests/lcitool: update to debian13 tests/docker: add ENABLE_RUST environment tests/lcitool: enable rust & refresh configure: set the meson executable suffix/ext tests/freebsd: enable Rust meson: rust-bindgen limit allowlist-file to srcdir/include RFC: tests/docker: add rust to debian-legacy-test-cross WIP: gitlab-ci: enable rust for msys2-64bit WIP: cirrus/macos: enable Rust RFC: build-sys: deprecate mips host build-sys: pass -fvisibility=default for wasm bindgen WIP: enable rust for wasm/emscripten
docs/about/build-platforms.rst | 2 - docs/about/deprecated.rst | 9 +-- configure | 27 +++++++- meson.build | 34 +++++++--- .gitlab-ci.d/buildtest-template.yml | 2 +- .gitlab-ci.d/buildtest.yml | 66 +++++++++---------- .gitlab-ci.d/cirrus.yml | 4 +- .gitlab-ci.d/crossbuilds.yml | 46 ++++++------- .gitlab-ci.d/static_checks.yml | 6 +- .gitlab-ci.d/windows.yml | 8 ++- rust/bql/meson.build | 1 + rust/chardev/meson.build | 1 + rust/hw/char/pl011/meson.build | 1 + rust/hw/core/meson.build | 1 + rust/migration/meson.build | 3 +- rust/qom/meson.build | 1 + rust/system/meson.build | 1 + rust/util/meson.build | 1 + scripts/archive-source.sh | 33 +++++++--- .../ci/setup/ubuntu/ubuntu-2204-aarch64.yaml | 5 +- .../ci/setup/ubuntu/ubuntu-2204-s390x.yaml | 5 +- scripts/rust-to-clang-target-test.sh | 43 ++++++++++++ scripts/rust-to-clang-target.sh | 62 +++++++++++++++++ tests/docker/common.rc | 11 +++- tests/docker/dockerfiles/alpine.docker | 6 +- tests/docker/dockerfiles/centos9.docker | 4 ++ .../dockerfiles/debian-amd64-cross.docker | 18 +++-- .../dockerfiles/debian-arm64-cross.docker | 18 +++-- .../dockerfiles/debian-armhf-cross.docker | 21 +++--- .../dockerfiles/debian-i686-cross.docker | 20 ++++-- .../debian-legacy-test-cross.docker | 9 ++- .../dockerfiles/debian-mips64el-cross.docker | 9 ++- .../dockerfiles/debian-mipsel-cross.docker | 9 ++- .../dockerfiles/debian-ppc64el-cross.docker | 18 +++-- .../dockerfiles/debian-riscv64-cross.docker | 10 ++- .../dockerfiles/debian-s390x-cross.docker | 18 +++-- tests/docker/dockerfiles/debian.docker | 18 +++-- .../dockerfiles/emsdk-wasm32-cross.docker | 29 +++++++- .../dockerfiles/fedora-rust-nightly.docker | 18 +++-- .../dockerfiles/fedora-win64-cross.docker | 15 +++-- tests/docker/dockerfiles/fedora.docker | 18 +++-- tests/docker/dockerfiles/opensuse-leap.docker | 7 +- tests/docker/dockerfiles/ubuntu2204.docker | 7 +- tests/docker/test-wasm | 12 ++++ tests/lcitool/libvirt-ci | 2 +- tests/lcitool/projects/qemu.yml | 3 +- tests/lcitool/refresh | 48 +++++++++----- tests/vm/freebsd | 4 +- 48 files changed, 531 insertions(+), 183 deletions(-) create mode 100755 scripts/rust-to-clang-target-test.sh create mode 100644 scripts/rust-to-clang-target.sh create mode 100755 tests/docker/test-wasm
-- Alex Bennée Virtualisation Tech Lead @ Linaro

Marc-André Lureau <marcandre.lureau@redhat.com> writes:
On Sat, Sep 27, 2025 at 9:18 PM Alex Bennée <alex.bennee@linaro.org> wrote:
marcandre.lureau@redhat.com writes:
From: Marc-André Lureau <marcandre.lureau@redhat.com>
Hi,
This patch series fixes a number of issues with the build system and CI and enable Rust for many of our jobs, getting us closer to enable Rust by default.
emscripten is difficult to enable, help welcome.
Also I think:
https://gitlab.com/stsquad/qemu/-/pipelines/2065603411
Current ack/r-b series pass: https://gitlab.com/marcandre.lureau/qemu/-/pipelines/2071701923
I guess I should end a PR.
And the: debian-armhf-cross
debian-mipsel-cross debian-mips64el-cross
debian-ppc64el-cross debian-riscv64-cross
cross builds fail.
Fixed with the --rust-target-triple patch sent earlier
debian-i686-cross
This one fails with: ../src/meson.build:3394:4: ERROR: Problem encountered: No accelerator available for target x86_64-softmmu
Ahh - because TCG on 32 bit no longer allows 64 bit guests we cannot find an accelerator. I'll fix that up in my current testing/next series by updating DEF_TARGETS
Paolo, any idea?
v2: - add a rust-to-clang-target-test.sh configure script - drop "RFC: configure: use the same machine as the host triple" - replace "tests: move mips to debian-legacy-test-cross" with "RFC: build-sys: deprecate mips host" - start tackling emscripten - fix mis-placed submodule update - other minor changes, commit message tweaks, bz links - add r-b tags
Marc-André Lureau (27): build-sys: require -lrt when no shm_open() in std libs gitlab-ci: fix 'needs' property type must be array scripts/archive-source: speed up downloading subprojects scripts/archive-source: silence subprojects downloads scripts/archive-source: use a bash array configure: fix rust meson configuration configure: set the bindgen cross target tests/docker/common: print errors to stderr tests/docker: use fully qualified image name for emsdk tests/docker/common: print meson log on configure failure build-sys: cfi_debug and safe_stack are not compatible lcitool: update, switch to f41 lcitool/qemu: include libclang-rt for TSAN lcitool/alpine: workaround bindgen issue tests/lcitool: add missing rust-std dep tests/lcitool: update to debian13 tests/docker: add ENABLE_RUST environment tests/lcitool: enable rust & refresh configure: set the meson executable suffix/ext tests/freebsd: enable Rust meson: rust-bindgen limit allowlist-file to srcdir/include RFC: tests/docker: add rust to debian-legacy-test-cross WIP: gitlab-ci: enable rust for msys2-64bit WIP: cirrus/macos: enable Rust RFC: build-sys: deprecate mips host build-sys: pass -fvisibility=default for wasm bindgen WIP: enable rust for wasm/emscripten
docs/about/build-platforms.rst | 2 - docs/about/deprecated.rst | 9 +-- configure | 27 +++++++- meson.build | 34 +++++++--- .gitlab-ci.d/buildtest-template.yml | 2 +- .gitlab-ci.d/buildtest.yml | 66 +++++++++---------- .gitlab-ci.d/cirrus.yml | 4 +- .gitlab-ci.d/crossbuilds.yml | 46 ++++++------- .gitlab-ci.d/static_checks.yml | 6 +- .gitlab-ci.d/windows.yml | 8 ++- rust/bql/meson.build | 1 + rust/chardev/meson.build | 1 + rust/hw/char/pl011/meson.build | 1 + rust/hw/core/meson.build | 1 + rust/migration/meson.build | 3 +- rust/qom/meson.build | 1 + rust/system/meson.build | 1 + rust/util/meson.build | 1 + scripts/archive-source.sh | 33 +++++++--- .../ci/setup/ubuntu/ubuntu-2204-aarch64.yaml | 5 +- .../ci/setup/ubuntu/ubuntu-2204-s390x.yaml | 5 +- scripts/rust-to-clang-target-test.sh | 43 ++++++++++++ scripts/rust-to-clang-target.sh | 62 +++++++++++++++++ tests/docker/common.rc | 11 +++- tests/docker/dockerfiles/alpine.docker | 6 +- tests/docker/dockerfiles/centos9.docker | 4 ++ .../dockerfiles/debian-amd64-cross.docker | 18 +++-- .../dockerfiles/debian-arm64-cross.docker | 18 +++-- .../dockerfiles/debian-armhf-cross.docker | 21 +++--- .../dockerfiles/debian-i686-cross.docker | 20 ++++-- .../debian-legacy-test-cross.docker | 9 ++- .../dockerfiles/debian-mips64el-cross.docker | 9 ++- .../dockerfiles/debian-mipsel-cross.docker | 9 ++- .../dockerfiles/debian-ppc64el-cross.docker | 18 +++-- .../dockerfiles/debian-riscv64-cross.docker | 10 ++- .../dockerfiles/debian-s390x-cross.docker | 18 +++-- tests/docker/dockerfiles/debian.docker | 18 +++-- .../dockerfiles/emsdk-wasm32-cross.docker | 29 +++++++- .../dockerfiles/fedora-rust-nightly.docker | 18 +++-- .../dockerfiles/fedora-win64-cross.docker | 15 +++-- tests/docker/dockerfiles/fedora.docker | 18 +++-- tests/docker/dockerfiles/opensuse-leap.docker | 7 +- tests/docker/dockerfiles/ubuntu2204.docker | 7 +- tests/docker/test-wasm | 12 ++++ tests/lcitool/libvirt-ci | 2 +- tests/lcitool/projects/qemu.yml | 3 +- tests/lcitool/refresh | 48 +++++++++----- tests/vm/freebsd | 4 +- 48 files changed, 531 insertions(+), 183 deletions(-) create mode 100755 scripts/rust-to-clang-target-test.sh create mode 100644 scripts/rust-to-clang-target.sh create mode 100755 tests/docker/test-wasm
-- Alex Bennée Virtualisation Tech Lead @ Linaro
-- Alex Bennée Virtualisation Tech Lead @ Linaro
participants (9)
-
Alex Bennée
-
Daniel P. Berrangé
-
Kohei Tokunaga
-
Marc-André Lureau
-
Marc-André Lureau
-
marcandre.lureau@redhat.com
-
Paolo Bonzini
-
Philippe Mathieu-Daudé
-
Thomas Huth