diff options
author | 2018-02-06 11:04:17 -0800 | |
---|---|---|
committer | 2018-02-06 11:05:56 -0800 | |
commit | 71dbed482868e5a94eb945063c6dd6209aaf776c (patch) | |
tree | 4a178d020b1e5977ddca3940dab5cb0b58c490b4 /src/main/java/com/google/devtools/build/lib/skyframe/ToolchainUtil.java | |
parent | 33c419bb0952721f056f01a0374f9f2d238e98bd (diff) |
Update ToolchainResolutionFunction to consider multiple available
execution platforms.
Part of #4442.
Change-Id: I6678d57f4aaadcb19032bf58820606242ba66a25
PiperOrigin-RevId: 184707708
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/ToolchainUtil.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/ToolchainUtil.java | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainUtil.java b/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainUtil.java index cbfcbd4514..abc002ac57 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainUtil.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainUtil.java @@ -18,6 +18,7 @@ import com.google.auto.value.AutoValue; import com.google.common.base.Joiner; import com.google.common.collect.ImmutableBiMap; import com.google.common.collect.ImmutableList; +import com.google.common.collect.Iterables; import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.PlatformConfiguration; import com.google.devtools.build.lib.analysis.ToolchainContext; @@ -202,7 +203,7 @@ public class ToolchainUtil { for (Label toolchainType : requiredToolchains) { registeredToolchainKeys.add( ToolchainResolutionValue.key( - configuration, toolchainType, targetPlatform, executionPlatform)); + configuration, toolchainType, targetPlatform, ImmutableList.of(executionPlatform))); } Map< @@ -238,9 +239,17 @@ public class ToolchainUtil { if (valueOrException.get() == null) { valuesMissing = true; } else { + ToolchainResolutionValue toolchainResolutionValue = + (ToolchainResolutionValue) valueOrException.get(); + + // TODO(https://github.com/bazelbuild/bazel/issues/4442): Handle finding the best + // execution platform when multiple are available. Label toolchainLabel = - ((ToolchainResolutionValue) valueOrException.get()).toolchainLabel(); - builder.put(requiredToolchainType, toolchainLabel); + Iterables.getFirst( + toolchainResolutionValue.availableToolchainLabels().values(), null); + if (toolchainLabel != null) { + builder.put(requiredToolchainType, toolchainLabel); + } } } catch (NoToolchainFoundException e) { // Save the missing type and continue looping to check for more. |