Message ID | 20250218182019.111467-6-kwolf@redhat.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | rust/block: Add minimal block driver bindings | expand |
> diff --git a/rust/block/Cargo.toml b/rust/block/Cargo.toml > new file mode 100644 > index 0000000000..fbc2f2d6ef > --- /dev/null > +++ b/rust/block/Cargo.toml > @@ -0,0 +1,16 @@ > +[package] > +name = "block" > +version = "0.1.0" > +edition = "2021" > +authors = ["Kevin Wolf <kwolf@redhat.com>"] > +license = "GPL-2.0-or-later" > +readme = "README.md" > +description = "Block backends for QEMU" > +repository = "https://gitlab.com/qemu-project/qemu/" > +publish = false > +keywords = [] > +categories = [] Per the commit f26137893b98 ("rust: remove unnecessary Cargo.toml metadata"), readme & repository are not necessary. :-) And rust-version is needed (since the commit 669fab6a1f3e). > +[dependencies] > +qemu_api = { path = "../qemu-api" } > +libc = "0.2.162" I think it's necessary add the lints section to apply workspace's lint configurations: [lints] workspace = true > diff --git a/rust/block/README.md b/rust/block/README.md > new file mode 100644 > index 0000000000..debcc9d815 > --- /dev/null > +++ b/rust/block/README.md > @@ -0,0 +1,3 @@ > +# QEMU block backends > + > +This library implements block drivers for QEMU. And doc can be updated in docs/devel/rust.rst, like Paolo's patch: https://lore.kernel.org/qemu-devel/20250218080455.426383-1-pbonzini@redhat.com/ > diff --git a/rust/block/meson.build b/rust/block/meson.build > new file mode 100644 > index 0000000000..ca93afd939 > --- /dev/null > +++ b/rust/block/meson.build > @@ -0,0 +1,20 @@ > +_block_rs = static_library( > + 'block', > + files('src/lib.rs'), > + override_options: ['rust_std=2021', 'build.rust_std=2021'], > + rust_abi: 'rust', > + dependencies: [ > + qemu_api_tools, > + qemu_api_macros, I'm unsure without testing, the dependencies here looks different with the Cargo.toml? Regards, Zhao
diff --git a/MAINTAINERS b/MAINTAINERS index 3848d37a38..97cc04ae32 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2874,6 +2874,7 @@ S: Supported F: block* F: block/ F: hw/block/ +F: rust/block/ F: qapi/block*.json F: qapi/transaction.json F: include/block/ diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 2ebf0a11ea..a2525052dd 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -31,6 +31,14 @@ dependencies = [ "syn", ] +[[package]] +name = "block" +version = "0.1.0" +dependencies = [ + "libc", + "qemu_api", +] + [[package]] name = "either" version = "1.12.0" diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 5041d6291f..2135273dfb 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -3,6 +3,7 @@ resolver = "2" members = [ "qemu-api-macros", "qemu-api", + "block", "hw/char/pl011", "hw/timer/hpet", ] diff --git a/rust/block/Cargo.toml b/rust/block/Cargo.toml new file mode 100644 index 0000000000..fbc2f2d6ef --- /dev/null +++ b/rust/block/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "block" +version = "0.1.0" +edition = "2021" +authors = ["Kevin Wolf <kwolf@redhat.com>"] +license = "GPL-2.0-or-later" +readme = "README.md" +description = "Block backends for QEMU" +repository = "https://gitlab.com/qemu-project/qemu/" +publish = false +keywords = [] +categories = [] + +[dependencies] +qemu_api = { path = "../qemu-api" } +libc = "0.2.162" diff --git a/rust/block/README.md b/rust/block/README.md new file mode 100644 index 0000000000..debcc9d815 --- /dev/null +++ b/rust/block/README.md @@ -0,0 +1,3 @@ +# QEMU block backends + +This library implements block drivers for QEMU. diff --git a/rust/block/meson.build b/rust/block/meson.build new file mode 100644 index 0000000000..ca93afd939 --- /dev/null +++ b/rust/block/meson.build @@ -0,0 +1,20 @@ +_block_rs = static_library( + 'block', + files('src/lib.rs'), + override_options: ['rust_std=2021', 'build.rust_std=2021'], + rust_abi: 'rust', + dependencies: [ + qemu_api_tools, + qemu_api_macros, + libc_dep, + ], + rust_dependency_map: {'qemu_api_tools': 'qemu_api'}, +) + +rust_block_ss.add(if_true: [declare_dependency( + link_whole: [_block_rs], + # Putting proc macro crates in `dependencies` is necessary for Meson to find + # them when compiling the root per-target static rust lib. + dependencies: [qemu_api_macros], + variables: {'crate': 'block'}, +)]) diff --git a/rust/block/src/lib.rs b/rust/block/src/lib.rs new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/rust/block/src/lib.rs @@ -0,0 +1 @@ + diff --git a/rust/meson.build b/rust/meson.build index 50eb23b072..d959809fda 100644 --- a/rust/meson.build +++ b/rust/meson.build @@ -1,6 +1,7 @@ subdir('qemu-api-macros') subdir('qemu-api') +subdir('block') subdir('hw') cargo = find_program('cargo', required: false)
Signed-off-by: Kevin Wolf <kwolf@redhat.com> --- MAINTAINERS | 1 + rust/Cargo.lock | 8 ++++++++ rust/Cargo.toml | 1 + rust/block/Cargo.toml | 16 ++++++++++++++++ rust/block/README.md | 3 +++ rust/block/meson.build | 20 ++++++++++++++++++++ rust/block/src/lib.rs | 1 + rust/meson.build | 1 + 8 files changed, 51 insertions(+) create mode 100644 rust/block/Cargo.toml create mode 100644 rust/block/README.md create mode 100644 rust/block/meson.build create mode 100644 rust/block/src/lib.rs