aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/java
diff options
context:
space:
mode:
authorGravatar twerth <twerth@google.com>2018-07-13 07:52:06 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-07-13 07:53:41 -0700
commitbbf8c996b9c45e04c047e8ddb22454b29fae7f6b (patch)
treed742b963095e1f11cee72fa870cc7915db52e50a /src/main/java/com/google/devtools/build/lib/rules/java
parentb50856275e00b638ec5fe01b441e55923d62f311 (diff)
Add option to turn on strict deps for the java compilation of proto generated
Java code. RELNOTES: None PiperOrigin-RevId: 204471346
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaOptions.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspectCommon.java7
3 files changed, 26 insertions, 1 deletions
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 73055b41a0..29e93541f9 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
@@ -38,6 +38,7 @@ import javax.annotation.Nullable;
@AutoCodec
@Immutable
public final class JavaConfiguration extends Fragment implements JavaConfigurationApi {
+
/** Values for the --java_classpath option */
public enum JavaClasspathMode {
/** Use full transitive classpaths, the default behavior. */
@@ -151,6 +152,7 @@ public final class JavaConfiguration extends Fragment implements JavaConfigurati
private final boolean headerCompilationDisableJavacFallback;
private final boolean generateJavaDeps;
private final boolean strictDepsJavaProtos;
+ private final boolean protoGeneratedStrictDeps;
private final OneVersionEnforcementLevel enforceOneVersion;
private final boolean enforceOneVersionOnJavaTests;
private final ImportDepsCheckingLevel importDepsCheckingLevel;
@@ -200,6 +202,7 @@ public final class JavaConfiguration extends Fragment implements JavaConfigurati
this.javaOptimizationMode = javaOptions.javaOptimizationMode;
this.useLegacyBazelJavaTest = javaOptions.legacyBazelJavaTest;
this.strictDepsJavaProtos = javaOptions.strictDepsJavaProtos;
+ this.protoGeneratedStrictDeps = javaOptions.protoGeneratedStrictDeps;
this.enforceOneVersion = javaOptions.enforceOneVersion;
this.enforceOneVersionOnJavaTests = javaOptions.enforceOneVersionOnJavaTests;
this.importDepsCheckingLevel = javaOptions.importDepsCheckingLevel;
@@ -241,6 +244,7 @@ public final class JavaConfiguration extends Fragment implements JavaConfigurati
boolean headerCompilationDisableJavacFallback,
boolean generateJavaDeps,
boolean strictDepsJavaProtos,
+ boolean protoGeneratedStrictDeps,
OneVersionEnforcementLevel enforceOneVersion,
boolean enforceOneVersionOnJavaTests,
ImportDepsCheckingLevel importDepsCheckingLevel,
@@ -270,6 +274,7 @@ public final class JavaConfiguration extends Fragment implements JavaConfigurati
this.headerCompilationDisableJavacFallback = headerCompilationDisableJavacFallback;
this.generateJavaDeps = generateJavaDeps;
this.strictDepsJavaProtos = strictDepsJavaProtos;
+ this.protoGeneratedStrictDeps = protoGeneratedStrictDeps;
this.enforceOneVersion = enforceOneVersion;
this.enforceOneVersionOnJavaTests = enforceOneVersionOnJavaTests;
this.importDepsCheckingLevel = importDepsCheckingLevel;
@@ -497,6 +502,10 @@ public final class JavaConfiguration extends Fragment implements JavaConfigurati
return strictDepsJavaProtos;
}
+ public boolean isProtoGeneratedStrictDeps() {
+ return protoGeneratedStrictDeps;
+ }
+
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 9245257c01..5bb7e08106 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
@@ -457,6 +457,15 @@ public class JavaOptions extends FragmentOptions {
)
public boolean strictDepsJavaProtos;
+ // TODO(twerth): Remove flag after it's turned on globally.
+ @Option(
+ name = "experimental_proto_generated_strict_deps",
+ defaultValue = "false",
+ documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
+ effectTags = {OptionEffectTag.BUILD_FILE_SEMANTICS, OptionEffectTag.EAGERNESS_TO_EXIT},
+ help = "Enables strict deps mode for the java compilation of proto generated Java code.")
+ public boolean protoGeneratedStrictDeps;
+
@Option(
name = "experimental_java_header_compilation_disable_javac_fallback",
defaultValue = "false",
@@ -575,6 +584,8 @@ public class JavaOptions extends FragmentOptions {
host.jplPropagateCcLinkParamsStore = jplPropagateCcLinkParamsStore;
+ host.protoGeneratedStrictDeps = protoGeneratedStrictDeps;
+
return host;
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspectCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspectCommon.java
index e1d15777f4..1eb1115b79 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspectCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspectCommon.java
@@ -24,6 +24,7 @@ import com.google.devtools.build.lib.analysis.config.BuildConfiguration.StrictDe
import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider;
import com.google.devtools.build.lib.rules.java.JavaCompilationArtifacts;
import com.google.devtools.build.lib.rules.java.JavaCompilationHelper;
+import com.google.devtools.build.lib.rules.java.JavaConfiguration;
import com.google.devtools.build.lib.rules.java.JavaInfo;
import com.google.devtools.build.lib.rules.java.JavaLibraryHelper;
import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider;
@@ -129,7 +130,11 @@ public class JavaProtoAspectCommon {
.setOutput(outputJar)
.addSourceJars(sourceJar)
.setJavacOpts(ProtoJavacOpts.constructJavacOpts(ruleContext));
- helper.addDep(dep).setCompilationStrictDepsMode(StrictDepsMode.OFF);
+ if (ruleContext.getFragment(JavaConfiguration.class).isProtoGeneratedStrictDeps()) {
+ helper.addDep(dep).setCompilationStrictDepsMode(StrictDepsMode.ERROR);
+ } else {
+ helper.addDep(dep).setCompilationStrictDepsMode(StrictDepsMode.OFF);
+ }
for (TransitiveInfoCollection t : getProtoRuntimeDeps()) {
JavaCompilationArgsProvider provider =
JavaInfo.getProvider(JavaCompilationArgsProvider.class, t);