admin管理员组

文章数量:1323023

I want to patch getrandom crate in my workspace, with 0.2.12 version as following:

[patch.crates-io]
getrandom = { git = ".git", rev = "8ffd43e" }

Before trying to patch, my Cargo.lock had the 0.2.15 version of this crate. When I patched it and tried to run cargo update -p getrandom, I encountered a problem:

warning: Patch `getrandom v0.2.12 (.git?rev=8ffd43e#8ffd43e6)` was not used in the crate graph.

When I played around with the Cargo.lock here is what I got eventually:

 ... required by package `libp2p-gossipsub v0.47.0`
    ... which satisfies dependency `libp2p-gossipsub = "^0.47.0"` (locked to 0.47.0) of package `libp2p v0.54.1`
    ... which satisfies dependency `libp2p = "^0.54"` (locked to 0.54.1) of package `my_project v0.1.0 (/path/to/my_project)`
versions that meet the requirements `^0.2.15` are: 0.2.15

As far as I understand, libp2p-gossipsub crate which is imported by the libp2p crate requires 0.2.15 version of getrandom.

How can I resolve this issue? I am OK to having 2 different versions of getrandom in my codebase, and not applying patch to libp2p.

I want to patch getrandom crate in my workspace, with 0.2.12 version as following:

[patch.crates-io]
getrandom = { git = "https://github/madsim-rs/getrandom.git", rev = "8ffd43e" }

Before trying to patch, my Cargo.lock had the 0.2.15 version of this crate. When I patched it and tried to run cargo update -p getrandom, I encountered a problem:

warning: Patch `getrandom v0.2.12 (https://github/madsim-rs/getrandom.git?rev=8ffd43e#8ffd43e6)` was not used in the crate graph.

When I played around with the Cargo.lock here is what I got eventually:

 ... required by package `libp2p-gossipsub v0.47.0`
    ... which satisfies dependency `libp2p-gossipsub = "^0.47.0"` (locked to 0.47.0) of package `libp2p v0.54.1`
    ... which satisfies dependency `libp2p = "^0.54"` (locked to 0.54.1) of package `my_project v0.1.0 (/path/to/my_project)`
versions that meet the requirements `^0.2.15` are: 0.2.15

As far as I understand, libp2p-gossipsub crate which is imported by the libp2p crate requires 0.2.15 version of getrandom.

How can I resolve this issue? I am OK to having 2 different versions of getrandom in my codebase, and not applying patch to libp2p.

Share Improve this question asked Jan 15 at 0:42 Ahmet YazıcıAhmet Yazıcı 7446 silver badges19 bronze badges 2
  • What's else depends on getrandom other than libp2p? Do you have getrandom in the [dependencies] section? – aedm Commented Jan 15 at 13:01
  • @aedm I have sub-dependencies of libp2p that uses getrandom, e.g. quinn-proto. But as an individual as far as I can see it is only rand_core and libp2p. – Ahmet Yazıcı Commented Jan 18 at 18:23
Add a comment  | 

1 Answer 1

Reset to default 3

I want to patch getrandom crate in my workspace, with 0.2.12 version as following: …

Before trying to patch, my Cargo.lock had the 0.2.15 version of this crate.

libp2p-gossipsub crate which is imported by the libp2p crate requires 0.2.15 version of getrandom.

In this situation, you must provide patched code which claims in its Cargo.toml to be version 0.2.15 or newer. There is no way to override Cargo in this matter.

I am OK to having 2 different versions of getrandom in my codebase

There is no way to override Cargo’s one-major-version policy, either; in order to add a different minor version you must give it a different package name.

本文标签: rustForcing 2 different versions of a crate when patchingStack Overflow