[PATCH v2 00/14] rust: allow older versions of rustc and bindgen

Paolo Bonzini posted 14 patches 10 hours ago
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
[PATCH v2 00/14] rust: allow older versions of rustc and bindgen
Posted by Paolo Bonzini 10 hours ago
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-pbonzini@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