diff options
author | Laszlo Csomor <laszlocsomor@google.com> | 2018-01-08 00:45:57 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-01-08 00:48:00 -0800 |
commit | 6ab93a6048260671206622527c89192b1a86284b (patch) | |
tree | 8b6c2425eb5b7125bbf2a418d80101328053448b | |
parent | ecb481d9afad8863d95aa53a24dc9a75bd204e8f (diff) |
sandbox runners: always use updated environment
The sandboxed Spawn runners already used to call
LocalEnvProvider.rewriteEnvironment in order to
add TMPDIR for example, but didn't consistently
use this rewritten environment everywhere, and
used the Spawn's original environment instead.
Change-Id: Ifbede6ac0f14b83c617dcbcd85edfae88718b157
PiperOrigin-RevId: 181130506
3 files changed, 10 insertions, 14 deletions
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 91b3f2370b..6199b5d27f 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 @@ -222,12 +222,11 @@ final class DarwinSandboxedSpawnRunner extends AbstractSandboxSpawnRunner { // name unique (like we have to with standalone execution strategy). Path tmpDir = sandboxExecRoot.getRelative("tmp"); - Map<String, String> spawnEnvironment = + Map<String, String> environment = localEnvProvider.rewriteLocalEnv(spawn.getEnvironment(), execRoot, tmpDir, productName); final HashSet<Path> writableDirs = new HashSet<>(alwaysWritableDirs); - ImmutableSet<Path> extraWritableDirs = - getWritableDirs(sandboxExecRoot, spawnEnvironment, tmpDir); + ImmutableSet<Path> extraWritableDirs = getWritableDirs(sandboxExecRoot, environment, tmpDir); writableDirs.addAll(extraWritableDirs); ImmutableSet<PathFragment> outputs = SandboxHelpers.getOutputFiles(spawn); @@ -259,9 +258,6 @@ final class DarwinSandboxedSpawnRunner extends AbstractSandboxSpawnRunner { .addAll(processWrapperCommandLineBuilder.build()) .build(); - Map<String, String> environment = - localEnvProvider.rewriteLocalEnv(spawn.getEnvironment(), execRoot, tmpDir, productName); - boolean allowNetworkForThisSpawn = allowNetwork || Spawns.requiresNetwork(spawn); SandboxedSpawn sandbox = new SymlinkedSandboxedSpawn( 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 3f1ec63026..72ef7e0ee0 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 @@ -181,7 +181,10 @@ final class LinuxSandboxedSpawnRunner extends AbstractSandboxSpawnRunner { // name unique (like we have to with standalone execution strategy). Path tmpDir = sandboxExecRoot.getRelative("tmp"); - Set<Path> writableDirs = getWritableDirs(sandboxExecRoot, spawn.getEnvironment(), tmpDir); + Map<String, String> environment = + localEnvProvider.rewriteLocalEnv(spawn.getEnvironment(), execRoot, tmpDir, productName); + + Set<Path> writableDirs = getWritableDirs(sandboxExecRoot, environment, tmpDir); ImmutableSet<PathFragment> outputs = SandboxHelpers.getOutputFiles(spawn); Duration timeout = policy.getTimeout(); @@ -212,9 +215,6 @@ final class LinuxSandboxedSpawnRunner extends AbstractSandboxSpawnRunner { commandLineBuilder.setStatisticsPath(statisticsPath.get()); } - Map<String, String> environment = - localEnvProvider.rewriteLocalEnv(spawn.getEnvironment(), execRoot, tmpDir, productName); - SandboxedSpawn sandbox = new SymlinkedSandboxedSpawn( sandboxPath, 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 8a82f4a177..974a641715 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 @@ -103,6 +103,9 @@ final class ProcessWrapperSandboxedSpawnRunner extends AbstractSandboxSpawnRunne // name unique (like we have to with standalone execution strategy). Path tmpDir = sandboxExecRoot.getRelative("tmp"); + Map<String, String> environment = + localEnvProvider.rewriteLocalEnv(spawn.getEnvironment(), execRoot, tmpDir, productName); + Duration timeout = policy.getTimeout(); ProcessWrapperUtil.CommandLineBuilder commandLineBuilder = ProcessWrapperUtil.commandLineBuilder(processWrapper.getPathString(), spawn.getArguments()) @@ -118,9 +121,6 @@ final class ProcessWrapperSandboxedSpawnRunner extends AbstractSandboxSpawnRunne commandLineBuilder.setStatisticsPath(statisticsPath.get()); } - Map<String, String> environment = - localEnvProvider.rewriteLocalEnv(spawn.getEnvironment(), execRoot, tmpDir, productName); - SandboxedSpawn sandbox = new SymlinkedSandboxedSpawn( sandboxPath, @@ -129,7 +129,7 @@ final class ProcessWrapperSandboxedSpawnRunner extends AbstractSandboxSpawnRunne environment, SandboxHelpers.getInputFiles(spawn, policy, execRoot), SandboxHelpers.getOutputFiles(spawn), - getWritableDirs(sandboxExecRoot, spawn.getEnvironment(), tmpDir)); + getWritableDirs(sandboxExecRoot, environment, tmpDir)); return runSpawn(spawn, sandbox, policy, execRoot, tmpDir, timeout, statisticsPath); } |