[PATCH v2 06/14] rust: synchronize dependencies between subprojects and Cargo.lock

Paolo Bonzini posted 14 patches 1 year, 3 months ago
There is a newer version of this series
[PATCH v2 06/14] rust: synchronize dependencies between subprojects and Cargo.lock
Posted by Paolo Bonzini 1 year, 3 months ago
The next commit will introduce a new build dependency for rust/qemu-api,
version_check.  Before adding it, ensure that all dependencies are
synchronized between the Meson- and cargo-based build systems.

Note that it's not clear whether in the long term we'll use Cargo for
anything; it seems that the three main uses (clippy, rustfmt, rustdoc)
can all be invoked manually---either via glue code in QEMU, or by
extending Meson to gain the relevant functionality.  However, for
the time being we're stuck with Cargo so it should at least look at
the same code as the rest of the build system.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 rust/hw/char/pl011/Cargo.lock   |  5 +++-
 rust/qemu-api-macros/Cargo.lock | 11 ++++----
 rust/qemu-api/Cargo.lock        | 49 ++++++++++++++++++++++++++++++++-
 rust/qemu-api/Cargo.toml        |  1 +
 4 files changed, 59 insertions(+), 7 deletions(-)

diff --git a/rust/hw/char/pl011/Cargo.lock b/rust/hw/char/pl011/Cargo.lock
index b58cebb186e..82028ddf793 100644
--- a/rust/hw/char/pl011/Cargo.lock
+++ b/rust/hw/char/pl011/Cargo.lock
@@ -1,6 +1,6 @@
 # This file is automatically @generated by Cargo.
 # It is not intended for manual editing.
-version = 3
+version = 4
 
 [[package]]
 name = "arbitrary-int"
