[PATCH 0/9] First batch of Rust changes for QEMU 11.2

Paolo Bonzini posted 9 patches 1 month, 1 week ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20260817134538.924615-1-pbonzini@redhat.com
Maintainers: "Alex Bennée" <alex.bennee@linaro.org>, Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>, Paolo Bonzini <pbonzini@redhat.com>, "Marc-André Lureau" <marcandre.lureau@redhat.com>, "Daniel P. Berrangé" <berrange@redhat.com>, "Philippe Mathieu-Daudé" <philmd@mailo.com>, John Snow <jsnow@redhat.com>, Cleber Rosa <crosa@redhat.com>, Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
docs/devel/rust.rst                           |  85 ++++++-----------
configure                                     |   7 +-
meson.build                                   |  16 ++--
.gitlab-ci.d/static_checks.yml                |   4 +-
rust/Cargo.lock => Cargo.lock                 |  87 ++++++++----------
rust/Cargo.toml => Cargo.toml                 |   6 +-
python/scripts/vendor.py                      |   4 +-
python/wheels/meson-1.11.1-py3-none-any.whl   | Bin 1078534 -> 0 bytes
python/wheels/meson-1.12.0-py3-none-any.whl   | Bin 0 -> 1106208 bytes
pythondeps.toml                               |   4 +-
rust/bindings/chardev-sys/meson.build         |  11 +--
rust/bindings/hwcore-sys/meson.build          |  11 +--
rust/bindings/migration-sys/meson.build       |  11 +--
rust/bindings/qom-sys/meson.build             |  11 +--
rust/bindings/system-sys/meson.build          |  11 +--
rust/bindings/util-sys/meson.build            |  11 +--
rust/bits/meson.build                         |   7 +-
rust/bql/meson.build                          |  13 +--
rust/chardev/meson.build                      |   8 +-
rust/common/meson.build                       |  10 +-
rust/hw/char/pl011/meson.build                |  22 +----
rust/hw/core/meson.build                      |  10 +-
rust/hw/timer/hpet/meson.build                |  17 +---
rust/meson.build                              |  26 +-----
rust/migration/meson.build                    |   8 +-
rust/qemu-macros/meson.build                  |  12 +--
rust/qom/meson.build                          |   8 +-
rust/system/meson.build                       |   8 +-
rust/trace/meson.build                        |   9 +-
rust/util/meson.build                         |   7 +-
scripts/get-wraps-from-cargo-registry.py      |   6 --
scripts/rust/rustc_args.py                    |  80 +---------------
subprojects/anyhow-1-rs.wrap                  |   5 +-
subprojects/arbitrary-int-1-rs.wrap           |   3 +-
subprojects/attrs-0.2-rs.wrap                 |   3 +-
subprojects/bilge-0.2-rs.wrap                 |   3 +-
subprojects/bilge-impl-0.2-rs.wrap            |   3 +-
subprojects/either-1-rs.wrap                  |   3 +-
subprojects/foreign-0.3-rs.wrap               |   3 +-
subprojects/glib-sys-0.21-rs.wrap             |   3 +-
subprojects/itertools-0.11-rs.wrap            |   3 +-
subprojects/libc-0.2-rs.wrap                  |   5 +-
.../packagefiles/anyhow-1-rs/meson.build      |  33 -------
.../anyhow-1-rs/meson/meson.build             |   9 ++
.../arbitrary-int-1-rs/meson.build            |  21 -----
.../packagefiles/attrs-0.2-rs/meson.build     |  33 -------
.../packagefiles/bilge-0.2-rs/meson.build     |  31 -------
.../bilge-impl-0.2-rs/meson.build             |  44 ---------
.../packagefiles/either-1-rs/meson.build      |  26 ------
.../packagefiles/foreign-0.3-rs/meson.build   |  26 ------
.../packagefiles/glib-sys-0.21-rs/meson.build |  33 -------
.../itertools-0.11-rs/meson.build             |  32 -------
.../packagefiles/libc-0.2-rs/meson.build      |  37 --------
.../libc-0.2-rs/meson/meson.build             |  16 ++++
.../packagefiles/probe-0.5-rs/meson.build     |  22 -----
.../proc-macro-error-1-rs/meson.build         |  41 ---------
.../proc-macro-error-1-rs/meson/meson.build   |   3 +
.../proc-macro-error-attr-1-rs/meson.build    |  31 -------
.../packagefiles/proc-macro2-1-rs/meson.build |  35 -------
.../proc-macro2-1-rs/meson/meson.build        |   6 ++
.../packagefiles/quote-1-rs/meson.build       |  31 -------
subprojects/packagefiles/syn-2-rs/meson.build |  43 ---------
.../unicode-ident-1-rs/meson.build            |  22 -----
subprojects/probe-0.5-rs.wrap                 |   3 +-
subprojects/proc-macro-error-1-rs.wrap        |   4 +-
subprojects/proc-macro-error-attr-1-rs.wrap   |   3 +-
subprojects/proc-macro2-1-rs.wrap             |   4 +-
subprojects/quote-1-rs.wrap                   |   3 +-
subprojects/syn-2-rs.wrap                     |   3 +-
subprojects/unicode-ident-1-rs.wrap           |   3 +-
70 files changed, 194 insertions(+), 968 deletions(-)
rename rust/Cargo.lock => Cargo.lock (85%)
rename rust/Cargo.toml => Cargo.toml (97%)
delete mode 100644 python/wheels/meson-1.11.1-py3-none-any.whl
create mode 100644 python/wheels/meson-1.12.0-py3-none-any.whl
delete mode 100644 subprojects/packagefiles/anyhow-1-rs/meson.build
create mode 100644 subprojects/packagefiles/anyhow-1-rs/meson/meson.build
delete mode 100644 subprojects/packagefiles/arbitrary-int-1-rs/meson.build
delete mode 100644 subprojects/packagefiles/attrs-0.2-rs/meson.build
delete mode 100644 subprojects/packagefiles/bilge-0.2-rs/meson.build
delete mode 100644 subprojects/packagefiles/bilge-impl-0.2-rs/meson.build
delete mode 100644 subprojects/packagefiles/either-1-rs/meson.build
delete mode 100644 subprojects/packagefiles/foreign-0.3-rs/meson.build
delete mode 100644 subprojects/packagefiles/glib-sys-0.21-rs/meson.build
delete mode 100644 subprojects/packagefiles/itertools-0.11-rs/meson.build
delete mode 100644 subprojects/packagefiles/libc-0.2-rs/meson.build
create mode 100644 subprojects/packagefiles/libc-0.2-rs/meson/meson.build
delete mode 100644 subprojects/packagefiles/probe-0.5-rs/meson.build
delete mode 100644 subprojects/packagefiles/proc-macro-error-1-rs/meson.build
create mode 100644 subprojects/packagefiles/proc-macro-error-1-rs/meson/meson.build
delete mode 100644 subprojects/packagefiles/proc-macro-error-attr-1-rs/meson.build
delete mode 100644 subprojects/packagefiles/proc-macro2-1-rs/meson.build
create mode 100644 subprojects/packagefiles/proc-macro2-1-rs/meson/meson.build
delete mode 100644 subprojects/packagefiles/quote-1-rs/meson.build
delete mode 100644 subprojects/packagefiles/syn-2-rs/meson.build
delete mode 100644 subprojects/packagefiles/unicode-ident-1-rs/meson.build
[PATCH 0/9] First batch of Rust changes for QEMU 11.2
Posted by Paolo Bonzini 1 month, 1 week ago
This finally brings in a version of Meson where Cargo subprojects are
powerful enough to remove large parts of QEMU's handwritten build rules
of scripts/rust/rustc_args.py.  In particular this includes the following
Meson features

