最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

rust - Forcing 2 different versions of a crate when patching - Stack Overflow

programmeradmin3浏览0评论

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.

发布评论

评论列表(0)

  1. 暂无评论