diff options
author | 2018-01-04 11:52:21 -0800 | |
---|---|---|
committer | 2018-01-04 11:53:59 -0800 | |
commit | ec5d2edb3f6aa82f3a551f26bc7d0e97a77398ef (patch) | |
tree | c0934e400599bc7e27195002b7f76ad87f553f92 /src/main/java/com/google/devtools/build | |
parent | 260756dcd176ce1e9a90454458eddf20ce4e664f (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/com/google/devtools/build')
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; |