diff --git a/src/cargo/core/resolver/dep_cache.rs b/src/cargo/core/resolver/dep_cache.rs index ca587920820..aa2bcc8daa3 100644 --- a/src/cargo/core/resolver/dep_cache.rs +++ b/src/cargo/core/resolver/dep_cache.rs @@ -19,6 +19,8 @@ use crate::core::interning::InternedString; use crate::core::{Dependency, FeatureValue, PackageId, PackageIdSpec, Registry, Summary}; use crate::util::errors::{CargoResult, CargoResultExt}; +use crate::core::resolver::context::Context; +use crate::core::resolver::errors::describe_path; use crate::core::resolver::types::{ConflictReason, DepInfo, FeaturesSet}; use crate::core::resolver::{ActivateResult, ResolveOpts}; @@ -197,6 +199,7 @@ impl<'a> RegistryQueryer<'a> { /// next obvious question. pub fn build_deps( &mut self, + cx: &Context, parent: Option<PackageId>, candidate: &Summary, opts: &ResolveOpts, @@ -222,9 +225,10 @@ impl<'a> RegistryQueryer<'a> { .map(|(dep, features)| { let candidates = self.query(&dep).chain_err(|| { anyhow::format_err!( - "failed to get `{}` as a dependency of `{}`", + "failed to get `{}` as a dependency of `{}` ... {}", dep.package_name(), candidate.package_id(), + &describe_path(&cx.parents.path_to_bottom(&candidate.package_id())), ) })?; Ok((dep, candidates, features)) diff --git a/src/cargo/core/resolver/mod.rs b/src/cargo/core/resolver/mod.rs index 7646fc3ac8a..52067d1d2f7 100644 --- a/src/cargo/core/resolver/mod.rs +++ b/src/cargo/core/resolver/mod.rs @@ -656,7 +656,7 @@ fn activate( let now = Instant::now(); let (used_features, deps) = - &*registry.build_deps(parent.map(|p| p.0.package_id()), &candidate, &opts)?; + &*registry.build_deps(&*cx, parent.map(|p| p.0.package_id()), &candidate, &opts)?; // Record what list of features is active for this package. if !used_features.is_empty() {