paritytech / paritytech/try-runtime-cli
Error with latest `polkadot-sdk/master` (two incompatible versions of `rocksdb` are pulled in)
オープン
まだ誰も着手していません。
- 主要言語
- Rust
- スター
- 25
- フォーク
- 29
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
Using try-runtime-cli with the current polkadot-sdk/master fails. I'm using fea33a, but it's not a temporary problem of that commit; it's just the latest commit.
You can reproduce by adding try-runtime-cli = { version = "0.42.0" } to the deps of staging-node-cli. The build will fail. An easier way to check is like this:
$ cargo tree -i rocksdb
Updating crates.io index
error: failed to select a version for `librocksdb-sys`.
... required by package `rocksdb v0.21.0`
... which satisfies dependency `rocksdb = "^0.21"` of package `kvdb-rocksdb v0.19.0`
... which satisfies dependency `kvdb-rocksdb = "^0.19.0"` of package `sc-client-db v0.39.0`
... which satisfies dependency `sc-client-db = "^0.39.0"` of package `sc-cli v0.40.0`
... which satisfies dependency `sc-cli = "^0.40.0"` of package `try-runtime-cli v0.42.0`
... which satisfies dependency `try-runtime-cli = "^0.42.0"` of package `staging-node-cli v3.0.0-dev (/Users/michi/projects/polkadot-sdk/substrate/bin/node/cli)`
... which satisfies path dependency `node-cli` (locked to 3.0.0-dev) of package `polkadot-sdk-docs v0.0.1 (/Users/michi/projects/polkadot-sdk/docs/sdk)`
versions that meet the requirements `^0.11.0` are: 0.11.0+8.1.1
package `librocksdb-sys` links to the native library `rocksdb`, but it conflicts with a previous package which links to `rocksdb` as well:
package `librocksdb-sys v0.17.3+10.4.2`
... which satisfies dependency `librocksdb-sys = "^0.17.3"` of package `rocksdb v0.24.0`
... which satisfies dependency `rocksdb = "^0.24.0"` of package `kvdb-rocksdb v0.20.0`
... which satisfies dependency `kvdb-rocksdb = "^0.20.0"` of package `node-bench v0.9.0-dev (/Users/michi/projects/polkadot-sdk/substrate/bin/node/bench)`
Only one package in the dependency graph may specify the same links value. This helps ensure that only one copy of a native library is linked in the final binary. Try to adjust your dependencies so that only one package uses the `links = "rocksdb"` value. For more information, see https://doc.rust-lang.org/cargo/reference/resolver.html#links.
failed to select a version for `librocksdb-sys` which could resolve this conflict
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
substrate/bin/node/cli/Cargo.toml から始め、try-runtime-cli = { version = "0.42.0" } を追加して失敗を再現します。cargo tree -i rocksdb を実行し、競合している kvdb-rocksdb と librocksdb-sys の依存関係パスを調査します。staging-node-cli の依存関係グラフが native rocksdb links の競合なしに解決されれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- rust
- 領域
- build-system, databases
- issue の種類
- バグ
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 活発さ
- 停滞
- 明瞭さ
- 説明が足りない
- 初心者へのやさしさ
- 25/100