Add --incompatible_disable_deprecated_attr_params to disable some deprecated parameters of the skylark attr module.
RELNOTES: None.
PiperOrigin-RevId: 204797954
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java
index 0d1a1aa..a0cf36d 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java
@@ -147,8 +147,15 @@
builder.setPropertyFlag("MANDATORY");
}
- // TODO(laurentlb): Deprecated, remove in August 2016 (use allow_empty instead).
- if (containsNonNoneKey(arguments, NON_EMPTY_ARG) && (Boolean) arguments.get(NON_EMPTY_ARG)) {
+ if (containsNonNoneKey(arguments, NON_EMPTY_ARG)
+ && (Boolean) arguments.get(NON_EMPTY_ARG)) {
+ if (env.getSemantics().incompatibleDisableDeprecatedAttrParams()) {
+ throw new EvalException(ast.getLocation(),
+ "'non_empty' is no longer supported. use allow_empty instead. You can use "
+ + "--incompatible_disable_deprecated_attr_params to temporarily disable this "
+ + "check.");
+ }
+
builder.setPropertyFlag("NON_EMPTY");
}
@@ -168,14 +175,21 @@
}
}
- // TODO(laurentlb): Deprecated, remove in August 2016 (use allow_single_file).
if (containsNonNoneKey(arguments, SINGLE_FILE_ARG)
&& (Boolean) arguments.get(SINGLE_FILE_ARG)) {
+ if (env.getSemantics().incompatibleDisableDeprecatedAttrParams()) {
+ throw new EvalException(
+ ast.getLocation(),
+ "'single_file' is no longer supported. use allow_single_file instead. You can use "
+ + "--incompatible_disable_deprecated_attr_params to temporarily disable this "
+ + "check.");
+ }
if (containsNonNoneKey(arguments, ALLOW_SINGLE_FILE_ARG)) {
throw new EvalException(
ast.getLocation(),
"Cannot specify both single_file (deprecated) and allow_single_file");
}
+
builder.setPropertyFlag("SINGLE_ARTIFACT");
}
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 7f147cb..a8647a8 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
@@ -47,6 +47,7 @@
codedOut.writeBoolNoTag(semantics.incompatibleBzlDisallowLoadAfterStatement());
codedOut.writeBoolNoTag(semantics.incompatibleDepsetIsNotIterable());
codedOut.writeBoolNoTag(semantics.incompatibleDepsetUnion());
+ codedOut.writeBoolNoTag(semantics.incompatibleDisableDeprecatedAttrParams());
codedOut.writeBoolNoTag(semantics.incompatibleDisableObjcProviderResources());
codedOut.writeBoolNoTag(semantics.incompatibleDisallowDataTransition());
codedOut.writeBoolNoTag(semantics.incompatibleDisallowDictPlus());
@@ -74,6 +75,7 @@
builder.incompatibleBzlDisallowLoadAfterStatement(codedIn.readBool());
builder.incompatibleDepsetIsNotIterable(codedIn.readBool());
builder.incompatibleDepsetUnion(codedIn.readBool());
+ builder.incompatibleDisableDeprecatedAttrParams(codedIn.readBool());
builder.incompatibleDisableObjcProviderResources(codedIn.readBool());
builder.incompatibleDisallowDataTransition(codedIn.readBool());
builder.incompatibleDisallowDictPlus(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 8781bb5..0798968 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
@@ -115,6 +115,21 @@
public boolean incompatibleDepsetIsNotIterable;
@Option(
+ name = "incompatible_disable_deprecated_attr_params",
+ defaultValue = "false",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
+ metadataTags = {
+ OptionMetadataTag.INCOMPATIBLE_CHANGE,
+ OptionMetadataTag.TRIGGERED_BY_ALL_INCOMPATIBLE_CHANGES
+ },
+ help =
+ "If set to true, disable the deprecated parameters 'single_file' and 'non_empty' on "
+ + "skylark attribute definition methods, such as attr.label()."
+ )
+ public boolean incompatibleDisableDeprecatedAttrParams;
+
+ @Option(
name = "incompatible_disable_objc_provider_resources",
defaultValue = "false",
documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
@@ -327,6 +342,7 @@
.incompatibleBzlDisallowLoadAfterStatement(incompatibleBzlDisallowLoadAfterStatement)
.incompatibleDepsetIsNotIterable(incompatibleDepsetIsNotIterable)
.incompatibleDepsetUnion(incompatibleDepsetUnion)
+ .incompatibleDisableDeprecatedAttrParams(incompatibleDisableDeprecatedAttrParams)
.incompatibleDisableObjcProviderResources(incompatibleDisableObjcProviderResources)
.incompatibleDisallowDataTransition(incompatibleDisallowDataTransition)
.incompatibleDisallowDictPlus(incompatibleDisallowDictPlus)
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 5bd711b..fc7afa4 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
@@ -47,6 +47,8 @@
public abstract boolean incompatibleDepsetUnion();
+ public abstract boolean incompatibleDisableDeprecatedAttrParams();
+
public abstract boolean incompatibleDisableObjcProviderResources();
public abstract boolean incompatibleDisallowDataTransition();
@@ -96,6 +98,7 @@
.incompatibleBzlDisallowLoadAfterStatement(false)
.incompatibleDepsetIsNotIterable(false)
.incompatibleDepsetUnion(false)
+ .incompatibleDisableDeprecatedAttrParams(false)
.incompatibleDisableObjcProviderResources(false)
.incompatibleDisallowDataTransition(false)
.incompatibleDisallowDictPlus(false)
@@ -126,6 +129,8 @@
public abstract Builder incompatibleDepsetUnion(boolean value);
+ public abstract Builder incompatibleDisableDeprecatedAttrParams(boolean value);
+
public abstract Builder incompatibleDisableObjcProviderResources(boolean value);
public abstract Builder incompatibleDisallowDataTransition(boolean value);