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) {