This is the second of three series needed to enable Rust for all CI jobs (the third is due to differences in the functionality between C and Rust implementations of PL011, for which I have sent the RFC a little earlier).
My overall patch queue can be found at branch rust-next of my git repository https://gitlab.com/bonzini/qemu.git. Note that this requires "meson subprojects update --reset" in order to do an incremental build if you have already downloaded the Rust subprojects. While I have a solution for that (modeled after scripts/git-submodule.sh), I first need to check with the Meson folks whether my script is using only stable interfaces. Paolo Based-on: <20241021163538.136941-1-pbonz...@redhat.com> CI: - Debian: https://gitlab.com/bonzini/qemu/-/jobs/8149518712 - Fedora: https://gitlab.com/bonzini/qemu/-/jobs/8149518714 - Fedora + nightly Rust: https://gitlab.com/bonzini/qemu/-/jobs/8149518716 - Ubuntu: https://gitlab.com/bonzini/qemu/-/jobs/8149518709 Junjie Mao (1): rust: introduce alternative implementation of offset_of! Paolo Bonzini (13): rust: patch bilge-impl to allow compilation with 1.63.0 rust: fix cfgs of proc-macro2 for 1.63.0 rust: use std::os::raw instead of core::ffi rust: introduce a c_str macro rust: silence unknown warnings for the sake of old compilers rust: synchronize dependencies between subprojects and Cargo.lock rust: do not use MaybeUninit::zeroed() rust: clean up detection of the language rust: allow version 1.63.0 of rustc rust: do not use --generate-cstr rust: allow older version of bindgen rust: make rustfmt optional dockerfiles: install bindgen from cargo on Ubuntu 22.04 docs/about/build-platforms.rst | 8 + meson.build | 102 +++++++---- .gitattributes | 2 + .gitlab-ci.d/buildtest.yml | 2 +- meson_options.txt | 2 + rust/hw/char/pl011/Cargo.lock | 6 +- rust/hw/char/pl011/src/device.rs | 28 +-- rust/hw/char/pl011/src/device_class.rs | 5 +- rust/hw/char/pl011/src/lib.rs | 4 +- rust/hw/char/pl011/src/memory_ops.rs | 10 +- rust/qemu-api-macros/Cargo.lock | 11 +- rust/qemu-api-macros/Cargo.toml | 5 +- rust/qemu-api-macros/src/lib.rs | 29 +++- rust/qemu-api/Cargo.lock | 56 +++++- rust/qemu-api/Cargo.toml | 7 +- rust/qemu-api/build.rs | 8 + rust/qemu-api/meson.build | 16 +- rust/qemu-api/src/c_str.rs | 53 ++++++ rust/qemu-api/src/definitions.rs | 2 +- rust/qemu-api/src/device_class.rs | 26 ++- rust/qemu-api/src/lib.rs | 16 +- rust/qemu-api/src/offset_of.rs | 161 ++++++++++++++++++ rust/qemu-api/src/zeroable.rs | 91 ++++++++-- rust/qemu-api/tests/tests.rs | 22 +-- scripts/meson-buildoptions.sh | 4 + subprojects/bilge-impl-0.2-rs.wrap | 1 + subprojects/packagefiles/.gitattributes | 1 + .../packagefiles/bilge-impl-1.63.0.patch | 45 +++++ .../packagefiles/proc-macro2-1-rs/meson.build | 4 +- subprojects/packagefiles/syn-2-rs/meson.build | 1 + tests/docker/dockerfiles/ubuntu2204.docker | 5 + tests/lcitool/mappings.yml | 4 + tests/lcitool/refresh | 11 +- 33 files changed, 644 insertions(+), 104 deletions(-) create mode 100644 rust/qemu-api/src/c_str.rs create mode 100644 rust/qemu-api/src/offset_of.rs create mode 100644 subprojects/packagefiles/.gitattributes create mode 100644 subprojects/packagefiles/bilge-impl-1.63.0.patch -- 2.46.2