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)); }