[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