crate_universe: move build-script dep to extra_deps (#4090)

Fixes #4089.

A crate with a build script depends on its own `build_script_build`
target. That edge was stored in `common_attrs.deps`, which
`Context::workspace_member_deps()` collects to emit crate-hub aliases —
so a library crate with a build script got a dead crate-hub alias for
itself.

Store the edge in `common_attrs.extra_deps` instead:
`workspace_member_deps()` does not read `extra_deps`, so the
self-reference no longer yields an alias. (`extra_deps` holds resolved
labels, so the edge becomes a relative `:build_script_build` — same
target, same package.)

Co-authored-by: UebelAndre <github@uebelandre.com>
diff --git a/crate_universe/src/context.rs b/crate_universe/src/context.rs
index 2c2ec03..de5225b 100644
--- a/crate_universe/src/context.rs
+++ b/crate_universe/src/context.rs
@@ -412,7 +412,6 @@
                 .map(|dep| (&dep.id, context.has_duplicate_workspace_member_dep_by_alias(dep)))
                 .collect::<Vec<_>>(),
             [
-                (&CrateId::new("child".to_owned(), Version::new(0, 1, 0)), false),
                 (&CrateId::new("tonic".to_owned(), Version::new(0, 4, 3)), false),
                 (&CrateId::new("tonic-build".to_owned(), Version::new(0, 4, 2)), false),
             ],
diff --git a/crate_universe/src/context/crate_context.rs b/crate_universe/src/context/crate_context.rs
index 97eeee3..f76b20a 100644
--- a/crate_universe/src/context/crate_context.rs
+++ b/crate_universe/src/context/crate_context.rs
@@ -1,6 +1,7 @@
 //! Crate specific information embedded into [crate::context::Context] objects.
 
 use std::collections::{BTreeMap, BTreeSet};
+use std::str::FromStr;
 
 use camino::Utf8PathBuf;
 use cargo_metadata::{Node, Package, PackageId};
@@ -504,16 +505,8 @@
 
         let build_script_attrs = if let Some(target) = build_script_target {
             // Track the build script dependency
-            common_attrs.deps.insert(
-                CrateDependency {
-                    id: current_crate_id,
-                    target: target.crate_name.clone(),
-                    alias: None,
-                    local_path: match source_annotations.get(&annotation.node.id) {
-                        Some(SourceAnnotation::Path { path }) => Some(path.clone()),
-                        _ => None,
-                    },
-                },
+            common_attrs.extra_deps.insert(
+                Label::from_str(&format!(":{}", target.crate_name)).unwrap(),
                 None,
             );