diff options
author | lberki <lberki@google.com> | 2017-08-25 12:48:17 +0200 |
---|---|---|
committer | Damien Martin-Guillerez <dmarting@google.com> | 2017-08-25 12:54:38 +0200 |
commit | f6291af5e330de7fed16257748dab739eb72beb7 (patch) | |
tree | 348335d7e7b2d105abd316464477c60331a49958 /src/main/java | |
parent | 0667b83f40e0b86b15c08513052f1e23ca9c149f (diff) |
Add the JAVABASE and JAVA Make variables to java_runtime_alias artifically if --javabase= is an absolute path and thus there is no java_runtime rule to forward them from.
RELNOTES: None.
PiperOrigin-RevId: 166459625
Diffstat (limited to 'src/main/java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeAlias.java | 18 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/java/Jvm.java | 4 |
2 files changed, 20 insertions, 2 deletions
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 e1eec2ee59..8899d0349b 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 @@ -17,6 +17,7 @@ package com.google.devtools.build.lib.rules.java; import static com.google.devtools.build.lib.packages.Attribute.attr; import static com.google.devtools.build.lib.packages.BuildType.LABEL; +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; @@ -55,9 +56,22 @@ public class JavaRuntimeAlias implements RuleConfiguredTargetFactory { .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, + // we don't have a java_runtime rule we can proxy, thus we synthesize all its providers. + // This can go away once --javabase=<absolute path> is not supported anymore. + Jvm jvm = ruleContext.getFragment(Jvm.class); + JavaRuntimeInfo runtimeInfo = new JavaRuntimeInfo( + NestedSetBuilder.emptySet(Order.STABLE_ORDER), + jvm.getJavaHome(), + jvm.getJavaExecutable(), + jvm.getJavaExecutable()); builder .setFilesToBuild(NestedSetBuilder.emptySet(Order.STABLE_ORDER)) - .addProvider(RunfilesProvider.class, RunfilesProvider.EMPTY); + .addProvider(RunfilesProvider.class, RunfilesProvider.EMPTY) + .addNativeDeclaredProvider(runtimeInfo) + .addNativeDeclaredProvider(new MakeVariableInfo(ImmutableMap.of( + "JAVABASE", jvm.getJavaHome().getPathString(), + "JAVA", jvm.getJavaExecutable().getPathString()))); } return builder.build(); @@ -71,7 +85,7 @@ public class JavaRuntimeAlias implements RuleConfiguredTargetFactory { @Override public RuleClass build(RuleClass.Builder builder, RuleDefinitionEnvironment environment) { return builder - .requiresConfigurationFragments(JavaConfiguration.class) + .requiresConfigurationFragments(JavaConfiguration.class, Jvm.class) .removeAttribute("licenses") .removeAttribute("distribs") .add(attr(":jvm", LABEL).value(JavaSemantics.jvmAttribute(environment))) 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 a5c5ec7170..1b7e4ac280 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 @@ -80,6 +80,10 @@ public final class Jvm extends BuildConfiguration.Fragment { return jvmLabel; } + public PathFragment getJavaHome() { + return javaHome; + } + @Override public void addGlobalMakeVariables(Builder<String, String> globalMakeEnvBuilder) { globalMakeEnvBuilder.put("JAVABASE", javaHome.getPathString()); |