aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/runtime
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/runtime')
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java17
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/WorkspaceBuilder.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/commands/InfoCommand.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/commands/QueryCommand.java4
5 files changed, 21 insertions, 21 deletions
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 27e2ecc6d6..dc67a17f9d 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
@@ -189,9 +189,7 @@ public final class BlazeRuntime {
public void initWorkspace(BlazeDirectories directories, BinTools binTools)
throws AbruptExitException {
Preconditions.checkState(this.workspace == null);
- boolean watchFS = startupOptionsProvider != null
- && startupOptionsProvider.getOptions(BlazeServerStartupOptions.class).watchFS;
- WorkspaceBuilder builder = new WorkspaceBuilder(directories, binTools, watchFS);
+ WorkspaceBuilder builder = new WorkspaceBuilder(directories, binTools);
for (BlazeModule module : blazeModules) {
module.workspaceInit(directories, builder);
}
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java b/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java
index a68226d446..e22b09b007 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java
@@ -51,6 +51,7 @@ import com.google.devtools.build.lib.vfs.FileSystemUtils;
import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.PathFragment;
import com.google.devtools.common.options.OptionPriority;
+import com.google.devtools.common.options.OptionsClassProvider;
import com.google.devtools.common.options.OptionsParser;
import com.google.devtools.common.options.OptionsParsingException;
import com.google.devtools.common.options.OptionsProvider;
@@ -470,7 +471,7 @@ public final class CommandEnvironment {
*
* @see DefaultsPackage
*/
- public void setupPackageCache(PackageCacheOptions packageCacheOptions,
+ public void setupPackageCache(OptionsClassProvider options,
String defaultsPackageContents) throws InterruptedException, AbruptExitException {
SkyframeExecutor skyframeExecutor = getSkyframeExecutor();
if (!skyframeExecutor.hasIncrementalState()) {
@@ -478,7 +479,7 @@ public final class CommandEnvironment {
}
skyframeExecutor.sync(
reporter,
- packageCacheOptions,
+ options.getOptions(PackageCacheOptions.class),
getOutputBase(),
getWorkingDirectory(),
defaultsPackageContents,
@@ -486,7 +487,8 @@ public final class CommandEnvironment {
// TODO(bazel-team): this optimization disallows rule-specified additional dependencies
// on the client environment!
getWhitelistedClientEnv(),
- timestampGranularityMonitor);
+ timestampGranularityMonitor,
+ options);
}
public void recordLastExecutionTime() {
@@ -516,6 +518,15 @@ public final class CommandEnvironment {
CommonCommandOptions options, long execStartTimeNanos, long waitTimeInMs)
throws AbruptExitException {
commandStartTime -= options.startupTime;
+ if (runtime.getStartupOptionsProvider().getOptions(BlazeServerStartupOptions.class).watchFS) {
+ try {
+ // TODO(ulfjack): Get rid of the startup option and drop this code.
+ optionsParser.parse("--watchfs");
+ } catch (OptionsParsingException e) {
+ // This should never happen.
+ throw new IllegalStateException(e);
+ }
+ }
eventBus.post(new GotOptionsEvent(runtime.getStartupOptionsProvider(), optionsParser));
throwPendingException();
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/WorkspaceBuilder.java b/src/main/java/com/google/devtools/build/lib/runtime/WorkspaceBuilder.java
index d7f0bfd2f2..241d5690a1 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/WorkspaceBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/WorkspaceBuilder.java
@@ -36,7 +36,6 @@ import com.google.devtools.build.lib.util.Preconditions;
import com.google.devtools.build.lib.vfs.PathFragment;
import com.google.devtools.build.skyframe.SkyFunction;
import com.google.devtools.build.skyframe.SkyFunctionName;
-
import java.util.Map;
/**
@@ -46,7 +45,6 @@ import java.util.Map;
public final class WorkspaceBuilder {
private final BlazeDirectories directories;
private final BinTools binTools;
- private final boolean watchFs;
private SkyframeExecutorFactory skyframeExecutorFactory;
private WorkspaceStatusAction.Factory workspaceStatusActionFactory;
@@ -63,10 +61,9 @@ public final class WorkspaceBuilder {
private final ImmutableList.Builder<SkyValueDirtinessChecker> customDirtinessCheckers =
ImmutableList.builder();
- WorkspaceBuilder(BlazeDirectories directories, BinTools binTools, boolean watchFs) {
+ WorkspaceBuilder(BlazeDirectories directories, BinTools binTools) {
this.directories = directories;
this.binTools = binTools;
- this.watchFs = watchFs;
}
BlazeWorkspace build(
@@ -104,10 +101,6 @@ public final class WorkspaceBuilder {
workspaceStatusActionFactory, binTools);
}
- public boolean enableWatchFs() {
- return watchFs;
- }
-
/**
* Sets a factory for creating {@link SkyframeExecutor} objects. Note that only one factory per
* workspace is allowed.
@@ -136,7 +129,9 @@ public final class WorkspaceBuilder {
/**
* Add a {@link DiffAwareness} factory. These will be used to determine which files, if any,
- * changed between Blaze commands.
+ * changed between Blaze commands. Note that these factories are attempted in the order in which
+ * they are added to this class, so order matters - in order to guarantee a specific order, only
+ * a single module should add such factories.
*/
public WorkspaceBuilder addDiffAwarenessFactory(DiffAwareness.Factory factory) {
this.diffAwarenessFactories.add(Preconditions.checkNotNull(factory));
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/InfoCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/InfoCommand.java
index b5e596fb88..38c7d78ea8 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/InfoCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/InfoCommand.java
@@ -20,7 +20,6 @@ import com.google.devtools.build.lib.analysis.NoBuildEvent;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
import com.google.devtools.build.lib.events.Event;
-import com.google.devtools.build.lib.pkgcache.PackageCacheOptions;
import com.google.devtools.build.lib.runtime.BlazeCommand;
import com.google.devtools.build.lib.runtime.BlazeRuntime;
import com.google.devtools.build.lib.runtime.Command;
@@ -114,8 +113,7 @@ public class InfoCommand implements BlazeCommand {
// package path. Since info inherits all the build options, all the necessary information
// is available here.
env.setupPackageCache(
- optionsProvider.getOptions(PackageCacheOptions.class),
- runtime.getDefaultsPackageContent(optionsProvider));
+ optionsProvider, runtime.getDefaultsPackageContent(optionsProvider));
// TODO(bazel-team): What if there are multiple configurations? [multi-config]
configuration = env
.getConfigurations(optionsProvider)
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/QueryCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/QueryCommand.java
index 6c689d2baa..c52a3fe0d9 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/QueryCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/QueryCommand.java
@@ -83,9 +83,7 @@ public final class QueryCommand implements BlazeCommand {
QueryOptions queryOptions = options.getOptions(QueryOptions.class);
try {
- env.setupPackageCache(
- options.getOptions(PackageCacheOptions.class),
- runtime.getDefaultsPackageContent());
+ env.setupPackageCache(options, runtime.getDefaultsPackageContent());
} catch (InterruptedException e) {
env.getReporter().handle(Event.error("query interrupted"));
return ExitCode.INTERRUPTED;