aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/sandbox
diff options
context:
space:
mode:
authorGravatar Philipp Wollermann <philwo@google.com>2016-06-20 10:30:55 +0000
committerGravatar Philipp Wollermann <philwo@google.com>2016-06-21 09:57:25 +0000
commit69fa69983b26c1059c99c7709162fbe778fe690f (patch)
treece0e742abf8c0423c252941c23093856143cac5f /src/main/java/com/google/devtools/build/lib/sandbox
parent7c246857cdfc210538c76749acb5004a284bdf01 (diff)
sandbox: So refactoring, much no-op change, wow.
(But this will make it easier to try out the overlayfs-based sandbox later.) -- MOS_MIGRATED_REVID=125320914
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/sandbox')
-rw-r--r--src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedStrategy.java24
-rw-r--r--src/main/java/com/google/devtools/build/lib/sandbox/SandboxActionContextProvider.java6
2 files changed, 14 insertions, 16 deletions
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 989190554c..cc9acf66d9 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
@@ -70,33 +70,30 @@ import java.util.concurrent.atomic.AtomicInteger;
public class LinuxSandboxedStrategy implements SpawnActionContext {
private final ExecutorService backgroundWorkers;
+ private final SandboxOptions sandboxOptions;
private final ImmutableMap<String, String> clientEnv;
private final BlazeDirectories blazeDirs;
private final Path execRoot;
private final boolean verboseFailures;
- private final boolean sandboxDebug;
private final boolean unblockNetwork;
- private final List<String> sandboxAddPath;
private final UUID uuid = UUID.randomUUID();
private final AtomicInteger execCounter = new AtomicInteger();
private final String productName;
public LinuxSandboxedStrategy(
+ SandboxOptions options,
Map<String, String> clientEnv,
BlazeDirectories blazeDirs,
ExecutorService backgroundWorkers,
boolean verboseFailures,
- boolean sandboxDebug,
- List<String> sandboxAddPath,
boolean unblockNetwork,
String productName) {
+ this.sandboxOptions = options;
this.clientEnv = ImmutableMap.copyOf(clientEnv);
this.blazeDirs = blazeDirs;
this.execRoot = blazeDirs.getExecRoot();
this.backgroundWorkers = Preconditions.checkNotNull(backgroundWorkers);
this.verboseFailures = verboseFailures;
- this.sandboxDebug = sandboxDebug;
- this.sandboxAddPath = sandboxAddPath;
this.unblockNetwork = unblockNetwork;
this.productName = productName;
}
@@ -136,9 +133,9 @@ public class LinuxSandboxedStrategy implements SpawnActionContext {
Path sandboxPath =
execRoot.getRelative(productName + "-sandbox").getRelative(execId);
+ // Gather all necessary mounts for the sandbox.
ImmutableMap<Path, Path> mounts;
try {
- // Gather all necessary mounts for the sandbox.
mounts = getMounts(spawn, actionExecutionContext);
} catch (IllegalArgumentException | IOException e) {
throw new EnvironmentalExecException("Could not prepare mounts for sandbox execution", e);
@@ -148,7 +145,7 @@ public class LinuxSandboxedStrategy implements SpawnActionContext {
int timeout = getTimeout(spawn);
- ImmutableSet.Builder<PathFragment> outputFiles = ImmutableSet.<PathFragment>builder();
+ ImmutableSet.Builder<PathFragment> outputFiles = ImmutableSet.builder();
for (PathFragment optionalOutput : spawn.getOptionalOutputFiles()) {
Preconditions.checkArgument(!optionalOutput.isAbsolute());
outputFiles.add(optionalOutput);
@@ -160,7 +157,12 @@ public class LinuxSandboxedStrategy implements SpawnActionContext {
try {
final NamespaceSandboxRunner runner =
new NamespaceSandboxRunner(
- execRoot, sandboxPath, mounts, createDirs, verboseFailures, sandboxDebug);
+ execRoot,
+ sandboxPath,
+ mounts,
+ createDirs,
+ verboseFailures,
+ sandboxOptions.sandboxDebug);
try {
runner.run(
spawn.getArguments(),
@@ -529,7 +531,7 @@ public class LinuxSandboxedStrategy implements SpawnActionContext {
ImmutableList<Path> exclude =
ImmutableList.of(blazeDirs.getWorkspace(), blazeDirs.getOutputBase());
- for (String pathStr : sandboxAddPath) {
+ for (String pathStr : sandboxOptions.sandboxAddPath) {
Path path = fs.getPath(pathStr);
// Check if path is in {workspace, outputBase}
@@ -611,6 +613,6 @@ public class LinuxSandboxedStrategy implements SpawnActionContext {
@Override
public boolean shouldPropagateExecException() {
- return verboseFailures && sandboxDebug;
+ return verboseFailures && sandboxOptions.sandboxDebug;
}
}
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 a1f6134ff0..e6e462318a 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
@@ -23,7 +23,6 @@ import com.google.devtools.build.lib.exec.ExecutionOptions;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.util.OS;
-import java.util.List;
import java.util.concurrent.ExecutorService;
/**
@@ -37,24 +36,21 @@ public class SandboxActionContextProvider extends ActionContextProvider {
public SandboxActionContextProvider(
CommandEnvironment env, BuildRequest buildRequest, ExecutorService backgroundWorkers) {
boolean verboseFailures = buildRequest.getOptions(ExecutionOptions.class).verboseFailures;
- boolean sandboxDebug = buildRequest.getOptions(SandboxOptions.class).sandboxDebug;
boolean unblockNetwork =
buildRequest
.getOptions(BuildConfiguration.Options.class)
.testArguments
.contains("--wrapper_script_flag=--debug");
- List<String> sandboxAddPath = buildRequest.getOptions(SandboxOptions.class).sandboxAddPath;
Builder<ActionContext> strategies = ImmutableList.builder();
if (OS.getCurrent() == OS.LINUX) {
strategies.add(
new LinuxSandboxedStrategy(
+ buildRequest.getOptions(SandboxOptions.class),
env.getClientEnv(),
env.getDirectories(),
backgroundWorkers,
verboseFailures,
- sandboxDebug,
- sandboxAddPath,
unblockNetwork,
env.getRuntime().getProductName()));
}