Put main repo remapping behind a flag.

RELNOTES: None
PiperOrigin-RevId: 207801155
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 3277c38..5ef70d3 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
@@ -59,15 +59,6 @@
   // <== Add new options here in alphabetic order ==>
 
   @Option(
-      name = "experimental_enable_repo_mapping",
-      defaultValue = "false",
-      documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
-      effectTags = OptionEffectTag.BUILD_FILE_SEMANTICS,
-      help = "If set to true, enables the use of the `repo_mapping` attribute in WORKSPACE files."
-  )
-  public boolean experimentalEnableRepoMapping;
-
-  @Option(
       name = "experimental_cc_skylark_api_enabled_packages",
       converter = CommaSeparatedOptionListConverter.class,
       defaultValue = "",
@@ -80,6 +71,22 @@
   public List<String> experimentalCcSkylarkApiEnabledPackages;
 
   @Option(
+      name = "experimental_enable_repo_mapping",
+      defaultValue = "false",
+      documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
+      effectTags = OptionEffectTag.BUILD_FILE_SEMANTICS,
+      help = "If set to true, enables the use of the `repo_mapping` attribute in WORKSPACE files.")
+  public boolean experimentalEnableRepoMapping;
+
+  @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 = "incompatible_bzl_disallow_load_after_statement",
     defaultValue = "false",
     documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
@@ -363,6 +370,7 @@
         // <== Add new options here in alphabetic order ==>
         .experimentalCcSkylarkApiEnabledPackages(experimentalCcSkylarkApiEnabledPackages)
         .experimentalEnableRepoMapping(experimentalEnableRepoMapping)
+        .experimentalRemapMainRepo(experimentalRemapMainRepo)
         .incompatibleBzlDisallowLoadAfterStatement(incompatibleBzlDisallowLoadAfterStatement)
         .incompatibleDepsetIsNotIterable(incompatibleDepsetIsNotIterable)
         .incompatibleDepsetUnion(incompatibleDepsetUnion)
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 6cc7ddf..c412181 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
@@ -346,10 +346,12 @@
                 }
                 // Add entry in repository map from "@name" --> "@" to avoid issue where bazel
                 // treats references to @name as a separate external repo
-                builder.addRepositoryMappingEntry(
-                    RepositoryName.MAIN,
-                    RepositoryName.createFromValidStrippedName(name),
-                    RepositoryName.MAIN);
+                if (env.getSemantics().experimentalRemapMainRepo()) {
+                  builder.addRepositoryMappingEntry(
+                      RepositoryName.MAIN,
+                      RepositoryName.createFromValidStrippedName(name),
+                      RepositoryName.MAIN);
+                }
                 return NONE;
               }
             };
@@ -498,11 +500,13 @@
           // Add an entry in every repository from @<mainRepoName> to "@" to avoid treating
           // @<mainRepoName> as a separate repository. This will be overridden if the main
           // repository has a repo_mapping entry from <mainRepoName> to something.
-          if (!Strings.isNullOrEmpty(builder.pkg.getWorkspaceName())) {
-            builder.addRepositoryMappingEntry(
-                RepositoryName.createFromValidStrippedName(externalRepoName),
-                RepositoryName.createFromValidStrippedName(builder.pkg.getWorkspaceName()),
-                RepositoryName.MAIN);
+          if (env.getSemantics().experimentalRemapMainRepo()) {
+            if (!Strings.isNullOrEmpty(builder.pkg.getWorkspaceName())) {
+              builder.addRepositoryMappingEntry(
+                  RepositoryName.createFromValidStrippedName(externalRepoName),
+                  RepositoryName.createFromValidStrippedName(builder.pkg.getWorkspaceName()),
+                  RepositoryName.MAIN);
+            }
           }
           if (env.getSemantics().experimentalEnableRepoMapping()) {
             if (kwargs.containsKey("repo_mapping")) {
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 5893ac49..85f6d4d 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
@@ -45,6 +45,8 @@
 
   public abstract boolean experimentalEnableRepoMapping();
 
+  public abstract boolean experimentalRemapMainRepo();
+
   public abstract boolean incompatibleBzlDisallowLoadAfterStatement();
 
   public abstract boolean incompatibleDepsetIsNotIterable();
@@ -102,6 +104,7 @@
           // <== Add new options here in alphabetic order ==>
           .experimentalCcSkylarkApiEnabledPackages(ImmutableList.of())
           .experimentalEnableRepoMapping(false)
+          .experimentalRemapMainRepo(false)
           .incompatibleBzlDisallowLoadAfterStatement(false)
           .incompatibleDepsetIsNotIterable(false)
           .incompatibleDepsetUnion(false)
@@ -133,6 +136,8 @@
 
     public abstract Builder experimentalEnableRepoMapping(boolean value);
 
+    public abstract Builder experimentalRemapMainRepo(boolean value);
+
     public abstract Builder incompatibleBzlDisallowLoadAfterStatement(boolean value);
 
     public abstract Builder incompatibleDepsetIsNotIterable(boolean value);