diff options
author | John Cater <jcater@google.com> | 2018-07-17 12:22:24 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-07-17 12:24:16 -0700 |
commit | ddebc72255212c808db21d146078b3b3f5897038 (patch) | |
tree | fb0f6c806419c0c25a2564b9d88dcc39ea98c768 /src/main/java/com/google/devtools/build/lib/skyframe/RegisteredExecutionPlatformsFunction.java | |
parent | 474b896bfdb8c54640aa3f96bd3c84407b6349d4 (diff) |
Move platform lookup to new dedicated helper class.
Change-Id: I2195a3f7d60e9835bc00d6f151ea91271fdccf6f
PiperOrigin-RevId: 204954233
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/RegisteredExecutionPlatformsFunction.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/RegisteredExecutionPlatformsFunction.java | 43 |
1 files changed, 9 insertions, 34 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredExecutionPlatformsFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredExecutionPlatformsFunction.java index ad775ca9a5..4ec5e7faca 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredExecutionPlatformsFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredExecutionPlatformsFunction.java @@ -20,21 +20,17 @@ import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.PlatformConfiguration; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.platform.PlatformInfo; -import com.google.devtools.build.lib.analysis.platform.PlatformProviderUtils; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.cmdline.TargetParsingException; import com.google.devtools.build.lib.packages.Package; import com.google.devtools.build.lib.pkgcache.FilteringPolicies; -import com.google.devtools.build.lib.skyframe.ConfiguredTargetFunction.ConfiguredValueCreationException; -import com.google.devtools.build.lib.skyframe.ToolchainUtil.InvalidPlatformException; +import com.google.devtools.build.lib.skyframe.PlatformLookupUtil.InvalidPlatformException; import com.google.devtools.build.skyframe.SkyFunction; import com.google.devtools.build.skyframe.SkyFunctionException; import com.google.devtools.build.skyframe.SkyFunctionException.Transience; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; -import com.google.devtools.build.skyframe.ValueOrException; import java.util.List; -import java.util.Map; import javax.annotation.Nullable; /** {@link SkyFunction} that returns all registered execution platforms available. */ @@ -122,38 +118,17 @@ public class RegisteredExecutionPlatformsFunction implements SkyFunction { .collect(ImmutableList.toImmutableList()); // Load the actual configured targets and ensure that they have real, valid PlatformInfo - // instances. These are loaded later during toolchain resolution (see - // ToolchainUtil#getPlatformInfo), so this is work that needs to be done anyway, but here we can - // fail fast on an error. - Map<SkyKey, ValueOrException<ConfiguredValueCreationException>> values = - env.getValuesOrThrow(keys, ConfiguredValueCreationException.class); - boolean valuesMissing = false; - for (SkyKey key : keys) { - ConfiguredTargetKey configuredTargetKey = (ConfiguredTargetKey) key.argument(); - Label platformLabel = configuredTargetKey.getLabel(); - try { - ValueOrException<ConfiguredValueCreationException> valueOrException = values.get(key); - if (valueOrException.get() == null) { - valuesMissing = true; - continue; - } - ConfiguredTarget target = - ((ConfiguredTargetValue) valueOrException.get()).getConfiguredTarget(); - PlatformInfo platformInfo = PlatformProviderUtils.platform(target); - - if (platformInfo == null) { - throw new RegisteredExecutionPlatformsFunctionException( - new InvalidPlatformException(platformLabel), Transience.PERSISTENT); - } - } catch (ConfiguredValueCreationException e) { - throw new RegisteredExecutionPlatformsFunctionException( - new InvalidPlatformException(platformLabel, e), Transience.PERSISTENT); + // instances. These are loaded later during toolchain resolution, so this is work that needs to + // be done anyway, but here we can fail fast on an error. + try { + PlatformLookupUtil.getPlatformInfo(keys, env); + if (env.valuesMissing()) { + return null; } + } catch (InvalidPlatformException e) { + throw new RegisteredExecutionPlatformsFunctionException(e, Transience.PERSISTENT); } - if (valuesMissing) { - return null; - } return keys; } |