Create --incompatible_remap_main_repo flag.

This flag fixes a bug in bazel where within a repository called "foo", the labels @foo//some/path:bar.bzl and //some/path:bar.bzl were treated as different labels. It is unlikely that this flag will affect any projects but it is technically a breaking change and so it is guarded behind a flag.

Towards #7130

RELNOTES: None
PiperOrigin-RevId: 229813128
diff --git a/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsOptions.java b/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsOptions.java
index 8e63157..c398b2f 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsOptions.java
@@ -118,14 +118,6 @@
   public List<String> experimentalJavaCommonCreateProviderEnabledPackages;
 
   @Option(
-      name = "experimental_remap_main_repo",
-      defaultValue = "false",
-      documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
-      effectTags = OptionEffectTag.LOADING_AND_ANALYSIS,
-      help = "If set to true, will treat references to '@<main repo name>' the same as '@'.")
-  public boolean experimentalRemapMainRepo;
-
-  @Option(
       name = "experimental_platforms_api",
       defaultValue = "false",
       documentationCategory = OptionDocumentationCategory.SKYLARK_SEMANTICS,
@@ -449,6 +441,19 @@
   public boolean incompatibleNoTransitiveLoads;
 
   @Option(
+      name = "incompatible_remap_main_repo",
+      defaultValue = "false",
+      documentationCategory = OptionDocumentationCategory.SKYLARK_SEMANTICS,
+      effectTags = OptionEffectTag.LOADING_AND_ANALYSIS,
+      metadataTags = {
+        OptionMetadataTag.INCOMPATIBLE_CHANGE,
+        OptionMetadataTag.TRIGGERED_BY_ALL_INCOMPATIBLE_CHANGES
+      },
+      oldName = "experimental_remap_main_repo",
+      help = "If set to true, will treat references to '@<main repo name>' the same as '@'.")
+  public boolean incompatibleRemapMainRepo;
+
+  @Option(
       name = "incompatible_remove_native_maven_jar",
       defaultValue = "false",
       documentationCategory = OptionDocumentationCategory.SKYLARK_SEMANTICS,
@@ -508,7 +513,6 @@
         .experimentalCcSkylarkApiEnabledPackages(experimentalCcSkylarkApiEnabledPackages)
         .experimentalEnableAndroidMigrationApis(experimentalEnableAndroidMigrationApis)
         .experimentalEnableRepoMapping(experimentalEnableRepoMapping)
-        .experimentalRemapMainRepo(experimentalRemapMainRepo)
         .experimentalJavaCommonCreateProviderEnabledPackages(
             experimentalJavaCommonCreateProviderEnabledPackages)
         .experimentalPlatformsApi(experimentalPlatformsApi)
@@ -535,6 +539,7 @@
         .incompatibleNoSupportToolsInActionInputs(incompatibleNoSupportToolsInActionInputs)
         .incompatibleNoTargetOutputGroup(incompatibleNoTargetOutputGroup)
         .incompatibleNoTransitiveLoads(incompatibleNoTransitiveLoads)
+        .incompatibleRemapMainRepo(incompatibleRemapMainRepo)
         .incompatibleRemoveNativeMavenJar(incompatibleRemoveNativeMavenJar)
         .incompatibleRequireFeatureConfigurationForPic(requireFeatureConfigurationForPic)
         .incompatibleStricArgumentOrdering(incompatibleStricArgumentOrdering)
diff --git a/src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java b/src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java
index 64cfbd5..8f58636 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java
@@ -342,7 +342,7 @@
                 }
                 // Add entry in repository map from "@name" --> "@" to avoid issue where bazel
                 // treats references to @name as a separate external repo
-                if (env.getSemantics().experimentalRemapMainRepo()) {
+                if (env.getSemantics().incompatibleRemapMainRepo()) {
                   builder.addRepositoryMappingEntry(
                       RepositoryName.MAIN,
                       RepositoryName.createFromValidStrippedName(name),
diff --git a/src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactoryHelper.java b/src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactoryHelper.java
index db8dcac..58545db 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactoryHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactoryHelper.java
@@ -99,7 +99,7 @@
    */
   public static void addMainRepoEntry(
       Package.Builder builder, String externalRepoName, SkylarkSemantics semantics) {
-    if (semantics.experimentalRemapMainRepo()) {
+    if (semantics.incompatibleRemapMainRepo()) {
       if (!Strings.isNullOrEmpty(builder.getPackageWorkspaceName())) {
         builder.addRepositoryMappingEntry(
             RepositoryName.createFromValidStrippedName(externalRepoName),
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemantics.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemantics.java
index 1c4cb65..4cb4ef9 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemantics.java
@@ -126,8 +126,6 @@
 
   public abstract ImmutableList<String> experimentalJavaCommonCreateProviderEnabledPackages();
 
-  public abstract boolean experimentalRemapMainRepo();
-
   public abstract boolean experimentalPlatformsApi();
 
   public abstract boolean experimentalStarlarkConfigTransitions();
@@ -174,6 +172,8 @@
 
   public abstract boolean incompatibleNoTransitiveLoads();
 
+  public abstract boolean incompatibleRemapMainRepo();
+
   public abstract boolean incompatibleRemoveNativeMavenJar();
 
   public abstract boolean incompatibleRequireFeatureConfigurationForPic();
@@ -204,7 +204,6 @@
           .experimentalEnableAndroidMigrationApis(false)
           .experimentalEnableRepoMapping(false)
           .experimentalJavaCommonCreateProviderEnabledPackages(ImmutableList.of())
-          .experimentalRemapMainRepo(false)
           .experimentalPlatformsApi(false)
           .experimentalStarlarkConfigTransitions(false)
           .experimentalTransitionWhitelistLocation("")
@@ -228,6 +227,7 @@
           .incompatibleNoSupportToolsInActionInputs(false)
           .incompatibleNoTargetOutputGroup(false)
           .incompatibleNoTransitiveLoads(false)
+          .incompatibleRemapMainRepo(false)
           .incompatibleRemoveNativeMavenJar(false)
           .incompatibleRequireFeatureConfigurationForPic(true)
           .incompatibleStricArgumentOrdering(false)
@@ -248,8 +248,6 @@
 
     public abstract Builder experimentalEnableRepoMapping(boolean value);
 
-    public abstract Builder experimentalRemapMainRepo(boolean value);
-
     public abstract Builder experimentalJavaCommonCreateProviderEnabledPackages(List<String> value);
 
     public abstract Builder experimentalPlatformsApi(boolean value);
@@ -300,6 +298,8 @@
 
     public abstract Builder incompatibleNoTransitiveLoads(boolean value);
 
+    public abstract Builder incompatibleRemapMainRepo(boolean value);
+
     public abstract Builder incompatibleRemoveNativeMavenJar(boolean value);
 
     public abstract Builder incompatibleStricArgumentOrdering(boolean value);