in crate_universe/src/renderer.rs [54:166]
fn get_per_triple_metadata(
package: &CrateContext,
) -> BTreeMap<PlatformLabel, CrateTargetedDepContext> {
let mut per_triple_metadata: BTreeMap<PlatformLabel, CrateTargetedDepContext> = BTreeMap::new();
// Always add a catch-all to cover the non-targeted dep case.
// We merge in the default_deps after the next loop.
per_triple_metadata.insert(
PlatformLabel::default(),
CrateTargetedDepContext {
target: "Default".to_owned(),
deps: empty_deps_context(),
platform_targets: vec!["//conditions:default".to_owned()],
},
);
for dep_context in &package.targeted_deps {
dep_context
.platform_targets
.iter()
.for_each(|platform_bazel_triple| {
let targeted_dep_ctx = per_triple_metadata
.entry(PlatformLabel::from_bazel_triple(platform_bazel_triple))
.or_insert(CrateTargetedDepContext {
target: "".to_owned(),
deps: empty_deps_context(),
platform_targets: vec![platform_bazel_triple.clone()],
});
// Mention all the targets that translated into the current condition (ie. current triplet).
targeted_dep_ctx
.target
.push_str(&format!(" {}", &dep_context.target));
targeted_dep_ctx
.deps
.dependencies
.extend(dep_context.deps.dependencies.iter().cloned());
targeted_dep_ctx
.deps
.proc_macro_dependencies
.extend(dep_context.deps.proc_macro_dependencies.iter().cloned());
targeted_dep_ctx
.deps
.data_dependencies
.extend(dep_context.deps.data_dependencies.iter().cloned());
targeted_dep_ctx
.deps
.build_dependencies
.extend(dep_context.deps.build_dependencies.iter().cloned());
targeted_dep_ctx.deps.build_proc_macro_dependencies.extend(
dep_context
.deps
.build_proc_macro_dependencies
.iter()
.cloned(),
);
targeted_dep_ctx
.deps
.build_data_dependencies
.extend(dep_context.deps.build_data_dependencies.iter().cloned());
targeted_dep_ctx
.deps
.dev_dependencies
.extend(dep_context.deps.dev_dependencies.iter().cloned());
targeted_dep_ctx.deps.aliased_dependencies.extend(
dep_context
.deps
.aliased_dependencies
.iter()
.map(|(k, v)| (k.clone(), v.clone())),
);
});
}
// Now also add the non-targeted deps to each target.
for ctx in per_triple_metadata.values_mut() {
ctx.deps
.dependencies
.extend(package.default_deps.dependencies.iter().cloned());
ctx.deps
.proc_macro_dependencies
.extend(package.default_deps.proc_macro_dependencies.iter().cloned());
ctx.deps
.data_dependencies
.extend(package.default_deps.data_dependencies.iter().cloned());
ctx.deps
.build_dependencies
.extend(package.default_deps.build_dependencies.iter().cloned());
ctx.deps.build_proc_macro_dependencies.extend(
package
.default_deps
.build_proc_macro_dependencies
.iter()
.cloned(),
);
ctx.deps
.build_data_dependencies
.extend(package.default_deps.build_data_dependencies.iter().cloned());
ctx.deps
.dev_dependencies
.extend(package.default_deps.dev_dependencies.iter().cloned());
ctx.deps.aliased_dependencies.extend(
package
.default_deps
.aliased_dependencies
.iter()
.map(|(k, v)| (k.clone(), v.clone())),
);
}
per_triple_metadata
}