diff options
author | 2018-01-23 02:18:34 -0800 | |
---|---|---|
committer | 2018-01-23 02:20:41 -0800 | |
commit | d1c829f490a3113a4fecd91f8b2c36fc59275020 (patch) | |
tree | 92f41933a76d91d5de3295f6f64ff38cfe0286f3 /src/main/java/com | |
parent | fa54bfa31bb25bbe06925e40ebc7a908c1cd64d9 (diff) |
Add JavaRuntimeToolchainInfo class to wrap JavaRuntimeInfo for toolchains access.
Change-Id: I6041c51823fa52d6ae55dfe06afd1754ce05ab98
PiperOrigin-RevId: 182904580
Diffstat (limited to 'src/main/java/com')
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; + } +} |