diff --git a/crate_universe/src/rendering.rs b/crate_universe/src/rendering.rs index be6bcf4da0..2ba013a959 100644 --- a/crate_universe/src/rendering.rs +++ b/crate_universe/src/rendering.rs @@ -209,77 +209,113 @@ impl Renderer { .as_ref() .unwrap_or(&self.config.default_alias_rule); + let is_workspace_member = context.workspace_members.contains_key(&dep.id); if let Some(library_target_name) = &krate.library_target_name { - // Avoid adding the - alias if there are - // more than 1 dependency referencing the same crate at the - // same version, but one of them is aliased. - // - // Without this check we would add duplicate aliases in - // scenarios like the following: - // - // itertools = "0.11.24" - // itertools_other = { version = "0.11.24", package = "itertools" } - // - let add_primary_alias = dep.alias.is_none() - || !context.has_duplicate_workspace_member_dep_by_version(&dep); - - if add_primary_alias { - dependencies.push(Alias { - rule: alias_rule.rule(), - name: format!("{}-{}", krate.name, krate.version), - actual: self.crate_label( - &krate.name, - &krate.version.to_string(), - library_target_name, - ), - tags: BTreeSet::from(["manual".to_owned()]), - }); + // Workspace-member deps have no spoke repo + // (@{index}__-): extensions.bzl skips spoke + // creation when crate["repository"] == None + // (crate_universe/extensions.bzl:722-724). Use + // override_targets[key] when set; skip otherwise to avoid + // emitting dangling alias targets. + let maybe_actual: Option