diff options
author | felly <felly@google.com> | 2018-07-23 10:24:35 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-07-23 10:25:44 -0700 |
commit | 186b887e5862c1502010f097e75bfd8d605620b0 (patch) | |
tree | 4d8a9564f1ade397281b9acb2031b93041f6c87c /src/main/java/com/google/devtools/build/lib/exec | |
parent | 6c8166e2ff915f8a903365c9ec223068ae453751 (diff) |
Fileset manifests now propagate Artifact metadata.
PiperOrigin-RevId: 205682761
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/exec')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/exec/FilesetManifest.java | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/exec/FilesetManifest.java b/src/main/java/com/google/devtools/build/lib/exec/FilesetManifest.java index 1b35631108..90f20b44c8 100644 --- a/src/main/java/com/google/devtools/build/lib/exec/FilesetManifest.java +++ b/src/main/java/com/google/devtools/build/lib/exec/FilesetManifest.java @@ -15,7 +15,9 @@ package com.google.devtools.build.lib.exec; import static java.nio.charset.StandardCharsets.UTF_8; +import com.google.common.collect.ImmutableMap; import com.google.common.io.LineProcessor; +import com.google.devtools.build.lib.actions.FileArtifactValue; import com.google.devtools.build.lib.actions.FilesetOutputSymlink; import com.google.devtools.build.lib.analysis.AnalysisUtils; import com.google.devtools.build.lib.vfs.FileSystemUtils; @@ -77,13 +79,17 @@ public final class FilesetManifest { throws IOException { LinkedHashMap<PathFragment, String> entries = new LinkedHashMap<>(); Map<PathFragment, String> relativeLinks = new HashMap<>(); + Map<PathFragment, FileArtifactValue> artifactValues = new HashMap<>(); for (FilesetOutputSymlink outputSymlink : outputSymlinks) { PathFragment fullLocation = targetPrefix.getRelative(outputSymlink.getName()); String artifact = outputSymlink.getTargetPath().getPathString(); artifact = artifact.isEmpty() ? null : artifact; addSymlinkEntry(artifact, fullLocation, relSymlinkbehavior, entries, relativeLinks); + if (outputSymlink.getMetadata() instanceof FileArtifactValue) { + artifactValues.put(fullLocation, (FileArtifactValue) outputSymlink.getMetadata()); + } } - return constructFilesetManifest(entries, relativeLinks); + return constructFilesetManifest(entries, relativeLinks, artifactValues); } private static final class ManifestLineProcessor implements LineProcessor<FilesetManifest> { @@ -147,7 +153,7 @@ public final class FilesetManifest { @Override public FilesetManifest getResult() { - return constructFilesetManifest(entries, relativeLinks); + return constructFilesetManifest(entries, relativeLinks, ImmutableMap.of()); } } @@ -173,7 +179,8 @@ public final class FilesetManifest { } private static FilesetManifest constructFilesetManifest( - Map<PathFragment, String> entries, Map<PathFragment, String> relativeLinks) { + Map<PathFragment, String> entries, Map<PathFragment, String> relativeLinks, + Map<PathFragment, FileArtifactValue> artifactValues) { // Resolve relative symlinks if possible. Note that relativeLinks only contains entries in // RESOLVE mode. for (Map.Entry<PathFragment, String> e : relativeLinks.entrySet()) { @@ -196,16 +203,24 @@ public final class FilesetManifest { } entries.put(location, actual); } - return new FilesetManifest(entries); + return new FilesetManifest(entries, artifactValues); } private final Map<PathFragment, String> entries; + private final Map<PathFragment, FileArtifactValue> artifactValues; - private FilesetManifest(Map<PathFragment, String> entries) { + private FilesetManifest(Map<PathFragment, String> entries, + Map<PathFragment, FileArtifactValue> artifactValues) { this.entries = Collections.unmodifiableMap(entries); + this.artifactValues = artifactValues; } public Map<PathFragment, String> getEntries() { return entries; } + + public Map<PathFragment, FileArtifactValue> getArtifactValues() { + return artifactValues; + } + } |