[PATCH preview 0/6] rust: use meson automatic parsing of Cargo.toml

Paolo Bonzini posted 6 patches 4 days, 7 hours ago
Failed in applying to current master (apply log)
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
[PATCH preview 0/6] rust: use meson automatic parsing of Cargo.toml
Posted by Paolo Bonzini 4 days, 7 hours ago
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

 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
Re: [PATCH preview 0/6] rust: use meson automatic parsing of Cargo.toml
Posted by Manos Pitsidianakis 4 days, 4 hours ago
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)?

>
>  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
>
>
Re: [PATCH preview 0/6] rust: use meson automatic parsing of Cargo.toml
Posted by Manos Pitsidianakis 4 days, 4 hours ago
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
> >
> >
Re: [PATCH preview 0/6] rust: use meson automatic parsing of Cargo.toml
Posted by Paolo Bonzini 4 days, 4 hours ago
Il mar 26 mag 2026, 14:42 Manos Pitsidianakis <
manos.pitsidianakis@linaro.org> ha scritto:

> 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
>

They will require 1.12 for cross compilation but otherwise they should work
with 1.11, or at worst master. I posted now only as a preview, just because
(after almost two years...) they show an almost final shape of the build
system.

They are in the rust-cargo branch of my git repo by the way!

Paolo

>
> > >
> > >  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
> > >
> > >
>
>