Add an --experimental_disable_jvm flag.
--
MOS_MIGRATED_REVID=101457236
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
index 7ce8c04..a64e031 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
@@ -525,6 +525,10 @@
return error;
}
+ public boolean hasError() {
+ return error != null;
+ }
+
/**
* Returns the action graph.
*/
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java
index 6bb7fcd..83539ff 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java
@@ -152,6 +152,7 @@
public void createStubAction(RuleContext ruleContext, final JavaCommon javaCommon,
List<String> jvmFlags, Artifact executable, String javaStartClass,
String javaExecutable) {
+ Preconditions.checkState(ruleContext.getConfiguration().hasFragment(Jvm.class));
Preconditions.checkNotNull(jvmFlags);
Preconditions.checkNotNull(executable);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java
index ef72a40..b713af8 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java
@@ -376,6 +376,7 @@
* @param launcher if non-null, the cc_binary used to launch the Java Virtual Machine
*/
public String getJavaBinSubstitution(@Nullable Artifact launcher) {
+ Preconditions.checkState(ruleContext.getConfiguration().hasFragment(Jvm.class));
PathFragment javaExecutable;
if (launcher != null) {
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 3254964..4b564a5 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
@@ -290,6 +290,12 @@
help = "Check the listed constraint.")
public List<String> checkedConstraints;
+ @Option(name = "experimental_disable_jvm",
+ defaultValue = "false",
+ category = "undocumented",
+ help = "Disables the Jvm configuration entirely.")
+ public boolean disableJvm;
+
@Override
public FragmentOptions getHost(boolean fallback) {
JavaOptions host = (JavaOptions) getDefault();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JvmConfigurationLoader.java b/src/main/java/com/google/devtools/build/lib/rules/java/JvmConfigurationLoader.java
index 9ff7651..c6fff96 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JvmConfigurationLoader.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JvmConfigurationLoader.java
@@ -66,6 +66,10 @@
public Jvm create(ConfigurationEnvironment env, BuildOptions buildOptions)
throws InvalidConfigurationException {
JavaOptions javaOptions = buildOptions.get(JavaOptions.class);
+ if (javaOptions.disableJvm) {
+ // TODO(bazel-team): Instead of returning null here, add another method to the interface.
+ return null;
+ }
String javaHome = javaOptions.javaBase;
String cpu = cpuSupplier.getJavaCpu(buildOptions, env);
if (cpu == null) {