aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build
diff options
context:
space:
mode:
authorGravatar lberki <lberki@google.com>2017-07-11 09:51:55 +0200
committerGravatar László Csomor <laszlocsomor@google.com>2017-07-11 10:56:28 +0200
commit76a251b8405cc49750d73561ce19902bda7f269e (patch)
tree93f9562c05e321bcca6e0f6b53d60682b2b53646 /src/main/java/com/google/devtools/build
parent5ed49b0da44a61cf178f6ea42db647ec7804b774 (diff)
Add Make variables to java_runtime and java_runtime_suite .
This is necessary so that Make variables are not accessed from BuildConfiguration, which is in turn necessary so that we can forego package loading during configuration creation (currently we need to parse the java_runtime_suite / java_runtime rules to create the Jvm fragment) RELNOTES: None. PiperOrigin-RevId: 161496779
Diffstat (limited to 'src/main/java/com/google/devtools/build')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntime.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeSuite.java5
2 files changed, 14 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntime.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntime.java
index 37fbab51da..73f9f09c51 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntime.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntime.java
@@ -14,6 +14,7 @@
package com.google.devtools.build.lib.rules.java;
+import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.actions.Actions;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.CompilationHelper;
@@ -27,6 +28,7 @@ import com.google.devtools.build.lib.analysis.Runfiles;
import com.google.devtools.build.lib.analysis.RunfilesProvider;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
+import com.google.devtools.build.lib.rules.MakeVariableProvider;
import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory;
import com.google.devtools.build.lib.syntax.Type;
import com.google.devtools.build.lib.util.OsUtils;
@@ -70,12 +72,19 @@ public class JavaRuntime implements RuleConfiguredTargetFactory {
new Runfiles.Builder(ruleContext.getWorkspaceName())
.addTransitiveArtifacts(filesToBuild)
.build();
+
+ MakeVariableProvider makeVariableProvider = new MakeVariableProvider(ImmutableMap.of(
+ "JAVA", javaBinaryExecPath.getPathString(),
+ "JAVABASE", javaHome.getPathString()));
+
return new RuleConfiguredTargetBuilder(ruleContext)
.addProvider(RunfilesProvider.class, RunfilesProvider.simple(runfiles))
.setFilesToBuild(filesToBuild)
.addProvider(JavaRuntimeProvider.class, JavaRuntimeProvider.create(
filesToBuild, javaHome, javaBinaryExecPath, javaBinaryRunfilesPath))
.addProvider(MiddlemanProvider.class, new MiddlemanProvider(middleman))
+ .addProvider(makeVariableProvider)
+ .addNativeDeclaredProvider(makeVariableProvider)
.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeSuite.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeSuite.java
index e214eac612..dfde6fd937 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeSuite.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeSuite.java
@@ -22,6 +22,7 @@ import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.RunfilesProvider;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
+import com.google.devtools.build.lib.rules.MakeVariableProvider;
import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory;
/** Implementation for the {@code java_runtime_suite} rule. */
@@ -38,10 +39,14 @@ public class JavaRuntimeSuite implements RuleConfiguredTargetFactory {
ruleContext.throwWithRuleError(
"could not resolve runtime for cpu " + ruleContext.getConfiguration().getCpu());
}
+
+ MakeVariableProvider makeVariableProvider = runtime.getProvider(MakeVariableProvider.class);
return new RuleConfiguredTargetBuilder(ruleContext)
.addProvider(JavaRuntimeProvider.class, runtime.getProvider(JavaRuntimeProvider.class))
.addProvider(RunfilesProvider.class, runtime.getProvider(RunfilesProvider.class))
.addProvider(MiddlemanProvider.class, runtime.getProvider(MiddlemanProvider.class))
+ .addProvider(makeVariableProvider)
+ .addNativeDeclaredProvider(makeVariableProvider)
.setFilesToBuild(runtime.getProvider(FileProvider.class).getFilesToBuild())
.build();
}