diff options
author | John Cater <jcater@google.com> | 2017-12-18 08:34:40 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2017-12-18 08:36:05 -0800 |
commit | 15c90b3cda481ee95079b4c4be17e484cb44199a (patch) | |
tree | aa103a0d8b829c979b5a308e116f09f4cf7de043 /src/main/java/com/google/devtools/build/lib/analysis | |
parent | 96ea65b3b884fdec4e32d873b5e5a64354744263 (diff) |
Set the execution platform on a new SpawnAction based on the RuleContext.
Part of #4128.
Change-Id: Ic46d2db2017b6cf4c14a91653ab75b3381b80b5a
PiperOrigin-RevId: 179426362
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis')
3 files changed, 17 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java index eef1771162..755ccd08d9 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java @@ -49,6 +49,7 @@ import com.google.devtools.build.lib.analysis.config.FragmentCollection; import com.google.devtools.build.lib.analysis.config.PatchTransition; import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode; import com.google.devtools.build.lib.analysis.fileset.FilesetProvider; +import com.google.devtools.build.lib.analysis.platform.PlatformInfo; import com.google.devtools.build.lib.analysis.stringtemplate.TemplateContext; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.cmdline.RepositoryName; @@ -999,6 +1000,15 @@ public final class RuleContext extends TargetContext return toolchainContext; } + @Override + @Nullable + public PlatformInfo getExecutionPlatform() { + if (getToolchainContext() == null) { + return null; + } + return getToolchainContext().getExecutionPlatform(); + } + private void checkAttribute(String attributeName, Mode mode) { Attribute attributeDefinition = attributes.getAttributeDefinition(attributeName); if (attributeDefinition == null) { diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/ActionConstructionContext.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/ActionConstructionContext.java index a38a08e6b7..3b10c5a42c 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/actions/ActionConstructionContext.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/ActionConstructionContext.java @@ -18,7 +18,9 @@ import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.Root; import com.google.devtools.build.lib.analysis.AnalysisEnvironment; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.platform.PlatformInfo; import com.google.devtools.build.lib.vfs.PathFragment; +import javax.annotation.Nullable; /** * A temporary interface to allow migration from RuleConfiguredTarget to RuleContext. It bundles @@ -53,4 +55,8 @@ public interface ActionConstructionContext { * method. */ Artifact getDerivedArtifact(PathFragment rootRelativePath, Root root); + + /** Returns the {@link PlatformInfo} describing the execution platform this action should use. */ + @Nullable + PlatformInfo getExecutionPlatform(); } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java index 7dd7312e6e..edb6aab5c1 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java @@ -673,6 +673,7 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie */ @CheckReturnValue public Action[] build(ActionConstructionContext context) { + setExecutionPlatform(context.getExecutionPlatform()); return build(context.getActionOwner(), context.getAnalysisEnvironment(), context.getConfiguration()); } |