Исправление версии временных зависимостей Rust

Я пытаюсь исправить проблему с зависимостями в Rust/Cargo. У меня есть зависимость ctclib-pp, которая, в свою очередь, зависит от ctclib-kenlm-sys, которая, наконец, зависит от bindgen ^0.59.2. Однако из соображений совместимости мне нужно использовать версию 0.60.1 или выше (из-за этого).

Я попробовал внести следующие изменения в свой Cargo.toml, но, похоже, это не сработало, поскольку при этом обе версии устанавливаются рядом друг с другом.

[dependencies]
ctclib-pp = "0.2.0"

[patch.crates-io]
bindgen = { git = "https://github.com/rust-lang/rust-bindgen", tag = "v0.60.1" }

Когда я запускаю cargo update, я получаю следующее уведомление:

warning: Patch `bindgen v0.60.1 (https://github.com/rust-lang/rust-bindgen?tag=v0.60.1#9ca5f856)` was not used in the crate graph.
Check that the patched package version and available features are compatible
with the dependency requirements. If the patch has a different version from
what is locked in the Cargo.lock file, run `cargo update` to use the new
version. This may also occur with an optional dependency that is not enabled.

и файл блокировки теперь содержит неиспользуемый патч

[[patch.unused]]
name = "bindgen"
version = "0.60.1"
source = "git+https://github.com/rust-lang/rust-bindgen?tag=v0.60.1#9ca5f856a35deddde0575002d76d1db4430e6c42"

Любые предложения о том, как переопределить подзависимость?

Просто обратите внимание, что 0.59 и 0.60 совершенно несовместимы в том смысле, в каком это определяет груз.

cafce25 11.06.2024 17:08
Почему Python в конце концов умрет
Почему Python в конце концов умрет
Последние 20 лет были действительно хорошими для Python. Он прошел путь от "просто языка сценариев" до основного языка, используемого для написания...
0
1
72
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вам нужно будет исправить зависимость от bindgen, т. е. ctclib-pp. Скопируйте его и (при условии, что все скомпилируется только с этой модификацией) измените версию bindgen, от которой это зависит. Затем укажите это в своем [patch.crates-io].

Извините, я новичок в Cargo. Можете ли вы указать в коде, что вы имеете в виду? Чтобы еще раз уточнить: мне требуется ctclib-pp , который зависит от ctclib-kenlm-sys, который, наконец, зависит от bindgen ^0.59.2. Я хочу переопределить последний на 0.60.1.

Bram Vanroy 11.06.2024 17:14

@BramVanroy Затем исправьте ctclib-kenlm-sys (но, возможно, решение @kmdreko лучше).

Chayim Friedman 12.06.2024 20:08
Ответ принят как подходящий

Вы можете создать форк репозиторияbindgen с версией 0.60.1, отредактировать версию пакета в Cargo.toml до 0.59.2 и использовать ее в разделе [patch].

То есть, по сути, подделка номера версии? Это кажется опасным. Я надеюсь, что есть и другие варианты.

Bram Vanroy 11.06.2024 20:39

@BramVanroy «Это кажется опасным». Какую опасность вы представляете, которая еще не была очевидна из-за принуждения крейта использовать версию зависимостей, для которой он не был разработан?

kmdreko 11.06.2024 20:53

Это справедливо, спасибо.

Bram Vanroy 13.06.2024 09:50

Другие вопросы по теме