- usage of a single Cargo.lock to resolve crate versions (1.10.0)

- support for Cargo workspaces (also 1.10.0)

- parsing of Cargo.toml files from QEMU to resolve features (1.11.0
  and patch 3)...

- ... and to simplify build rules (also 1.11.0, and patch 4)

- build-machine subprojects for cross-compilation scenarios (1.12.0)

In other words, this finally realizes the plan from 2024 of using Cargo
subprojects to build dependent crates, aka the reason why QEMU isn't
invoking Cargo like many other projects do (such as libblkio).

The introduction of Cargo subprojects would also allow in principle
to build libigvm and as part of QEMU itself.  To this end Meson
1.12.0 also simplifies the invocation of cbindgen, which libigvm
uses as part of its build process.

Paolo

Based-on: <20260817134313.922754-1-pbonzini@redhat.com>

Paolo Bonzini (9):
  python, meson: update meson required for Rust to 1.12.0
  rust: update Cargo.lock
  rust: switch to cargo subprojects
  rust: switch to autogenerated meson rules
  meson: use compiler_target() to get rustc target
  rust: use meson automatic parsing of Cargo.toml
  docs: rust: update for new-style build rules
  scripts: remove now dead parts of rustc_args.py
  rust: update Cargo dependencies

 docs/devel/rust.rst                           |  85 ++++++-----------
 configure                                     |   7 +-
 meson.build                                   |  16 ++--
 .gitlab-ci.d/static_checks.yml                |   4 +-
 rust/Cargo.lock => Cargo.lock                 |  87 ++++++++----------
 rust/Cargo.toml => Cargo.toml                 |   6 +-
 python/scripts/vendor.py                      |   4 +-
 python/wheels/meson-1.11.1-py3-none-any.whl   | Bin 1078534 -> 0 bytes
 python/wheels/meson-1.12.0-py3-none-any.whl   | Bin 0 -> 1106208 bytes
 pythondeps.toml                               |   4 +-
 rust/bindings/chardev-sys/meson.build         |  11 +--
 rust/bindings/hwcore-sys/meson.build          |  11 +--
 rust/bindings/migration-sys/meson.build       |  11 +--
 rust/bindings/qom-sys/meson.build             |  11 +--
 rust/bindings/system-sys/meson.build          |  11 +--
 rust/bindings/util-sys/meson.build            |  11 +--
 rust/bits/meson.build                         |   7 +-
 rust/bql/meson.build                          |  13 +--
 rust/chardev/meson.build                      |   8 +-
 rust/common/meson.build                       |  10 +-
 rust/hw/char/pl011/meson.build                |  22 +----
 rust/hw/core/meson.build                      |  10 +-
 rust/hw/timer/hpet/meson.build                |  17 +---
 rust/meson.build                              |  26 +-----
 rust/migration/meson.build                    |   8 +-
 rust/qemu-macros/meson.build                  |  12 +--
 rust/qom/meson.build                          |   8 +-
 rust/system/meson.build                       |   8 +-
 rust/trace/meson.build                        |   9 +-
 rust/util/meson.build                         |   7 +-
 scripts/get-wraps-from-cargo-registry.py      |   6 --
 scripts/rust/rustc_args.py                    |  80 +---------------
 subprojects/anyhow-1-rs.wrap                  |   5 +-
 subprojects/arbitrary-int-1-rs.wrap           |   3 +-
 subprojects/attrs-0.2-rs.wrap                 |   3 +-
 subprojects/bilge-0.2-rs.wrap                 |   3 +-
 subprojects/bilge-impl-0.2-rs.wrap            |   3 +-
 subprojects/either-1-rs.wrap                  |   3 +-
 subprojects/foreign-0.3-rs.wrap               |   3 +-
 subprojects/glib-sys-0.21-rs.wrap             |   3 +-
 subprojects/itertools-0.11-rs.wrap            |   3 +-
 subprojects/libc-0.2-rs.wrap                  |   5 +-
 .../packagefiles/anyhow-1-rs/meson.build      |  33 -------
 .../anyhow-1-rs/meson/meson.build             |   9 ++
 .../arbitrary-int-1-rs/meson.build            |  21 -----
 .../packagefiles/attrs-0.2-rs/meson.build     |  33 -------
 .../packagefiles/bilge-0.2-rs/meson.build     |  31 -------
 .../bilge-impl-0.2-rs/meson.build             |  44 ---------
 .../packagefiles/either-1-rs/meson.build      |  26 ------
 .../packagefiles/foreign-0.3-rs/meson.build   |  26 ------
 .../packagefiles/glib-sys-0.21-rs/meson.build |  33 -------
 .../itertools-0.11-rs/meson.build             |  32 -------
 .../packagefiles/libc-0.2-rs/meson.build      |  37 --------
 .../libc-0.2-rs/meson/meson.build             |  16 ++++
 .../packagefiles/probe-0.5-rs/meson.build     |  22 -----
 .../proc-macro-error-1-rs/meson.build         |  41 ---------
 .../proc-macro-error-1-rs/meson/meson.build   |   3 +
 .../proc-macro-error-attr-1-rs/meson.build    |  31 -------
 .../packagefiles/proc-macro2-1-rs/meson.build |  35 -------
 .../proc-macro2-1-rs/meson/meson.build        |   6 ++
 .../packagefiles/quote-1-rs/meson.build       |  31 -------
 subprojects/packagefiles/syn-2-rs/meson.build |  43 ---------
 .../unicode-ident-1-rs/meson.build            |  22 -----
 subprojects/probe-0.5-rs.wrap                 |   3 +-
 subprojects/proc-macro-error-1-rs.wrap        |   4 +-
 subprojects/proc-macro-error-attr-1-rs.wrap   |   3 +-
 subprojects/proc-macro2-1-rs.wrap             |   4 +-
 subprojects/quote-1-rs.wrap                   |   3 +-
 subprojects/syn-2-rs.wrap                     |   3 +-
 subprojects/unicode-ident-1-rs.wrap           |   3 +-
 70 files changed, 194 insertions(+), 968 deletions(-)
 rename rust/Cargo.lock => Cargo.lock (85%)
 rename rust/Cargo.toml => Cargo.toml (97%)
 delete mode 100644 python/wheels/meson-1.11.1-py3-none-any.whl
 create mode 100644 python/wheels/meson-1.12.0-py3-none-any.whl
 delete mode 100644 subprojects/packagefiles/anyhow-1-rs/meson.build
 create mode 100644 subprojects/packagefiles/anyhow-1-rs/meson/meson.build
 delete mode 100644 subprojects/packagefiles/arbitrary-int-1-rs/meson.build
 delete mode 100644 subprojects/packagefiles/attrs-0.2-rs/meson.build
 delete mode 100644 subprojects/packagefiles/bilge-0.2-rs/meson.build
 delete mode 100644 subprojects/packagefiles/bilge-impl-0.2-rs/meson.build
 delete mode 100644 subprojects/packagefiles/either-1-rs/meson.build
 delete mode 100644 subprojects/packagefiles/foreign-0.3-rs/meson.build
 delete mode 100644 subprojects/packagefiles/glib-sys-0.21-rs/meson.build
 delete mode 100644 subprojects/packagefiles/itertools-0.11-rs/meson.build
 delete mode 100644 subprojects/packagefiles/libc-0.2-rs/meson.build
 create mode 100644 subprojects/packagefiles/libc-0.2-rs/meson/meson.build
 delete mode 100644 subprojects/packagefiles/probe-0.5-rs/meson.build
 delete mode 100644 subprojects/packagefiles/proc-macro-error-1-rs/meson.build
 create mode 100644 subprojects/packagefiles/proc-macro-error-1-rs/meson/meson.build
 delete mode 100644 subprojects/packagefiles/proc-macro-error-attr-1-rs/meson.build
 delete mode 100644 subprojects/packagefiles/proc-macro2-1-rs/meson.build
 create mode 100644 subprojects/packagefiles/proc-macro2-1-rs/meson/meson.build
 delete mode 100644 subprojects/packagefiles/quote-1-rs/meson.build
 delete mode 100644 subprojects/packagefiles/syn-2-rs/meson.build
 delete mode 100644 subprojects/packagefiles/unicode-ident-1-rs/meson.build

-- 
2.55.0
Re: [PATCH 0/9] First batch of Rust changes for QEMU 11.2
Posted by marcandre.lureau@redhat.com 1 month, 1 week ago
On Mon, 17 Aug 2026 15:45:28 +0200, Paolo Bonzini <pbonzini@redhat.com> wrote:
> First batch of Rust changes for QEMU 11.2
> 
> This finally brings in a version of Meson where Cargo subprojects are
> powerful enough to remove large parts of QEMU's handwritten build rules
> of scripts/rust/rustc_args.py.  In particular this includes the following
> Meson features
> 
> [...]

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

-- 
Marc-André Lureau <marcandre.lureau@redhat.com>