diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/remote/RemoteActionContextProvider.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/remote/RemoteActionContextProvider.java | 55 |
1 files changed, 36 insertions, 19 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/remote/RemoteActionContextProvider.java b/src/main/java/com/google/devtools/build/lib/remote/RemoteActionContextProvider.java index f85930618e..7966f9e63d 100644 --- a/src/main/java/com/google/devtools/build/lib/remote/RemoteActionContextProvider.java +++ b/src/main/java/com/google/devtools/build/lib/remote/RemoteActionContextProvider.java @@ -14,39 +14,56 @@ package com.google.devtools.build.lib.remote; +import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableList.Builder; +import com.google.devtools.build.lib.actions.ActionInputFileCache; import com.google.devtools.build.lib.actions.Executor.ActionContext; +import com.google.devtools.build.lib.actions.ResourceManager; +import com.google.devtools.build.lib.actions.SpawnActionContext; import com.google.devtools.build.lib.authandtls.AuthAndTLSOptions; -import com.google.devtools.build.lib.buildtool.BuildRequest; import com.google.devtools.build.lib.exec.ActionContextProvider; +import com.google.devtools.build.lib.exec.ActionInputPrefetcher; import com.google.devtools.build.lib.exec.ExecutionOptions; +import com.google.devtools.build.lib.exec.local.LocalExecutionOptions; import com.google.devtools.build.lib.runtime.CommandEnvironment; +import com.google.devtools.build.lib.standalone.StandaloneSpawnStrategy; /** * Provide a remote execution context. */ final class RemoteActionContextProvider extends ActionContextProvider { - private final ImmutableList<ActionContext> strategies; + private final CommandEnvironment env; + private ActionInputPrefetcher actionInputPrefetcher; - RemoteActionContextProvider( - CommandEnvironment env, - BuildRequest buildRequest) { - boolean verboseFailures = buildRequest.getOptions(ExecutionOptions.class).verboseFailures; - Builder<ActionContext> strategiesBuilder = ImmutableList.builder(); - strategiesBuilder.add( - new RemoteSpawnStrategy( - env.getClientEnv(), - env.getExecRoot(), - buildRequest.getOptions(RemoteOptions.class), - buildRequest.getOptions(AuthAndTLSOptions.class), - verboseFailures, - env.getRuntime().getProductName())); - this.strategies = strategiesBuilder.build(); + RemoteActionContextProvider(CommandEnvironment env) { + this.env = env; + } + + @Override + public void init( + ActionInputFileCache actionInputFileCache, ActionInputPrefetcher actionInputPrefetcher) { + this.actionInputPrefetcher = Preconditions.checkNotNull(actionInputPrefetcher); } @Override - public Iterable<ActionContext> getActionContexts() { - return strategies; + public Iterable<? extends ActionContext> getActionContexts() { + ExecutionOptions executionOptions = env.getOptions().getOptions(ExecutionOptions.class); + LocalExecutionOptions localExecutionOptions = + env.getOptions().getOptions(LocalExecutionOptions.class); + SpawnActionContext fallbackStrategy = + new StandaloneSpawnStrategy( + env.getExecRoot(), + actionInputPrefetcher, + localExecutionOptions, + executionOptions.verboseFailures, + env.getRuntime().getProductName(), + ResourceManager.instance()); + return ImmutableList.of( + new RemoteSpawnStrategy( + env.getExecRoot(), + env.getOptions().getOptions(RemoteOptions.class), + env.getOptions().getOptions(AuthAndTLSOptions.class), + executionOptions.verboseFailures, + fallbackStrategy)); } } |