diff options
author | 2017-01-12 18:17:11 +0000 | |
---|---|---|
committer | 2017-01-13 10:56:31 +0000 | |
commit | f23bc28d653441737047c01a50087668f8bb3155 (patch) | |
tree | eeb06fe105e607fc67caf4135a7fd4f8c29a1ca4 /src/main | |
parent | 013da20765830f0c5a1ccb90a521c90087da680e (diff) |
Improve error when java_toolchain.header_compiler is unset
--
PiperOrigin-RevId: 144339611
MOS_MIGRATED_REVID=144339611
Diffstat (limited to 'src/main')
3 files changed, 26 insertions, 15 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java index 342b9bac68..76b277c42a 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java @@ -301,9 +301,12 @@ public final class JavaCompilationHelper { return false; } if (javaToolchain.getHeaderCompiler() == null) { - getRuleContext().ruleError( - "header compilation was requested but it is not support by the current Java toolchain;" - + " see the java_toolchain.header_compiler attribute"); + getRuleContext() + .ruleError( + String.format( + "header compilation was requested but it is not supported by the current Java" + + " toolchain '%s'; see the java_toolchain.header_compiler attribute", + javaToolchain.getToolchainLabel())); return false; } return true; diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchain.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchain.java index ebc87e4bd7..4fc57a648c 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchain.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchain.java @@ -72,18 +72,20 @@ public final class JavaToolchain implements RuleConfiguredTargetFactory { jvmOpts, javacSupportsWorkers ? SupportsWorkers.YES : SupportsWorkers.NO); final JavaConfiguration configuration = ruleContext.getFragment(JavaConfiguration.class); - JavaToolchainProvider provider = JavaToolchainProvider.create( - toolchainData, - bootclasspath, - extclasspath, - configuration.getDefaultJavacFlags(), - javac, - javabuilder, - headerCompiler, - singleJar, - genClass, - ijar, - compatibleJavacOptions); + JavaToolchainProvider provider = + JavaToolchainProvider.create( + ruleContext.getLabel(), + toolchainData, + bootclasspath, + extclasspath, + configuration.getDefaultJavacFlags(), + javac, + javabuilder, + headerCompiler, + singleJar, + genClass, + ijar, + compatibleJavacOptions); RuleConfiguredTargetBuilder builder = new RuleConfiguredTargetBuilder(ruleContext) .addSkylarkTransitiveInfo(JavaToolchainSkylarkApiProvider.NAME, new JavaToolchainSkylarkApiProvider()) diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchainProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchainProvider.java index 600a8edd61..eae78ed877 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchainProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchainProvider.java @@ -21,6 +21,7 @@ import com.google.devtools.build.lib.analysis.FilesToRunProvider; import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; +import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import java.util.List; @@ -39,6 +40,7 @@ public abstract class JavaToolchainProvider implements TransitiveInfoProvider { } public static JavaToolchainProvider create( + Label label, JavaToolchainData data, NestedSet<Artifact> bootclasspath, NestedSet<Artifact> extclasspath, @@ -51,6 +53,7 @@ public abstract class JavaToolchainProvider implements TransitiveInfoProvider { FilesToRunProvider ijar, ImmutableListMultimap<String, String> compatibleJavacOptions) { return new AutoValue_JavaToolchainProvider( + label, data.getSourceVersion(), data.getTargetVersion(), bootclasspath, @@ -73,6 +76,9 @@ public abstract class JavaToolchainProvider implements TransitiveInfoProvider { data.getJavacSupportsWorkers()); } + /** Returns the label for this {@code java_toolchain}. */ + public abstract Label getToolchainLabel(); + /** @return the input Java language level */ public abstract String getSourceVersion(); |