From f23bc28d653441737047c01a50087668f8bb3155 Mon Sep 17 00:00:00 2001 From: Liam Miller-Cushon Date: Thu, 12 Jan 2017 18:17:11 +0000 Subject: Improve error when java_toolchain.header_compiler is unset -- PiperOrigin-RevId: 144339611 MOS_MIGRATED_REVID=144339611 --- .../lib/rules/java/JavaCompilationHelper.java | 9 +++++--- .../build/lib/rules/java/JavaToolchain.java | 26 ++++++++++++---------- .../lib/rules/java/JavaToolchainProvider.java | 6 +++++ 3 files changed, 26 insertions(+), 15 deletions(-) (limited to 'src/main/java/com/google') 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 bootclasspath, NestedSet extclasspath, @@ -51,6 +53,7 @@ public abstract class JavaToolchainProvider implements TransitiveInfoProvider { FilesToRunProvider ijar, ImmutableListMultimap 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(); -- cgit v1.2.3