Change Action.getInputFilesForExtraAction to NestedSet PiperOrigin-RevId: 288891172
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 5b39f89..3ab72f1 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
@@ -15,7 +15,6 @@ 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.common.collect.ImmutableSet; import com.google.common.collect.Iterables; @@ -502,20 +501,19 @@ * Returns input files that need to be present to allow extra_action rules to shadow this action * correctly when run remotely. This is at least the normal inputs of the action, but may include * other files as well. For example C(++) compilation may perform include file header scanning. - * This needs to be mirrored by the extra_action rule. Called by - * {@link com.google.devtools.build.lib.analysis.extra.ExtraAction} at execution time for actions - * that return true for {link #discoversInputs()}. + * This needs to be mirrored by the extra_action rule. Called by {@link + * com.google.devtools.build.lib.analysis.extra.ExtraAction} at execution time for actions that + * return true for {link #discoversInputs()}. * * @param actionExecutionContext Services in the scope of the action, like the Out/Err streams. - * @throws ActionExecutionException only when code called from this method - * throws that exception. + * @throws ActionExecutionException only when code called from this method throws that exception. * @throws InterruptedException if interrupted */ @Override - public Iterable<Artifact> getInputFilesForExtraAction( + public NestedSet<Artifact> getInputFilesForExtraAction( ActionExecutionContext actionExecutionContext) throws ActionExecutionException, InterruptedException { - return ImmutableList.of(); + return NestedSetBuilder.emptySet(Order.STABLE_ORDER); } @Override
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ActionAnalysisMetadata.java b/src/main/java/com/google/devtools/build/lib/actions/ActionAnalysisMetadata.java index e9ac5ca..1cc14bf 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/ActionAnalysisMetadata.java +++ b/src/main/java/com/google/devtools/build/lib/actions/ActionAnalysisMetadata.java
@@ -145,16 +145,15 @@ * Returns input files that need to be present to allow extra_action rules to shadow this action * correctly when run remotely. This is at least the normal inputs of the action, but may include * other files as well. For example C(++) compilation may perform include file header scanning. - * This needs to be mirrored by the extra_action rule. Called by - * {@link com.google.devtools.build.lib.analysis.extra.ExtraAction} at execution time for actions - * that return true for {link #discoversInputs()}. + * This needs to be mirrored by the extra_action rule. Called by {@link + * com.google.devtools.build.lib.analysis.extra.ExtraAction} at execution time for actions that + * return true for {link #discoversInputs()}. * * @param actionExecutionContext Services in the scope of the action, like the Out/Err streams. - * @throws ActionExecutionException only when code called from this method - * throws that exception. + * @throws ActionExecutionException only when code called from this method throws that exception. * @throws InterruptedException if interrupted */ - Iterable<Artifact> getInputFilesForExtraAction(ActionExecutionContext actionExecutionContext) + NestedSet<Artifact> getInputFilesForExtraAction(ActionExecutionContext actionExecutionContext) throws ActionExecutionException, InterruptedException; /**
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTemplate.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTemplate.java index 13e5d40..40ad5eb 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTemplate.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTemplate.java
@@ -32,6 +32,7 @@ import com.google.devtools.build.lib.analysis.FilesToRunProvider; 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.Order; import com.google.devtools.build.lib.util.Fingerprint; import com.google.devtools.build.lib.vfs.PathFragment; import java.util.Map; @@ -202,9 +203,9 @@ } @Override - public Iterable<Artifact> getInputFilesForExtraAction( + public NestedSet<Artifact> getInputFilesForExtraAction( ActionExecutionContext actionExecutionContext) { - return ImmutableList.of(); + return NestedSetBuilder.emptySet(Order.STABLE_ORDER); } @Override
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/StarlarkAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/StarlarkAction.java index 037d64c..fd38ecb 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/actions/StarlarkAction.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/StarlarkAction.java
@@ -205,7 +205,7 @@ } @Override - public Iterable<Artifact> getInputFilesForExtraAction( + public NestedSet<Artifact> getInputFilesForExtraAction( ActionExecutionContext actionExecutionContext) { return allInputs; }
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 97a37b8..a71f8a9 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
@@ -16,7 +16,6 @@ import com.google.common.base.Function; import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; import com.google.common.collect.Sets; @@ -79,7 +78,10 @@ super( shadowedAction.getOwner(), NestedSetBuilder.emptySet(Order.STABLE_ORDER), - createInputs(shadowedAction.getInputs(), ImmutableList.<Artifact>of(), extraActionInputs), + createInputs( + shadowedAction.getInputs(), + NestedSetBuilder.emptySet(Order.STABLE_ORDER), + extraActionInputs), outputs, Iterables.getFirst(outputs, null), AbstractAction.DEFAULT_RESOURCE_SET, @@ -125,7 +127,7 @@ // We need to update our inputs to take account of any additional // inputs the shadowed action may need to do its work. NestedSet<Artifact> oldInputs = getInputs(); - Iterable<Artifact> inputFilesForExtraAction = + NestedSet<Artifact> inputFilesForExtraAction = shadowedAction.getInputFilesForExtraAction(actionExecutionContext); if (inputFilesForExtraAction == null) { return null; @@ -138,11 +140,11 @@ private static NestedSet<Artifact> createInputs( NestedSet<Artifact> shadowedActionInputs, - Iterable<Artifact> inputFilesForExtraAction, + NestedSet<Artifact> inputFilesForExtraAction, NestedSet<Artifact> extraActionInputs) { return new NestedSetBuilder<Artifact>(Order.STABLE_ORDER) .addTransitive(shadowedActionInputs) - .addAll(inputFilesForExtraAction) + .addTransitive(inputFilesForExtraAction) .addTransitive(extraActionInputs) .build(); }
diff --git a/src/main/java/com/google/devtools/build/lib/includescanning/SpawnIncludeScanner.java b/src/main/java/com/google/devtools/build/lib/includescanning/SpawnIncludeScanner.java index 3d122a5..4833130 100644 --- a/src/main/java/com/google/devtools/build/lib/includescanning/SpawnIncludeScanner.java +++ b/src/main/java/com/google/devtools/build/lib/includescanning/SpawnIncludeScanner.java
@@ -257,7 +257,7 @@ } @Override - public Iterable<Artifact> getInputFilesForExtraAction( + public NestedSet<Artifact> getInputFilesForExtraAction( ActionExecutionContext actionExecutionContext) { throw new UnsupportedOperationException(); }
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 80c818c..41af1f8 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
@@ -1567,7 +1567,7 @@ */ @Nullable @Override - public Iterable<Artifact> getInputFilesForExtraAction( + public NestedSet<Artifact> getInputFilesForExtraAction( ActionExecutionContext actionExecutionContext) throws ActionExecutionException, InterruptedException { try { @@ -1587,7 +1587,7 @@ .setSystemIncludeDirs(getSystemIncludeDirs()) .setCmdlineIncludes(getCmdlineIncludes(getCompilerOptions())) .build()); - return Sets.difference(discoveredInputs.toSet(), getInputs().toSet()); + return discoveredInputs; } catch (CommandLineExpansionException e) { throw new ActionExecutionException( "failed to generate compile environment variables for rule '"
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionTemplate.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionTemplate.java index 31fd06d..1bc126e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionTemplate.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionTemplate.java
@@ -18,7 +18,6 @@ import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.actions.ActionAnalysisMetadata; import com.google.devtools.build.lib.actions.ActionExecutionContext; -import com.google.devtools.build.lib.actions.ActionExecutionException; import com.google.devtools.build.lib.actions.ActionInputHelper; import com.google.devtools.build.lib.actions.ActionKeyCacher; import com.google.devtools.build.lib.actions.ActionKeyContext; @@ -262,10 +261,9 @@ } @Override - public Iterable<Artifact> getInputFilesForExtraAction( - ActionExecutionContext actionExecutionContext) - throws ActionExecutionException, InterruptedException { - return ImmutableList.of(); + public NestedSet<Artifact> getInputFilesForExtraAction( + ActionExecutionContext actionExecutionContext) { + return NestedSetBuilder.emptySet(Order.STABLE_ORDER); } @Override
diff --git a/src/test/java/com/google/devtools/build/lib/actions/ResourceManagerTest.java b/src/test/java/com/google/devtools/build/lib/actions/ResourceManagerTest.java index 8552826..13c1c1a 100644 --- a/src/test/java/com/google/devtools/build/lib/actions/ResourceManagerTest.java +++ b/src/test/java/com/google/devtools/build/lib/actions/ResourceManagerTest.java
@@ -16,12 +16,13 @@ import static com.google.common.truth.Truth.assertThat; import static com.google.devtools.build.lib.testutil.MoreAsserts.assertThrows; -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.ResourceManager.ResourceHandle; 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.Order; import com.google.devtools.build.lib.testutil.TestThread; import com.google.devtools.build.lib.testutil.TestUtils; import java.util.concurrent.CyclicBarrier; @@ -468,9 +469,9 @@ } @Override - public Iterable<Artifact> getInputFilesForExtraAction( - ActionExecutionContext actionExecutionContext) { - return ImmutableList.of(); + public NestedSet<Artifact> getInputFilesForExtraAction( + ActionExecutionContext actionExecutionContext) { + return NestedSetBuilder.emptySet(Order.STABLE_ORDER); } @Override
diff --git a/src/test/java/com/google/devtools/build/lib/exec/util/FakeOwner.java b/src/test/java/com/google/devtools/build/lib/exec/util/FakeOwner.java index f8b440f..3765408 100644 --- a/src/test/java/com/google/devtools/build/lib/exec/util/FakeOwner.java +++ b/src/test/java/com/google/devtools/build/lib/exec/util/FakeOwner.java
@@ -27,6 +27,8 @@ import com.google.devtools.build.lib.analysis.platform.PlatformInfo; import com.google.devtools.build.lib.cmdline.Label; 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.Order; import com.google.devtools.build.lib.packages.AspectDescriptor; import javax.annotation.Nullable; @@ -170,9 +172,9 @@ } @Override - public Iterable<Artifact> getInputFilesForExtraAction( + public NestedSet<Artifact> getInputFilesForExtraAction( ActionExecutionContext actionExecutionContext) { - return ImmutableList.of(); + return NestedSetBuilder.emptySet(Order.STABLE_ORDER); } @Override