Allow modules to set the local file type for logs
PiperOrigin-RevId: 245726592
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEvent.java b/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEvent.java
index 233dbc5..c4ef206 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEvent.java
+++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEvent.java
@@ -47,6 +47,7 @@
STDOUT,
STDERR,
LOG,
+ PERFORMANCE_LOG,
}
public final Path path;
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildToolLogs.java b/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildToolLogs.java
index 82a16c4..09eb940 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildToolLogs.java
+++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildToolLogs.java
@@ -13,6 +13,7 @@
// limitations under the License.
package com.google.devtools.build.lib.buildeventstream;
+import com.google.common.base.MoreObjects;
import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.buildeventstream.BuildEvent.LocalFile.LocalFileType;
import com.google.devtools.build.lib.util.Pair;
@@ -32,12 +33,12 @@
* These values are local files that are uploaded if required, and turned into URIs as part of the
* process.
*/
- private final Collection<Pair<String, Path>> logFiles;
+ private final Collection<LogFileEntry> logFiles;
public BuildToolLogs(
Collection<Pair<String, ByteString>> directValues,
Collection<Pair<String, String>> directUris,
- Collection<Pair<String, Path>> logFiles) {
+ Collection<LogFileEntry> logFiles) {
this.directValues = directValues;
this.directUris = directUris;
this.logFiles = logFiles;
@@ -56,8 +57,8 @@
@Override
public Collection<LocalFile> referencedLocalFiles() {
ImmutableList.Builder<LocalFile> localFiles = ImmutableList.builder();
- for (Pair<String, Path> logFile : logFiles) {
- localFiles.add(new LocalFile(logFile.getSecond(), LocalFileType.LOG));
+ for (LogFileEntry logFile : logFiles) {
+ localFiles.add(logFile.toLocalFile());
}
return localFiles.build();
}
@@ -80,14 +81,11 @@
.setUri(direct.getSecond())
.build());
}
- for (Pair<String, Path> logFile : logFiles) {
- String uri = converters.pathConverter().apply(logFile.getSecond());
+ for (LogFileEntry logFile : logFiles) {
+ String uri = converters.pathConverter().apply(logFile.localPath);
if (uri != null) {
toolLogs.addLog(
- BuildEventStreamProtos.File.newBuilder()
- .setName(logFile.getFirst())
- .setUri(uri)
- .build());
+ BuildEventStreamProtos.File.newBuilder().setName(logFile.name).setUri(uri).build());
}
}
return GenericBuildEvent.protoChaining(this).setBuildToolLogs(toolLogs.build()).build();
@@ -97,4 +95,38 @@
public Collection<BuildEventId> postedAfter() {
return ImmutableList.of(BuildEventId.buildFinished());
}
+
+ /** A local log file. */
+ public static class LogFileEntry {
+ private final String name;
+ private final Path localPath;
+ private final LocalFileType fileType;
+
+ public LogFileEntry(String name, Path localPath, LocalFileType fileType) {
+ this.name = name;
+ this.localPath = localPath;
+ this.fileType = fileType;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public Path getLocalPath() {
+ return localPath;
+ }
+
+ LocalFile toLocalFile() {
+ return new LocalFile(localPath, fileType);
+ }
+
+ @Override
+ public String toString() {
+ return MoreObjects.toStringHelper(this)
+ .add("name", name)
+ .add("localPath", localPath)
+ .add("fileType", fileType)
+ .toString();
+ }
+ }
}
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/BuildResult.java b/src/main/java/com/google/devtools/build/lib/buildtool/BuildResult.java
index 1045edc..8eac1f2 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/BuildResult.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/BuildResult.java
@@ -19,7 +19,9 @@
import com.google.common.base.Preconditions;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection;
+import com.google.devtools.build.lib.buildeventstream.BuildEvent.LocalFile.LocalFileType;
import com.google.devtools.build.lib.buildeventstream.BuildToolLogs;
+import com.google.devtools.build.lib.buildeventstream.BuildToolLogs.LogFileEntry;
import com.google.devtools.build.lib.skyframe.AspectValue;
import com.google.devtools.build.lib.util.ExitCode;
import com.google.devtools.build.lib.util.Pair;
@@ -280,7 +282,7 @@
public static final class BuildToolLogCollection {
private final List<Pair<String, ByteString>> directValues = new ArrayList<>();
private final List<Pair<String, String>> directUris = new ArrayList<>();
- private final List<Pair<String, Path>> localFiles = new ArrayList<>();
+ private final List<LogFileEntry> localFiles = new ArrayList<>();
private boolean frozen;
public BuildToolLogCollection freeze() {
@@ -289,7 +291,7 @@
}
@VisibleForTesting
- public List<Pair<String, Path>> getLocalFiles() {
+ public List<LogFileEntry> getLocalFiles() {
return localFiles;
}
@@ -306,8 +308,13 @@
}
public BuildToolLogCollection addLocalFile(String name, Path path) {
+ return addLocalFile(name, path, LocalFileType.LOG);
+ }
+
+ public BuildToolLogCollection addLocalFile(
+ String name, Path path, LocalFileType localFileType) {
Preconditions.checkState(!frozen);
- this.localFiles.add(Pair.of(name, path));
+ this.localFiles.add(new LogFileEntry(name, path, localFileType));
return this;
}