Open hoodmane opened 6 days ago
Thanks for the report.
It might be improved by using a similar mechanism you pointed out. The relevant code cargo-search handling error resides here and here.
We might want a simpler message for resolver errors, such as
error: no matching package named `ahash` found
location searched: registry `crates-io` (replaced with registry `/path/to/vendor`)
required by package `example v0.1.0 (/home/rchatham/Documents/programming/tmp/cargo-bug)`
Calling SourceId::display_registry_name
should give a good enough descriptive name of the source I believe.
Hi,
I did some research on the issue the used Registry::describe_source in resolver/errors
to get replacement message, and it showed following messages when building cargo-bug.zip
:
error:` no matching package named `ahasha` found
location searched: registry `crates-io`, directory source `/home/todd/Desktop/cargo-bug/vendor` (which is replacing registry `crates-io`)
required by package `example v0.1.0 (/home/todd/Desktop/cargo-bug)`
Since I'm new to both open source and Rust, I'm not sure if this is the right way to approach the issue, and I would greatly appreciate any feedback.
Thanks.
Feel free to claim this issue and submit a pull request!
Personally I lean toward keeping the message concise, and prefer showing the replaced source first. Other may have different preference.
@rustbot claim
I did some research on the issue the used Registry::describe_source in
resolver/errors
to get replacement message, and it showed following messages when buildingcargo-bug.zip
:error:` no matching package named `ahasha` found location searched: registry `crates-io`, directory source `/home/todd/Desktop/cargo-bug/vendor` (which is replacing registry `crates-io`) required by package `example v0.1.0 (/home/todd/Desktop/cargo-bug)`
I just understood what you meant. We already have such a message, so probably we can just apply this a simple fix, and update all test snapshots.
diff --git a/src/cargo/core/resolver/errors.rs b/src/cargo/core/resolver/errors.rs
index 7fbf4e22c0e..64503b9401a 100644
--- a/src/cargo/core/resolver/errors.rs
+++ b/src/cargo/core/resolver/errors.rs
@@ -355,3 +355,6 @@ pub(super) fn activation_error(
}
- msg.push_str(&format!("location searched: {}\n", dep.source_id()));
+ msg.push_str(&format!(
+ "location searched {}\n",
+ registry.describe_source(dep.source_id())
+ ));
msg.push_str("required by ");
Thanks, I'll follow the advice!
Problem
When using a local source via a
replace-with
inconfig.toml
and there is a missing package,cargo build
gives confusing errors saying that it searchedcrates-io
for the package when it only looked in the local file system. The error it gives is identical to the error from an actually missing package:Possible Solution(s)
If you run
cargo seach
it gives much more specific information:It would be great if the original error included this "crates-io is replaced with non-remote-registry source" remark.
Steps
cargo build
in rootAs an alternative, instead of unpacking, make an empty folder, cd into it, make the following files and then do the following shell instructions:
Cargo.toml
.cargo/config.toml
Shell instructions
Then:
Version
cargo 1.84.0-nightly (15fbd2f60 2024-10-08) release: 1.84.0-nightly commit-hash: 15fbd2f607d4defc87053b8b76bf5038f2483cf4 commit-date: 2024-10-08 host: x86_64-unknown-linux-gnu libgit2: 1.8.1 (sys:0.19.0 vendored) libcurl: 8.9.0-DEV (sys:0.4.74+curl-8.9.0 vendored ssl:OpenSSL/1.1.1w) ssl: OpenSSL 1.1.1w 11 Sep 2023 os: Ubuntu 22.4.0 (jammy) [64-bit]