New flag --incompatible_no_attr_license to disable `attr.license` function
#6420
RELNOTES:
The function `attr.license` is deprecated and will be removed.
It can be disabled now with `--incompatible_no_attr_license`.
PiperOrigin-RevId: 218910996
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 223285b..c1c91a8 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
@@ -355,6 +355,18 @@
public boolean incompatibleNewActionsApi;
@Option(
+ name = "incompatible_no_attr_license",
+ defaultValue = "false",
+ documentationCategory = OptionDocumentationCategory.SKYLARK_SEMANTICS,
+ effectTags = {OptionEffectTag.BUILD_FILE_SEMANTICS},
+ metadataTags = {
+ OptionMetadataTag.INCOMPATIBLE_CHANGE,
+ OptionMetadataTag.TRIGGERED_BY_ALL_INCOMPATIBLE_CHANGES
+ },
+ help = "If set to true, disables the function `attr.license`.")
+ public boolean incompatibleNoAttrLicense;
+
+ @Option(
name = "incompatible_no_output_attr_default",
defaultValue = "false",
documentationCategory = OptionDocumentationCategory.SKYLARK_SEMANTICS,
@@ -531,6 +543,7 @@
.incompatibleExpandDirectories(incompatibleExpandDirectories)
.incompatibleGenerateJavaCommonSourceJar(incompatibleGenerateJavaCommonSourceJar)
.incompatibleNewActionsApi(incompatibleNewActionsApi)
+ .incompatibleNoAttrLicense(incompatibleNoAttrLicense)
.incompatibleNoOutputAttrDefault(incompatibleNoOutputAttrDefault)
.incompatibleNoSupportToolsInActionInputs(incompatibleNoSupportToolsInActionInputs)
.incompatibleNoTargetOutputGroup(incompatibleNoTargetOutputGroup)
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkAttrApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkAttrApi.java
index b688d70..8b44f65e 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkAttrApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkAttrApi.java
@@ -26,6 +26,7 @@
import com.google.devtools.build.lib.syntax.FuncallExpression;
import com.google.devtools.build.lib.syntax.SkylarkDict;
import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.SkylarkSemantics.FlagIdentifier;
import com.google.devtools.build.lib.syntax.UserDefinedFunction;
/**
@@ -979,6 +980,7 @@
positional = false,
doc = MANDATORY_DOC)
},
+ disableWithFlag = FlagIdentifier.INCOMPATIBLE_NO_ATTR_LICENSE,
useAst = true,
useEnvironment = true)
public Descriptor licenseAttribute(
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 f09875c..5af8f65 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
@@ -48,6 +48,7 @@
SkylarkSemantics::incompatibleDisableObjcProviderResources),
INCOMPATIBLE_NO_TARGET_OUTPUT_GROUP(
SkylarkSemantics::incompatibleNoTargetOutputGroup),
+ INCOMPATIBLE_NO_ATTR_LICENSE(SkylarkSemantics::incompatibleNoAttrLicense),
NONE(null);
// Using a Function here makes the enum definitions far cleaner, and, since this is
@@ -152,6 +153,8 @@
public abstract boolean incompatibleNewActionsApi();
+ public abstract boolean incompatibleNoAttrLicense();
+
public abstract boolean incompatibleNoOutputAttrDefault();
public abstract boolean incompatibleNoSupportToolsInActionInputs();
@@ -212,6 +215,7 @@
.incompatibleExpandDirectories(false)
.incompatibleGenerateJavaCommonSourceJar(false)
.incompatibleNewActionsApi(false)
+ .incompatibleNoAttrLicense(false)
.incompatibleNoOutputAttrDefault(false)
.incompatibleNoSupportToolsInActionInputs(false)
.incompatibleNoTargetOutputGroup(false)
@@ -276,6 +280,8 @@
public abstract Builder incompatibleNewActionsApi(boolean value);
+ public abstract Builder incompatibleNoAttrLicense(boolean value);
+
public abstract Builder incompatibleNoOutputAttrDefault(boolean value);
public abstract Builder incompatibleNoSupportToolsInActionInputs(boolean value);