aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/google/devtools/build/lib/sandbox/AbstractSandboxSpawnRunner.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/sandbox/DarwinSandboxedSpawnRunner.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedSpawnRunner.java19
-rw-r--r--src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedStrategy.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/sandbox/ProcessWrapperSandboxedSpawnRunner.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/sandbox/SandboxActionContextProvider.java35
-rw-r--r--src/main/java/com/google/devtools/build/lib/sandbox/SandboxModule.java3
7 files changed, 34 insertions, 51 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/AbstractSandboxSpawnRunner.java b/src/main/java/com/google/devtools/build/lib/sandbox/AbstractSandboxSpawnRunner.java
index 8a4d9c4b62..f4fbeebbde 100644
--- a/src/main/java/com/google/devtools/build/lib/sandbox/AbstractSandboxSpawnRunner.java
+++ b/src/main/java/com/google/devtools/build/lib/sandbox/AbstractSandboxSpawnRunner.java
@@ -52,12 +52,9 @@ abstract class AbstractSandboxSpawnRunner implements SpawnRunner {
private final SandboxOptions sandboxOptions;
private final ImmutableSet<Path> inaccessiblePaths;
- public AbstractSandboxSpawnRunner(
- CommandEnvironment cmdEnv,
- Path sandboxBase,
- SandboxOptions sandboxOptions) {
+ public AbstractSandboxSpawnRunner(CommandEnvironment cmdEnv, Path sandboxBase) {
this.sandboxBase = sandboxBase;
- this.sandboxOptions = sandboxOptions;
+ this.sandboxOptions = cmdEnv.getOptions().getOptions(SandboxOptions.class);
this.inaccessiblePaths =
sandboxOptions.getInaccessiblePaths(cmdEnv.getDirectories().getFileSystem());
}
@@ -224,5 +221,9 @@ abstract class AbstractSandboxSpawnRunner implements SpawnRunner {
return inaccessiblePaths;
}
+ protected SandboxOptions getSandboxOptions() {
+ return sandboxOptions;
+ }
+
protected abstract String getName();
}
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 1c9f098c41..2344516ac7 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
@@ -23,7 +23,6 @@ import com.google.devtools.build.lib.actions.ExecException;
import com.google.devtools.build.lib.actions.ExecutionStrategy;
import com.google.devtools.build.lib.actions.Spawn;
import com.google.devtools.build.lib.actions.SpawnActionContext;
-import com.google.devtools.build.lib.buildtool.BuildRequest;
import com.google.devtools.build.lib.exec.SpawnResult;
import com.google.devtools.build.lib.exec.apple.XCodeLocalEnvProvider;
import com.google.devtools.build.lib.exec.local.LocalEnvProvider;
@@ -103,15 +102,11 @@ final class DarwinSandboxedSpawnRunner extends AbstractSandboxSpawnRunner {
DarwinSandboxedSpawnRunner(
CommandEnvironment cmdEnv,
- BuildRequest buildRequest,
Path sandboxBase,
String productName,
int timeoutGraceSeconds)
throws IOException {
- super(
- cmdEnv,
- sandboxBase,
- buildRequest.getOptions(SandboxOptions.class));
+ super(cmdEnv, sandboxBase);
this.execRoot = cmdEnv.getExecRoot();
this.allowNetwork = SandboxHelpers.shouldAllowNetwork(cmdEnv.getOptions());
this.productName = productName;
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 88ec144a9f..7ea2120441 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
@@ -22,7 +22,6 @@ import com.google.devtools.build.lib.actions.ExecException;
import com.google.devtools.build.lib.actions.Spawn;
import com.google.devtools.build.lib.actions.UserExecException;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
-import com.google.devtools.build.lib.buildtool.BuildRequest;
import com.google.devtools.build.lib.exec.SpawnResult;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.shell.Command;
@@ -86,7 +85,6 @@ final class LinuxSandboxedSpawnRunner extends AbstractSandboxSpawnRunner {
return execPath != null ? cmdEnv.getExecRoot().getRelative(execPath) : null;
}
- private final SandboxOptions sandboxOptions;
private final BlazeDirectories blazeDirs;
private final Path execRoot;
private final boolean allowNetwork;
@@ -97,16 +95,11 @@ final class LinuxSandboxedSpawnRunner extends AbstractSandboxSpawnRunner {
LinuxSandboxedSpawnRunner(
CommandEnvironment cmdEnv,
- BuildRequest buildRequest,
Path sandboxBase,
Path inaccessibleHelperFile,
Path inaccessibleHelperDir,
int timeoutGraceSeconds) {
- super(
- cmdEnv,
- sandboxBase,
- buildRequest.getOptions(SandboxOptions.class));
- this.sandboxOptions = cmdEnv.getOptions().getOptions(SandboxOptions.class);
+ super(cmdEnv, sandboxBase);
this.blazeDirs = cmdEnv.getDirectories();
this.execRoot = cmdEnv.getExecRoot();
this.allowNetwork = SandboxHelpers.shouldAllowNetwork(cmdEnv.getOptions());
@@ -157,7 +150,7 @@ final class LinuxSandboxedSpawnRunner extends AbstractSandboxSpawnRunner {
List<String> commandLineArgs = new ArrayList<>();
commandLineArgs.add(linuxSandbox.getPathString());
- if (sandboxOptions.sandboxDebug) {
+ if (getSandboxOptions().sandboxDebug) {
commandLineArgs.add("-D");
}
@@ -199,12 +192,12 @@ final class LinuxSandboxedSpawnRunner extends AbstractSandboxSpawnRunner {
commandLineArgs.add("-N");
}
- if (sandboxOptions.sandboxFakeHostname) {
+ if (getSandboxOptions().sandboxFakeHostname) {
// Use a fake hostname ("localhost") inside the sandbox.
commandLineArgs.add("-H");
}
- if (sandboxOptions.sandboxFakeUsername) {
+ if (getSandboxOptions().sandboxFakeUsername) {
// Use a fake username ("nobody") inside the sandbox.
commandLineArgs.add("-U");
}
@@ -234,7 +227,7 @@ final class LinuxSandboxedSpawnRunner extends AbstractSandboxSpawnRunner {
private ImmutableSet<Path> getTmpfsPaths() {
ImmutableSet.Builder<Path> tmpfsPaths = ImmutableSet.builder();
- for (String tmpfsPath : sandboxOptions.sandboxTmpfsPath) {
+ for (String tmpfsPath : getSandboxOptions().sandboxTmpfsPath) {
tmpfsPaths.add(blazeDirs.getFileSystem().getPath(tmpfsPath));
}
return tmpfsPaths.build();
@@ -251,7 +244,7 @@ final class LinuxSandboxedSpawnRunner extends AbstractSandboxSpawnRunner {
bindMounts.put(blazeDirs.getOutputBase(), blazeDirs.getOutputBase());
}
for (ImmutableMap.Entry<String, String> additionalMountPath :
- sandboxOptions.sandboxAdditionalMounts) {
+ getSandboxOptions().sandboxAdditionalMounts) {
try {
final Path mountTarget = blazeDirs.getFileSystem().getPath(additionalMountPath.getValue());
// If source path is relative, treat it as a relative path inside the execution root
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 f344708d90..c809c2d5f0 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
@@ -16,7 +16,6 @@ package com.google.devtools.build.lib.sandbox;
import com.google.devtools.build.lib.actions.ExecutionStrategy;
import com.google.devtools.build.lib.actions.SpawnActionContext;
-import com.google.devtools.build.lib.buildtool.BuildRequest;
import com.google.devtools.build.lib.exec.AbstractSpawnStrategy;
import com.google.devtools.build.lib.exec.SpawnRunner;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
@@ -42,7 +41,6 @@ public final class LinuxSandboxedStrategy extends AbstractSpawnStrategy {
static LinuxSandboxedSpawnRunner create(
CommandEnvironment cmdEnv,
- BuildRequest buildRequest,
Path sandboxBase,
int timeoutGraceSeconds)
throws IOException {
@@ -60,7 +58,6 @@ public final class LinuxSandboxedStrategy extends AbstractSpawnStrategy {
return new LinuxSandboxedSpawnRunner(
cmdEnv,
- buildRequest,
sandboxBase,
inaccessibleHelperFile,
inaccessibleHelperDir,
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 4a6e5a87b3..5e98898030 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
@@ -16,7 +16,6 @@ package com.google.devtools.build.lib.sandbox;
import com.google.devtools.build.lib.actions.ExecException;
import com.google.devtools.build.lib.actions.Spawn;
-import com.google.devtools.build.lib.buildtool.BuildRequest;
import com.google.devtools.build.lib.exec.SpawnResult;
import com.google.devtools.build.lib.exec.apple.XCodeLocalEnvProvider;
import com.google.devtools.build.lib.exec.local.LocalEnvProvider;
@@ -43,14 +42,10 @@ final class ProcessWrapperSandboxedSpawnRunner extends AbstractSandboxSpawnRunne
ProcessWrapperSandboxedSpawnRunner(
CommandEnvironment cmdEnv,
- BuildRequest buildRequest,
Path sandboxBase,
String productName,
int timeoutGraceSeconds) {
- super(
- cmdEnv,
- sandboxBase,
- buildRequest.getOptions(SandboxOptions.class));
+ super(cmdEnv, sandboxBase);
this.execRoot = cmdEnv.getExecRoot();
this.productName = productName;
this.timeoutGraceSeconds = timeoutGraceSeconds;
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 55f755da4c..a17639eef8 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
@@ -19,7 +19,6 @@ import com.google.devtools.build.lib.actions.ActionContext;
import com.google.devtools.build.lib.actions.ExecException;
import com.google.devtools.build.lib.actions.ResourceManager;
import com.google.devtools.build.lib.actions.Spawn;
-import com.google.devtools.build.lib.buildtool.BuildRequest;
import com.google.devtools.build.lib.exec.ActionContextProvider;
import com.google.devtools.build.lib.exec.ExecutionOptions;
import com.google.devtools.build.lib.exec.SpawnResult;
@@ -31,6 +30,7 @@ import com.google.devtools.build.lib.exec.local.LocalSpawnRunner;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.util.OS;
import com.google.devtools.build.lib.vfs.Path;
+import com.google.devtools.common.options.OptionsProvider;
import java.io.IOException;
/**
@@ -43,39 +43,42 @@ final class SandboxActionContextProvider extends ActionContextProvider {
this.contexts = contexts;
}
- public static SandboxActionContextProvider create(
- CommandEnvironment cmdEnv, BuildRequest buildRequest, Path sandboxBase) throws IOException {
+ public static SandboxActionContextProvider create(CommandEnvironment cmdEnv, Path sandboxBase)
+ throws IOException {
ImmutableList.Builder<ActionContext> contexts = ImmutableList.builder();
+ OptionsProvider options = cmdEnv.getOptions();
int timeoutGraceSeconds =
- buildRequest.getOptions(LocalExecutionOptions.class).localSigkillGraceSeconds;
- boolean verboseFailures = buildRequest.getOptions(ExecutionOptions.class).verboseFailures;
+ options.getOptions(LocalExecutionOptions.class).localSigkillGraceSeconds;
+ boolean verboseFailures = options.getOptions(ExecutionOptions.class).verboseFailures;
String productName = cmdEnv.getRuntime().getProductName();
// This works on most platforms, but isn't the best choice, so we put it first and let later
// platform-specific sandboxing strategies become the default.
if (ProcessWrapperSandboxedSpawnRunner.isSupported(cmdEnv)) {
- SpawnRunner spawnRunner = withFallback(
- cmdEnv,
- new ProcessWrapperSandboxedSpawnRunner(
- cmdEnv, buildRequest, sandboxBase, productName, timeoutGraceSeconds));
+ SpawnRunner spawnRunner =
+ withFallback(
+ cmdEnv,
+ new ProcessWrapperSandboxedSpawnRunner(
+ cmdEnv, sandboxBase, productName, timeoutGraceSeconds));
contexts.add(new ProcessWrapperSandboxedStrategy(verboseFailures, spawnRunner));
}
// This is the preferred sandboxing strategy on Linux.
if (LinuxSandboxedSpawnRunner.isSupported(cmdEnv)) {
- SpawnRunner spawnRunner = withFallback(
- cmdEnv,
- LinuxSandboxedStrategy.create(cmdEnv, buildRequest, sandboxBase, timeoutGraceSeconds));
+ SpawnRunner spawnRunner =
+ withFallback(
+ cmdEnv, LinuxSandboxedStrategy.create(cmdEnv, sandboxBase, timeoutGraceSeconds));
contexts.add(new LinuxSandboxedStrategy(verboseFailures, spawnRunner));
}
// This is the preferred sandboxing strategy on macOS.
if (DarwinSandboxedSpawnRunner.isSupported(cmdEnv)) {
- SpawnRunner spawnRunner = withFallback(
- cmdEnv,
- new DarwinSandboxedSpawnRunner(
- cmdEnv, buildRequest, sandboxBase, productName, timeoutGraceSeconds));
+ SpawnRunner spawnRunner =
+ withFallback(
+ cmdEnv,
+ new DarwinSandboxedSpawnRunner(
+ cmdEnv, sandboxBase, productName, timeoutGraceSeconds));
contexts.add(new DarwinSandboxedStrategy(verboseFailures, spawnRunner));
}
diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/SandboxModule.java b/src/main/java/com/google/devtools/build/lib/sandbox/SandboxModule.java
index 18caee78da..5003b698d9 100644
--- a/src/main/java/com/google/devtools/build/lib/sandbox/SandboxModule.java
+++ b/src/main/java/com/google/devtools/build/lib/sandbox/SandboxModule.java
@@ -64,8 +64,7 @@ public final class SandboxModule extends BlazeModule {
try {
FileSystemUtils.createDirectoryAndParents(sandboxBase);
- builder.addActionContextProvider(
- SandboxActionContextProvider.create(cmdEnv, request, sandboxBase));
+ builder.addActionContextProvider(SandboxActionContextProvider.create(cmdEnv, sandboxBase));
} catch (IOException e) {
throw new IllegalStateException(e);
}