aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/actions/ActionConstructionContext.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java1
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());
}