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

Paolo Bonzini <[email protected]>
Newsgroups org.nongnu.qemu-rust,org.nongnu.qemu-devel
Message-ID <[email protected]>
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: <[email protected]>

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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.