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