aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGravatar John Cater <jcater@google.com>2018-01-23 02:18:34 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-01-23 02:20:41 -0800
commitd1c829f490a3113a4fecd91f8b2c36fc59275020 (patch)
tree92f41933a76d91d5de3295f6f64ff38cfe0286f3 /src/main/java/com
parentfa54bfa31bb25bbe06925e40ebc7a908c1cd64d9 (diff)
Add JavaRuntimeToolchainInfo class to wrap JavaRuntimeInfo for toolchains access.
Change-Id: I6041c51823fa52d6ae55dfe06afd1754ce05ab98 PiperOrigin-RevId: 182904580
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/google/devtools/build/lib/BUILD1
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntime.java1
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeAlias.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeSuite.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeToolchainInfo.java38
5 files changed, 46 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD
index ff6f0c287f..82fc8d6ba6 100644
--- a/src/main/java/com/google/devtools/build/lib/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/BUILD
@@ -881,6 +881,7 @@ java_library(
"rules/java/JavaRuleOutputJarsProvider.java",
"rules/java/JavaRunfilesProvider.java",
"rules/java/JavaRuntimeInfo.java",
+ "rules/java/JavaRuntimeToolchainInfo.java",
"rules/java/JavaSemantics.java",
"rules/java/JavaSkylarkApiProvider.java",
"rules/java/JavaSkylarkCommon.java",
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 0b66fd19cd..17986970f1 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
@@ -82,6 +82,7 @@ public class JavaRuntime implements RuleConfiguredTargetFactory {
.addProvider(RunfilesProvider.class, RunfilesProvider.simple(runfiles))
.setFilesToBuild(filesToBuild)
.addNativeDeclaredProvider(javaRuntime)
+ .addNativeDeclaredProvider(new JavaRuntimeToolchainInfo(javaRuntime))
.addNativeDeclaredProvider(templateVariableInfo)
.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeAlias.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeAlias.java
index ef2c28c8bd..1f405172ab 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeAlias.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeAlias.java
@@ -42,8 +42,10 @@ public class JavaRuntimeAlias implements RuleConfiguredTargetFactory {
TransitiveInfoCollection runtime = ruleContext.getPrerequisite(":jvm", Mode.TARGET);
// Sadly, we can't use an AliasConfiguredTarget here because we need to be prepared for the case
// when --javabase is not a label. For the time being.
+ JavaRuntimeInfo javaRuntime = runtime.get(JavaRuntimeInfo.PROVIDER);
return new RuleConfiguredTargetBuilder(ruleContext)
- .addNativeDeclaredProvider(runtime.get(JavaRuntimeInfo.PROVIDER))
+ .addNativeDeclaredProvider(javaRuntime)
+ .addNativeDeclaredProvider(new JavaRuntimeToolchainInfo(javaRuntime))
.addNativeDeclaredProvider(runtime.get(TemplateVariableInfo.PROVIDER))
.addProvider(RunfilesProvider.class, runtime.getProvider(RunfilesProvider.class))
.setFilesToBuild(runtime.getProvider(FileProvider.class).getFilesToBuild())
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 e3e990b6b7..062d2baa4e 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
@@ -43,8 +43,10 @@ public class JavaRuntimeSuite implements RuleConfiguredTargetFactory {
TemplateVariableInfo templateVariableInfo =
runtime.get(TemplateVariableInfo.PROVIDER);
+ JavaRuntimeInfo javaRuntime = runtime.get(JavaRuntimeInfo.PROVIDER);
return new RuleConfiguredTargetBuilder(ruleContext)
- .addNativeDeclaredProvider(runtime.get(JavaRuntimeInfo.PROVIDER))
+ .addNativeDeclaredProvider(javaRuntime)
+ .addNativeDeclaredProvider(new JavaRuntimeToolchainInfo(javaRuntime))
.addProvider(RunfilesProvider.class, runtime.getProvider(RunfilesProvider.class))
.addNativeDeclaredProvider(templateVariableInfo)
.setFilesToBuild(runtime.getProvider(FileProvider.class).getFilesToBuild())
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeToolchainInfo.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeToolchainInfo.java
new file mode 100644
index 0000000000..18e6e908e9
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeToolchainInfo.java
@@ -0,0 +1,38 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.devtools.build.lib.rules.java;
+
+import com.google.common.collect.ImmutableMap;
+import com.google.devtools.build.lib.analysis.platform.ToolchainInfo;
+import com.google.devtools.build.lib.concurrent.ThreadSafety;
+import com.google.devtools.build.lib.events.Location;
+
+/**
+ * A wrapper class for {@link JavaRuntimeInfo} that can be used to expose it to the toolchain
+ * resolution system.
+ */
+@ThreadSafety.Immutable
+public final class JavaRuntimeToolchainInfo extends ToolchainInfo {
+ private final JavaRuntimeInfo javaRuntime;
+
+ public JavaRuntimeToolchainInfo(JavaRuntimeInfo javaRuntime) {
+ super(ImmutableMap.of(), Location.BUILTIN);
+ this.javaRuntime = javaRuntime;
+ }
+
+ public JavaRuntimeInfo javaRuntime() {
+ return javaRuntime;
+ }
+}