From ac6b092caafc7e1f7b58b4d2556ad79d6e2145c8 Mon Sep 17 00:00:00 2001 From: Chris Parsons Date: Thu, 23 Feb 2017 21:20:23 +0000 Subject: Better error messaging if apple cc toolchain cannot locate xcode -- PiperOrigin-RevId: 148382422 MOS_MIGRATED_REVID=148382422 --- .../devtools/build/lib/rules/apple/cpp/AppleCcToolchain.java | 11 ++++++----- .../com/google/devtools/build/lib/rules/cpp/CcToolchain.java | 5 ++++- 2 files changed, 10 insertions(+), 6 deletions(-) (limited to 'src/main/java/com/google/devtools/build') diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/cpp/AppleCcToolchain.java b/src/main/java/com/google/devtools/build/lib/rules/apple/cpp/AppleCcToolchain.java index 4c1d991a15..3ce8d66895 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/apple/cpp/AppleCcToolchain.java +++ b/src/main/java/com/google/devtools/build/lib/rules/apple/cpp/AppleCcToolchain.java @@ -53,17 +53,18 @@ public class AppleCcToolchain extends CcToolchain { public static final String APPLE_SDK_PLATFORM_VALUE_KEY = "apple_sdk_platform_value"; @Override - protected Map getBuildVariables(RuleContext ruleContext) { + protected Map getBuildVariables(RuleContext ruleContext) + throws RuleErrorException { AppleConfiguration appleConfiguration = ruleContext.getFragment(AppleConfiguration.class); - + if (appleConfiguration.getXcodeVersion() == null) { - ruleContext.ruleError("Xcode version must be specified to use an Apple CROSSTOOL"); + ruleContext.throwWithRuleError("Xcode version must be specified to use an Apple CROSSTOOL"); } - + Platform platform = appleConfiguration.getSingleArchPlatform(); Map appleEnv = getEnvironment(ruleContext); - + return ImmutableMap.builder() .put( XCODE_VERSION_KEY, diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java index 5ff16981f1..ca9cf8c98f 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java @@ -345,8 +345,11 @@ public class CcToolchain implements RuleConfiguredTargetFactory { * be overridden by subclasses of CcToolchain. * * @param ruleContext the rule context + * @throws RuleErrorException if there are configuration errors making it impossible to resolve + * certain build variables of this toolchain */ - protected Map getBuildVariables(RuleContext ruleContext) { + protected Map getBuildVariables(RuleContext ruleContext) + throws RuleErrorException { return ImmutableMap.of(); } -- cgit v1.2.3