On Tue, May 26, 2026 at 3:25 PM Manos Pitsidianakis
<manos.pitsidianakis@linaro.org> wrote:
>
> On Tue, May 26, 2026 at 12:26 PM Paolo Bonzini <pbonzini@redhat.com> wrote:
> >
> > These are relatively old patches, but it's time to post them now
> > that the light is visible at the end of the Meson tunnel.
> >
> > Meson 1.11.x greatly increased the ability to parse Cargo.toml
> > and automatically build complete targets out of the information in
> > there---this was more or less always the intention when Manos decided
> > to build Rust crates with Meson, but it took some time to get there.
> >
> > It still does not support cross compiling, but that should be added in
> > 1.12.0 and should be completely transparent, so it is already possible
> > to post patches for the final shape of the Meson rules.
> >
> > With this change, it is possible to have a much more compact
> > description of Rust devices in meson.build, compared to what
> > was used before:
> >
> > _libhpet_rs = cargo_ws.package('hpet').library()
> > rust_devices_ss.add(when: 'CONFIG_X_HPET_RUST', if_true: [declare_dependency(
> > link_whole: [_libhpet_rs],
> > variables: {'crate': 'hpet'},
> > )])
> >
> > For a description of Cargo support in Meson see
> > https://mesonbuild.com/Rust.html
> > and https://mesonbuild.com/Rust-module.html#workspace.
> >
> > Paolo
> >
> > Paolo Bonzini (6):
> > meson: use compiler_target() to get rustc target
> > rust: switch to cargo subprojects
> > rust: switch to autogenerated meson rules
> > rust: remove unnecessary wrap files
> > rust: use meson automatic parsing of Cargo.toml
> > scripts: remove now dead parts of rustc_args.py
>
> Missing patch to update minimum meson version check in configure (it's
> hardcoded to 1.10.0)?
pythondeps.toml points to 1.11.1 already, but if these new changes
require 1.11 then I expect building to stop working with meson 1.10
and rust enabled
>
> >
> > configure | 3 -
> > meson.build | 13 +--
> > rust/Cargo.lock => Cargo.lock | 0
> > rust/Cargo.toml => Cargo.toml | 6 +-
> > 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 | 32 +-------
> > 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/qapi/rs_types.py | 2 +-
> > scripts/rust/rustc_args.py | 80 +------------------
> > subprojects/anyhow-1-rs.wrap | 7 --
> > subprojects/arbitrary-int-1-rs.wrap | 10 ---
> > subprojects/attrs-0.2-rs.wrap | 7 --
> > subprojects/bilge-0.2-rs.wrap | 10 ---
> > subprojects/bilge-impl-0.2-rs.wrap | 10 ---
> > subprojects/either-1-rs.wrap | 10 ---
> > subprojects/foreign-0.3-rs.wrap | 7 --
> > subprojects/glib-sys-0.21-rs.wrap | 7 --
> > subprojects/itertools-0.11-rs.wrap | 10 ---
> > subprojects/libc-0.2-rs.wrap | 7 --
> > .../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 ----------
> > .../bilge-impl-0.2-rs/meson/meson.build | 3 +
> > .../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 ++++
> > .../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 -------
> > .../meson/meson.build | 3 +
> > .../packagefiles/proc-macro2-1-rs/meson.build | 35 --------
> > .../proc-macro2-1-rs/meson/meson.build | 6 ++
> > .../packagefiles/quote-1-rs/meson.build | 31 -------
> > .../packagefiles/serde-1-rs/meson.build | 36 ---------
> > .../packagefiles/serde_core-1-rs/meson.build | 25 ------
> > .../serde_core-1-rs/private.rs.in | 6 ++
> > .../serde_derive-1-rs/meson.build | 35 --------
> > subprojects/packagefiles/syn-2-rs/meson.build | 43 ----------
> > .../unicode-ident-1-rs/meson.build | 22 -----
> > subprojects/probe-0.5-rs.wrap | 7 --
> > subprojects/proc-macro-error-1-rs.wrap | 10 ---
> > subprojects/proc-macro-error-attr-1-rs.wrap | 10 ---
> > subprojects/proc-macro2-1-rs.wrap | 10 ---
> > subprojects/quote-1-rs.wrap | 10 ---
> > subprojects/serde-1-rs.wrap | 5 +-
> > subprojects/serde_core-1-rs.wrap | 5 +-
> > subprojects/serde_derive-1-rs.wrap | 5 +-
> > subprojects/syn-2-rs.wrap | 10 ---
> > subprojects/unicode-ident-1-rs.wrap | 10 ---
> > 72 files changed, 116 insertions(+), 1053 deletions(-)
> > rename rust/Cargo.lock => Cargo.lock (100%)
> > rename rust/Cargo.toml => Cargo.toml (97%)
> > delete mode 100644 subprojects/anyhow-1-rs.wrap
> > delete mode 100644 subprojects/arbitrary-int-1-rs.wrap
> > delete mode 100644 subprojects/attrs-0.2-rs.wrap
> > delete mode 100644 subprojects/bilge-0.2-rs.wrap
> > delete mode 100644 subprojects/bilge-impl-0.2-rs.wrap
> > delete mode 100644 subprojects/either-1-rs.wrap
> > delete mode 100644 subprojects/foreign-0.3-rs.wrap
> > delete mode 100644 subprojects/glib-sys-0.21-rs.wrap
> > delete mode 100644 subprojects/itertools-0.11-rs.wrap
> > delete mode 100644 subprojects/libc-0.2-rs.wrap
> > 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
> > create mode 100644 subprojects/packagefiles/bilge-impl-0.2-rs/meson/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/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
> > create mode 100644 subprojects/packagefiles/proc-macro-error-attr-1-rs/meson/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/serde-1-rs/meson.build
> > delete mode 100644 subprojects/packagefiles/serde_core-1-rs/meson.build
> > create mode 100644 subprojects/packagefiles/serde_core-1-rs/private.rs.in
> > delete mode 100644 subprojects/packagefiles/serde_derive-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
> > delete mode 100644 subprojects/probe-0.5-rs.wrap
> > delete mode 100644 subprojects/proc-macro-error-1-rs.wrap
> > delete mode 100644 subprojects/proc-macro-error-attr-1-rs.wrap
> > delete mode 100644 subprojects/proc-macro2-1-rs.wrap
> > delete mode 100644 subprojects/quote-1-rs.wrap
> > delete mode 100644 subprojects/syn-2-rs.wrap
> > delete mode 100644 subprojects/unicode-ident-1-rs.wrap
> >
> > --
> > 2.54.0
> >
> >