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; }