aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGravatar Ulf Adams <ulfjack@google.com>2016-04-12 13:45:56 +0000
committerGravatar Lukacs Berki <lberki@google.com>2016-04-13 08:08:39 +0000
commit8b56c8cd8aff04dd76a198825ad7ab7b44350438 (patch)
treef6e5a181bc9fc4795cd712f75350c09aafad6551 /src/main/java/com
parentc6c516dda8083caa42a60db7b82fcf52647a8cb3 (diff)
Refactor BlazeWorkspace creation to happen after BlazeRuntime construction.
As part of that, move a BinTools and the WorkspaceStatusActionFactory to the BlazeWorkspace. -- MOS_MIGRATED_REVID=119633702
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/BlazeModule.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java223
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/BlazeWorkspace.java18
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/sandbox/NamespaceSandboxRunner.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/standalone/StandaloneActionContextProvider.java3
8 files changed, 152 insertions, 119 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java b/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java
index 7523cc217b..78e4e747f3 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java
@@ -241,7 +241,8 @@ public final class BuildTool {
env.getEventBus()
.post(
new BuildInfoEvent(
- runtime.getworkspaceStatusActionFactory().createDummyWorkspaceStatus()));
+ env.getBlazeWorkspace().getWorkspaceStatusActionFactory()
+ .createDummyWorkspaceStatus()));
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java b/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java
index 285629d0a2..f741fe6a99 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java
@@ -192,7 +192,8 @@ public class ExecutionTool {
new FilesetActionContextImpl.Provider(
env.getReporter(), env.getWorkspaceName()),
new SimpleActionContextProvider(
- new SymlinkTreeStrategy(env.getOutputService(), runtime.getBinTools())));
+ new SymlinkTreeStrategy(
+ env.getOutputService(), env.getBlazeWorkspace().getBinTools())));
StrategyConverter strategyConverter = new StrategyConverter(actionContextProviders);
ImmutableList<ActionContextConsumer> actionContextConsumers =
@@ -509,7 +510,7 @@ public class ExecutionTool {
private void createToolsSymlinks() throws ExecutorInitException {
try {
- runtime.getBinTools().setupBuildTools();
+ env.getBlazeWorkspace().getBinTools().setupBuildTools();
} catch (ExecException e) {
throw new ExecutorInitException("Tools symlink creation failed", e);
}
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BlazeModule.java b/src/main/java/com/google/devtools/build/lib/runtime/BlazeModule.java
index ff4839ba41..c19235c663 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BlazeModule.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BlazeModule.java
@@ -30,6 +30,7 @@ import com.google.devtools.build.lib.exec.OutputService;
import com.google.devtools.build.lib.packages.NoSuchThingException;
import com.google.devtools.build.lib.packages.PackageFactory;
import com.google.devtools.build.lib.packages.Preprocessor;
+import com.google.devtools.build.lib.query2.AbstractBlazeQueryEnvironment;
import com.google.devtools.build.lib.query2.QueryEnvironmentFactory;
import com.google.devtools.build.lib.query2.engine.QueryEnvironment.QueryFunction;
import com.google.devtools.build.lib.query2.output.OutputFormatter;
@@ -374,8 +375,10 @@ public abstract class BlazeModule {
* Returns a factory for creating {@link SkyframeExecutor} objects. If the module does not
* provide any SkyframeExecutorFactory, it returns null. Note that only one factory per
* Bazel/Blaze runtime is allowed.
+ *
+ * @param directories the workspace directories
*/
- public SkyframeExecutorFactory getSkyframeExecutorFactory() {
+ public SkyframeExecutorFactory getSkyframeExecutorFactory(BlazeDirectories directories) {
return null;
}
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java b/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java
index b899fbda29..df56b97478 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java
@@ -151,33 +151,28 @@ public final class BlazeRuntime {
// We pass this through here to make it available to the MasterLogWriter.
private final OptionsProvider startupOptionsProvider;
- private final BinTools binTools;
- private final WorkspaceStatusAction.Factory workspaceStatusActionFactory;
private final ProjectFile.Provider projectFileProvider;
@Nullable
private final InvocationPolicy invocationPolicy;
private final QueryEnvironmentFactory queryEnvironmentFactory;
+ private final SubscriberExceptionHandler eventBusExceptionHandler;
// Workspace state (currently exactly one workspace per server)
- private final BlazeWorkspace workspace;
+ private BlazeWorkspace workspace;
- private BlazeRuntime(BlazeDirectories directories,
- WorkspaceStatusAction.Factory workspaceStatusActionFactory,
- final SkyframeExecutor skyframeExecutor,
+ private BlazeRuntime(
QueryEnvironmentFactory queryEnvironmentFactory,
PackageFactory pkgFactory, ConfiguredRuleClassProvider ruleClassProvider,
ConfigurationFactory configurationFactory, Clock clock,
OptionsProvider startupOptionsProvider, Iterable<BlazeModule> blazeModules,
SubscriberExceptionHandler eventBusExceptionHandler,
- BinTools binTools, ProjectFile.Provider projectFileProvider,
+ ProjectFile.Provider projectFileProvider,
InvocationPolicy invocationPolicy, Iterable<BlazeCommand> commands) {
// Server state
this.blazeModules = blazeModules;
overrideCommands(commands);
- this.workspaceStatusActionFactory = workspaceStatusActionFactory;
this.packageFactory = pkgFactory;
- this.binTools = binTools;
this.projectFileProvider = projectFileProvider;
this.invocationPolicy = invocationPolicy;
@@ -186,10 +181,7 @@ public final class BlazeRuntime {
this.clock = clock;
this.startupOptionsProvider = startupOptionsProvider;
this.queryEnvironmentFactory = queryEnvironmentFactory;
-
- // Workspace state
- this.workspace = new BlazeWorkspace(
- this, directories, skyframeExecutor, eventBusExceptionHandler);
+ this.eventBusExceptionHandler = eventBusExceptionHandler;
}
private static InvocationPolicy createInvocationPolicyFromModules(
@@ -207,6 +199,106 @@ public final class BlazeRuntime {
return builder.build();
}
+ public void initWorkspace(BlazeDirectories directories, BinTools binTools)
+ throws AbruptExitException {
+ SkyframeExecutorFactory skyframeExecutorFactory = null;
+ for (BlazeModule module : blazeModules) {
+ SkyframeExecutorFactory skyFactory = module.getSkyframeExecutorFactory(directories);
+ if (skyFactory != null) {
+ Preconditions.checkState(skyframeExecutorFactory == null,
+ "At most one Skyframe factory supported. But found two: %s and %s", skyFactory,
+ skyframeExecutorFactory);
+ skyframeExecutorFactory = skyFactory;
+ }
+ }
+ if (skyframeExecutorFactory == null) {
+ skyframeExecutorFactory = new SequencedSkyframeExecutorFactory();
+ }
+
+ WorkspaceStatusAction.Factory workspaceStatusActionFactory = null;
+ for (BlazeModule module : blazeModules) {
+ WorkspaceStatusAction.Factory candidate = module.getWorkspaceStatusActionFactory();
+ if (candidate != null) {
+ Preconditions.checkState(workspaceStatusActionFactory == null,
+ "more than one module defines a workspace status action factory");
+ workspaceStatusActionFactory = candidate;
+ }
+ }
+
+ Iterable<DiffAwareness.Factory> diffAwarenessFactories;
+ {
+ ImmutableList.Builder<DiffAwareness.Factory> builder = new ImmutableList.Builder<>();
+ boolean watchFS = startupOptionsProvider != null
+ && startupOptionsProvider.getOptions(BlazeServerStartupOptions.class).watchFS;
+ for (BlazeModule module : blazeModules) {
+ builder.addAll(module.getDiffAwarenessFactories(watchFS));
+ }
+ diffAwarenessFactories = builder.build();
+ }
+
+ // Merge filters from Blaze modules that allow some action inputs to be missing.
+ Predicate<PathFragment> allowedMissingInputs = null;
+ for (BlazeModule module : blazeModules) {
+ Predicate<PathFragment> modulePredicate = module.getAllowedMissingInputs();
+ if (modulePredicate != null) {
+ Preconditions.checkArgument(allowedMissingInputs == null,
+ "More than one Blaze module allows missing inputs.");
+ allowedMissingInputs = modulePredicate;
+ }
+ }
+ if (allowedMissingInputs == null) {
+ allowedMissingInputs = Predicates.alwaysFalse();
+ }
+
+ Preprocessor.Factory.Supplier preprocessorFactorySupplier = null;
+ for (BlazeModule module : blazeModules) {
+ Preprocessor.Factory.Supplier modulePreprocessorFactorySupplier =
+ module.getPreprocessorFactorySupplier();
+ if (modulePreprocessorFactorySupplier != null) {
+ Preconditions.checkState(preprocessorFactorySupplier == null,
+ "more than one module defines a preprocessor factory supplier");
+ preprocessorFactorySupplier = modulePreprocessorFactorySupplier;
+ }
+ }
+ if (preprocessorFactorySupplier == null) {
+ preprocessorFactorySupplier = Preprocessor.Factory.Supplier.NullSupplier.INSTANCE;
+ }
+
+ // We use an immutable map builder for the nice side effect that it throws if a duplicate key
+ // is inserted.
+ ImmutableMap.Builder<SkyFunctionName, SkyFunction> skyFunctions = ImmutableMap.builder();
+ for (BlazeModule module : blazeModules) {
+ skyFunctions.putAll(module.getSkyFunctions(directories));
+ }
+
+ ImmutableList.Builder<PrecomputedValue.Injected> precomputedValues = ImmutableList.builder();
+ for (BlazeModule module : blazeModules) {
+ precomputedValues.addAll(module.getPrecomputedSkyframeValues());
+ }
+
+ ImmutableList.Builder<SkyValueDirtinessChecker> customDirtinessCheckers =
+ ImmutableList.builder();
+ for (BlazeModule module : blazeModules) {
+ customDirtinessCheckers.addAll(module.getCustomDirtinessCheckers());
+ }
+
+ SkyframeExecutor skyframeExecutor = skyframeExecutorFactory.create(
+ packageFactory,
+ directories,
+ binTools,
+ workspaceStatusActionFactory,
+ ruleClassProvider.getBuildInfoFactories(),
+ diffAwarenessFactories,
+ allowedMissingInputs,
+ preprocessorFactorySupplier,
+ skyFunctions.build(),
+ precomputedValues.build(),
+ customDirtinessCheckers.build());
+ this.workspace = new BlazeWorkspace(
+ this, directories, skyframeExecutor, eventBusExceptionHandler, workspaceStatusActionFactory,
+ binTools);
+ }
+
@Nullable public CoverageReportActionFactory getCoverageReportActionFactory() {
CoverageReportActionFactory firstFactory = null;
for (BlazeModule module : blazeModules) {
@@ -301,10 +393,6 @@ public final class BlazeRuntime {
return getWorkspace().getDirectories().getOutputBase().getChild("server");
}
- public BinTools getBinTools() {
- return binTools;
- }
-
/**
* Returns the {@link QueryEnvironmentFactory} that should be used to create a
* {@link AbstractBlazeQueryEnvironment}, whenever one is needed.
@@ -330,10 +418,6 @@ public final class BlazeRuntime {
return result.build();
}
- public WorkspaceStatusAction.Factory getworkspaceStatusActionFactory() {
- return workspaceStatusActionFactory;
- }
-
/**
* Returns the rule class provider.
*/
@@ -1067,14 +1151,12 @@ public final class BlazeRuntime {
* an exception. Please plan appropriately.
*/
public static class Builder {
-
private BlazeDirectories directories;
private ConfigurationFactory configurationFactory;
private Clock clock;
private OptionsProvider startupOptionsProvider;
private final List<BlazeModule> blazeModules = new ArrayList<>();
- private SubscriberExceptionHandler eventBusExceptionHandler =
- new RemoteExceptionHandler();
+ private SubscriberExceptionHandler eventBusExceptionHandler = new RemoteExceptionHandler();
private BinTools binTools;
private UUID instanceId;
private final List<BlazeCommand> commands = new ArrayList<>();
@@ -1089,26 +1171,13 @@ public final class BlazeRuntime {
Preconditions.checkNotNull(clock);
- Preprocessor.Factory.Supplier preprocessorFactorySupplier = null;
- SkyframeExecutorFactory skyframeExecutorFactory = null;
- QueryEnvironmentFactory queryEnvironmentFactory = null;
for (BlazeModule module : blazeModules) {
module.blazeStartup(startupOptionsProvider,
BlazeVersionInfo.instance(), instanceId, directories, clock);
- Preprocessor.Factory.Supplier modulePreprocessorFactorySupplier =
- module.getPreprocessorFactorySupplier();
- if (modulePreprocessorFactorySupplier != null) {
- Preconditions.checkState(preprocessorFactorySupplier == null,
- "more than one module defines a preprocessor factory supplier");
- preprocessorFactorySupplier = modulePreprocessorFactorySupplier;
- }
- SkyframeExecutorFactory skyFactory = module.getSkyframeExecutorFactory();
- if (skyFactory != null) {
- Preconditions.checkState(skyframeExecutorFactory == null,
- "At most one skyframe factory supported. But found two: %s and %s", skyFactory,
- skyframeExecutorFactory);
- skyframeExecutorFactory = skyFactory;
- }
+ }
+
+ QueryEnvironmentFactory queryEnvironmentFactory = null;
+ for (BlazeModule module : blazeModules) {
QueryEnvironmentFactory queryEnvFactory = module.getQueryEnvironmentFactory();
if (queryEnvFactory != null) {
Preconditions.checkState(queryEnvironmentFactory == null,
@@ -1118,15 +1187,9 @@ public final class BlazeRuntime {
queryEnvironmentFactory = queryEnvFactory;
}
}
- if (skyframeExecutorFactory == null) {
- skyframeExecutorFactory = new SequencedSkyframeExecutorFactory();
- }
if (queryEnvironmentFactory == null) {
queryEnvironmentFactory = new QueryEnvironmentFactory();
}
- if (preprocessorFactorySupplier == null) {
- preprocessorFactorySupplier = Preprocessor.Factory.Supplier.NullSupplier.INSTANCE;
- }
ConfiguredRuleClassProvider.Builder ruleClassBuilder =
new ConfiguredRuleClassProvider.Builder();
@@ -1146,17 +1209,6 @@ public final class BlazeRuntime {
}
}
- Iterable<DiffAwareness.Factory> diffAwarenessFactories;
- {
- ImmutableList.Builder<DiffAwareness.Factory> builder = new ImmutableList.Builder<>();
- boolean watchFS = startupOptionsProvider != null
- && startupOptionsProvider.getOptions(BlazeServerStartupOptions.class).watchFS;
- for (BlazeModule module : blazeModules) {
- builder.addAll(module.getDiffAwarenessFactories(watchFS));
- }
- diffAwarenessFactories = builder.build();
- }
-
// Merge filters from Blaze modules that allow some action inputs to be missing.
Predicate<PathFragment> allowedMissingInputs = null;
for (BlazeModule module : blazeModules) {
@@ -1172,55 +1224,14 @@ public final class BlazeRuntime {
}
ConfiguredRuleClassProvider ruleClassProvider = ruleClassBuilder.build();
- WorkspaceStatusAction.Factory workspaceStatusActionFactory = null;
- for (BlazeModule module : blazeModules) {
- WorkspaceStatusAction.Factory candidate = module.getWorkspaceStatusActionFactory();
- if (candidate != null) {
- Preconditions.checkState(workspaceStatusActionFactory == null,
- "more than one module defines a workspace status action factory");
- workspaceStatusActionFactory = candidate;
- }
- }
List<PackageFactory.EnvironmentExtension> extensions = new ArrayList<>();
for (BlazeModule module : blazeModules) {
extensions.add(module.getPackageEnvironmentExtension());
}
- // We use an immutable map builder for the nice side effect that it throws if a duplicate key
- // is inserted.
- ImmutableMap.Builder<SkyFunctionName, SkyFunction> skyFunctions = ImmutableMap.builder();
- for (BlazeModule module : blazeModules) {
- skyFunctions.putAll(module.getSkyFunctions(directories));
- }
-
- ImmutableList.Builder<PrecomputedValue.Injected> precomputedValues = ImmutableList.builder();
- for (BlazeModule module : blazeModules) {
- precomputedValues.addAll(module.getPrecomputedSkyframeValues());
- }
-
- ImmutableList.Builder<SkyValueDirtinessChecker> customDirtinessCheckers =
- ImmutableList.builder();
- for (BlazeModule module : blazeModules) {
- customDirtinessCheckers.addAll(module.getCustomDirtinessCheckers());
- }
-
- final PackageFactory pkgFactory =
- new PackageFactory(ruleClassProvider, platformRegexps, extensions,
- BlazeVersionInfo.instance().getVersion());
- SkyframeExecutor skyframeExecutor =
- skyframeExecutorFactory.create(
- pkgFactory,
- directories,
- binTools,
- workspaceStatusActionFactory,
- ruleClassProvider.getBuildInfoFactories(),
- diffAwarenessFactories,
- allowedMissingInputs,
- preprocessorFactorySupplier,
- skyFunctions.build(),
- precomputedValues.build(),
- customDirtinessCheckers.build());
+ PackageFactory packageFactory = new PackageFactory(
+ ruleClassProvider, platformRegexps, extensions, BlazeVersionInfo.instance().getVersion());
if (configurationFactory == null) {
configurationFactory = new ConfigurationFactory(
@@ -1240,10 +1251,12 @@ public final class BlazeRuntime {
invocationPolicy = createInvocationPolicyFromModules(invocationPolicy, blazeModules);
- return new BlazeRuntime(directories, workspaceStatusActionFactory, skyframeExecutor,
- queryEnvironmentFactory, pkgFactory, ruleClassProvider, configurationFactory,
- clock, startupOptionsProvider, ImmutableList.copyOf(blazeModules),
- eventBusExceptionHandler, binTools, projectFileProvider, invocationPolicy, commands);
+ BlazeRuntime runtime = new BlazeRuntime(queryEnvironmentFactory, packageFactory,
+ ruleClassProvider, configurationFactory, clock, startupOptionsProvider,
+ ImmutableList.copyOf(blazeModules), eventBusExceptionHandler, projectFileProvider,
+ invocationPolicy, commands);
+ runtime.initWorkspace(directories, binTools);
+ return runtime;
}
public Builder setBinTools(BinTools binTools) {
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BlazeWorkspace.java b/src/main/java/com/google/devtools/build/lib/runtime/BlazeWorkspace.java
index b6be4b2699..aa98d3b98a 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BlazeWorkspace.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BlazeWorkspace.java
@@ -23,6 +23,8 @@ import com.google.devtools.build.lib.actions.cache.ActionCache;
import com.google.devtools.build.lib.actions.cache.CompactPersistentActionCache;
import com.google.devtools.build.lib.actions.cache.NullActionCache;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
+import com.google.devtools.build.lib.analysis.WorkspaceStatusAction;
+import com.google.devtools.build.lib.analysis.config.BinTools;
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.Reporter;
import com.google.devtools.build.lib.profiler.AutoProfiler;
@@ -56,6 +58,8 @@ public final class BlazeWorkspace {
private final BlazeRuntime runtime;
private final SubscriberExceptionHandler eventBusExceptionHandler;
+ private final WorkspaceStatusAction.Factory workspaceStatusActionFactory;
+ private final BinTools binTools;
private final BlazeDirectories directories;
private final SkyframeExecutor skyframeExecutor;
@@ -66,9 +70,13 @@ public final class BlazeWorkspace {
private Range<Long> lastExecutionRange = null;
public BlazeWorkspace(BlazeRuntime runtime, BlazeDirectories directories,
- SkyframeExecutor skyframeExecutor, SubscriberExceptionHandler eventBusExceptionHandler) {
+ SkyframeExecutor skyframeExecutor, SubscriberExceptionHandler eventBusExceptionHandler,
+ WorkspaceStatusAction.Factory workspaceStatusActionFactory, BinTools binTools) {
this.runtime = runtime;
this.eventBusExceptionHandler = eventBusExceptionHandler;
+ this.workspaceStatusActionFactory = workspaceStatusActionFactory;
+ this.binTools = binTools;
+
this.directories = directories;
this.skyframeExecutor = skyframeExecutor;
@@ -90,6 +98,14 @@ public final class BlazeWorkspace {
return skyframeExecutor;
}
+ public WorkspaceStatusAction.Factory getWorkspaceStatusActionFactory() {
+ return workspaceStatusActionFactory;
+ }
+
+ public BinTools getBinTools() {
+ return binTools;
+ }
+
/**
* Returns the working directory of the server.
*
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 836c154cfa..01faf50eff 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
@@ -39,7 +39,6 @@ import com.google.devtools.build.lib.packages.Target;
import com.google.devtools.build.lib.packages.TargetUtils;
import com.google.devtools.build.lib.pkgcache.LoadingFailedException;
import com.google.devtools.build.lib.runtime.BlazeCommand;
-import com.google.devtools.build.lib.runtime.BlazeRuntime;
import com.google.devtools.build.lib.runtime.Command;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.shell.AbnormalTerminationException;
@@ -126,7 +125,6 @@ public class RunCommand implements BlazeCommand {
@Override
public ExitCode exec(CommandEnvironment env, OptionsProvider options) {
- BlazeRuntime runtime = env.getRuntime();
RunOptions runOptions = options.getOptions(RunOptions.class);
// This list should look like: ["//executable:target", "arg1", "arg2"]
List<String> targetAndArgs = options.getResidue();
@@ -146,7 +144,7 @@ public class RunCommand implements BlazeCommand {
: ImmutableList.of(targetString);
BuildRequest request = BuildRequest.create(
this.getClass().getAnnotation(Command.class).name(), options,
- runtime.getStartupOptionsProvider(), targets, outErr,
+ env.getRuntime().getStartupOptionsProvider(), targets, outErr,
env.getCommandId(), env.getCommandStartTime());
currentRunUnder = runUnder;
@@ -246,7 +244,8 @@ public class RunCommand implements BlazeCommand {
options.getOptions(BuildRequestOptions.class).getSymlinkPrefix());
List<String> cmdLine = new ArrayList<>();
if (runOptions.scriptPath == null) {
- PathFragment processWrapperPath = runtime.getBinTools().getExecPath(PROCESS_WRAPPER);
+ PathFragment processWrapperPath =
+ env.getBlazeWorkspace().getBinTools().getExecPath(PROCESS_WRAPPER);
Preconditions.checkNotNull(
processWrapperPath, PROCESS_WRAPPER + " not found in embedded tools");
cmdLine.add(env.getExecRoot().getRelative(processWrapperPath).getPathString());
@@ -372,7 +371,7 @@ public class RunCommand implements BlazeCommand {
runfilesDir,
false);
helper.createSymlinksUsingCommand(env.getExecRoot(), target.getConfiguration(),
- env.getRuntime().getBinTools());
+ env.getBlazeWorkspace().getBinTools());
return workingDir;
}
diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/NamespaceSandboxRunner.java b/src/main/java/com/google/devtools/build/lib/sandbox/NamespaceSandboxRunner.java
index 8b35723646..9516fe2753 100644
--- a/src/main/java/com/google/devtools/build/lib/sandbox/NamespaceSandboxRunner.java
+++ b/src/main/java/com/google/devtools/build/lib/sandbox/NamespaceSandboxRunner.java
@@ -20,7 +20,6 @@ import com.google.common.io.ByteStreams;
import com.google.common.io.Files;
import com.google.devtools.build.lib.actions.ExecException;
import com.google.devtools.build.lib.actions.UserExecException;
-import com.google.devtools.build.lib.analysis.config.BinTools;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.shell.AbnormalTerminationException;
import com.google.devtools.build.lib.shell.Command;
@@ -81,9 +80,9 @@ public class NamespaceSandboxRunner {
static boolean isSupported(CommandEnvironment commandEnv) {
Path execRoot = commandEnv.getExecRoot();
- BinTools binTools = commandEnv.getRuntime().getBinTools();
- PathFragment embeddedTool = binTools.getExecPath(NAMESPACE_SANDBOX);
+ PathFragment embeddedTool =
+ commandEnv.getBlazeWorkspace().getBinTools().getExecPath(NAMESPACE_SANDBOX);
if (embeddedTool == null) {
// The embedded tool does not exist, meaning that we don't support sandboxing (e.g., while
// bootstrapping).
diff --git a/src/main/java/com/google/devtools/build/lib/standalone/StandaloneActionContextProvider.java b/src/main/java/com/google/devtools/build/lib/standalone/StandaloneActionContextProvider.java
index 9583d318b4..4982624988 100644
--- a/src/main/java/com/google/devtools/build/lib/standalone/StandaloneActionContextProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/standalone/StandaloneActionContextProvider.java
@@ -72,7 +72,8 @@ public class StandaloneActionContextProvider extends ActionContextProvider {
TestActionContext testStrategy =
new StandaloneTestStrategy(
- buildRequest, env.getRuntime().getBinTools(), env.getClientEnv(), env.getWorkspace());
+ buildRequest, env.getBlazeWorkspace().getBinTools(), env.getClientEnv(),
+ env.getWorkspace());
Builder<ActionContext> strategiesBuilder = ImmutableList.builder();