Bzlmod: Add the workspace name to the main repo mapping
See GH issue for more info.
Fixes https://github.com/bazelbuild/bazel/issues/15657.
PiperOrigin-RevId: 454605374
Change-Id: I240a6f6e36893c1f977a34684fdc54621532bd02
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RepositoryMappingFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/RepositoryMappingFunction.java
index 8700ce9..136a99f 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/RepositoryMappingFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/RepositoryMappingFunction.java
@@ -97,6 +97,12 @@
return RepositoryMappingValue.withMapping(
computeForBazelModuleRepo(repositoryName, bazelModuleResolutionValue)
.get()
+ // We need to map the workspace name to the main repo (without this, it would map to
+ // itself, which is a local_repository with path="." -- this is very problematic).
+ // See https://github.com/bazelbuild/bazel/issues/15657 for more info.
+ .withAdditionalMappings(
+ ImmutableMap.of(
+ externalPackageValue.getPackage().getWorkspaceName(), RepositoryName.MAIN))
.withAdditionalMappings(additionalMappings));
}
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/RepositoryMappingFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/RepositoryMappingFunctionTest.java
index 381eb64..c29258d 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/RepositoryMappingFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/RepositoryMappingFunctionTest.java
@@ -166,9 +166,14 @@
.isEqualTo(
withMappingForRootModule(
ImmutableMap.of(
- "", RepositoryName.create(""),
- "A", RepositoryName.create(""),
- "com_foo_bar_b", RepositoryName.create("@B.1.0")),
+ "",
+ RepositoryName.MAIN,
+ "A",
+ RepositoryName.MAIN,
+ TestConstants.WORKSPACE_NAME,
+ RepositoryName.MAIN,
+ "com_foo_bar_b",
+ RepositoryName.create("@B.1.0")),
name));
}
@@ -248,10 +253,16 @@
.isEqualTo(
withMappingForRootModule(
ImmutableMap.of(
- "", RepositoryName.create(""),
- "A", RepositoryName.create(""),
- "B1", RepositoryName.create("@B.1.0"),
- "B2", RepositoryName.create("@B.2.0")),
+ "",
+ RepositoryName.MAIN,
+ "A",
+ RepositoryName.MAIN,
+ TestConstants.WORKSPACE_NAME,
+ RepositoryName.MAIN,
+ "B1",
+ RepositoryName.create("@B.1.0"),
+ "B2",
+ RepositoryName.create("@B.2.0")),
name));
}
@@ -457,7 +468,7 @@
"", RepositoryName.MAIN,
"A", RepositoryName.MAIN,
"B", RepositoryName.create("@B.1.0"),
- "root", RepositoryName.create("root"),
+ "root", RepositoryName.MAIN,
"ws_repo", RepositoryName.create("ws_repo")),
RepositoryName.MAIN));
}