Allow configuring writing of command.log
Sometimes, especially in the case of a lot of output, one may not want to write
everything twice.
--
MOS_MIGRATED_REVID=133388416
diff --git a/src/main/cpp/blaze.cc b/src/main/cpp/blaze.cc
index e57efe8..493d367 100644
--- a/src/main/cpp/blaze.cc
+++ b/src/main/cpp/blaze.cc
@@ -517,6 +517,10 @@
result.push_back("--experimental_oom_more_eagerly_threshold=" +
ToString(globals->options->oom_more_eagerly_threshold));
+ if (!globals->options->write_command_log) {
+ result.push_back("--nowrite_command_log");
+ }
+
if (globals->options->watchfs) {
result.push_back("--watchfs");
}
diff --git a/src/main/cpp/startup_options.cc b/src/main/cpp/startup_options.cc
index 5d3e9f4..09b8eab 100644
--- a/src/main/cpp/startup_options.cc
+++ b/src/main/cpp/startup_options.cc
@@ -73,6 +73,7 @@
oom_more_eagerly_threshold = 100;
command_port = 0;
oom_more_eagerly = false;
+ write_command_log = true;
watchfs = false;
invocation_policy = NULL;
}
@@ -215,6 +216,12 @@
return blaze_exit_code::BAD_ARGV;
}
option_sources["experimental_oom_more_eagerly_threshold"] = rcfile;
+ } else if (GetNullaryOption(arg, "--write_command_log")) {
+ write_command_log = true;
+ option_sources["write_command_log"] = rcfile;
+ } else if (GetNullaryOption(arg, "--nowrite_command_log")) {
+ write_command_log = false;
+ option_sources["write_command_log"] = rcfile;
} else if (GetNullaryOption(arg, "--watchfs")) {
watchfs = true;
option_sources["watchfs"] = rcfile;
diff --git a/src/main/cpp/startup_options.h b/src/main/cpp/startup_options.h
index cc77f2e..523523a 100644
--- a/src/main/cpp/startup_options.h
+++ b/src/main/cpp/startup_options.h
@@ -166,6 +166,8 @@
int oom_more_eagerly_threshold;
+ bool write_command_log;
+
// If true, Blaze will listen to OS-level file change notifications.
bool watchfs;
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java b/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java
index 3ab483a..2e363c3 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcher.java
@@ -368,18 +368,20 @@
return exitCausingException.getExitCode().getNumericExitCode();
}
- try {
- Path commandLog = getCommandLogPath(env.getOutputBase());
+ if (env.getRuntime().writeCommandLog()) {
+ try {
+ Path commandLog = getCommandLogPath(env.getOutputBase());
- // Unlink old command log from previous build, if present, so scripts
- // reading it don't conflate it with the command log we're about to write.
- commandLog.delete();
+ // Unlink old command log from previous build, if present, so scripts
+ // reading it don't conflate it with the command log we're about to write.
+ commandLog.delete();
- logOutputStream = commandLog.getOutputStream();
- outErr = tee(outErr, OutErr.create(logOutputStream, logOutputStream));
- } catch (IOException ioException) {
- LoggingUtil.logToRemote(
- Level.WARNING, "Unable to delete or open command.log", ioException);
+ logOutputStream = commandLog.getOutputStream();
+ outErr = tee(outErr, OutErr.create(logOutputStream, logOutputStream));
+ } catch (IOException ioException) {
+ LoggingUtil.logToRemote(
+ Level.WARNING, "Unable to delete or open command.log", ioException);
+ }
}
ExitCode result = checkCwdInWorkspace(env, commandAnnotation, commandName, outErr);
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java b/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java
index 597d4d0..2b64b6e 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java
@@ -290,6 +290,10 @@
return getWorkspace().getDirectories().getOutputBase().getChild("server");
}
+ public boolean writeCommandLog() {
+ return startupOptionsProvider.getOptions(BlazeServerStartupOptions.class).writeCommandLog;
+ }
+
/**
* Returns the {@link QueryEnvironmentFactory} that should be used to create a
* {@link AbstractBlazeQueryEnvironment}, whenever one is needed.
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BlazeServerStartupOptions.java b/src/main/java/com/google/devtools/build/lib/runtime/BlazeServerStartupOptions.java
index ee5d58a..75c4dee 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BlazeServerStartupOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BlazeServerStartupOptions.java
@@ -269,4 +269,10 @@
category = "server startup",
help = "If true, Blaze runs as Exoblaze")
public boolean exoblaze;
+
+ @Option(name = "write_command_log",
+ defaultValue = "true",
+ category = "undocumented",
+ help = "Whether or not to write the command.log file")
+ public boolean writeCommandLog;
}