aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java
diff options
context:
space:
mode:
authorGravatar John Cater <jcater@google.com>2018-01-04 11:52:21 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-01-04 11:53:59 -0800
commitec5d2edb3f6aa82f3a551f26bc7d0e97a77398ef (patch)
treec0934e400599bc7e27195002b7f76ad87f553f92 /src/main/java
parent260756dcd176ce1e9a90454458eddf20ce4e664f (diff)
Fix Action subclasses so that the execution platform is properly set in
more cases. Part of #4128. Change-Id: Ife5e4581f91ac07931d193ed5eaa256aab3ad047 PiperOrigin-RevId: 180826445
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/ActionOwner.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/SimpleSpawn.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java31
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraAction.java1
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendAction.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleAction.java1
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java3
9 files changed, 31 insertions, 48 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java b/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java
index c241c5698a..faa6db0025 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java
@@ -606,9 +606,9 @@ public abstract class AbstractAction implements Action, SkylarkValue {
return null;
}
- @Nullable
@Override
+ @Nullable
public PlatformInfo getExecutionPlatform() {
- return null;
+ return getOwner().getExecutionPlatform();
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ActionOwner.java b/src/main/java/com/google/devtools/build/lib/actions/ActionOwner.java
index 864e68a8f7..4ce22b752c 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/ActionOwner.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/ActionOwner.java
@@ -16,6 +16,7 @@ package com.google.devtools.build.lib.actions;
import com.google.auto.value.AutoValue;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.lib.analysis.platform.PlatformInfo;
import com.google.devtools.build.lib.buildeventstream.BuildEvent;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
@@ -43,6 +44,7 @@ public abstract class ActionOwner {
"empty target kind",
"system",
null,
+ null,
null);
public static ActionOwner create(
@@ -53,7 +55,8 @@ public abstract class ActionOwner {
@Nullable String targetKind,
String configurationChecksum,
@Nullable BuildEvent configuration,
- @Nullable String additionalProgressInfo) {
+ @Nullable String additionalProgressInfo,
+ @Nullable PlatformInfo executionPlatform) {
return new AutoValue_ActionOwner(
location,
label,
@@ -62,7 +65,8 @@ public abstract class ActionOwner {
Preconditions.checkNotNull(configurationChecksum),
configuration,
targetKind,
- additionalProgressInfo);
+ additionalProgressInfo,
+ executionPlatform);
}
/** Returns the location of this ActionOwner, if any; null otherwise. */
@@ -105,5 +109,12 @@ public abstract class ActionOwner {
@Nullable
abstract String getAdditionalProgressInfo();
+ /**
+ * Returns the {@link PlatformInfo} platform this action should be executed on. If the execution
+ * platform is {@code null}, then the host platform is assumed.
+ */
+ @Nullable
+ abstract PlatformInfo getExecutionPlatform();
+
ActionOwner() {}
}
diff --git a/src/main/java/com/google/devtools/build/lib/actions/SimpleSpawn.java b/src/main/java/com/google/devtools/build/lib/actions/SimpleSpawn.java
index 19cfedb81e..4daffaf209 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/SimpleSpawn.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/SimpleSpawn.java
@@ -141,6 +141,6 @@ public final class SimpleSpawn implements Spawn {
@Override
@Nullable
public PlatformInfo getExecutionPlatform() {
- return null;
+ return owner.getExecutionPlatform();
}
}
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 25a0cf3381..9f06d5ce96 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
@@ -381,7 +381,8 @@ public final class RuleContext extends TargetContext
@Override
public ActionOwner getActionOwner() {
if (actionOwner == null) {
- actionOwner = createActionOwner(rule, aspectDescriptors, getConfiguration());
+ actionOwner =
+ createActionOwner(rule, aspectDescriptors, getConfiguration(), getExecutionPlatform());
}
return actionOwner;
}
@@ -461,7 +462,8 @@ public final class RuleContext extends TargetContext
public static ActionOwner createActionOwner(
Rule rule,
ImmutableList<AspectDescriptor> aspectDescriptors,
- BuildConfiguration configuration) {
+ BuildConfiguration configuration,
+ @Nullable PlatformInfo executionPlatform) {
return ActionOwner.create(
rule.getLabel(),
aspectDescriptors,
@@ -470,7 +472,8 @@ public final class RuleContext extends TargetContext
rule.getTargetKind(),
configuration.checksum(),
configuration,
- configuration.isHostConfiguration() ? HOST_CONFIGURATION_PROGRESS_TAG : null);
+ configuration.isHostConfiguration() ? HOST_CONFIGURATION_PROGRESS_TAG : null,
+ executionPlatform);
}
@Override
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 edb6aab5c1..74bd33a0d6 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
@@ -55,7 +55,6 @@ import com.google.devtools.build.lib.analysis.AnalysisEnvironment;
import com.google.devtools.build.lib.analysis.FilesToRunProvider;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
-import com.google.devtools.build.lib.analysis.platform.PlatformInfo;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.collect.nestedset.NestedSetView;
@@ -110,8 +109,6 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie
private final ExtraActionInfoSupplier<?> extraActionInfoSupplier;
- @Nullable private final PlatformInfo executionPlatform;
-
/**
* Constructs a SpawnAction using direct initialization arguments.
*
@@ -157,7 +154,6 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie
EmptyRunfilesSupplier.INSTANCE,
mnemonic,
false,
- null,
null);
}
@@ -199,8 +195,7 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie
RunfilesSupplier runfilesSupplier,
String mnemonic,
boolean executeUnconditionally,
- ExtraActionInfoSupplier<?> extraActionInfoSupplier,
- @Nullable PlatformInfo executionPlatform) {
+ ExtraActionInfoSupplier<?> extraActionInfoSupplier) {
super(owner, tools, inputs, runfilesSupplier, outputs, env);
this.resourceSet = resourceSet;
this.executionInfo = executionInfo;
@@ -210,7 +205,6 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie
this.mnemonic = mnemonic;
this.executeUnconditionally = executeUnconditionally;
this.extraActionInfoSupplier = extraActionInfoSupplier;
- this.executionPlatform = executionPlatform;
}
@Override
@@ -466,12 +460,6 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie
return actionExecutionContext.getSpawnActionContext(getMnemonic());
}
- @Override
- @Nullable
- public PlatformInfo getExecutionPlatform() {
- return executionPlatform;
- }
-
/**
* A spawn instance that is tied to a specific SpawnAction.
*/
@@ -623,7 +611,6 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie
private String mnemonic = "Unknown";
protected ExtraActionInfoSupplier<?> extraActionInfoSupplier = null;
private boolean disableSandboxing = false;
- @Nullable private PlatformInfo executionPlatform;
/**
* Creates a SpawnAction builder.
@@ -651,7 +638,6 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie
this.commandLines = Lists.newArrayList(other.commandLines);
this.progressMessage = other.progressMessage;
this.mnemonic = other.mnemonic;
- this.executionPlatform = other.executionPlatform;
}
/**
@@ -673,7 +659,6 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie
*/
@CheckReturnValue
public Action[] build(ActionConstructionContext context) {
- setExecutionPlatform(context.getExecutionPlatform());
return build(context.getActionOwner(), context.getAnalysisEnvironment(),
context.getConfiguration());
}
@@ -821,8 +806,7 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie
progressMessage,
new CompositeRunfilesSupplier(
Iterables.concat(this.inputRunfilesSuppliers, this.toolRunfilesSuppliers)),
- mnemonic,
- executionPlatform);
+ mnemonic);
}
/**
@@ -853,8 +837,7 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie
ImmutableMap<String, String> executionInfo,
CharSequence progressMessage,
RunfilesSupplier runfilesSupplier,
- String mnemonic,
- PlatformInfo executionPlatform) {
+ String mnemonic) {
return new SpawnAction(
owner,
tools,
@@ -869,8 +852,7 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie
runfilesSupplier,
mnemonic,
executeUnconditionally,
- extraActionInfoSupplier,
- executionPlatform);
+ extraActionInfoSupplier);
}
private ImmutableList<String> buildExecutableArgs(
@@ -1372,11 +1354,6 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie
this.disableSandboxing = true;
return this;
}
-
- public Builder setExecutionPlatform(@Nullable PlatformInfo executionPlatform) {
- this.executionPlatform = executionPlatform;
- return this;
- }
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraAction.java b/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraAction.java
index 645348264f..e29f0e546a 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraAction.java
@@ -87,7 +87,6 @@ public final class ExtraAction extends SpawnAction {
new CompositeRunfilesSupplier(shadowedAction.getRunfilesSupplier(), runfilesSupplier),
mnemonic,
false,
- null,
null);
this.shadowedAction = shadowedAction;
this.createDummyOutput = createDummyOutput;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendAction.java
index bb87356728..70586b8efb 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendAction.java
@@ -29,7 +29,6 @@ import com.google.devtools.build.lib.actions.ResourceSet;
import com.google.devtools.build.lib.actions.RunfilesSupplier;
import com.google.devtools.build.lib.analysis.actions.CommandLine;
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
-import com.google.devtools.build.lib.analysis.platform.PlatformInfo;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.util.Fingerprint;
import com.google.devtools.build.lib.vfs.FileSystemUtils;
@@ -75,8 +74,7 @@ public final class LtoBackendAction extends SpawnAction {
Map<String, String> executionInfo,
CharSequence progressMessage,
RunfilesSupplier runfilesSupplier,
- String mnemonic,
- @Nullable PlatformInfo executionPlatform) {
+ String mnemonic) {
super(
owner,
ImmutableList.<Artifact>of(),
@@ -91,8 +89,7 @@ public final class LtoBackendAction extends SpawnAction {
runfilesSupplier,
mnemonic,
false,
- null,
- executionPlatform);
+ null);
mandatoryInputs = inputs;
Preconditions.checkState(
(bitcodeFiles == null) == (imports == null),
@@ -222,8 +219,7 @@ public final class LtoBackendAction extends SpawnAction {
ImmutableMap<String, String> executionInfo,
CharSequence progressMessage,
RunfilesSupplier runfilesSupplier,
- String mnemonic,
- @Nullable PlatformInfo executionPlatform) {
+ String mnemonic) {
return new LtoBackendAction(
inputsAndTools.toCollection(),
bitcodeFiles,
@@ -236,8 +232,7 @@ public final class LtoBackendAction extends SpawnAction {
executionInfo,
progressMessage,
runfilesSupplier,
- mnemonic,
- executionPlatform);
+ mnemonic);
}
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleAction.java b/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleAction.java
index 728c07cbe8..7cf23808ec 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleAction.java
@@ -64,7 +64,6 @@ public class GenRuleAction extends SpawnAction {
runfilesSupplier,
"Genrule",
false,
- null,
null);
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
index 9ef4ffe01d..dd4a5caa07 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
@@ -211,8 +211,7 @@ public final class JavaCompileAction extends SpawnAction {
runfiles,
"Javac",
false /*executeUnconditionally*/,
- null /*extraActionInfoSupplier*/,
- null /*executionPlatform*/);
+ null /*extraActionInfoSupplier*/);
this.javaCompileCommandLine = javaCompileCommandLine;
this.commandLine = commandLine;