New incompatible flag to disable PACKAGE_NAME and REPOSITORY_NAME.
RELNOTES[INC]:
Variables PACKAGE_NAME and REPOSITORY_NAME are deprecated in favor of
functions `package_name()` and `repository_name()`.
https://docs.bazel.build/versions/master/skylark/lib/native.html#package_name
PiperOrigin-RevId: 190657188
diff --git a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java
index dce457b..25fc689 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java
@@ -1331,7 +1331,13 @@
throws NoSuchPackageException, InterruptedException {
Package externalPkg = newExternalPackageBuilder(
buildFile.getRelative(Label.WORKSPACE_FILE_NAME), "TESTING").build();
- return createPackageForTesting(packageId, externalPkg, buildFile, locator, eventHandler);
+ return createPackageForTesting(
+ packageId,
+ externalPkg,
+ buildFile,
+ locator,
+ eventHandler,
+ SkylarkSemantics.DEFAULT_SEMANTICS);
}
/**
@@ -1344,7 +1350,8 @@
Package externalPkg,
Path buildFile,
CachingPackageLocator locator,
- ExtendedEventHandler eventHandler)
+ ExtendedEventHandler eventHandler,
+ SkylarkSemantics semantics)
throws NoSuchPackageException, InterruptedException {
String error =
LabelValidator.validatePackageName(packageId.getPackageFragment().getPathString());
@@ -1372,7 +1379,7 @@
/*imports=*/ ImmutableMap.<String, Extension>of(),
/*skylarkFileDependencies=*/ ImmutableList.<Label>of(),
/*defaultVisibility=*/ ConstantRuleVisibility.PUBLIC,
- SkylarkSemantics.DEFAULT_SEMANTICS,
+ semantics,
globber)
.build();
for (Postable post : result.getPosts()) {
@@ -1544,8 +1551,10 @@
}
pkgEnv.setupDynamic(PKG_CONTEXT, context);
- pkgEnv.setupDynamic(Runtime.PKG_NAME, packageId.getPackageFragment().getPathString());
- pkgEnv.setupDynamic(Runtime.REPOSITORY_NAME, packageId.getRepository().toString());
+ if (!pkgEnv.getSemantics().incompatiblePackageNameIsAFunction()) {
+ pkgEnv.setupDynamic(Runtime.PKG_NAME, packageId.getPackageFragment().getPathString());
+ pkgEnv.setupDynamic(Runtime.REPOSITORY_NAME, packageId.getRepository().toString());
+ }
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsCodec.java b/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsCodec.java
index 9056342..21d5c49 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsCodec.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsCodec.java
@@ -52,6 +52,7 @@
codedOut.writeBoolNoTag(semantics.incompatibleDisallowThreeArgVardef());
codedOut.writeBoolNoTag(semantics.incompatibleDisallowToplevelIfStatement());
codedOut.writeBoolNoTag(semantics.incompatibleNewActionsApi());
+ codedOut.writeBoolNoTag(semantics.incompatiblePackageNameIsAFunction());
codedOut.writeBoolNoTag(semantics.incompatibleRemoveNativeGitRepository());
codedOut.writeBoolNoTag(semantics.incompatibleRemoveNativeHttpArchive());
codedOut.writeBoolNoTag(semantics.incompatibleStringIsNotIterable());
@@ -73,6 +74,7 @@
builder.incompatibleDisallowThreeArgVardef(codedIn.readBool());
builder.incompatibleDisallowToplevelIfStatement(codedIn.readBool());
builder.incompatibleNewActionsApi(codedIn.readBool());
+ builder.incompatiblePackageNameIsAFunction(codedIn.readBool());
builder.incompatibleRemoveNativeGitRepository(codedIn.readBool());
builder.incompatibleRemoveNativeHttpArchive(codedIn.readBool());
builder.incompatibleStringIsNotIterable(codedIn.readBool());
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 afb730c..0030129 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
@@ -169,6 +169,19 @@
public boolean incompatibleNewActionsApi;
@Option(
+ name = "incompatible_package_name_is_a_function",
+ defaultValue = "false",
+ category = "incompatible changes",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
+ metadataTags = {OptionMetadataTag.INCOMPATIBLE_CHANGE},
+ help =
+ "If set to true, the values PACKAGE_NAME and REPOSITORY_NAME are not available. "
+ + "Use the package_name() or repository_name() functions instead."
+ )
+ public boolean incompatiblePackageNameIsAFunction;
+
+ @Option(
name = "incompatible_remove_native_git_repository",
defaultValue = "false",
category = "incompatible changes",
@@ -229,6 +242,7 @@
.incompatibleDisallowThreeArgVardef(incompatibleDisallowThreeArgVardef)
.incompatibleDisallowToplevelIfStatement(incompatibleDisallowToplevelIfStatement)
.incompatibleNewActionsApi(incompatibleNewActionsApi)
+ .incompatiblePackageNameIsAFunction(incompatiblePackageNameIsAFunction)
.incompatibleRemoveNativeGitRepository(incompatibleRemoveNativeGitRepository)
.incompatibleRemoveNativeHttpArchive(incompatibleRemoveNativeHttpArchive)
.incompatibleStringIsNotIterable(incompatibleStringIsNotIterable)
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Identifier.java b/src/main/java/com/google/devtools/build/lib/syntax/Identifier.java
index e201a0e..419cc99 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Identifier.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Identifier.java
@@ -96,6 +96,26 @@
if (name.equals("$error$")) {
return new EvalException(getLocation(), "contains syntax error(s)", true);
}
+
+ if (name.equals("PACKAGE_NAME")) {
+ return new EvalException(
+ getLocation(),
+ "The value 'PACKAGE_NAME' has been removed in favor of 'package_name()', "
+ + "please use the latter ("
+ + "https://docs.bazel.build/versions/master/skylark/lib/native.html#package_name). "
+ + "You can temporarily allow the old name "
+ + "by using --incompatiblePackageNameIsAFunction=false");
+ }
+ if (name.equals("REPOSITORY_NAME")) {
+ return new EvalException(
+ getLocation(),
+ "The value 'REPOSITORY_NAME' has been removed in favor of 'repository_name()', "
+ + "please use the latter ("
+ + "https://docs.bazel.build/versions/master/skylark/lib/native.html#repository_name)."
+ + " You can temporarily allow the old name "
+ + "by using --incompatiblePackageNameIsAFunction=false");
+ }
+
String suggestion = SpellChecker.didYouMean(name, symbols);
return new EvalException(getLocation(), "name '" + name + "' is not defined" + suggestion);
}
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 05208dc..46f3f1a 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
@@ -40,17 +40,31 @@
// <== Add new options here in alphabetic order ==>
public abstract boolean incompatibleBzlDisallowLoadAfterStatement();
+
public abstract boolean incompatibleDepsetIsNotIterable();
+
public abstract boolean incompatibleDepsetUnion();
+
public abstract boolean incompatibleDisableGlobTracking();
+
public abstract boolean incompatibleDisableObjcProviderResources();
+
public abstract boolean incompatibleDisallowDictPlus();
+
public abstract boolean incompatibleDisallowThreeArgVardef();
+
public abstract boolean incompatibleDisallowToplevelIfStatement();
+
public abstract boolean incompatibleNewActionsApi();
+
+ public abstract boolean incompatiblePackageNameIsAFunction();
+
public abstract boolean incompatibleRemoveNativeGitRepository();
+
public abstract boolean incompatibleRemoveNativeHttpArchive();
+
public abstract boolean incompatibleStringIsNotIterable();
+
public abstract boolean internalSkylarkFlagTestCanary();
/** Returns a {@link Builder} initialized with the values of this instance. */
@@ -77,6 +91,7 @@
.incompatibleDisallowThreeArgVardef(false)
.incompatibleDisallowToplevelIfStatement(true)
.incompatibleNewActionsApi(false)
+ .incompatiblePackageNameIsAFunction(false)
.incompatibleRemoveNativeGitRepository(false)
.incompatibleRemoveNativeHttpArchive(false)
.incompatibleStringIsNotIterable(false)
@@ -89,17 +104,31 @@
// <== Add new options here in alphabetic order ==>
public abstract Builder incompatibleBzlDisallowLoadAfterStatement(boolean value);
+
public abstract Builder incompatibleDepsetIsNotIterable(boolean value);
+
public abstract Builder incompatibleDepsetUnion(boolean value);
+
public abstract Builder incompatibleDisableGlobTracking(boolean value);
+
public abstract Builder incompatibleDisableObjcProviderResources(boolean value);
+
public abstract Builder incompatibleDisallowDictPlus(boolean value);
+
public abstract Builder incompatibleDisallowThreeArgVardef(boolean value);
+
public abstract Builder incompatibleDisallowToplevelIfStatement(boolean value);
+
public abstract Builder incompatibleNewActionsApi(boolean value);
+
+ public abstract Builder incompatiblePackageNameIsAFunction(boolean value);
+
public abstract Builder incompatibleRemoveNativeGitRepository(boolean value);
+
public abstract Builder incompatibleRemoveNativeHttpArchive(boolean value);
+
public abstract Builder incompatibleStringIsNotIterable(boolean value);
+
public abstract Builder internalSkylarkFlagTestCanary(boolean value);
public abstract SkylarkSemantics build();