Include Fileset in path resolution. PiperOrigin-RevId: 228909219
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 cce2a92..68d7b35 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
@@ -55,7 +55,9 @@ interface PathResolverFactory { ArtifactPathResolver createPathResolverForArtifactValues( - ActionInputMap actionInputMap, Map<Artifact, Collection<Artifact>> expandedArtifacts); + ActionInputMap actionInputMap, + Map<Artifact, Collection<Artifact>> expandedArtifacts, + Iterable<Artifact> filesets); boolean shouldCreatePathResolverForArtifactValues(); } @@ -353,6 +355,9 @@ input, artifactValue, env); + if (input.isFileset()) { + expandedFilesets.put(input, ActionInputMapHelper.getFilesets(env, input)); + } } } catch (MissingInputFileException e) { missingCount++; @@ -402,7 +407,8 @@ ArtifactPathResolver pathResolver = createPathResolver - ? pathResolverFactory.createPathResolverForArtifactValues(inputMap, expandedArtifacts) + ? pathResolverFactory.createPathResolverForArtifactValues( + inputMap, expandedArtifacts, expandedFilesets.keySet()) : ArtifactPathResolver.IDENTITY; ExtendedEventHandler.Postable postable =
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 25f25db..749dd4b 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
@@ -338,7 +338,9 @@ @Override public ArtifactPathResolver createPathResolverForArtifactValues( - ActionInputMap actionInputMap, Map<Artifact, Collection<Artifact>> expandedArtifacts) { + ActionInputMap actionInputMap, + Map<Artifact, Collection<Artifact>> expandedArtifacts, + Iterable<Artifact> filesets) { Preconditions.checkState(shouldCreatePathResolverForArtifactValues()); return outputService.createPathResolverForArtifactValues( directories.getExecRoot().asFragment(), @@ -346,7 +348,8 @@ fileSystem, getPathEntries(), actionInputMap, - expandedArtifacts); + expandedArtifacts, + filesets); } }
diff --git a/src/main/java/com/google/devtools/build/lib/vfs/OutputService.java b/src/main/java/com/google/devtools/build/lib/vfs/OutputService.java index 02c68cf..5c5d4f2 100644 --- a/src/main/java/com/google/devtools/build/lib/vfs/OutputService.java +++ b/src/main/java/com/google/devtools/build/lib/vfs/OutputService.java
@@ -163,7 +163,8 @@ FileSystem fileSystem, ImmutableList<Root> pathEntries, ActionInputMap actionInputMap, - Map<Artifact, Collection<Artifact>> expandedArtifacts) { + Map<Artifact, Collection<Artifact>> expandedArtifacts, + Iterable<Artifact> filesets) { throw new IllegalStateException("Path resolver not supported by this class"); } }