diff options
author | 2018-01-31 12:49:17 -0800 | |
---|---|---|
committer | 2018-01-31 12:51:15 -0800 | |
commit | 8098304ac8d0f339be14622d4781f9a0d0c47d53 (patch) | |
tree | 7c7ddbf332480cd2693d5ed922ff591cc3c28ad8 /src/main/java/com/google/devtools/build/lib/skyframe/ToolchainUtil.java | |
parent | 7a6dfd62e2083d66c8141ae148e1facf41fbb7e9 (diff) |
Remove references of ConfiguredTarget.getTarget() from ToolchainUtil.
PiperOrigin-RevId: 184032456
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 | 28 |
1 files changed, 21 insertions, 7 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 d6871364d6..acea616d80 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 @@ -25,6 +25,8 @@ 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.packages.NoSuchTargetException; +import com.google.devtools.build.lib.packages.Target; import com.google.devtools.build.lib.skyframe.ConfiguredTargetFunction.ConfiguredValueCreationException; import com.google.devtools.build.lib.skyframe.RegisteredToolchainsFunction.InvalidToolchainLabelException; import com.google.devtools.build.lib.skyframe.ToolchainResolutionFunction.NoToolchainFoundException; @@ -110,7 +112,9 @@ public class ToolchainUtil { */ @Nullable private static PlatformInfo findPlatformInfo( - ValueOrException<ConfiguredValueCreationException> valueOrException, String platformType) + ValueOrException<ConfiguredValueCreationException> valueOrException, + String platformType, + Environment env) throws ConfiguredValueCreationException, ToolchainContextException { ConfiguredTargetValue ctv = (ConfiguredTargetValue) valueOrException.get(); @@ -119,10 +123,20 @@ public class ToolchainUtil { } ConfiguredTarget configuredTarget = ctv.getConfiguredTarget(); + Target target = null; + try { + target = + ((PackageValue) + env.getValue( + PackageValue.key(configuredTarget.getLabel().getPackageIdentifier()))) + .getPackage() + .getTarget(configuredTarget.getLabel().getName()); + } catch (NoSuchTargetException | InterruptedException e) { + throw new IllegalStateException("Unable to get Target when computing PlatformInfo.", e); + } PlatformInfo platformInfo = PlatformProviderUtils.platform(configuredTarget); if (platformInfo == null) { - throw new ToolchainContextException( - new InvalidPlatformException(platformType, configuredTarget)); + throw new ToolchainContextException(new InvalidPlatformException(platformType, target)); } return platformInfo; @@ -150,9 +164,9 @@ public class ToolchainUtil { boolean valuesMissing = env.valuesMissing(); try { PlatformInfo execPlatform = - findPlatformInfo(values.get(executionPlatformKey), "execution platform"); + findPlatformInfo(values.get(executionPlatformKey), "execution platform", env); PlatformInfo targetPlatform = - findPlatformInfo(values.get(targetPlatformKey), "target platform"); + findPlatformInfo(values.get(targetPlatformKey), "target platform", env); if (valuesMissing) { return null; @@ -247,11 +261,11 @@ public class ToolchainUtil { /** Exception used when a platform label is not a valid platform. */ public static final class InvalidPlatformException extends Exception { - public InvalidPlatformException(String platformType, ConfiguredTarget resolvedTarget) { + public InvalidPlatformException(String platformType, Target target) { super( String.format( "Target %s was found as the %s, but does not provide PlatformInfo", - resolvedTarget.getTarget(), platformType)); + target, platformType)); } } |