diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/exec/local')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/exec/local/BUILD | 18 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/exec/local/LocalSpawnRunner.java | 19 |
2 files changed, 27 insertions, 10 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/exec/local/BUILD b/src/main/java/com/google/devtools/build/lib/exec/local/BUILD index e9226e127f..a320ea95de 100644 --- a/src/main/java/com/google/devtools/build/lib/exec/local/BUILD +++ b/src/main/java/com/google/devtools/build/lib/exec/local/BUILD @@ -8,22 +8,36 @@ filegroup( java_library( name = "local", - srcs = glob(["*.java"]), + srcs = [ + "LocalEnvProvider.java", + "LocalSpawnRunner.java", + ], data = [ "//src/main/tools:process-wrapper", ], deps = [ + ":options", "//src/main/java/com/google/devtools/build/lib:build-base", "//src/main/java/com/google/devtools/build/lib:io", "//src/main/java/com/google/devtools/build/lib:packages-internal", "//src/main/java/com/google/devtools/build/lib:process_util", + "//src/main/java/com/google/devtools/build/lib:runtime", "//src/main/java/com/google/devtools/build/lib:util", "//src/main/java/com/google/devtools/build/lib/actions", "//src/main/java/com/google/devtools/build/lib/concurrent", "//src/main/java/com/google/devtools/build/lib/shell", "//src/main/java/com/google/devtools/build/lib/vfs", - "//src/main/java/com/google/devtools/common/options", "//third_party:guava", "//third_party:jsr305", ], ) + +java_library( + name = "options", + srcs = [ + "LocalExecutionOptions.java", + ], + deps = [ + "//src/main/java/com/google/devtools/common/options", + ], +) diff --git a/src/main/java/com/google/devtools/build/lib/exec/local/LocalSpawnRunner.java b/src/main/java/com/google/devtools/build/lib/exec/local/LocalSpawnRunner.java index bfc6a8fcbb..3677d2cd4f 100644 --- a/src/main/java/com/google/devtools/build/lib/exec/local/LocalSpawnRunner.java +++ b/src/main/java/com/google/devtools/build/lib/exec/local/LocalSpawnRunner.java @@ -30,6 +30,7 @@ import com.google.devtools.build.lib.actions.SpawnResult.Status; import com.google.devtools.build.lib.actions.Spawns; import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe; import com.google.devtools.build.lib.exec.SpawnRunner; +import com.google.devtools.build.lib.runtime.ProcessWrapperUtil; import com.google.devtools.build.lib.shell.AbnormalTerminationException; import com.google.devtools.build.lib.shell.Command; import com.google.devtools.build.lib.shell.CommandException; @@ -43,7 +44,6 @@ import com.google.devtools.build.lib.vfs.Path; import java.io.IOException; import java.io.OutputStream; import java.time.Duration; -import java.util.ArrayList; import java.util.EnumMap; import java.util.List; import java.util.Map; @@ -78,6 +78,7 @@ public final class LocalSpawnRunner implements SpawnRunner { private final String productName; private final LocalEnvProvider localEnvProvider; + // TODO(b/62588075): Move this logic to ProcessWrapperUtil? private static Path getProcessWrapper(Path execRoot, OS localOs) { return execRoot.getRelative("_bin/process-wrapper" + OsUtils.executableExtension(localOs)); } @@ -265,13 +266,15 @@ public final class LocalSpawnRunner implements SpawnRunner { // a stack trace, test log or similar, which is incredibly helpful for debugging. The // process wrapper also supports output file redirection, so we don't need to stream the // output through this process. - List<String> cmdLine = new ArrayList<>(); - cmdLine.add(processWrapper); - cmdLine.add("--timeout=" + policy.getTimeout().getSeconds()); - cmdLine.add("--kill_delay=" + localExecutionOptions.localSigkillGraceSeconds); - cmdLine.add("--stdout=" + getPathOrDevNull(outErr.getOutputPath())); - cmdLine.add("--stderr=" + getPathOrDevNull(outErr.getErrorPath())); - cmdLine.addAll(spawn.getArguments()); + List<String> cmdLine = + ProcessWrapperUtil.commandLineBuilder() + .setProcessWrapperPath(processWrapper) + .setCommandArguments(spawn.getArguments()) + .setStdoutPath(getPathOrDevNull(outErr.getOutputPath())) + .setStderrPath(getPathOrDevNull(outErr.getErrorPath())) + .setTimeout(policy.getTimeout()) + .setKillDelay(Duration.ofSeconds(localExecutionOptions.localSigkillGraceSeconds)) + .build(); cmd = new Command( cmdLine.toArray(new String[0]), |