in crate_universe/src/consolidator.rs [115:191]
fn extra_deps_as_targeted_deps<I>(
target_triples_filter: &BTreeSet<String>,
extra_bazel_deps: I,
extra_bazel_data_deps: I,
extra_build_script_bazel_deps: I,
extra_build_script_bazel_data_deps: I,
) -> Vec<CrateTargetedDepContext>
where
I: IntoIterator<Item = (String, Vec<String>)>,
{
let mut crate_targeted_dep_contexts: BTreeMap<String, CrateTargetedDepContext> =
Default::default();
let into_buildable_dependency = |dep: &String| BuildableDependency {
name: "".to_string(),
version: Version::new(0, 0, 0),
buildable_target: dep.clone(),
is_proc_macro: false,
};
extra_bazel_deps.into_iter().for_each(|(target, deps)| {
let targeted_dep_context = crate_targeted_dep_contexts
.entry(target.clone())
.or_insert_with(|| Self::targeted_dep_context_for(&target, target_triples_filter));
targeted_dep_context
.deps
.dependencies
.extend(deps.iter().map(into_buildable_dependency));
});
extra_bazel_data_deps
.into_iter()
.for_each(|(target, deps)| {
let targeted_dep_context = crate_targeted_dep_contexts
.entry(target.clone())
.or_insert_with(|| {
Self::targeted_dep_context_for(&target, target_triples_filter)
});
targeted_dep_context
.deps
.data_dependencies
.extend(deps.iter().map(into_buildable_dependency));
});
extra_build_script_bazel_deps
.into_iter()
.for_each(|(target, deps)| {
let targeted_dep_context = crate_targeted_dep_contexts
.entry(target.clone())
.or_insert_with(|| {
Self::targeted_dep_context_for(&target, target_triples_filter)
});
targeted_dep_context
.deps
.build_dependencies
.extend(deps.iter().map(into_buildable_dependency));
});
extra_build_script_bazel_data_deps
.into_iter()
.for_each(|(target, deps)| {
let targeted_dep_context = crate_targeted_dep_contexts
.entry(target.clone())
.or_insert_with(|| {
Self::targeted_dep_context_for(&target, target_triples_filter)
});
targeted_dep_context
.deps
.build_data_dependencies
.extend(deps.iter().map(into_buildable_dependency));
});
crate_targeted_dep_contexts
.into_iter()
.sorted()
.map(|(_, targeted_dep_context)| targeted_dep_context)
.collect()
}