aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
authorGravatar ruperts <ruperts@google.com>2017-11-21 16:37:13 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2017-11-21 16:38:50 -0800
commit7967f3387e63723bb36b974f83a816265d404c38 (patch)
tree1533cc8bd2d63e1db9426d8795df902d104a3d1a /src/main
parenta2a3d8ca6634abb8f8dc184edb4ea01543de8505 (diff)
Return SpawnResults using a List instead of a Set.
Currently we don't care about the list order of SpawnResults. However, we may care about the list order later. Also, if the equals() method for SpawnResults is ever changed then it may be problematic to return SpawnResults in a Set. Aside: ActionResults use SpawnResults to calculate cumulative execution times for Actions, and may provide other metrics in future. RELNOTES: None. PiperOrigin-RevId: 176579460
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/ActionResult.java14
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/SandboxedSpawnActionContext.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/SpawnActionContext.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/actions/FileWriteActionContext.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactAction.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeActionContext.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/test/TestActionContext.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/exec/AbstractSpawnStrategy.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/exec/FileWriteStrategy.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/exec/StandaloneTestResult.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/exec/StandaloneTestStrategy.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeHelper.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeStrategy.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/exec/TestStrategy.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionResult.java14
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleAction.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileAction.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/test/ExclusiveTestStrategy.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/worker/WorkerTestStrategy.java2
23 files changed, 74 insertions, 82 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ActionResult.java b/src/main/java/com/google/devtools/build/lib/actions/ActionResult.java
index b84006c0bd..0b8fa0143d 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/ActionResult.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/ActionResult.java
@@ -15,10 +15,10 @@
package com.google.devtools.build.lib.actions;
import com.google.auto.value.AutoValue;
-import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.ImmutableList;
import java.time.Duration;
+import java.util.List;
import java.util.Optional;
-import java.util.Set;
import java.util.function.Function;
/** Holds the result(s) of an action's execution. */
@@ -26,10 +26,10 @@ import java.util.function.Function;
public abstract class ActionResult {
/** An empty ActionResult used by Actions that don't have any metadata to return. */
- public static final ActionResult EMPTY = ActionResult.create(ImmutableSet.of());
+ public static final ActionResult EMPTY = ActionResult.create(ImmutableList.of());
/** Returns the SpawnResults for the action. */
- public abstract Set<SpawnResult> spawnResults();
+ public abstract List<SpawnResult> spawnResults();
/** Returns a builder that can be used to construct a {@link ActionResult} object. */
public static Builder builder() {
@@ -92,8 +92,8 @@ public abstract class ActionResult {
return getCumulativeTime(spawnResult -> spawnResult.getSystemTime());
}
- /** Creates an ActionResult given a set of SpawnResults. */
- public static ActionResult create(Set<SpawnResult> spawnResults) {
+ /** Creates an ActionResult given a list of SpawnResults. */
+ public static ActionResult create(List<SpawnResult> spawnResults) {
if (spawnResults == null) {
return EMPTY;
} else {
@@ -106,7 +106,7 @@ public abstract class ActionResult {
public abstract static class Builder {
/** Sets the SpawnResults for the action. */
- public abstract Builder setSpawnResults(Set<SpawnResult> spawnResults);
+ public abstract Builder setSpawnResults(List<SpawnResult> spawnResults);
/** Builds and returns an ActionResult object. */
public abstract ActionResult build();
diff --git a/src/main/java/com/google/devtools/build/lib/actions/SandboxedSpawnActionContext.java b/src/main/java/com/google/devtools/build/lib/actions/SandboxedSpawnActionContext.java
index 24292c8c5b..96a2c21808 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/SandboxedSpawnActionContext.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/SandboxedSpawnActionContext.java
@@ -14,7 +14,7 @@
package com.google.devtools.build.lib.actions;
-import java.util.Set;
+import java.util.List;
import java.util.concurrent.atomic.AtomicReference;
/**
@@ -44,11 +44,11 @@ public interface SandboxedSpawnActionContext extends SpawnActionContext {
* to the unique reference of the strategy, the {@link SandboxedSpawnActionContext} should abandon
* all results and raise {@link InterruptedException}.
*
- * @return a Set of {@link SpawnResult}s containing metadata about the Spawn's execution. This
- * will typically contain one element, but could contain no elements if spawn execution did not
- * complete, or contain multiple elements if multiple sub-spawns were executed
+ * @return a List of {@link SpawnResult}s containing metadata about the Spawn's execution. This
+ * will typically contain one element, but could contain no elements if spawn execution did
+ * not complete, or contain multiple elements if multiple sub-spawns were executed
*/
- Set<SpawnResult> exec(
+ List<SpawnResult> exec(
Spawn spawn,
ActionExecutionContext actionExecutionContext,
AtomicReference<Class<? extends SpawnActionContext>> writeOutputFiles)
diff --git a/src/main/java/com/google/devtools/build/lib/actions/SpawnActionContext.java b/src/main/java/com/google/devtools/build/lib/actions/SpawnActionContext.java
index b4066ec870..ce8da0ca1b 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/SpawnActionContext.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/SpawnActionContext.java
@@ -13,7 +13,7 @@
// limitations under the License.
package com.google.devtools.build.lib.actions;
-import java.util.Set;
+import java.util.List;
/**
* A context that allows execution of {@link Spawn} instances.
@@ -22,6 +22,6 @@ import java.util.Set;
public interface SpawnActionContext extends ActionContext {
/** Executes the given spawn and returns metadata about the execution. */
- Set<SpawnResult> exec(Spawn spawn, ActionExecutionContext actionExecutionContext)
+ List<SpawnResult> exec(Spawn spawn, ActionExecutionContext actionExecutionContext)
throws ExecException, InterruptedException;
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/FileWriteActionContext.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/FileWriteActionContext.java
index 4a2a19b1ae..8a0572ef12 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/FileWriteActionContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/FileWriteActionContext.java
@@ -17,7 +17,7 @@ import com.google.devtools.build.lib.actions.ActionContext;
import com.google.devtools.build.lib.actions.ActionExecutionContext;
import com.google.devtools.build.lib.actions.ExecException;
import com.google.devtools.build.lib.actions.SpawnResult;
-import java.util.Set;
+import java.util.List;
/**
* The action context for {@link AbstractFileWriteAction} instances (technically instances of
@@ -28,9 +28,9 @@ public interface FileWriteActionContext extends ActionContext {
/**
* Performs all the setup and then calls back into the action to write the data.
*
- * @return a set of SpawnResults created during execution, if any
+ * @return a list of SpawnResults created during execution, if any
*/
- Set<SpawnResult> exec(
+ List<SpawnResult> exec(
AbstractFileWriteAction action, ActionExecutionContext actionExecutionContext)
throws ExecException, InterruptedException;
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactAction.java
index 90f09f4c94..3c73955c04 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactAction.java
@@ -45,7 +45,6 @@ import java.io.IOException;
import java.util.Collection;
import java.util.List;
import java.util.Map;
-import java.util.Set;
/**
* An action that populates a TreeArtifact with the contents of an archive file.
@@ -191,7 +190,7 @@ public final class PopulateTreeArtifactAction extends AbstractAction {
}
// Execute the spawn.
- Set<SpawnResult> spawnResults;
+ List<SpawnResult> spawnResults;
try {
spawnResults = getContext(actionExecutionContext).exec(spawn, actionExecutionContext);
} catch (ExecException e) {
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 7ca19b757a..0c91168b83 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
@@ -72,7 +72,6 @@ import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import javax.annotation.CheckReturnValue;
import javax.annotation.Nullable;
@@ -260,7 +259,7 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie
*
* <p>Called by {@link #execute}.
*/
- protected Set<SpawnResult> internalExecute(ActionExecutionContext actionExecutionContext)
+ protected List<SpawnResult> internalExecute(ActionExecutionContext actionExecutionContext)
throws ExecException, InterruptedException, CommandLineExpansionException {
return getContext(actionExecutionContext)
.exec(getSpawn(actionExecutionContext.getClientEnv()), actionExecutionContext);
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeActionContext.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeActionContext.java
index 7ea2e2bbe2..449a0cc572 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeActionContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeActionContext.java
@@ -18,7 +18,7 @@ import com.google.devtools.build.lib.actions.ActionContext;
import com.google.devtools.build.lib.actions.ActionExecutionContext;
import com.google.devtools.build.lib.actions.ActionExecutionException;
import com.google.devtools.build.lib.actions.SpawnResult;
-import java.util.Set;
+import java.util.List;
/**
* Action context for symlink tree actions (an action that creates a tree of symlinks).
@@ -28,9 +28,9 @@ public interface SymlinkTreeActionContext extends ActionContext {
/**
* Creates the symlink tree.
*
- * @return a set of SpawnResults created during symlink creation, if any
+ * @return a list of SpawnResults created during symlink creation, if any
*/
- Set<SpawnResult> createSymlinks(
+ List<SpawnResult> createSymlinks(
SymlinkTreeAction action,
ActionExecutionContext actionExecutionContext,
ImmutableMap<String, String> shellEnvironment,
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/TestActionContext.java b/src/main/java/com/google/devtools/build/lib/analysis/test/TestActionContext.java
index 44ae134d9d..885f42bbdf 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/TestActionContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/TestActionContext.java
@@ -20,7 +20,7 @@ import com.google.devtools.build.lib.actions.SpawnResult;
import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.view.test.TestStatus.TestResultData;
import java.io.IOException;
-import java.util.Set;
+import java.util.List;
/**
* A context for the execution of test actions ({@link TestRunnerAction}).
@@ -31,9 +31,9 @@ public interface TestActionContext extends ActionContext {
* Executes the test command, directing standard out / err to {@code outErr}. The status of the
* test should be communicated by posting a {@link TestResult} object to the eventbus.
*
- * @return a set of SpawnResults created during execution of the test command, if any
+ * @return a list of SpawnResults created during execution of the test command, if any
*/
- Set<SpawnResult> exec(TestRunnerAction action, ActionExecutionContext actionExecutionContext)
+ List<SpawnResult> exec(TestRunnerAction action, ActionExecutionContext actionExecutionContext)
throws ExecException, InterruptedException;
/**
diff --git a/src/main/java/com/google/devtools/build/lib/exec/AbstractSpawnStrategy.java b/src/main/java/com/google/devtools/build/lib/exec/AbstractSpawnStrategy.java
index 93b58ff7e2..0f1cf259c0 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/AbstractSpawnStrategy.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/AbstractSpawnStrategy.java
@@ -16,7 +16,7 @@ package com.google.devtools.build.lib.exec;
import com.google.common.base.Preconditions;
import com.google.common.base.Predicates;
-import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.common.eventbus.EventBus;
import com.google.devtools.build.lib.actions.ActionExecutionContext;
@@ -44,7 +44,6 @@ import java.io.IOException;
import java.time.Duration;
import java.util.ArrayList;
import java.util.List;
-import java.util.Set;
import java.util.SortedMap;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
@@ -61,13 +60,13 @@ public abstract class AbstractSpawnStrategy implements SandboxedSpawnActionConte
}
@Override
- public Set<SpawnResult> exec(Spawn spawn, ActionExecutionContext actionExecutionContext)
+ public List<SpawnResult> exec(Spawn spawn, ActionExecutionContext actionExecutionContext)
throws ExecException, InterruptedException {
return exec(spawn, actionExecutionContext, null);
}
@Override
- public Set<SpawnResult> exec(
+ public List<SpawnResult> exec(
Spawn spawn,
ActionExecutionContext actionExecutionContext,
AtomicReference<Class<? extends SpawnActionContext>> writeOutputFiles)
@@ -116,7 +115,7 @@ public abstract class AbstractSpawnStrategy implements SandboxedSpawnActionConte
cwd);
throw new SpawnExecException(message, spawnResult, /*forciblyRunRemotely=*/false);
}
- return ImmutableSet.of(spawnResult);
+ return ImmutableList.of(spawnResult);
}
private List<Path> listExistingOutputFiles(Spawn spawn, Path execRoot) {
diff --git a/src/main/java/com/google/devtools/build/lib/exec/FileWriteStrategy.java b/src/main/java/com/google/devtools/build/lib/exec/FileWriteStrategy.java
index 74df515739..be9841cf0c 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/FileWriteStrategy.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/FileWriteStrategy.java
@@ -14,7 +14,7 @@
package com.google.devtools.build.lib.exec;
-import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.devtools.build.lib.actions.ActionExecutionContext;
import com.google.devtools.build.lib.actions.EnvironmentalExecException;
@@ -28,7 +28,7 @@ import com.google.devtools.build.lib.vfs.Path;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.OutputStream;
-import java.util.Set;
+import java.util.List;
import java.util.logging.Logger;
/**
@@ -43,7 +43,7 @@ public final class FileWriteStrategy implements FileWriteActionContext {
}
@Override
- public Set<SpawnResult> exec(
+ public List<SpawnResult> exec(
AbstractFileWriteAction action, ActionExecutionContext actionExecutionContext)
throws ExecException, InterruptedException {
// TODO(ulfjack): Consider acquiring local resources here before trying to write the file.
@@ -64,6 +64,6 @@ public final class FileWriteStrategy implements FileWriteActionContext {
+ "' due to I/O error: " + e.getMessage(), e);
}
}
- return ImmutableSet.of();
+ return ImmutableList.of();
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/exec/StandaloneTestResult.java b/src/main/java/com/google/devtools/build/lib/exec/StandaloneTestResult.java
index b4fab1fff7..d94e1311a2 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/StandaloneTestResult.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/StandaloneTestResult.java
@@ -15,17 +15,17 @@
package com.google.devtools.build.lib.exec;
import com.google.auto.value.AutoValue;
-import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.actions.SpawnResult;
import com.google.devtools.build.lib.view.test.TestStatus.TestResultData;
-import java.util.Set;
+import java.util.List;
/** Contains information about the results of test execution. */
@AutoValue
public abstract class StandaloneTestResult {
/** Returns the SpawnResults created by the test, if any. */
- public abstract Set<SpawnResult> spawnResults();
+ public abstract List<SpawnResult> spawnResults();
/** Returns the TestResultData for the test. */
public abstract TestResultData testResultData();
@@ -37,7 +37,7 @@ public abstract class StandaloneTestResult {
/** Creates a StandaloneTestResult, given spawnResults and testResultData. */
public static StandaloneTestResult create(
- Set<SpawnResult> spawnResults, TestResultData testResultData) {
+ List<SpawnResult> spawnResults, TestResultData testResultData) {
return builder().setSpawnResults(spawnResults).setTestResultData(testResultData).build();
}
@@ -46,10 +46,10 @@ public abstract class StandaloneTestResult {
public abstract static class Builder {
/** Returns the SpawnResults for the test, if any. */
- abstract Set<SpawnResult> spawnResults();
+ abstract List<SpawnResult> spawnResults();
/** Sets the SpawnResults for the test. */
- public abstract Builder setSpawnResults(Set<SpawnResult> spawnResults);
+ public abstract Builder setSpawnResults(List<SpawnResult> spawnResults);
/** Sets the TestResultData for the test. */
public abstract Builder setTestResultData(TestResultData testResultData);
@@ -59,10 +59,10 @@ public abstract class StandaloneTestResult {
/**
* Returns an immutable StandaloneTestResult object.
*
- * <p>The set of SpawnResults is also made immutable here.
+ * <p>The list of SpawnResults is also made immutable here.
*/
public StandaloneTestResult build() {
- return this.setSpawnResults(ImmutableSet.copyOf(spawnResults())).realBuild();
+ return this.setSpawnResults(ImmutableList.copyOf(spawnResults())).realBuild();
}
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/exec/StandaloneTestStrategy.java b/src/main/java/com/google/devtools/build/lib/exec/StandaloneTestStrategy.java
index bfa8cd8b9d..41fcb3cd12 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/StandaloneTestStrategy.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/StandaloneTestStrategy.java
@@ -16,7 +16,6 @@ package com.google.devtools.build.lib.exec;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.actions.ActionExecutionContext;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.EnvironmentalExecException;
@@ -51,8 +50,8 @@ import com.google.devtools.build.lib.view.test.TestStatus.TestResultData;
import com.google.devtools.build.lib.view.test.TestStatus.TestResultData.Builder;
import java.io.Closeable;
import java.io.IOException;
+import java.util.List;
import java.util.Map;
-import java.util.Set;
/** Runs TestRunnerAction actions. */
@ExecutionStrategy(
@@ -87,7 +86,7 @@ public class StandaloneTestStrategy extends TestStrategy {
}
@Override
- public Set<SpawnResult> exec(
+ public List<SpawnResult> exec(
TestRunnerAction action, ActionExecutionContext actionExecutionContext)
throws ExecException, InterruptedException {
Path execRoot = actionExecutionContext.getExecRoot();
@@ -199,7 +198,7 @@ public class StandaloneTestStrategy extends TestStrategy {
finalizeTest(actionExecutionContext, action, dataBuilder.build());
// TODO(b/62588075): Should we accumulate SpawnResults across test attempts instead of only
- // returning the last set?
+ // returning the last list?
return standaloneTestResult.spawnResults();
} catch (IOException e) {
actionExecutionContext.getEventHandler().handle(Event.error("Caught I/O exception: " + e));
@@ -351,7 +350,7 @@ public class StandaloneTestStrategy extends TestStrategy {
long startTime = actionExecutionContext.getClock().currentTimeMillis();
SpawnActionContext spawnActionContext =
actionExecutionContext.getSpawnActionContext(action.getMnemonic());
- Set<SpawnResult> spawnResults = ImmutableSet.of();
+ List<SpawnResult> spawnResults = ImmutableList.of();
try {
try {
if (executionOptions.testOutput.equals(TestOutputFormat.STREAMED)) {
@@ -374,7 +373,7 @@ public class StandaloneTestStrategy extends TestStrategy {
.setTestPassed(false)
.setStatus(e.hasTimedOut() ? BlazeTestStatus.TIMEOUT : BlazeTestStatus.FAILED)
.addFailedLogs(testLogPath.getPathString());
- spawnResults = ImmutableSet.of(e.getSpawnResult());
+ spawnResults = ImmutableList.of(e.getSpawnResult());
} finally {
long duration = actionExecutionContext.getClock().currentTimeMillis() - startTime;
builder.setStartTimeMillisEpoch(startTime);
diff --git a/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeHelper.java b/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeHelper.java
index 60fbf2dfac..b5f4b92024 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeHelper.java
@@ -15,8 +15,8 @@ package com.google.devtools.build.lib.exec;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists;
import com.google.devtools.build.lib.actions.AbstractAction;
import com.google.devtools.build.lib.actions.ActionExecutionContext;
@@ -35,7 +35,6 @@ import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.io.IOException;
import java.util.List;
-import java.util.Set;
/**
* Helper class responsible for the symlink tree creation.
@@ -109,9 +108,9 @@ public final class SymlinkTreeHelper {
* @param action action instance that requested symlink tree creation
* @param actionExecutionContext Services that are in the scope of the action.
* @param enableRunfiles
- * @return a set of SpawnResults created during symlink creation, if any
+ * @return a list of SpawnResults created during symlink creation, if any
*/
- public Set<SpawnResult> createSymlinks(
+ public List<SpawnResult> createSymlinks(
AbstractAction action,
ActionExecutionContext actionExecutionContext,
BinTools binTools,
@@ -135,7 +134,7 @@ public final class SymlinkTreeHelper {
} catch (IOException e) {
throw new UserExecException(e.getMessage(), e);
}
- return ImmutableSet.of();
+ return ImmutableList.of();
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeStrategy.java b/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeStrategy.java
index 617b8f1d84..a0f87d4da0 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeStrategy.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeStrategy.java
@@ -13,8 +13,8 @@
// limitations under the License.
package com.google.devtools.build.lib.exec;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.actions.ActionExecutionContext;
import com.google.devtools.build.lib.actions.ActionExecutionException;
import com.google.devtools.build.lib.actions.ExecException;
@@ -25,7 +25,7 @@ import com.google.devtools.build.lib.analysis.actions.SymlinkTreeActionContext;
import com.google.devtools.build.lib.analysis.config.BinTools;
import com.google.devtools.build.lib.profiler.AutoProfiler;
import com.google.devtools.build.lib.skyframe.OutputService;
-import java.util.Set;
+import java.util.List;
import java.util.logging.Logger;
/**
@@ -45,7 +45,7 @@ public final class SymlinkTreeStrategy implements SymlinkTreeActionContext {
}
@Override
- public Set<SpawnResult> createSymlinks(
+ public List<SpawnResult> createSymlinks(
SymlinkTreeAction action,
ActionExecutionContext actionExecutionContext,
ImmutableMap<String, String> shellEnvironment,
@@ -63,7 +63,7 @@ public final class SymlinkTreeStrategy implements SymlinkTreeActionContext {
action.getOutputManifest().getPath(),
action.isFilesetTree(),
action.getOutputManifest().getExecPath().getParentDirectory());
- return ImmutableSet.of();
+ return ImmutableList.of();
} else {
return helper.createSymlinks(
action, actionExecutionContext, binTools, shellEnvironment, enableRunfiles);
diff --git a/src/main/java/com/google/devtools/build/lib/exec/TestStrategy.java b/src/main/java/com/google/devtools/build/lib/exec/TestStrategy.java
index dda60463c6..85d1d1d60d 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/TestStrategy.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/TestStrategy.java
@@ -56,7 +56,6 @@ import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import javax.annotation.Nullable;
/** A strategy for executing a {@link TestRunnerAction}. */
@@ -148,7 +147,7 @@ public abstract class TestStrategy implements TestActionContext {
}
@Override
- public abstract Set<SpawnResult> exec(
+ public abstract List<SpawnResult> exec(
TestRunnerAction action, ActionExecutionContext actionExecutionContext)
throws ExecException, InterruptedException;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
index b2b5d4af10..623435bf95 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
@@ -1167,7 +1167,7 @@ public class CppCompileAction extends AbstractAction
actionExecutionContext.getFileOutErr().setErrorFilter(showIncludesFilterForStderr);
}
- Set<SpawnResult> spawnResults;
+ List<SpawnResult> spawnResults;
try {
CppCompileActionResult cppCompileActionResult =
actionExecutionContext
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionResult.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionResult.java
index 93e3ae4ef8..57daf406b9 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionResult.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionResult.java
@@ -15,9 +15,9 @@
package com.google.devtools.build.lib.rules.cpp;
import com.google.auto.value.AutoValue;
-import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.actions.SpawnResult;
-import java.util.Set;
+import java.util.List;
import javax.annotation.Nullable;
/** Contains information about the result of a CppCompileAction's execution. */
@@ -25,7 +25,7 @@ import javax.annotation.Nullable;
public abstract class CppCompileActionResult {
/** Returns the SpawnResults created by the action, if any. */
- public abstract Set<SpawnResult> spawnResults();
+ public abstract List<SpawnResult> spawnResults();
/**
* Gets the optional CppCompileActionContext.Reply for the action.
@@ -46,10 +46,10 @@ public abstract class CppCompileActionResult {
public abstract static class Builder {
/** Returns the SpawnResults for the action, if any. */
- abstract Set<SpawnResult> spawnResults();
+ abstract List<SpawnResult> spawnResults();
/** Sets the SpawnResults for the action. */
- public abstract Builder setSpawnResults(Set<SpawnResult> spawnResults);
+ public abstract Builder setSpawnResults(List<SpawnResult> spawnResults);
/** Sets the CppCompileActionContext.Reply for the action. */
public abstract Builder setContextReply(CppCompileActionContext.Reply reply);
@@ -59,10 +59,10 @@ public abstract class CppCompileActionResult {
/**
* Returns an immutable CppCompileActionResult object.
*
- * <p>The set of SpawnResults is also made immutable here.
+ * <p>The list of SpawnResults is also made immutable here.
*/
public CppCompileActionResult build() {
- return this.setSpawnResults(ImmutableSet.copyOf(spawnResults())).realBuild();
+ return this.setSpawnResults(ImmutableList.copyOf(spawnResults())).realBuild();
}
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
index 5e7d5dfecb..383e84f03d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
@@ -39,7 +39,7 @@ import com.google.devtools.build.lib.vfs.FileSystemUtils;
import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.io.IOException;
-import java.util.Set;
+import java.util.List;
import java.util.UUID;
import java.util.logging.Logger;
@@ -126,7 +126,7 @@ public class FakeCppCompileAction extends CppCompileAction {
public ActionResult execute(ActionExecutionContext actionExecutionContext)
throws ActionExecutionException, InterruptedException {
setModuleFileFlags();
- Set<SpawnResult> spawnResults;
+ List<SpawnResult> spawnResults;
// First, do a normal compilation, to generate the ".d" file. The generated object file is built
// to a temporary location (tempOutputFile) and ignored afterwards.
logger.info("Generating " + getDotdFile());
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java
index a5a82f1b13..4b64e2b7ad 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java
@@ -27,7 +27,7 @@ import com.google.devtools.build.lib.actions.Spawn;
import com.google.devtools.build.lib.actions.SpawnActionContext;
import com.google.devtools.build.lib.actions.SpawnResult;
import com.google.devtools.build.lib.actions.UserExecException;
-import java.util.Set;
+import java.util.List;
/**
* A context for C++ compilation that calls into a {@link SpawnActionContext}.
@@ -67,7 +67,7 @@ public class SpawnGccStrategy implements CppCompileActionContext {
action.getOutputs().asList(),
action.estimateResourceConsumptionLocal());
- Set<SpawnResult> spawnResults =
+ List<SpawnResult> spawnResults =
actionExecutionContext
.getSpawnActionContext(action.getMnemonic())
.exec(spawn, actionExecutionContext);
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 4955c2b183..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
@@ -14,8 +14,8 @@
package com.google.devtools.build.lib.rules.genrule;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.actions.ActionEnvironment;
import com.google.devtools.build.lib.actions.ActionExecutionContext;
import com.google.devtools.build.lib.actions.ActionOwner;
@@ -29,7 +29,6 @@ import com.google.devtools.build.lib.analysis.actions.CommandLine;
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
import com.google.devtools.build.lib.events.EventHandler;
import java.util.List;
-import java.util.Set;
/**
* A spawn action for genrules. Genrules are handled specially in that inputs and outputs are
@@ -69,11 +68,11 @@ public class GenRuleAction extends SpawnAction {
}
@Override
- protected Set<SpawnResult> internalExecute(ActionExecutionContext actionExecutionContext)
+ protected List<SpawnResult> internalExecute(ActionExecutionContext actionExecutionContext)
throws ExecException, InterruptedException {
EventHandler reporter = actionExecutionContext.getEventHandler();
checkInputsForDirectories(reporter, actionExecutionContext.getActionInputFileCache());
- Set<SpawnResult> spawnResults = ImmutableSet.of();
+ List<SpawnResult> spawnResults = ImmutableList.of();
try {
spawnResults = super.internalExecute(actionExecutionContext);
} catch (CommandLineExpansionException e) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileAction.java
index cc5299aa65..1d4272178e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileAction.java
@@ -55,7 +55,6 @@ import com.google.devtools.build.lib.vfs.PathFragment;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-import java.util.Set;
import javax.annotation.Nullable;
/**
@@ -137,7 +136,7 @@ public class JavaHeaderCompileAction extends SpawnAction {
}
@Override
- protected Set<SpawnResult> internalExecute(ActionExecutionContext actionExecutionContext)
+ protected List<SpawnResult> internalExecute(ActionExecutionContext actionExecutionContext)
throws ExecException, InterruptedException {
SpawnActionContext context = getContext(actionExecutionContext);
try {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/test/ExclusiveTestStrategy.java b/src/main/java/com/google/devtools/build/lib/rules/test/ExclusiveTestStrategy.java
index dd127ca8ec..66e25763ec 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/test/ExclusiveTestStrategy.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/test/ExclusiveTestStrategy.java
@@ -23,7 +23,7 @@ import com.google.devtools.build.lib.analysis.test.TestRunnerAction;
import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.view.test.TestStatus.TestResultData;
import java.io.IOException;
-import java.util.Set;
+import java.util.List;
/**
* Test strategy wrapper called 'exclusive'. It should delegate to a test strategy for local
@@ -41,7 +41,7 @@ public class ExclusiveTestStrategy implements TestActionContext {
}
@Override
- public Set<SpawnResult> exec(
+ public List<SpawnResult> exec(
TestRunnerAction action, ActionExecutionContext actionExecutionContext)
throws ExecException, InterruptedException {
return parent.exec(action, actionExecutionContext);
diff --git a/src/main/java/com/google/devtools/build/lib/worker/WorkerTestStrategy.java b/src/main/java/com/google/devtools/build/lib/worker/WorkerTestStrategy.java
index e06b6c4f1b..274c953484 100644
--- a/src/main/java/com/google/devtools/build/lib/worker/WorkerTestStrategy.java
+++ b/src/main/java/com/google/devtools/build/lib/worker/WorkerTestStrategy.java
@@ -213,7 +213,7 @@ public class WorkerTestStrategy extends StandaloneTestStrategy {
builder.setTestCase(details);
}
- return StandaloneTestResult.create(ImmutableSet.of(), builder.build());
+ return StandaloneTestResult.create(ImmutableList.of(), builder.build());
} catch (IOException | InterruptedException e) {
if (worker != null) {
workerPool.invalidateObject(key, worker);