diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe')
3 files changed, 11 insertions, 32 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/CompletionFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/CompletionFunction.java index 237915aeb0..cce2a9257d 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/CompletionFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/CompletionFunction.java @@ -54,7 +54,8 @@ public final class CompletionFunction<TValue extends SkyValue, TResult extends S implements SkyFunction { interface PathResolverFactory { - ArtifactPathResolver createPathResolverForArtifactValues(ActionInputMap actionInputMap); + ArtifactPathResolver createPathResolverForArtifactValues( + ActionInputMap actionInputMap, Map<Artifact, Collection<Artifact>> expandedArtifacts); boolean shouldCreatePathResolverForArtifactValues(); } @@ -401,7 +402,7 @@ public final class CompletionFunction<TValue extends SkyValue, TResult extends S ArtifactPathResolver pathResolver = createPathResolver - ? pathResolverFactory.createPathResolverForArtifactValues(inputMap) + ? pathResolverFactory.createPathResolverForArtifactValues(inputMap, expandedArtifacts) : ArtifactPathResolver.IDENTITY; ExtendedEventHandler.Postable postable = diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java index fa5b35a55e..56154e4738 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java @@ -48,7 +48,7 @@ import com.google.devtools.build.lib.actions.ActionStatusMessage; import com.google.devtools.build.lib.actions.Actions; import com.google.devtools.build.lib.actions.AlreadyReportedActionExecutionException; import com.google.devtools.build.lib.actions.Artifact; -import com.google.devtools.build.lib.actions.Artifact.ArtifactExpander; +import com.google.devtools.build.lib.actions.Artifact.ArtifactExpanderImpl; import com.google.devtools.build.lib.actions.Artifact.OwnerlessArtifactWrapper; import com.google.devtools.build.lib.actions.ArtifactPathResolver; import com.google.devtools.build.lib.actions.ArtifactPrefixConflictException; @@ -491,33 +491,6 @@ public final class SkyframeActionExecutor { } } - private static class ArtifactExpanderImpl implements ArtifactExpander { - private final Map<Artifact, Collection<Artifact>> expandedInputs; - private final Map<Artifact, ImmutableList<FilesetOutputSymlink>> expandedFilesets; - - private ArtifactExpanderImpl(Map<Artifact, Collection<Artifact>> expandedInputMiddlemen, - Map<Artifact, ImmutableList<FilesetOutputSymlink>> expandedFilesets) { - this.expandedInputs = expandedInputMiddlemen; - this.expandedFilesets = expandedFilesets; - } - - @Override - public void expand(Artifact artifact, Collection<? super Artifact> output) { - Preconditions.checkState(artifact.isMiddlemanArtifact() || artifact.isTreeArtifact(), - artifact); - Collection<Artifact> result = expandedInputs.get(artifact); - if (result != null) { - output.addAll(result); - } - } - - @Override - public ImmutableList<FilesetOutputSymlink> getFileset(Artifact artifact) { - Preconditions.checkState(artifact.isFileset()); - return Preconditions.checkNotNull(expandedFilesets.get(artifact)); - } - } - /** * Returns an ActionExecutionContext suitable for executing a particular action. The caller should * pass the returned context to {@link #executeAction}, and any other method that needs to execute diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java index 028d4c8ee0..892acde29c 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java @@ -332,10 +332,15 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { } @Override - public ArtifactPathResolver createPathResolverForArtifactValues(ActionInputMap actionInputMap) { + public ArtifactPathResolver createPathResolverForArtifactValues( + ActionInputMap actionInputMap, Map<Artifact, Collection<Artifact>> expandedArtifacts) { Preconditions.checkState(shouldCreatePathResolverForArtifactValues()); return outputService.createPathResolverForArtifactValues( - directories.getExecRoot().asFragment(), fileSystem, getPathEntries(), actionInputMap); + directories.getExecRoot().asFragment(), + fileSystem, + getPathEntries(), + actionInputMap, + expandedArtifacts); } } |