Skip to content

Commit

Permalink
Add some more context to the "unable to find CC toolchain" error.
Browse files Browse the repository at this point in the history
PiperOrigin-RevId: 494161159
Change-Id: I3daca0adfa3fb392cb9fcd4d477a6150ee279199
  • Loading branch information
tjgq authored and copybara-github committed Dec 9, 2022
1 parent 62b0509 commit 7312060
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ java_library(
"//src/main/java/com/google/devtools/build/lib/analysis:make_variable_supplier",
"//src/main/java/com/google/devtools/build/lib/analysis:package_specification_provider",
"//src/main/java/com/google/devtools/build/lib/analysis:platform_configuration",
"//src/main/java/com/google/devtools/build/lib/analysis:resolved_toolchain_context",
"//src/main/java/com/google/devtools/build/lib/analysis:rule_definition_environment",
"//src/main/java/com/google/devtools/build/lib/analysis:starlark/args",
"//src/main/java/com/google/devtools/build/lib/analysis:starlark/starlark_api_provider",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import com.google.devtools.build.lib.analysis.AnalysisUtils;
import com.google.devtools.build.lib.analysis.Expander;
import com.google.devtools.build.lib.analysis.FileProvider;
import com.google.devtools.build.lib.analysis.ResolvedToolchainContext;
import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.RuleErrorConsumer;
Expand Down Expand Up @@ -373,11 +374,17 @@ public static Label getToolchainTypeFromRuleClass(RuleContext ruleContext) {

private static CcToolchainProvider getToolchainFromPlatformConstraints(
RuleContext ruleContext, Label toolchainType) throws RuleErrorException {
ToolchainInfo toolchainInfo = ruleContext.getToolchainContext().forToolchainType(toolchainType);
ResolvedToolchainContext toolchainContext = ruleContext.getToolchainContext();
ToolchainInfo toolchainInfo = toolchainContext.forToolchainType(toolchainType);
if (toolchainInfo == null) {
throw ruleContext.throwWithRuleError(
"Unable to find a CC toolchain using toolchain resolution. Did you properly set"
+ " --platforms?");
String.format(
"Unable to find a CC toolchain using toolchain resolution"
+ " (target %s, target platform %s, exec platform %s)."
+ " Did you properly set --platforms?",
ruleContext.getLabel(),
toolchainContext.targetPlatform().label(),
toolchainContext.executionPlatform().label()));
}
try {
return (CcToolchainProvider) toolchainInfo.getValue("cc");
Expand Down

0 comments on commit 7312060

Please sign in to comment.