aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/CompletionFunction.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java29
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java9
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);
}
}