diff --git a/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeHelper.java b/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeHelper.java index 2dd9d3a165e52c..88a945212272ba 100644 --- a/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeHelper.java +++ b/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeHelper.java @@ -27,10 +27,12 @@ import com.google.devtools.build.lib.actions.SimpleSpawn; import com.google.devtools.build.lib.actions.Spawn; import com.google.devtools.build.lib.actions.UserExecException; +import com.google.devtools.build.lib.shell.Command; import com.google.devtools.build.lib.shell.CommandException; import com.google.devtools.build.lib.util.CommandBuilder; import com.google.devtools.build.lib.util.CommandUtils; import com.google.devtools.build.lib.util.OsUtils; +import com.google.devtools.build.lib.util.io.OutErr; import com.google.devtools.build.lib.vfs.FileSystemUtils; import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.lib.vfs.PathFragment; @@ -85,16 +87,20 @@ public Path getOutputManifest() { * @throws CommandException */ public void createSymlinksUsingCommand( - Path execRoot, BinTools binTools, ImmutableMap shellEnvironment) + Path execRoot, + BinTools binTools, + ImmutableMap shellEnvironment, + OutErr outErr) throws CommandException { List argv = getSpawnArgumentList(execRoot, binTools.getExecPath(BUILD_RUNFILES)); Preconditions.checkNotNull(shellEnvironment); - new CommandBuilder() - .addArgs(argv) - .setWorkingDir(execRoot) - .setEnv(shellEnvironment) - .build() - .execute(); + Command command = + new CommandBuilder().addArgs(argv).setWorkingDir(execRoot).setEnv(shellEnvironment).build(); + if (outErr != null) { + command.execute(outErr.getOutputStream(), outErr.getErrorStream()); + } else { + command.execute(); + } } /** @@ -115,7 +121,10 @@ public void createSymlinks( if (enableRunfiles) { try { createSymlinksUsingCommand( - actionExecutionContext.getExecRoot(), binTools, shellEnvironment); + actionExecutionContext.getExecRoot(), + binTools, + shellEnvironment, + actionExecutionContext.getFileOutErr()); } catch (CommandException e) { throw new UserExecException(CommandUtils.describeCommandFailure(true, e), e); } diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java index 22b38d96f6c7ed..c7dd4653e197a0 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java @@ -511,7 +511,8 @@ private Path ensureRunfilesBuilt(CommandEnvironment env, RunfilesSupport runfile runfilesSupport.getRunfilesDirectory(), false); helper.createSymlinksUsingCommand( - env.getExecRoot(), env.getBlazeWorkspace().getBinTools(), ImmutableMap.of()); + env.getExecRoot(), env.getBlazeWorkspace().getBinTools(), + /* shellEnvironment= */ ImmutableMap.of(), /* outErr= */ null); return workingDir; }