aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaHelper.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaLibraryHelper.java23
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntime.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeAlias.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeInfo.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeSuite.java2
6 files changed, 31 insertions, 18 deletions
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 d9a2bc456e..86908110de 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
@@ -16,7 +16,6 @@ package com.google.devtools.build.lib.rules.java;
import static com.google.devtools.build.lib.packages.BuildType.NODEP_LABEL_LIST;
import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.analysis.AnalysisUtils;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode;
@@ -159,8 +158,8 @@ public abstract class JavaHelper {
/** Returns the artifacts required to invoke {@code javahome} relative binary in the action. */
public static NestedSet<Artifact> getHostJavabaseInputs(
RuleContext ruleContext, String implicitAttributesSuffix) {
- return AnalysisUtils.getMiddlemanFor(
- ruleContext, ":host_jdk" + implicitAttributesSuffix, Mode.HOST);
+ return JavaLibraryHelper.getJavaBaseMiddleman(ruleContext.getPrerequisite(
+ ":host_jdk" + implicitAttributesSuffix, Mode.HOST));
}
public static JavaRuntimeInfo getJavaRuntime(RuleContext ruleContext) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibraryHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibraryHelper.java
index 4e36c4d1e8..6bb75b64b1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibraryHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibraryHelper.java
@@ -201,7 +201,7 @@ public final class JavaLibraryHelper {
attributes, deps);
}
- NestedSet<Artifact> hostJavabaseArtifacts = getMiddleManFor(hostJavabase);
+ NestedSet<Artifact> hostJavabaseArtifacts = getJavaBaseMiddleman(hostJavabase);
JavaCompilationArtifacts.Builder artifactsBuilder = new JavaCompilationArtifacts.Builder();
JavaCompilationHelper helper =
new JavaCompilationHelper(ruleContext, semantics, javacOpts, attributes,
@@ -233,15 +233,26 @@ public final class JavaLibraryHelper {
return artifactsBuilder.build();
}
- private static NestedSet<Artifact> getMiddleManFor(TransitiveInfoCollection prereq) {
+ static NestedSet<Artifact> getJavaBaseMiddleman(TransitiveInfoCollection prereq) {
if (prereq == null) {
return NestedSetBuilder.emptySet(Order.STABLE_ORDER);
}
- MiddlemanProvider provider = prereq.getProvider(MiddlemanProvider.class);
- if (provider == null) {
- return NestedSetBuilder.emptySet(Order.STABLE_ORDER);
+
+ JavaRuntimeInfo javaRuntimeInfo = prereq.get(JavaRuntimeInfo.PROVIDER);
+ if (javaRuntimeInfo != null) {
+ return javaRuntimeInfo.javaBaseInputsMiddleman();
}
- return provider.getMiddlemanArtifact();
+
+ MiddlemanProvider middlemanProvider = prereq.getProvider(MiddlemanProvider.class);
+ if (middlemanProvider != null) {
+ // This branch is necessary so that we support the legacy case when the javabase is set to
+ // a filegroup (e.g. //tools/defaults:jdk).
+ // TODO(lberki): Remove when we have migrated everyone from //tools/defaults:jdk to
+ // //tools/jdk:current_{host_,}java_runtime.
+ return middlemanProvider.getMiddlemanArtifact();
+ }
+
+ return NestedSetBuilder.emptySet(Order.STABLE_ORDER);
}
/**
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 fb661031e3..0b66fd19cd 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
@@ -19,7 +19,6 @@ import com.google.devtools.build.lib.actions.Actions;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.CompilationHelper;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
-import com.google.devtools.build.lib.analysis.MiddlemanProvider;
import com.google.devtools.build.lib.analysis.PrerequisiteArtifacts;
import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder;
import com.google.devtools.build.lib.analysis.RuleConfiguredTargetFactory;
@@ -73,7 +72,7 @@ public class JavaRuntime implements RuleConfiguredTargetFactory {
.build();
JavaRuntimeInfo javaRuntime = new JavaRuntimeInfo(
- filesToBuild, javaHome, javaBinaryExecPath, javaBinaryRunfilesPath);
+ filesToBuild, middleman, javaHome, javaBinaryExecPath, javaBinaryRunfilesPath);
TemplateVariableInfo templateVariableInfo = new TemplateVariableInfo(ImmutableMap.of(
"JAVA", javaBinaryExecPath.getPathString(),
@@ -83,7 +82,6 @@ public class JavaRuntime implements RuleConfiguredTargetFactory {
.addProvider(RunfilesProvider.class, RunfilesProvider.simple(runfiles))
.setFilesToBuild(filesToBuild)
.addNativeDeclaredProvider(javaRuntime)
- .addProvider(MiddlemanProvider.class, new MiddlemanProvider(middleman))
.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 71fd2b6ccb..4914b3445f 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
@@ -21,7 +21,6 @@ import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.analysis.BaseRuleClasses;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.FileProvider;
-import com.google.devtools.build.lib.analysis.MiddlemanProvider;
import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder;
import com.google.devtools.build.lib.analysis.RuleConfiguredTargetFactory;
import com.google.devtools.build.lib.analysis.RuleContext;
@@ -53,7 +52,6 @@ public class JavaRuntimeAlias implements RuleConfiguredTargetFactory {
.addNativeDeclaredProvider(runtime.get(JavaRuntimeInfo.PROVIDER))
.addNativeDeclaredProvider(runtime.get(TemplateVariableInfo.PROVIDER))
.addProvider(RunfilesProvider.class, runtime.getProvider(RunfilesProvider.class))
- .addProvider(MiddlemanProvider.class, runtime.getProvider(MiddlemanProvider.class))
.setFilesToBuild(runtime.getProvider(FileProvider.class).getFilesToBuild());
} else {
// This happens when --javabase is an absolute path (as opposed to a label). In this case,
@@ -62,6 +60,7 @@ public class JavaRuntimeAlias implements RuleConfiguredTargetFactory {
Jvm jvm = ruleContext.getFragment(Jvm.class);
JavaRuntimeInfo runtimeInfo = new JavaRuntimeInfo(
NestedSetBuilder.emptySet(Order.STABLE_ORDER),
+ NestedSetBuilder.emptySet(Order.STABLE_ORDER),
jvm.getJavaHome(),
jvm.getJavaExecutable(),
jvm.getJavaExecutable());
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeInfo.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeInfo.java
index 87df25f808..7016ecb3aa 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeInfo.java
@@ -34,15 +34,18 @@ public class JavaRuntimeInfo extends NativeInfo {
new NativeProvider<JavaRuntimeInfo>(JavaRuntimeInfo.class, SKYLARK_NAME) {};
private final NestedSet<Artifact> javaBaseInputs;
+ private final NestedSet<Artifact> javaBaseInputsMiddleman;
private final PathFragment javaHome;
private final PathFragment javaBinaryExecPath;
private final PathFragment javaBinaryRunfilesPath;
public JavaRuntimeInfo(
- NestedSet<Artifact> javaBaseInputs, PathFragment javaHome,
- PathFragment javaBinaryExecPath, PathFragment javaBinaryRunfilesPath) {
+ NestedSet<Artifact> javaBaseInputs, NestedSet<Artifact> javaBaseInputsMiddleman,
+ PathFragment javaHome, PathFragment javaBinaryExecPath,
+ PathFragment javaBinaryRunfilesPath) {
super(PROVIDER, ImmutableMap.<String, Object>of());
this.javaBaseInputs = javaBaseInputs;
+ this.javaBaseInputsMiddleman = javaBaseInputsMiddleman;
this.javaHome = javaHome;
this.javaBinaryExecPath = javaBinaryExecPath;
this.javaBinaryRunfilesPath = javaBinaryRunfilesPath;
@@ -53,6 +56,11 @@ public class JavaRuntimeInfo extends NativeInfo {
return javaBaseInputs;
}
+ /** A middleman representing the javabase. */
+ public NestedSet<Artifact> javaBaseInputsMiddleman() {
+ return javaBaseInputsMiddleman;
+ }
+
/** The root directory of the Java installation. */
public PathFragment javaHome() {
return javaHome;
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 f3bc6fd522..e3e990b6b7 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
@@ -16,7 +16,6 @@ package com.google.devtools.build.lib.rules.java;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.FileProvider;
-import com.google.devtools.build.lib.analysis.MiddlemanProvider;
import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder;
import com.google.devtools.build.lib.analysis.RuleConfiguredTargetFactory;
import com.google.devtools.build.lib.analysis.RuleContext;
@@ -47,7 +46,6 @@ public class JavaRuntimeSuite implements RuleConfiguredTargetFactory {
return new RuleConfiguredTargetBuilder(ruleContext)
.addNativeDeclaredProvider(runtime.get(JavaRuntimeInfo.PROVIDER))
.addProvider(RunfilesProvider.class, runtime.getProvider(RunfilesProvider.class))
- .addProvider(MiddlemanProvider.class, runtime.getProvider(MiddlemanProvider.class))
.addNativeDeclaredProvider(templateVariableInfo)
.setFilesToBuild(runtime.getProvider(FileProvider.class).getFilesToBuild())
.build();