aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar lberki <lberki@google.com>2017-07-07 09:48:58 -0400
committerGravatar John Cater <jcater@google.com>2017-07-07 13:37:45 -0400
commit38f74a23738f8f1e0e0e3bc49d41a479f311dbe9 (patch)
treef19a5bef9900c4f5830f38b0953849feff7da8ac
parent06152ea49275609996578be999d7abc20a1a76bc (diff)
Remove all non-essential call sites of methods on Jvm.
This is so that we can eventually route the information it now contains through JavaRuntimeProvider. RELNOTES: None. PiperOrigin-RevId: 161196809
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/ApkActionsBuilder.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/DeployArchiveBuilder.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java17
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileAction.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaHelper.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/Jvm.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/ResourceJarActionBuilder.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/SingleJarActionBuilder.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java3
-rw-r--r--src/test/java/com/google/devtools/build/lib/bazel/rules/genrule/GenRuleConfiguredTargetTest.java19
16 files changed, 51 insertions, 49 deletions
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 43307fb12f..49fface0ea 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
@@ -261,7 +261,7 @@ public class BazelJavaSemantics implements JavaSemantics {
arguments.add(Substitution.of("%workspace_prefix%", workspacePrefix));
arguments.add(Substitution.of("%javabin%", javaExecutable));
arguments.add(Substitution.of("%needs_runfiles%",
- ruleContext.getFragment(Jvm.class).getJavaExecutable().isAbsolute() ? "0" : "1"));
+ JavaCommon.getJavaExecutable(ruleContext).isAbsolute() ? "0" : "1"));
TransitiveInfoCollection testSupport = getTestSupport(ruleContext);
NestedSet<Artifact> testSupportJars =
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java b/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java
index 6b9663bba0..202f6507e4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java
@@ -38,7 +38,6 @@ import com.google.devtools.build.lib.rules.java.JavaRuntimeJarProvider;
import com.google.devtools.build.lib.rules.java.JavaSemantics;
import com.google.devtools.build.lib.rules.java.JavaSkylarkApiProvider;
import com.google.devtools.build.lib.rules.java.JavaToolchainProvider;
-import com.google.devtools.build.lib.rules.java.Jvm;
import com.google.devtools.build.lib.vfs.PathFragment;
/**
@@ -283,7 +282,7 @@ public class AarImport implements RuleConfiguredTargetFactory {
if (singleJar.getFilename().endsWith(".jar")) {
builder
.setJarExecutable(
- ruleContext.getHostConfiguration().getFragment(Jvm.class).getJavaExecutable(),
+ JavaCommon.getHostJavaExecutable(ruleContext),
singleJar,
JavaToolchainProvider.fromRuleContext(ruleContext).getJvmOptions())
.addTransitiveInputs(JavaHelper.getHostJavabaseInputs(ruleContext));
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
index 71a7c79a11..5623e55630 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
@@ -67,7 +67,6 @@ import com.google.devtools.build.lib.rules.java.JavaSemantics;
import com.google.devtools.build.lib.rules.java.JavaSourceInfoProvider;
import com.google.devtools.build.lib.rules.java.JavaTargetAttributes;
import com.google.devtools.build.lib.rules.java.JavaToolchainProvider;
-import com.google.devtools.build.lib.rules.java.Jvm;
import com.google.devtools.build.lib.rules.java.ProguardHelper;
import com.google.devtools.build.lib.rules.java.ProguardHelper.ProguardOutput;
import com.google.devtools.build.lib.syntax.Type;
@@ -1586,7 +1585,7 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory {
if (singleJar.getFilename().endsWith(".jar")) {
builder
.setJarExecutable(
- ruleContext.getHostConfiguration().getFragment(Jvm.class).getJavaExecutable(),
+ JavaCommon.getHostJavaExecutable(ruleContext),
singleJar,
JavaToolchainProvider.fromRuleContext(ruleContext).getJvmOptions())
.addTransitiveInputs(JavaHelper.getHostJavabaseInputs(ruleContext));
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java
index 6e764477b5..b562eac1ea 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java
@@ -186,8 +186,7 @@ public abstract class AndroidLocalTestBase implements RuleConfiguredTargetFactor
getJvmFlags(ruleContext, testClass),
executable,
mainClass,
- JavaCommon.getJavaBinSubstitution(
- ruleContext, JavaHelper.getJavaRuntime(ruleContext), launcher));
+ JavaCommon.getJavaBinSubstitution(ruleContext, launcher));
Artifact deployJar =
ruleContext.getImplicitOutputArtifact(JavaSemantics.JAVA_BINARY_DEPLOY_JAR);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ApkActionsBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/android/ApkActionsBuilder.java
index 5f8e1de21b..038974b993 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/ApkActionsBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/ApkActionsBuilder.java
@@ -21,9 +21,9 @@ import com.google.devtools.build.lib.analysis.Runfiles;
import com.google.devtools.build.lib.analysis.RunfilesSupplierImpl;
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
import com.google.devtools.build.lib.rules.android.AndroidConfiguration.ApkSigningMethod;
+import com.google.devtools.build.lib.rules.java.JavaCommon;
import com.google.devtools.build.lib.rules.java.JavaHelper;
import com.google.devtools.build.lib.rules.java.JavaToolchainProvider;
-import com.google.devtools.build.lib.rules.java.Jvm;
import com.google.devtools.build.lib.util.Pair;
import com.google.devtools.build.lib.util.Preconditions;
import com.google.devtools.build.lib.vfs.PathFragment;
@@ -410,7 +410,7 @@ public class ApkActionsBuilder {
if (singleJar.getFilename().endsWith(".jar")) {
builder
.setJarExecutable(
- ruleContext.getHostConfiguration().getFragment(Jvm.class).getJavaExecutable(),
+ JavaCommon.getHostJavaExecutable(ruleContext),
singleJar,
JavaToolchainProvider.fromRuleContext(ruleContext).getJvmOptions())
.addTransitiveInputs(JavaHelper.getHostJavabaseInputs(ruleContext));
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/DeployArchiveBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/java/DeployArchiveBuilder.java
index e110a34174..5aa4340af5 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/DeployArchiveBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/DeployArchiveBuilder.java
@@ -278,7 +278,7 @@ public class DeployArchiveBuilder {
.addOutput(outputJar)
.setResources(resourceSet)
.setJarExecutable(
- ruleContext.getHostConfiguration().getFragment(Jvm.class).getJavaExecutable(),
+ JavaCommon.getHostJavaExecutable(ruleContext),
singlejar,
jvmArgs)
.setCommandLine(commandLine)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
index 8142ce6c3b..c734e0a9b4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
@@ -232,8 +232,6 @@ public class JavaBinary implements RuleConfiguredTargetFactory {
CppHelper.getToolchainUsingDefaultCcToolchainAttribute(ruleContext)
.getDynamicRuntimeLinkInputs();
- JavaRuntimeProvider javaRuntime = JavaHelper.getJavaRuntime(ruleContext);
-
Iterables.addAll(jvmFlags,
semantics.getJvmFlags(ruleContext, common.getSrcsArtifacts(), userJvmFlags));
if (ruleContext.hasErrors()) {
@@ -250,7 +248,7 @@ public class JavaBinary implements RuleConfiguredTargetFactory {
jvmFlags,
executableForRunfiles,
mainClass,
- JavaCommon.getJavaBinSubstitution(ruleContext, javaRuntime, launcher));
+ JavaCommon.getJavaBinSubstitution(ruleContext, launcher));
if (!executableToRun.equals(executableForRunfiles)) {
filesBuilder.add(executableToRun);
runfilesBuilder.addArtifact(executableToRun);
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 02d6f935fa..5779e65cfc 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
@@ -466,14 +466,29 @@ public class JavaCommon {
.collect(toImmutableList());
}
+ public static PathFragment getHostJavaExecutable(RuleContext ruleContext) {
+ JavaRuntimeProvider javaRuntime = JavaHelper.getHostJavaRuntime(ruleContext);
+ return javaRuntime != null
+ ? javaRuntime.javaBinaryExecPath()
+ : ruleContext.getHostConfiguration().getFragment(Jvm.class).getJavaExecutable();
+ }
+
+ public static PathFragment getJavaExecutable(RuleContext ruleContext) {
+ JavaRuntimeProvider javaRuntime = JavaHelper.getJavaRuntime(ruleContext);
+ return javaRuntime != null
+ ? javaRuntime.javaBinaryExecPath()
+ : ruleContext.getFragment(Jvm.class).getJavaExecutable();
+ }
+
/**
* Returns the string that the stub should use to determine the JVM
* @param launcher if non-null, the cc_binary used to launch the Java Virtual Machine
*/
public static String getJavaBinSubstitution(
- RuleContext ruleContext, JavaRuntimeProvider javaRuntime, @Nullable Artifact launcher) {
+ RuleContext ruleContext, @Nullable Artifact launcher) {
Preconditions.checkState(ruleContext.getConfiguration().hasFragment(Jvm.class));
PathFragment javaExecutable;
+ JavaRuntimeProvider javaRuntime = JavaHelper.getJavaRuntime(ruleContext);
if (launcher != null) {
javaExecutable = launcher.getRootRelativePath();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java
index cd622dff0c..e6cdecf6d4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java
@@ -457,10 +457,7 @@ public final class JavaCompilationHelper {
.addOutput(genClassJar)
.addTransitiveInputs(getHostJavabaseInputs(getRuleContext()))
.setJarExecutable(
- getRuleContext()
- .getHostConfiguration()
- .getFragment(Jvm.class)
- .getJavaExecutable(),
+ JavaCommon.getHostJavaExecutable(ruleContext),
getGenClassJar(ruleContext),
javaToolchain.getJvmOptions())
.setCommandLine(
@@ -543,8 +540,7 @@ public final class JavaCompilationHelper {
private JavaCompileAction.Builder createJavaCompileActionBuilder(
JavaSemantics semantics) {
JavaCompileAction.Builder builder = new JavaCompileAction.Builder(ruleContext, semantics);
- builder.setJavaExecutable(
- ruleContext.getHostConfiguration().getFragment(Jvm.class).getJavaExecutable());
+ builder.setJavaExecutable(JavaCommon.getHostJavaExecutable(ruleContext));
builder.setJavaBaseInputs(
NestedSetBuilder
.fromNestedSet(hostJavabase)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileAction.java
index a82ca291a3..93f1da06bc 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileAction.java
@@ -387,7 +387,7 @@ public class JavaHeaderCompileAction extends SpawnAction {
.addOutputs(outputs)
.setCommandLine(commandLine.build())
.setJarExecutable(
- ruleContext.getHostConfiguration().getFragment(Jvm.class).getJavaExecutable(),
+ JavaCommon.getHostJavaExecutable(ruleContext),
javaToolchain.getHeaderCompiler(),
ImmutableList.<String>builder()
.add("-Xbootclasspath/p:" + javacJar.getExecPath())
@@ -486,7 +486,7 @@ public class JavaHeaderCompileAction extends SpawnAction {
private CustomCommandLine.Builder getBaseArgs(JavaToolchainProvider javaToolchain) {
return CustomCommandLine.builder()
- .addPath(ruleContext.getHostConfiguration().getFragment(Jvm.class).getJavaExecutable())
+ .addPath(JavaCommon.getHostJavaExecutable(ruleContext))
.add("-Xverify:none")
.add(javaToolchain.getJvmOptions())
.addPaths("-Xbootclasspath/p:%s", javacJar.getExecPath())
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaHelper.java
index c6e16e1911..cb06a32b1f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaHelper.java
@@ -155,11 +155,16 @@ public abstract class JavaHelper {
}
TransitiveInfoCollection jvm = ruleContext.getPrerequisite(":jvm", Mode.TARGET);
- if (jvm == null) {
+ return jvm == null ? null : jvm.getProvider(JavaRuntimeProvider.class);
+ }
+
+ public static JavaRuntimeProvider getHostJavaRuntime(RuleContext ruleContext) {
+ if (!ruleContext.attributes().has(":host_jdk", BuildType.LABEL)) {
return null;
}
- return jvm.getProvider(JavaRuntimeProvider.class);
+ TransitiveInfoCollection jvm = ruleContext.getPrerequisite(":host_jdk", Mode.HOST);
+ return jvm == null ? null : jvm.getProvider(JavaRuntimeProvider.class);
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/Jvm.java b/src/main/java/com/google/devtools/build/lib/rules/java/Jvm.java
index 1661e8dcc9..a5c5ec7170 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/Jvm.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/Jvm.java
@@ -15,6 +15,7 @@
package com.google.devtools.build.lib.rules.java;
import com.google.common.collect.ImmutableMap.Builder;
+import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
@@ -41,7 +42,7 @@ public final class Jvm extends BuildConfiguration.Fragment {
private final Label jvmLabel;
private final PathFragment java;
- private static final String BIN_JAVA = "bin/java" + OsUtils.executableExtension();
+ public static final String BIN_JAVA = "bin/java" + OsUtils.executableExtension();
/**
* Creates a Jvm instance. Either the {@code javaHome} parameter is absolute,
@@ -56,15 +57,11 @@ public final class Jvm extends BuildConfiguration.Fragment {
}
/**
- * Returns a path fragment that determines the path to the installation
- * directory. It is either absolute or relative to the execution root.
- */
- public PathFragment getJavaHome() {
- return javaHome;
- }
-
- /**
* Returns the path to the java binary.
+ *
+ * <p>Don't use this method because it relies on package loading during configuration creation.
+ * Use {@link JavaCommon#getHostJavaExecutable(RuleContext)} and
+ * {@link JavaCommon#getJavaExecutable(RuleContext)} instead.
*/
@SkylarkCallable(name = "java_executable", structField = true,
doc = "The java executable, i.e. bin/java relative to the Java home.")
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/ResourceJarActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/java/ResourceJarActionBuilder.java
index 28c0709cfc..eaa06555fb 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/ResourceJarActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/ResourceJarActionBuilder.java
@@ -92,7 +92,7 @@ public class ResourceJarActionBuilder {
if (singleJar.getFilename().endsWith(".jar")) {
builder
.setJarExecutable(
- ruleContext.getHostConfiguration().getFragment(Jvm.class).getJavaExecutable(),
+ JavaCommon.getHostJavaExecutable(ruleContext),
singleJar,
javaToolchain.getJvmOptions())
.addTransitiveInputs(javabase);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/SingleJarActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/java/SingleJarActionBuilder.java
index 4586ac543d..578f94b6e4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/SingleJarActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/SingleJarActionBuilder.java
@@ -62,7 +62,7 @@ public final class SingleJarActionBuilder {
builder
.addTransitiveInputs(JavaHelper.getHostJavabaseInputs(ruleContext))
.setJarExecutable(
- ruleContext.getHostConfiguration().getFragment(Jvm.class).getJavaExecutable(),
+ JavaCommon.getHostJavaExecutable(ruleContext),
singleJar,
JavaToolchainProvider.fromRuleContext(ruleContext).getJvmOptions())
.setExecutionInfo(ExecutionRequirements.WORKER_MODE_ENABLED);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
index 81b9bfb19d..60a24514e0 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
@@ -54,6 +54,7 @@ import com.google.devtools.build.lib.rules.cpp.CcToolchainProvider;
import com.google.devtools.build.lib.rules.cpp.CppConfiguration;
import com.google.devtools.build.lib.rules.cpp.CppHelper;
import com.google.devtools.build.lib.rules.cpp.FdoSupportProvider;
+import com.google.devtools.build.lib.rules.java.JavaCommon;
import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider;
import com.google.devtools.build.lib.rules.java.JavaGenJarsProvider;
import com.google.devtools.build.lib.rules.java.JavaHelper;
@@ -476,7 +477,7 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF
JavaCompilationArgsProvider compArgsProvider,
J2ObjcSource j2ObjcSource) {
CustomCommandLine.Builder argBuilder = CustomCommandLine.builder();
- PathFragment javaExecutable = ruleContext.getFragment(Jvm.class, HOST).getJavaExecutable();
+ PathFragment javaExecutable = JavaCommon.getHostJavaExecutable(ruleContext);
argBuilder.add("--java").add(javaExecutable.getPathString());
Artifact j2ObjcDeployJar = ruleContext.getPrerequisiteArtifact("$j2objc", Mode.HOST);
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/rules/genrule/GenRuleConfiguredTargetTest.java b/src/test/java/com/google/devtools/build/lib/bazel/rules/genrule/GenRuleConfiguredTargetTest.java
index 5db130848c..c2dee96a2b 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/rules/genrule/GenRuleConfiguredTargetTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/rules/genrule/GenRuleConfiguredTargetTest.java
@@ -28,12 +28,10 @@ import com.google.devtools.build.lib.actions.util.ActionsTestUtil;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.FileConfiguredTarget;
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.util.AnalysisMock;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.rules.cpp.CppConfiguration;
-import com.google.devtools.build.lib.rules.java.Jvm;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.util.List;
import java.util.regex.Matcher;
@@ -335,18 +333,13 @@ public class GenRuleConfiguredTargetTest extends BuildViewTestCase {
Artifact javaOutput = getFileConfiguredTarget("//foo:java.txt").getArtifact();
Artifact javabaseOutput = getFileConfiguredTarget("//foo:javabase.txt").getArtifact();
- String expectedPattern = "echo %s > %s";
+ String javaCommand =
+ ((SpawnAction) getGeneratingAction(javaOutput)).getArguments().get(2);
+ assertThat(javaCommand).containsMatch("jdk/bin/java(.exe)? >");
- BuildConfiguration hostConfig = getHostConfiguration();
- String expectedJava = hostConfig.getFragment(Jvm.class).getJavaExecutable().getPathString();
- String expectedJavabase = hostConfig.getFragment(Jvm.class).getJavaHome().getPathString();
-
- assertCommandEquals(
- String.format(expectedPattern, expectedJava, javaOutput.getExecPathString()),
- ((SpawnAction) getGeneratingAction(javaOutput)).getArguments().get(2));
- assertCommandEquals(
- String.format(expectedPattern, expectedJavabase, javabaseOutput.getExecPathString()),
- ((SpawnAction) getGeneratingAction(javabaseOutput)).getArguments().get(2));
+ String javabaseCommand =
+ ((SpawnAction) getGeneratingAction(javabaseOutput)).getArguments().get(2);
+ assertThat(javabaseCommand).contains("jdk >");
}
// Returns the expansion of 'cmd' for the specified genrule.