[PATCH v3 02/19] subprojects: add serde
Paolo Bonzini <[email protected]> Tue, 26 May 2026 19:56:01 +0200
| Newsgroups | org.nongnu.qemu-rust,org.nongnu.qemu-devel |
|---|---|
| Message-ID | <[email protected]> |
Reviewed-by: Zhao Liu <[email protected]> Signed-off-by: Paolo Bonzini <[email protected]> --- rust/Cargo.toml | 2 ++ rust/meson.build | 4 +++ scripts/archive-source.sh | 3 ++ scripts/make-release | 2 +- subprojects/.gitignore | 3 ++ .../packagefiles/serde-1-rs/meson.build | 36 +++++++++++++++++++ .../packagefiles/serde-1.0.226-include.patch | 16 +++++++++ .../packagefiles/serde_core-1-rs/meson.build | 25 +++++++++++++ .../serde_core-1.0.226-include.patch | 15 ++++++++ .../serde_derive-1-rs/meson.build | 35 ++++++++++++++++++ .../serde_derive-1.0.226-include.patch | 11 ++++++ subprojects/serde-1-rs.wrap | 11 ++++++ subprojects/serde_core-1-rs.wrap | 11 ++++++ subprojects/serde_derive-1-rs.wrap | 11 ++++++ 14 files changed, 184 insertions(+), 1 deletion(-) create mode 100644 subprojects/packagefiles/serde-1-rs/meson.build create mode 100644 subprojects/packagefiles/serde-1.0.226-include.patch create mode 100644 subprojects/packagefiles/serde_core-1-rs/meson.build create mode 100644 subprojects/packagefiles/serde_core-1.0.226-include.patch create mode 100644 subprojects/packagefiles/serde_derive-1-rs/meson.build create mode 100644 subprojects/packagefiles/serde_derive-1.0.226-include.patch create mode 100644 subprojects/serde-1-rs.wrap create mode 100644 subprojects/serde_core-1-rs.wrap create mode 100644 subprojects/serde_derive-1-rs.wrap diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 0d24eb84e1c..fe491f3aba6 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -20,6 +20,8 @@ anyhow = "~1.0" foreign = "~0.3.1" libc = "0.2.162" glib-sys = { version = "0.21.2", features = ["v2_66"] } +serde = "1.0.226" +serde_derive = "1.0.226" [workspace.lints.rust] unexpected_cfgs = { level = "deny", check-cfg = ['cfg(MESON)'] } diff --git a/rust/meson.build b/rust/meson.build index b6711fe77dd..96e93f56e22 100644 --- a/rust/meson.build +++ b/rust/meson.build @@ -11,6 +11,8 @@ subproject('foreign-0.3-rs', required: true) subproject('glib-sys-0.21-rs', required: true) subproject('libc-0.2-rs', required: true) subproject('probe-0.5-rs', required: true) +subproject('serde-1-rs', required: true) +subproject('serde_derive-1-rs', required: true) anyhow_rs = dependency('anyhow-1-rs') bilge_rs = dependency('bilge-0.2-rs') @@ -19,6 +21,8 @@ foreign_rs = dependency('foreign-0.3-rs') glib_sys_rs = dependency('glib-sys-0.21-rs') libc_rs = dependency('libc-0.2-rs') probe_rs = dependency('probe-0.5-rs') +serde_rs = dependency('serde-1-rs') +serde_derive_rs = dependency('serde_derive-1-rs', native: true) subproject('proc-macro2-1-rs', required: true) subproject('quote-1-rs', required: true) diff --git a/scripts/archive-source.sh b/scripts/archive-source.sh index a37acab524e..ae768cf99f6 100755 --- a/scripts/archive-source.sh +++ b/scripts/archive-source.sh @@ -46,6 +46,9 @@ subprojects=( proc-macro-error-attr-1-rs proc-macro2-1-rs quote-1-rs + serde-1-rs + serde_core-1-rs + serde_derive-1-rs syn-2-rs unicode-ident-1-rs ) diff --git a/scripts/make-release b/scripts/make-release index 5f54b0e7939..23fef08bcf3 100755 --- a/scripts/make-release +++ b/scripts/make-release @@ -44,7 +44,7 @@ SUBPROJECTS="libvfio-user keycodemapdb berkeley-softfloat-3 bilge-impl-0.2-rs either-1-rs foreign-0.3-rs itertools-0.11-rs libc-0.2-rs probe-0.5-rs proc-macro2-1-rs proc-macro-error-1-rs proc-macro-error-attr-1-rs quote-1-rs - syn-2-rs unicode-ident-1-rs" + serde-1-rs serde_core-1-rs serde_derive-1-rs syn-2-rs unicode-ident-1-rs" src="$1" version="$2" diff --git a/subprojects/.gitignore b/subprojects/.gitignore index 011ce4dc3b7..2cdb0a6a910 100644 --- a/subprojects/.gitignore +++ b/subprojects/.gitignore @@ -21,6 +21,9 @@ /proc-macro-error-attr-* /proc-macro* /quote-* +/serde-* +/serde_core-* +/serde_derive-* /syn-* /unicode-ident-* diff --git a/subprojects/packagefiles/serde-1-rs/meson.build b/subprojects/packagefiles/serde-1-rs/meson.build new file mode 100644 index 00000000000..775e0120f24 --- /dev/null +++ b/subprojects/packagefiles/serde-1-rs/meson.build @@ -0,0 +1,36 @@ +project('serde-1-rs', 'rust', + meson_version: '>=1.5.0', + version: '1.0.226', + license: 'MIT OR Apache-2.0', + default_options: []) + +subproject('serde_core-1-rs', required: true) +subproject('serde_derive-1-rs', required: true) + +serde_core_dep = dependency('serde_core-1-rs') +serde_derive_dep = dependency('serde_derive-1-rs') + +_serde_rs = static_library( + 'serde', + files('src/lib.rs'), + gnu_symbol_visibility: 'hidden', + override_options: ['rust_std=2021', 'build.rust_std=2021'], + rust_abi: 'rust', + rust_args: [ + '--cap-lints', 'allow', + '--cfg', 'feature="alloc"', + '--cfg', 'feature="std"', + '--cfg', 'feature="derive"', + ], + dependencies: [ + serde_core_dep, + serde_derive_dep, + ] +) + +serde_dep = declare_dependency( + link_with: _serde_rs, + dependencies: serde_derive_dep, +) + +meson.override_dependency('serde-1-rs', serde_dep) diff --git a/subprojects/packagefiles/serde-1.0.226-include.patch b/subprojects/packagefiles/serde-1.0.226-include.patch new file mode 100644 index 00000000000..92878136878 --- /dev/null +++ b/subprojects/packagefiles/serde-1.0.226-include.patch @@ -0,0 +1,16 @@ +--- a/src/lib.rs 2025-09-23 13:41:09.327582205 +0200 ++++ b/src/lib.rs 2025-09-23 13:41:23.043271856 +0200 +@@ -241,7 +241,12 @@ + #[doc(hidden)] + mod private; + +-include!(concat!(env!("OUT_DIR"), "/private.rs")); ++#[doc(hidden)] ++pub mod __private_MESON { ++ #[doc(hidden)] ++ pub use crate::private::*; ++} ++use serde_core::__private_MESON as serde_core_private; + + // Re-export #[derive(Serialize, Deserialize)]. + // diff --git a/subprojects/packagefiles/serde_core-1-rs/meson.build b/subprojects/packagefiles/serde_core-1-rs/meson.build new file mode 100644 index 00000000000..79c36f6b70e --- /dev/null +++ b/subprojects/packagefiles/serde_core-1-rs/meson.build @@ -0,0 +1,25 @@ +project('serde_core-1-rs', 'rust', + meson_version: '>=1.5.0', + version: '1.0.226', + license: 'MIT OR Apache-2.0', + default_options: []) + +_serde_core_rs = static_library( + 'serde_core', + files('src/lib.rs'), + gnu_symbol_visibility: 'hidden', + override_options: ['rust_std=2021', 'build.rust_std=2021'], + rust_abi: 'rust', + rust_args: [ + '--cap-lints', 'allow', + '--cfg', 'feature="alloc"', + '--cfg', 'feature="result"', + '--cfg', 'feature="std"', + ], +) + +serde_core_dep = declare_dependency( + link_with: _serde_core_rs, +) + +meson.override_dependency('serde_core-1-rs', serde_core_dep) diff --git a/subprojects/packagefiles/serde_core-1.0.226-include.patch b/subprojects/packagefiles/serde_core-1.0.226-include.patch new file mode 100644 index 00000000000..d1321dfe272 --- /dev/null +++ b/subprojects/packagefiles/serde_core-1.0.226-include.patch @@ -0,0 +1,15 @@ +--- a/src/lib.rs 2025-09-23 13:32:40.872421170 +0200 ++++ b/src/lib.rs 2025-09-23 13:32:52.181098856 +0200 +@@ -263,7 +263,11 @@ + pub use core::result::Result; + } + +-include!(concat!(env!("OUT_DIR"), "/private.rs")); ++#[doc(hidden)] ++pub mod __private_MESON { ++ #[doc(hidden)] ++ pub use crate::private::*; ++} + + #[cfg(all(not(feature = "std"), no_core_error))] + mod std_error; diff --git a/subprojects/packagefiles/serde_derive-1-rs/meson.build b/subprojects/packagefiles/serde_derive-1-rs/meson.build new file mode 100644 index 00000000000..6c1001a844a --- /dev/null +++ b/subprojects/packagefiles/serde_derive-1-rs/meson.build @@ -0,0 +1,35 @@ +project('serde_derive-1-rs', 'rust', + meson_version: '>=1.5.0', + version: '1.0.226', + license: 'MIT OR Apache-2.0', + default_options: []) + +subproject('quote-1-rs', required: true) +subproject('syn-2-rs', required: true) +subproject('proc-macro2-1-rs', required: true) + +quote_dep = dependency('quote-1-rs', native: true) +syn_dep = dependency('syn-2-rs', native: true) +proc_macro2_dep = dependency('proc-macro2-1-rs', native: true) + +rust = import('rust') + +_serde_derive_rs = rust.proc_macro( + 'serde_derive', + files('src/lib.rs'), + override_options: ['rust_std=2021', 'build.rust_std=2021'], + rust_args: [ + '--cap-lints', 'allow', + ], + dependencies: [ + quote_dep, + syn_dep, + proc_macro2_dep, + ], +) + +serde_derive_dep = declare_dependency( + link_with: _serde_derive_rs, +) + +meson.override_dependency('serde_derive-1-rs', serde_derive_dep) diff --git a/subprojects/packagefiles/serde_derive-1.0.226-include.patch b/subprojects/packagefiles/serde_derive-1.0.226-include.patch new file mode 100644 index 00000000000..81d65564d29 --- /dev/null +++ b/subprojects/packagefiles/serde_derive-1.0.226-include.patch @@ -0,0 +1,11 @@ +--- a/src/lib.rs 2025-09-23 13:51:51.540191923 +0200 ++++ b/src/lib.rs 2025-09-23 13:52:07.690060195 +0200 +@@ -98,7 +98,7 @@ + impl private { + fn ident(&self) -> Ident { + Ident::new( +- concat!("__private", env!("CARGO_PKG_VERSION_PATCH")), ++ "__private_MESON", + Span::call_site(), + ) + } diff --git a/subprojects/serde-1-rs.wrap b/subprojects/serde-1-rs.wrap new file mode 100644 index 00000000000..56746dd0f43 --- /dev/null +++ b/subprojects/serde-1-rs.wrap @@ -0,0 +1,11 @@ +[wrap-file] +directory = serde-1.0.226 +source_url = https://crates.io/api/v1/crates/serde/1.0.226/download +source_filename = serde-1.0.226.0.tar.gz +source_hash = 0dca6411025b24b60bfa7ec1fe1f8e710ac09782dca409ee8237ba74b51295fd +#method = cargo +diff_files = serde-1.0.226-include.patch +patch_directory = serde-1-rs + +# bump this version number on every change to meson.build or the patches: +# v1 diff --git a/subprojects/serde_core-1-rs.wrap b/subprojects/serde_core-1-rs.wrap new file mode 100644 index 00000000000..3692e754935 --- /dev/null +++ b/subprojects/serde_core-1-rs.wrap @@ -0,0 +1,11 @@ +[wrap-file] +directory = serde_core-1.0.226 +source_url = https://crates.io/api/v1/crates/serde_core/1.0.226/download +source_filename = serde_core-1.0.226.0.tar.gz +source_hash = ba2ba63999edb9dac981fb34b3e5c0d111a69b0924e253ed29d83f7c99e966a4 +#method = cargo +diff_files = serde_core-1.0.226-include.patch +patch_directory = serde_core-1-rs + +# bump this version number on every change to meson.build or the patches: +# v1 diff --git a/subprojects/serde_derive-1-rs.wrap b/subprojects/serde_derive-1-rs.wrap new file mode 100644 index 00000000000..00c92dc79cf --- /dev/null +++ b/subprojects/serde_derive-1-rs.wrap @@ -0,0 +1,11 @@ +[wrap-file] +directory = serde_derive-1.0.226 +source_url = https://crates.io/api/v1/crates/serde_derive/1.0.226/download +source_filename = serde_derive-1.0.226.0.tar.gz +source_hash = 8db53ae22f34573731bafa1db20f04027b2d25e02d8205921b569171699cdb33 +#method = cargo +diff_files = serde_derive-1.0.226-include.patch +patch_directory = serde_derive-1-rs + +# bump this version number on every change to meson.build or the patches: +# v1 -- 2.54.0