@@ -91,6 +91,9 @@ dependencies = [
 [[package]]
 name = "qemu_api"
 version = "0.1.0"
+dependencies = [
+ "qemu_api_macros",
+]
 
 [[package]]
 name = "qemu_api_macros"
diff --git a/rust/qemu-api-macros/Cargo.lock b/rust/qemu-api-macros/Cargo.lock
index fdc0fce116c..779b0ac6a25 100644
--- a/rust/qemu-api-macros/Cargo.lock
+++ b/rust/qemu-api-macros/Cargo.lock
@@ -1,12 +1,12 @@
 # This file is automatically @generated by Cargo.
 # It is not intended for manual editing.
-version = 3
+version = 4
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.86"
+version = "1.0.84"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
+checksum = "ec96c6a92621310b51366f1e28d05ef11489516e93be030060e5fc12024a49d6"
 dependencies = [
  "unicode-ident",
 ]
@@ -18,6 +18,7 @@ dependencies = [
  "proc-macro2",
  "quote",
  "syn",
+ "unicode-ident",
 ]
 
 [[package]]
@@ -31,9 +32,9 @@ dependencies = [
 
 [[package]]
 name = "syn"
-version = "2.0.72"
+version = "2.0.66"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af"
+checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5"
 dependencies = [
  "proc-macro2",
  "quote",
diff --git a/rust/qemu-api/Cargo.lock b/rust/qemu-api/Cargo.lock
index e9c51a243a8..468293feedd 100644
--- a/rust/qemu-api/Cargo.lock
+++ b/rust/qemu-api/Cargo.lock
@@ -1,7 +1,54 @@
 # This file is automatically @generated by Cargo.
 # It is not intended for manual editing.
-version = 3
+version = 4
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.84"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec96c6a92621310b51366f1e28d05ef11489516e93be030060e5fc12024a49d6"
+dependencies = [
+ "unicode-ident",
+]
 
 [[package]]
 name = "qemu_api"
 version = "0.1.0"
+dependencies = [
+ "qemu_api_macros",
+]
+
+[[package]]
+name = "qemu_api_macros"
+version = "0.1.0"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.36"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.66"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
diff --git a/rust/qemu-api/Cargo.toml b/rust/qemu-api/Cargo.toml
index 3677def3fe2..db594c64083 100644
--- a/rust/qemu-api/Cargo.toml
+++ b/rust/qemu-api/Cargo.toml
@@ -14,6 +14,7 @@ keywords = []
 categories = []
 
 [dependencies]
+qemu_api_macros = { path = "../qemu-api-macros" }
 
 [features]
 default = []
-- 
2.46.2
Re: [PATCH v2 06/14] rust: synchronize dependencies between subprojects and Cargo.lock
Posted by Junjie Mao 1 year, 3 months ago
Paolo Bonzini <pbonzini@redhat.com> writes:

> The next commit will introduce a new build dependency for rust/qemu-api,
> version_check.  Before adding it, ensure that all dependencies are
> synchronized between the Meson- and cargo-based build systems.
>
> Note that it's not clear whether in the long term we'll use Cargo for
> anything; it seems that the three main uses (clippy, rustfmt, rustdoc)

Here's a fourth use case: "cargo expand" for debugging Rust macros.

> can all be invoked manually---either via glue code in QEMU, or by
> extending Meson to gain the relevant functionality.  However, for
> the time being we're stuck with Cargo so it should at least look at
> the same code as the rest of the build system.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  rust/hw/char/pl011/Cargo.lock   |  5 +++-
>  rust/qemu-api-macros/Cargo.lock | 11 ++++----
>  rust/qemu-api/Cargo.lock        | 49 ++++++++++++++++++++++++++++++++-
>  rust/qemu-api/Cargo.toml        |  1 +
>  4 files changed, 59 insertions(+), 7 deletions(-)
>
> diff --git a/rust/hw/char/pl011/Cargo.lock b/rust/hw/char/pl011/Cargo.lock
> index b58cebb186e..82028ddf793 100644
> --- a/rust/hw/char/pl011/Cargo.lock
> +++ b/rust/hw/char/pl011/Cargo.lock
> @@ -1,6 +1,6 @@
>  # This file is automatically @generated by Cargo.
>  # It is not intended for manual editing.
> -version = 3
> +version = 4

V4 was introduced in Rust 1.78. Should we stick to V3 as the MSRV is 1.63.0?

>
>  [[package]]
>  name = "arbitrary-int"
> @@ -91,6 +91,9 @@ dependencies = [
>  [[package]]
>  name = "qemu_api"
>  version = "0.1.0"
> +dependencies = [
> + "qemu_api_macros",
> +]

I would suggest adding those dependencies and version constraints in
Cargo.toml, not Cargo.lock. Future devices in Rust will have their
Cargo.lock derived from Cargo.toml of qemu-api and qemu-api-macro, so
missing version info there will force device writers to manually tweak
their Cargo.lock.

--
Best Regards
Junjie Mao
Re: [PATCH v2 06/14] rust: synchronize dependencies between subprojects and Cargo.lock
Posted by Paolo Bonzini 1 year, 3 months ago
On Thu, Oct 24, 2024 at 5:01 AM Junjie Mao <junjie.mao@hotmail.com> wrote:
>
>
> Paolo Bonzini <pbonzini@redhat.com> writes:
>
> > The next commit will introduce a new build dependency for rust/qemu-api,
> > version_check.  Before adding it, ensure that all dependencies are
> > synchronized between the Meson- and cargo-based build systems.
> >
> > Note that it's not clear whether in the long term we'll use Cargo for
> > anything; it seems that the three main uses (clippy, rustfmt, rustdoc)
>
> Here's a fourth use case: "cargo expand" for debugging Rust macros.
>
> > can all be invoked manually---either via glue code in QEMU, or by
> > extending Meson to gain the relevant functionality.  However, for
> > the time being we're stuck with Cargo so it should at least look at
> > the same code as the rest of the build system.
> >
> > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> > ---
> >  rust/hw/char/pl011/Cargo.lock   |  5 +++-
> >  rust/qemu-api-macros/Cargo.lock | 11 ++++----
> >  rust/qemu-api/Cargo.lock        | 49 ++++++++++++++++++++++++++++++++-
> >  rust/qemu-api/Cargo.toml        |  1 +
> >  4 files changed, 59 insertions(+), 7 deletions(-)
> >
> > diff --git a/rust/hw/char/pl011/Cargo.lock b/rust/hw/char/pl011/Cargo.lock
> > index b58cebb186e..82028ddf793 100644
> > --- a/rust/hw/char/pl011/Cargo.lock
> > +++ b/rust/hw/char/pl011/Cargo.lock
> > @@ -1,6 +1,6 @@
> >  # This file is automatically @generated by Cargo.
> >  # It is not intended for manual editing.
> > -version = 3
> > +version = 4
>
> V4 was introduced in Rust 1.78. Should we stick to V3 as the MSRV is 1.63.0?

Good point.

> I would suggest adding those dependencies and version constraints in
> Cargo.toml, not Cargo.lock. Future devices in Rust will have their
> Cargo.lock derived from Cargo.toml of qemu-api and qemu-api-macro, so
> missing version info there will force device writers to manually tweak
> their Cargo.lock.

Ok, will do.

Paolo