From d399df930e089f23390b09f42f4f5b47fce02977 Mon Sep 17 00:00:00 2001 From: ulfjack Date: Tue, 20 Feb 2018 09:48:10 -0800 Subject: Inject the product name in the constructor where needed ...instead of passing it everywhere so we can rewrite the local env. PiperOrigin-RevId: 186316859 --- .../lib/sandbox/DarwinSandboxedSpawnRunner.java | 6 +-- .../lib/sandbox/LinuxSandboxedSpawnRunner.java | 59 +--------------------- .../build/lib/sandbox/LinuxSandboxedStrategy.java | 1 - .../ProcessWrapperSandboxedSpawnRunner.java | 7 +-- .../lib/sandbox/SandboxActionContextProvider.java | 3 +- 5 files changed, 7 insertions(+), 69 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib/sandbox') diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/DarwinSandboxedSpawnRunner.java b/src/main/java/com/google/devtools/build/lib/sandbox/DarwinSandboxedSpawnRunner.java index ebd75bf48b..9d924e974d 100644 --- a/src/main/java/com/google/devtools/build/lib/sandbox/DarwinSandboxedSpawnRunner.java +++ b/src/main/java/com/google/devtools/build/lib/sandbox/DarwinSandboxedSpawnRunner.java @@ -150,7 +150,8 @@ final class DarwinSandboxedSpawnRunner extends AbstractSandboxSpawnRunner { this.productName = productName; this.alwaysWritableDirs = getAlwaysWritableDirs(cmdEnv.getRuntime().getFileSystem()); this.processWrapper = ProcessWrapperUtil.getProcessWrapper(cmdEnv); - this.localEnvProvider = new XCodeLocalEnvProvider(cmdEnv.getClientEnv()); + this.localEnvProvider = + new XCodeLocalEnvProvider(cmdEnv.getRuntime().getProductName(), cmdEnv.getClientEnv()); this.timeoutKillDelay = timeoutKillDelay; } @@ -223,8 +224,7 @@ final class DarwinSandboxedSpawnRunner extends AbstractSandboxSpawnRunner { Path tmpDir = sandboxExecRoot.getRelative("tmp"); Map environment = - localEnvProvider.rewriteLocalEnv( - spawn.getEnvironment(), execRoot, tmpDir.getPathString(), productName); + localEnvProvider.rewriteLocalEnv(spawn.getEnvironment(), execRoot, tmpDir.getPathString()); final HashSet writableDirs = new HashSet<>(alwaysWritableDirs); ImmutableSet extraWritableDirs = getWritableDirs(sandboxExecRoot, environment); diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedSpawnRunner.java b/src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedSpawnRunner.java index ad677f17ae..bd21c1b680 100644 --- a/src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedSpawnRunner.java +++ b/src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedSpawnRunner.java @@ -85,66 +85,12 @@ final class LinuxSandboxedSpawnRunner extends AbstractSandboxSpawnRunner { private final Path inaccessibleHelperDir; private final LocalEnvProvider localEnvProvider; private final Optional timeoutKillDelay; - private final String productName; - - /** - * Creates a sandboxed spawn runner that uses the {@code linux-sandbox} tool. If a spawn exceeds - * its timeout, then it will be killed instantly. - * - * @param cmdEnv the command environment to use - * @param sandboxBase path to the sandbox base directory - * @param productName the product name to use - * @param inaccessibleHelperFile path to a file that is (already) inaccessible - * @param inaccessibleHelperDir path to a directory that is (already) inaccessible - */ - LinuxSandboxedSpawnRunner( - CommandEnvironment cmdEnv, - Path sandboxBase, - String productName, - Path inaccessibleHelperFile, - Path inaccessibleHelperDir) { - this( - cmdEnv, - sandboxBase, - productName, - inaccessibleHelperFile, - inaccessibleHelperDir, - Optional.empty()); - } - - /** - * Creates a sandboxed spawn runner that uses the {@code linux-sandbox} tool. If a spawn exceeds - * its timeout, then it will be killed after the specified delay. - * - * @param cmdEnv the command environment to use - * @param sandboxBase path to the sandbox base directory - * @param productName the product name to use - * @param inaccessibleHelperFile path to a file that is (already) inaccessible - * @param inaccessibleHelperDir path to a directory that is (already) inaccessible - * @param timeoutKillDelay an additional grace period before killing timing out commands - */ - LinuxSandboxedSpawnRunner( - CommandEnvironment cmdEnv, - Path sandboxBase, - String productName, - Path inaccessibleHelperFile, - Path inaccessibleHelperDir, - Duration timeoutKillDelay) { - this( - cmdEnv, - sandboxBase, - productName, - inaccessibleHelperFile, - inaccessibleHelperDir, - Optional.of(timeoutKillDelay)); - } /** * Creates a sandboxed spawn runner that uses the {@code linux-sandbox} tool. * * @param cmdEnv the command environment to use * @param sandboxBase path to the sandbox base directory - * @param productName the product name to use * @param inaccessibleHelperFile path to a file that is (already) inaccessible * @param inaccessibleHelperDir path to a directory that is (already) inaccessible * @param timeoutKillDelay an optional, additional grace period before killing timing out @@ -153,7 +99,6 @@ final class LinuxSandboxedSpawnRunner extends AbstractSandboxSpawnRunner { LinuxSandboxedSpawnRunner( CommandEnvironment cmdEnv, Path sandboxBase, - String productName, Path inaccessibleHelperFile, Path inaccessibleHelperDir, Optional timeoutKillDelay) { @@ -161,7 +106,6 @@ final class LinuxSandboxedSpawnRunner extends AbstractSandboxSpawnRunner { this.fileSystem = cmdEnv.getRuntime().getFileSystem(); this.blazeDirs = cmdEnv.getDirectories(); this.execRoot = cmdEnv.getExecRoot(); - this.productName = productName; this.allowNetwork = SandboxHelpers.shouldAllowNetwork(cmdEnv.getOptions()); this.linuxSandbox = LinuxSandboxUtil.getLinuxSandbox(cmdEnv); this.inaccessibleHelperFile = inaccessibleHelperFile; @@ -182,8 +126,7 @@ final class LinuxSandboxedSpawnRunner extends AbstractSandboxSpawnRunner { Path tmpDir = sandboxExecRoot.getRelative("tmp"); Map environment = - localEnvProvider.rewriteLocalEnv( - spawn.getEnvironment(), execRoot, tmpDir.getPathString(), productName); + localEnvProvider.rewriteLocalEnv(spawn.getEnvironment(), execRoot, tmpDir.getPathString()); Set writableDirs = getWritableDirs(sandboxExecRoot, environment); ImmutableSet outputs = SandboxHelpers.getOutputFiles(spawn); diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedStrategy.java b/src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedStrategy.java index 9e665db734..360fcbbce4 100644 --- a/src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedStrategy.java +++ b/src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedStrategy.java @@ -99,7 +99,6 @@ public final class LinuxSandboxedStrategy extends AbstractSpawnStrategy { return new LinuxSandboxedSpawnRunner( cmdEnv, sandboxBase, - productName, inaccessibleHelperFile, inaccessibleHelperDir, timeoutKillDelay); diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/ProcessWrapperSandboxedSpawnRunner.java b/src/main/java/com/google/devtools/build/lib/sandbox/ProcessWrapperSandboxedSpawnRunner.java index 18b33c2de4..60bd17adca 100644 --- a/src/main/java/com/google/devtools/build/lib/sandbox/ProcessWrapperSandboxedSpawnRunner.java +++ b/src/main/java/com/google/devtools/build/lib/sandbox/ProcessWrapperSandboxedSpawnRunner.java @@ -37,7 +37,6 @@ final class ProcessWrapperSandboxedSpawnRunner extends AbstractSandboxSpawnRunne } private final Path execRoot; - private final String productName; private final Path processWrapper; private final LocalEnvProvider localEnvProvider; private final Optional timeoutKillDelay; @@ -85,12 +84,11 @@ final class ProcessWrapperSandboxedSpawnRunner extends AbstractSandboxSpawnRunne Optional timeoutKillDelay) { super(cmdEnv, sandboxBase); this.execRoot = cmdEnv.getExecRoot(); - this.productName = productName; this.timeoutKillDelay = timeoutKillDelay; this.processWrapper = ProcessWrapperUtil.getProcessWrapper(cmdEnv); this.localEnvProvider = OS.getCurrent() == OS.DARWIN - ? new XCodeLocalEnvProvider(cmdEnv.getClientEnv()) + ? new XCodeLocalEnvProvider(productName, cmdEnv.getClientEnv()) : new PosixLocalEnvProvider(cmdEnv.getClientEnv()); } @@ -106,8 +104,7 @@ final class ProcessWrapperSandboxedSpawnRunner extends AbstractSandboxSpawnRunne Path tmpDir = sandboxExecRoot.getRelative("tmp"); Map environment = - localEnvProvider.rewriteLocalEnv( - spawn.getEnvironment(), execRoot, tmpDir.getPathString(), productName); + localEnvProvider.rewriteLocalEnv(spawn.getEnvironment(), execRoot, tmpDir.getPathString()); Duration timeout = policy.getTimeout(); ProcessWrapperUtil.CommandLineBuilder commandLineBuilder = diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/SandboxActionContextProvider.java b/src/main/java/com/google/devtools/build/lib/sandbox/SandboxActionContextProvider.java index 24a08c4097..3e4af216e7 100644 --- a/src/main/java/com/google/devtools/build/lib/sandbox/SandboxActionContextProvider.java +++ b/src/main/java/com/google/devtools/build/lib/sandbox/SandboxActionContextProvider.java @@ -100,14 +100,13 @@ final class SandboxActionContextProvider extends ActionContextProvider { env.getOptions().getOptions(LocalExecutionOptions.class); LocalEnvProvider localEnvProvider = OS.getCurrent() == OS.DARWIN - ? new XCodeLocalEnvProvider(env.getClientEnv()) + ? new XCodeLocalEnvProvider(env.getRuntime().getProductName(), env.getClientEnv()) : new PosixLocalEnvProvider(env.getClientEnv()); return new LocalSpawnRunner( env.getExecRoot(), localExecutionOptions, ResourceManager.instance(), - env.getRuntime().getProductName(), localEnvProvider); } -- cgit v1.2.3