mirror of
https://github.com/cargo-bins/cargo-binstall.git
synced 2025-06-15 23:26:36 +00:00
Optimize resolve_inner
: Cache meta override
Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
This commit is contained in:
parent
898796b91d
commit
ebafba4e9b
1 changed files with 20 additions and 20 deletions
|
@ -88,13 +88,23 @@ async fn resolve_inner(
|
||||||
return Ok(Resolution::AlreadyUpToDate);
|
return Ok(Resolution::AlreadyUpToDate);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let meta = package_info
|
||||||
|
.meta
|
||||||
|
.merge_overrides(iter::once(&opts.cli_overrides));
|
||||||
|
|
||||||
let desired_targets = opts
|
let desired_targets = opts
|
||||||
.desired_targets
|
.desired_targets
|
||||||
.get()
|
.get()
|
||||||
.await
|
.await
|
||||||
.iter()
|
.iter()
|
||||||
.map(|target| TargetTriple::from_str(target).map(|triple| (triple, target)))
|
.map(|target| {
|
||||||
.collect::<Result<Vec<_>, _>>()?;
|
Ok((
|
||||||
|
TargetTriple::from_str(target)?,
|
||||||
|
target,
|
||||||
|
meta.merge_overrides(package_info.overrides.get(target)),
|
||||||
|
))
|
||||||
|
})
|
||||||
|
.collect::<Result<Vec<_>, BinstallError>>()?;
|
||||||
let resolvers = &opts.resolvers;
|
let resolvers = &opts.resolvers;
|
||||||
|
|
||||||
let binary_name = match package_info.binaries.as_slice() {
|
let binary_name = match package_info.binaries.as_slice() {
|
||||||
|
@ -119,19 +129,14 @@ async fn resolve_inner(
|
||||||
resolvers
|
resolvers
|
||||||
.iter()
|
.iter()
|
||||||
.cartesian_product(desired_targets.clone().into_iter().map(
|
.cartesian_product(desired_targets.clone().into_iter().map(
|
||||||
|(triple, target)| {
|
|(triple, target, target_meta)| {
|
||||||
debug!("Building metadata for target: {target}");
|
debug!("Building metadata for target: {target}");
|
||||||
|
|
||||||
let target_meta = package_info.meta.merge_overrides(
|
|
||||||
iter::once(&opts.cli_overrides)
|
|
||||||
.chain(package_info.overrides.get(target)),
|
|
||||||
);
|
|
||||||
|
|
||||||
debug!("Found metadata: {target_meta:?}");
|
debug!("Found metadata: {target_meta:?}");
|
||||||
|
|
||||||
Arc::new(TargetData {
|
Arc::new(TargetData {
|
||||||
target: target.clone(),
|
target: target.clone(),
|
||||||
meta: target_meta,
|
meta: target_meta.clone(),
|
||||||
target_related_info: triple,
|
target_related_info: triple,
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
@ -247,15 +252,10 @@ async fn resolve_inner(
|
||||||
return Err(BinstallError::NoFallbackToCargoInstall);
|
return Err(BinstallError::NoFallbackToCargoInstall);
|
||||||
}
|
}
|
||||||
|
|
||||||
let target_meta = if let Some((_, target)) = desired_targets.get(0) {
|
let target_meta = desired_targets
|
||||||
package_info.meta.merge_overrides(
|
.first()
|
||||||
iter::once(&opts.cli_overrides).chain(package_info.overrides.get(*target)),
|
.map(|(_, _, target_meta)| target_meta)
|
||||||
)
|
.unwrap_or(&meta);
|
||||||
} else {
|
|
||||||
package_info
|
|
||||||
.meta
|
|
||||||
.merge_overrides(iter::once(&opts.cli_overrides))
|
|
||||||
};
|
|
||||||
|
|
||||||
if let Some(disabled_strategies) = target_meta.disabled_strategies.as_deref() {
|
if let Some(disabled_strategies) = target_meta.disabled_strategies.as_deref() {
|
||||||
if disabled_strategies.contains(&Strategy::Compile) {
|
if disabled_strategies.contains(&Strategy::Compile) {
|
||||||
|
@ -263,10 +263,10 @@ async fn resolve_inner(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return Ok(Resolution::InstallFromSource(ResolutionSource {
|
Ok(Resolution::InstallFromSource(ResolutionSource {
|
||||||
name: package_info.name,
|
name: package_info.name,
|
||||||
version: package_info.version_str,
|
version: package_info.version_str,
|
||||||
}));
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
/// * `fetcher` - `fetcher.find()` must have returned `Ok(true)`.
|
/// * `fetcher` - `fetcher.find()` must have returned `Ok(true)`.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue