From 62be9ea29295fab5289bd5d1a0f13dc7d55a8bc0 Mon Sep 17 00:00:00 2001 From: Fabian Meumertzheim Date: Tue, 5 Jul 2022 17:10:07 +0200 Subject: [PATCH] Bzlmod: Better canonical repo names for modules with overrides (#15793) (https://github.com/bazelbuild/bazel/issues/13316) Use "foo.override" instead of just "foo" as the canonical repo name for the module "foo" when it has a non-registry override. Context: https://groups.google.com/a/bazel.build/g/external-deps/c/GcV1cpRd-Ls/m/o446O3vGAAAJ PiperOrigin-RevId: 423049588 Co-authored-by: wyv --- .../google/devtools/build/lib/bazel/bzlmod/ModuleKey.java | 5 ++++- .../lib/bazel/bzlmod/BazelModuleResolutionFunctionTest.java | 2 +- .../build/lib/bazel/bzlmod/BzlmodRepoRuleHelperTest.java | 6 +++--- .../build/lib/bazel/bzlmod/ModuleFileFunctionTest.java | 2 +- .../build/lib/bazel/bzlmod/StarlarkBazelModuleTest.java | 2 +- 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleKey.java b/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleKey.java index 725bb81f078d48..9dd60dc908a59e 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleKey.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleKey.java @@ -62,8 +62,11 @@ public String getCanonicalRepoName() { if (WELL_KNOWN_MODULES.containsKey(getName())) { return WELL_KNOWN_MODULES.get(getName()); } + if (ROOT.equals(this)) { + return ""; + } if (getVersion().isEmpty()) { - return getName(); + return getName() + ".override"; } return getName() + "." + getVersion(); } diff --git a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BazelModuleResolutionFunctionTest.java b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BazelModuleResolutionFunctionTest.java index 0901a85ca0c082..a6ee5cf6d8668d 100644 --- a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BazelModuleResolutionFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BazelModuleResolutionFunctionTest.java @@ -94,7 +94,7 @@ public void createValue_basic() throws Exception { "dep.1.0", createModuleKey("dep", "1.0"), "dep.2.0", createModuleKey("dep", "2.0"), "rules_cc.1.0", createModuleKey("rules_cc", "1.0"), - "rules_java", createModuleKey("rules_java", "")); + "rules_java.override", createModuleKey("rules_java", "")); assertThat(value.getModuleNameLookup()) .containsExactly( "rules_cc", createModuleKey("rules_cc", "1.0"), diff --git a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BzlmodRepoRuleHelperTest.java b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BzlmodRepoRuleHelperTest.java index d8fcf569b0be48..6b1b279d7ec192 100644 --- a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BzlmodRepoRuleHelperTest.java +++ b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/BzlmodRepoRuleHelperTest.java @@ -176,19 +176,19 @@ public void getRepoSpec_nonRegistryOverride() throws Exception { ModuleFileFunction.REGISTRIES.set(differencer, ImmutableList.of(registry.getUrl())); EvaluationResult result = - driver.evaluate(ImmutableList.of(getRepoSpecByNameKey("C")), evaluationContext); + driver.evaluate(ImmutableList.of(getRepoSpecByNameKey("C.override")), evaluationContext); if (result.hasError()) { fail(result.getError().toString()); } - Optional repoSpec = result.get(getRepoSpecByNameKey("C")).rule(); + Optional repoSpec = result.get(getRepoSpecByNameKey("C.override")).rule(); assertThat(repoSpec) .hasValue( RepoSpec.builder() .setRuleClassName("local_repository") .setAttributes( ImmutableMap.of( - "name", "C", + "name", "C.override", "path", "/foo/bar/C")) .build()); } diff --git a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleFileFunctionTest.java b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleFileFunctionTest.java index e341a5ddb12516..223dfa6028df3f 100644 --- a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleFileFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleFileFunctionTest.java @@ -224,7 +224,7 @@ public void testRootModule() throws Exception { "", 0)); assertThat(rootModuleFileValue.getNonRegistryOverrideCanonicalRepoNameLookup()) - .containsExactly("E", "E", "G", "G"); + .containsExactly("E.override", "E", "G.override", "G"); } @Test diff --git a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/StarlarkBazelModuleTest.java b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/StarlarkBazelModuleTest.java index c6edd5d65d5555..531da052de0606 100644 --- a/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/StarlarkBazelModuleTest.java +++ b/src/test/java/com/google/devtools/build/lib/bazel/bzlmod/StarlarkBazelModuleTest.java @@ -116,7 +116,7 @@ public void basic() throws Exception { assertThat(pomTags.get(0).getValue("pom_xmls")) .isEqualTo( StarlarkList.immutableOf( - Label.parseAbsoluteUnchecked("@foo//:pom.xml"), + Label.parseAbsoluteUnchecked("@foo.override//:pom.xml"), Label.parseAbsoluteUnchecked("@bar.2.0//:pom.xml"))); }