Add a flag to disable "strict_deps" attribute on java_lite_proto_library targets.
PiperOrigin-RevId: 354301936
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java
index cbcb89f..948edc8 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java
@@ -85,6 +85,7 @@
private final boolean generateJavaDeps;
private final boolean strictDepsJavaProtos;
private final boolean isDisallowStrictDepsForJpl;
+ private final boolean isDisallowStrictDepsForJlpl;
private final OneVersionEnforcementLevel enforceOneVersion;
private final boolean enforceOneVersionOnJavaTests;
private final ImportDepsCheckingLevel importDepsCheckingLevel;
@@ -144,6 +145,7 @@
this.useLegacyBazelJavaTest = javaOptions.legacyBazelJavaTest;
this.strictDepsJavaProtos = javaOptions.strictDepsJavaProtos;
this.isDisallowStrictDepsForJpl = javaOptions.isDisallowStrictDepsForJpl;
+ this.isDisallowStrictDepsForJlpl = javaOptions.isDisallowStrictDepsForJlpl;
this.enforceOneVersion = javaOptions.enforceOneVersion;
this.enforceOneVersionOnJavaTests = javaOptions.enforceOneVersionOnJavaTests;
this.importDepsCheckingLevel = javaOptions.importDepsCheckingLevel;
@@ -420,6 +422,10 @@
return isDisallowStrictDepsForJpl;
}
+ public boolean isDisallowStrictDepsForJlpl() {
+ return isDisallowStrictDepsForJlpl;
+ }
+
public boolean jplPropagateCcLinkParamsStore() {
return jplPropagateCcLinkParamsStore;
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaOptions.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaOptions.java
index b00d3d7..e735fb3 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaOptions.java
@@ -494,6 +494,20 @@
public boolean isDisallowStrictDepsForJpl;
@Option(
+ name = "incompatible_disallow_strict_deps_for_jlpl",
+ defaultValue = "false",
+ documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
+ effectTags = {OptionEffectTag.BUILD_FILE_SEMANTICS, OptionEffectTag.EAGERNESS_TO_EXIT},
+ metadataTags = {
+ OptionMetadataTag.INCOMPATIBLE_CHANGE,
+ OptionMetadataTag.TRIGGERED_BY_ALL_INCOMPATIBLE_CHANGES
+ },
+ help =
+ "If set, any java_lite_proto_library which sets the strict_deps attribute explicitly will"
+ + "fail to build.")
+ public boolean isDisallowStrictDepsForJlpl;
+
+ @Option(
name = "experimental_one_version_enforcement",
defaultValue = "OFF",
converter = OneVersionEnforcementLevelConverter.class,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoLibrary.java
index 860b989..ccfd68d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoLibrary.java
@@ -48,6 +48,14 @@
@Override
public ConfiguredTarget create(final RuleContext ruleContext)
throws InterruptedException, RuleErrorException, ActionConflictException {
+
+ if (ruleContext.getFragment(JavaConfiguration.class).isDisallowStrictDepsForJlpl()
+ && ruleContext.attributes().has("strict_deps")
+ && ruleContext.attributes().isAttributeValueExplicitlySpecified("strict_deps")) {
+ ruleContext.attributeError("strict_deps", "The strict_deps attribute has been removed.");
+ return null;
+ }
+
Iterable<JavaProtoLibraryAspectProvider> javaProtoLibraryAspectProviders =
ruleContext.getPrerequisites("deps", JavaProtoLibraryAspectProvider.class);