aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java
diff options
context:
space:
mode:
authorGravatar John Cater <jcater@google.com>2017-12-04 19:34:53 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2017-12-04 19:37:08 -0800
commit9ac1f287eab0ce2fa0e3c685cd218832091f19e9 (patch)
treec58bbb5df9a84f53cae62f18450cf1c10ba8010e /src/main/java
parentddd5ac16aeffa6c4693c348f73e7365240b1abc5 (diff)
Added execution platform to the ActionExecutionMetadata.
Part of #4128. Change-Id: Id822d3ae6f8daf7c92a75bd8bd28590d4f625845 PiperOrigin-RevId: 177905460
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/AbstractAction.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/ActionExecutionMetadata.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/BUILD1
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/BaseSpawn.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/DelegateSpawn.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/SimpleSpawn.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/Spawn.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java30
-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
12 files changed, 85 insertions, 9 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 04f74585c2..0b272fbbcb 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
@@ -19,6 +19,7 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.google.devtools.build.lib.actions.extra.ExtraActionInfo;
+import com.google.devtools.build.lib.analysis.platform.PlatformInfo;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.CollectionUtils;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -45,6 +46,7 @@ import java.io.IOException;
import java.util.Collection;
import java.util.Map;
import java.util.Map.Entry;
+import javax.annotation.Nullable;
import javax.annotation.concurrent.GuardedBy;
/**
@@ -600,4 +602,10 @@ public abstract class AbstractAction implements Action, SkylarkValue {
public SkylarkDict<String, String> getSkylarkSubstitutions() {
return null;
}
+
+ @Nullable
+ @Override
+ public PlatformInfo getExecutionPlatform() {
+ return null;
+ }
}
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ActionExecutionMetadata.java b/src/main/java/com/google/devtools/build/lib/actions/ActionExecutionMetadata.java
index ec94b6c72a..57ad70d90d 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/ActionExecutionMetadata.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/ActionExecutionMetadata.java
@@ -13,6 +13,7 @@
// limitations under the License.
package com.google.devtools.build.lib.actions;
+import com.google.devtools.build.lib.analysis.platform.PlatformInfo;
import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
import javax.annotation.Nullable;
@@ -126,4 +127,11 @@ public interface ActionExecutionMetadata extends ActionAnalysisMetadata {
*/
@ThreadSafe
boolean discoversInputs();
+
+ /**
+ * 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
+ PlatformInfo getExecutionPlatform();
}
diff --git a/src/main/java/com/google/devtools/build/lib/actions/BUILD b/src/main/java/com/google/devtools/build/lib/actions/BUILD
index 9b8d8bc600..608ea70b8d 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/actions/BUILD
@@ -23,6 +23,7 @@ java_library(
"//src/main/java/com/google/devtools/build/lib:skylarkinterface",
"//src/main/java/com/google/devtools/build/lib:unix",
"//src/main/java/com/google/devtools/build/lib:util",
+ "//src/main/java/com/google/devtools/build/lib/analysis/platform",
"//src/main/java/com/google/devtools/build/lib/buildeventstream",
"//src/main/java/com/google/devtools/build/lib/buildeventstream/proto:build_event_stream_java_proto",
"//src/main/java/com/google/devtools/build/lib/causes",
diff --git a/src/main/java/com/google/devtools/build/lib/actions/BaseSpawn.java b/src/main/java/com/google/devtools/build/lib/actions/BaseSpawn.java
index bc52055207..437f4b1773 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/BaseSpawn.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/BaseSpawn.java
@@ -17,11 +17,13 @@ package com.google.devtools.build.lib.actions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables;
+import com.google.devtools.build.lib.analysis.platform.PlatformInfo;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import javax.annotation.Nullable;
import javax.annotation.concurrent.Immutable;
/** Base implementation of a Spawn. */
@@ -147,4 +149,10 @@ public class BaseSpawn implements Spawn {
public String getMnemonic() {
return action.getMnemonic();
}
+
+ @Override
+ @Nullable
+ public PlatformInfo getExecutionPlatform() {
+ return action.getExecutionPlatform();
+ }
}
diff --git a/src/main/java/com/google/devtools/build/lib/actions/DelegateSpawn.java b/src/main/java/com/google/devtools/build/lib/actions/DelegateSpawn.java
index fd548b66cd..eb09c6ee8e 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/DelegateSpawn.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/DelegateSpawn.java
@@ -16,7 +16,9 @@ package com.google.devtools.build.lib.actions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
+import com.google.devtools.build.lib.analysis.platform.PlatformInfo;
import java.util.Collection;
+import javax.annotation.Nullable;
/**
* A delegating spawn that allow us to overwrite certain methods while maintaining the original
@@ -84,4 +86,10 @@ public class DelegateSpawn implements Spawn {
public String getMnemonic() {
return spawn.getMnemonic();
}
+
+ @Override
+ @Nullable
+ public PlatformInfo getExecutionPlatform() {
+ return spawn.getExecutionPlatform();
+ }
}
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 3857783cb5..19cfedb81e 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
@@ -17,6 +17,8 @@ package com.google.devtools.build.lib.actions;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
+import com.google.devtools.build.lib.analysis.platform.PlatformInfo;
+import javax.annotation.Nullable;
import javax.annotation.concurrent.Immutable;
/**
@@ -135,4 +137,10 @@ public final class SimpleSpawn implements Spawn {
public String getMnemonic() {
return owner.getMnemonic();
}
+
+ @Override
+ @Nullable
+ public PlatformInfo getExecutionPlatform() {
+ return null;
+ }
}
diff --git a/src/main/java/com/google/devtools/build/lib/actions/Spawn.java b/src/main/java/com/google/devtools/build/lib/actions/Spawn.java
index 3a59d9ffb3..7e51517483 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/Spawn.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/Spawn.java
@@ -16,7 +16,9 @@ package com.google.devtools.build.lib.actions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
+import com.google.devtools.build.lib.analysis.platform.PlatformInfo;
import java.util.Collection;
+import javax.annotation.Nullable;
/**
* An object representing a subprocess to be invoked, including its command and
@@ -107,4 +109,7 @@ public interface Spawn {
* Returns a mnemonic (string constant) for this kind of spawn.
*/
String getMnemonic();
+
+ @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 74bd33a0d6..7dd7312e6e 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,6 +55,7 @@ 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;
@@ -109,6 +110,8 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie
private final ExtraActionInfoSupplier<?> extraActionInfoSupplier;
+ @Nullable private final PlatformInfo executionPlatform;
+
/**
* Constructs a SpawnAction using direct initialization arguments.
*
@@ -154,6 +157,7 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie
EmptyRunfilesSupplier.INSTANCE,
mnemonic,
false,
+ null,
null);
}
@@ -195,7 +199,8 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie
RunfilesSupplier runfilesSupplier,
String mnemonic,
boolean executeUnconditionally,
- ExtraActionInfoSupplier<?> extraActionInfoSupplier) {
+ ExtraActionInfoSupplier<?> extraActionInfoSupplier,
+ @Nullable PlatformInfo executionPlatform) {
super(owner, tools, inputs, runfilesSupplier, outputs, env);
this.resourceSet = resourceSet;
this.executionInfo = executionInfo;
@@ -205,6 +210,7 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie
this.mnemonic = mnemonic;
this.executeUnconditionally = executeUnconditionally;
this.extraActionInfoSupplier = extraActionInfoSupplier;
+ this.executionPlatform = executionPlatform;
}
@Override
@@ -460,6 +466,12 @@ 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.
*/
@@ -611,6 +623,7 @@ 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.
@@ -638,6 +651,7 @@ 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;
}
/**
@@ -806,7 +820,8 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie
progressMessage,
new CompositeRunfilesSupplier(
Iterables.concat(this.inputRunfilesSuppliers, this.toolRunfilesSuppliers)),
- mnemonic);
+ mnemonic,
+ executionPlatform);
}
/**
@@ -837,7 +852,8 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie
ImmutableMap<String, String> executionInfo,
CharSequence progressMessage,
RunfilesSupplier runfilesSupplier,
- String mnemonic) {
+ String mnemonic,
+ PlatformInfo executionPlatform) {
return new SpawnAction(
owner,
tools,
@@ -852,7 +868,8 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie
runfilesSupplier,
mnemonic,
executeUnconditionally,
- extraActionInfoSupplier);
+ extraActionInfoSupplier,
+ executionPlatform);
}
private ImmutableList<String> buildExecutableArgs(
@@ -1354,6 +1371,11 @@ 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 e29f0e546a..645348264f 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,6 +87,7 @@ 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 70586b8efb..bb87356728 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,6 +29,7 @@ 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;
@@ -74,7 +75,8 @@ public final class LtoBackendAction extends SpawnAction {
Map<String, String> executionInfo,
CharSequence progressMessage,
RunfilesSupplier runfilesSupplier,
- String mnemonic) {
+ String mnemonic,
+ @Nullable PlatformInfo executionPlatform) {
super(
owner,
ImmutableList.<Artifact>of(),
@@ -89,7 +91,8 @@ public final class LtoBackendAction extends SpawnAction {
runfilesSupplier,
mnemonic,
false,
- null);
+ null,
+ executionPlatform);
mandatoryInputs = inputs;
Preconditions.checkState(
(bitcodeFiles == null) == (imports == null),
@@ -219,7 +222,8 @@ public final class LtoBackendAction extends SpawnAction {
ImmutableMap<String, String> executionInfo,
CharSequence progressMessage,
RunfilesSupplier runfilesSupplier,
- String mnemonic) {
+ String mnemonic,
+ @Nullable PlatformInfo executionPlatform) {
return new LtoBackendAction(
inputsAndTools.toCollection(),
bitcodeFiles,
@@ -232,7 +236,8 @@ public final class LtoBackendAction extends SpawnAction {
executionInfo,
progressMessage,
runfilesSupplier,
- mnemonic);
+ mnemonic,
+ executionPlatform);
}
}
}
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 7cf23808ec..728c07cbe8 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,6 +64,7 @@ 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 f9d634980b..1dbd8b73c4 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
@@ -210,7 +210,8 @@ public final class JavaCompileAction extends SpawnAction {
runfiles,
"Javac",
false /*executeUnconditionally*/,
- null /*extraActionInfoSupplier*/);
+ null /*extraActionInfoSupplier*/,
+ null /*executionPlatform*/);
this.javaCompileCommandLine = javaCompileCommandLine;
this.commandLine = commandLine;