aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/google/devtools/build/lib/BUILD13
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/BuildView.java17
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/commands/FetchCommand.java35
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildtool/BuildRequest.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java14
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/query2/output/QueryOptions.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/genquery/BUILD1
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/KeepGoingOption.java (renamed from src/main/java/com/google/devtools/build/lib/bazel/commands/FetchOptions.java)11
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/commands/BuildCommand.java37
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/commands/PrintActionCommand.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/commands/QueryCommand.java36
-rw-r--r--src/test/java/com/google/devtools/build/lib/BUILD1
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java30
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java8
16 files changed, 126 insertions, 115 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD
index b47ed99f75..3794ce1121 100644
--- a/src/main/java/com/google/devtools/build/lib/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/BUILD
@@ -592,6 +592,7 @@ java_library(
srcs = glob(["bazel/commands/*.java"]),
resources = ["bazel/commands/fetch.txt"],
deps = [
+ ":keep-going-option",
"//src/main/java/com/google/devtools/build/lib:build-base",
"//src/main/java/com/google/devtools/build/lib:events",
"//src/main/java/com/google/devtools/build/lib:exitcode-external",
@@ -999,6 +1000,12 @@ java_library(
)
java_library(
+ name = "keep-going-option",
+ srcs = ["runtime/KeepGoingOption.java"],
+ deps = ["//src/main/java/com/google/devtools/common/options"],
+)
+
+java_library(
name = "runtime",
srcs = glob(
[
@@ -1009,10 +1016,14 @@ java_library(
"buildtool/*.java",
"buildtool/buildevent/*.java",
],
- exclude = ["buildtool/BuildRequestOptions.java"],
+ exclude = [
+ "buildtool/BuildRequestOptions.java",
+ "runtime/KeepGoingOption.java",
+ ],
),
deps = [
":build-request-options",
+ ":keep-going-option",
"//src/main/java/com/google/devtools/build/docgen:docgen_javalib",
"//src/main/java/com/google/devtools/build/lib:build-base",
"//src/main/java/com/google/devtools/build/lib:events",
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
index 0674cfaa16..b84126d518 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
@@ -178,20 +178,6 @@ public class BuildView {
public int loadingPhaseThreads;
@Option(
- name = "keep_going",
- abbrev = 'k',
- defaultValue = "false",
- category = "strategy",
- documentationCategory = OptionDocumentationCategory.EXECUTION_STRATEGY,
- effectTags = {OptionEffectTag.EAGERNESS_TO_EXIT},
- help =
- "Continue as much as possible after an error. While the target that failed, and those "
- + "that depend on it, cannot be analyzed (or built), the other prerequisites of "
- + "these targets can be analyzed (or built) all the same."
- )
- public boolean keepGoing;
-
- @Option(
name = "analysis_warnings_as_errors",
deprecationWarning =
"analysis_warnings_as_errors is now a no-op and will be removed in"
@@ -478,6 +464,7 @@ public class BuildView {
BuildConfigurationCollection configurations,
List<String> aspects,
Options viewOptions,
+ boolean keepGoing,
TopLevelArtifactContext topLevelOptions,
ExtendedEventHandler eventHandler,
EventBus eventBus)
@@ -596,7 +583,7 @@ public class BuildView {
topLevelCtKeys,
aspectKeys,
eventBus,
- viewOptions.keepGoing,
+ keepGoing,
viewOptions.loadingPhaseThreads);
setArtifactRoots(skyframeAnalysisResult.getPackageRoots());
} finally {
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/commands/FetchCommand.java b/src/main/java/com/google/devtools/build/lib/bazel/commands/FetchCommand.java
index 9f9923d154..0c6ca842d4 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/commands/FetchCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/commands/FetchCommand.java
@@ -16,7 +16,6 @@ package com.google.devtools.build.lib.bazel.commands;
import com.google.common.base.Joiner;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
import com.google.devtools.build.lib.analysis.NoBuildEvent;
import com.google.devtools.build.lib.analysis.NoBuildRequestFinishedEvent;
import com.google.devtools.build.lib.events.Event;
@@ -31,25 +30,24 @@ 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.runtime.KeepGoingOption;
import com.google.devtools.build.lib.runtime.commands.QueryCommand;
import com.google.devtools.build.lib.util.AbruptExitException;
import com.google.devtools.build.lib.util.ExitCode;
import com.google.devtools.common.options.OptionsParser;
import com.google.devtools.common.options.OptionsProvider;
import java.io.IOException;
+import java.util.EnumSet;
-/**
- * Fetches external repositories. Which is so fetch.
- */
-@Command(name = FetchCommand.NAME,
- options = {
- PackageCacheOptions.class,
- FetchOptions.class,
- },
- help = "resource:fetch.txt",
- shortDescription = "Fetches external repositories that are prerequisites to the targets.",
- allowResidue = true,
- completion = "label")
+/** Fetches external repositories. Which is so fetch. */
+@Command(
+ name = FetchCommand.NAME,
+ options = {PackageCacheOptions.class, KeepGoingOption.class},
+ help = "resource:fetch.txt",
+ shortDescription = "Fetches external repositories that are prerequisites to the targets.",
+ allowResidue = true,
+ completion = "label"
+)
public final class FetchCommand implements BlazeCommand {
// TODO(kchodorow): add an option to force-fetch targets, even if they're already downloaded.
// TODO(kchodorow): this would be a great time to check for difference and invalidate the upward
@@ -95,9 +93,14 @@ public final class FetchCommand implements BlazeCommand {
String query = Joiner.on(" union ").join(labelsToLoad.build());
query = "deps(" + query + ")";
- AbstractBlazeQueryEnvironment<Target> queryEnv = QueryCommand.newQueryEnvironment(
- env, options.getOptions(FetchOptions.class).keepGoing, false,
- Lists.<String>newArrayList(), 200, Sets.<Setting>newHashSet());
+ AbstractBlazeQueryEnvironment<Target> queryEnv =
+ QueryCommand.newQueryEnvironment(
+ env,
+ options.getOptions(KeepGoingOption.class).keepGoing,
+ false,
+ Lists.<String>newArrayList(),
+ 200,
+ EnumSet.noneOf(Setting.class));
// 1. Parse query:
QueryExpression expr;
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/BuildRequest.java b/src/main/java/com/google/devtools/build/lib/buildtool/BuildRequest.java
index ba6c75eac6..9553731fac 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/BuildRequest.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/BuildRequest.java
@@ -29,6 +29,7 @@ import com.google.devtools.build.lib.packages.SkylarkSemanticsOptions;
import com.google.devtools.build.lib.pkgcache.LoadingOptions;
import com.google.devtools.build.lib.pkgcache.PackageCacheOptions;
import com.google.devtools.build.lib.runtime.BlazeCommandEventHandler;
+import com.google.devtools.build.lib.runtime.KeepGoingOption;
import com.google.devtools.build.lib.util.OptionsUtils;
import com.google.devtools.build.lib.util.io.OutErr;
import com.google.devtools.common.options.OptionsBase;
@@ -74,7 +75,8 @@ public class BuildRequest implements OptionsClassProvider {
SkylarkSemanticsOptions.class,
LoadingOptions.class,
BuildView.Options.class,
- ExecutionOptions.class);
+ ExecutionOptions.class,
+ KeepGoingOption.class);
private BuildRequest(String commandName,
final OptionsProvider options,
@@ -202,6 +204,11 @@ public class BuildRequest implements OptionsClassProvider {
return getOptions(BuildView.Options.class);
}
+ /** Returns the value of the --keep_going option. */
+ boolean getKeepGoing() {
+ return getOptions(KeepGoingOption.class).keepGoing;
+ }
+
/**
* Returns the set of execution options specified for this request.
*/
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 2b22d606bf..a16f3d0942 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
@@ -203,7 +203,7 @@ public final class BuildTool {
runtime.getConfigurationFragmentFactories(),
buildOptions,
request.getMultiCpus(),
- request.getViewOptions().keepGoing);
+ request.getKeepGoing());
env.throwPendingException();
if (configurations.getTargetConfigurations().size() == 1) {
@@ -246,7 +246,7 @@ public final class BuildTool {
try {
doConfiguredTargetQuery(request, configurations, loadingResult);
} catch (QueryException | IOException e) {
- if (!request.getViewOptions().keepGoing) {
+ if (!request.getKeepGoing()) {
throw new ViewCreationFailedException("Error doing configured target query", e);
}
env.getReporter().error(null, "Error doing configured target query", e);
@@ -448,7 +448,7 @@ public final class BuildTool {
String queryOptions = request.getBuildOptions().queryOptions;
ConfiguredTargetQueryEnvironment configuredTargetQueryEnvironment =
new ConfiguredTargetQueryEnvironment(
- request.getViewOptions().keepGoing,
+ request.getKeepGoing(),
env.getReporter(),
env.getRuntime().getQueryFunctions(),
sampleConfig,
@@ -488,7 +488,7 @@ public final class BuildTool {
}
private boolean shouldStopOnFailure(BuildRequest request) {
- return !(request.getViewOptions().keepGoing && request.getExecutionOptions().testKeepGoing);
+ return !(request.getKeepGoing() && request.getExecutionOptions().testKeepGoing);
}
private final LoadingResult evaluateTargetPatterns(
@@ -497,7 +497,7 @@ public final class BuildTool {
Profiler.instance().markPhase(ProfilePhase.LOAD);
initializeOutputFilter(request);
- final boolean keepGoing = request.getViewOptions().keepGoing;
+ final boolean keepGoing = request.getKeepGoing();
LoadingCallback callback = new LoadingCallback() {
@Override
@@ -560,6 +560,7 @@ public final class BuildTool {
configurations,
request.getAspects(),
request.getViewOptions(),
+ request.getKeepGoing(),
request.getTopLevelArtifactContext(),
env.getReporter(),
env.getEventBus());
@@ -578,8 +579,7 @@ public final class BuildTool {
boolean checkLicenses = configurations.getTargetConfigurations().get(0).checkLicenses();
if (checkLicenses) {
Profiler.instance().markPhase(ProfilePhase.LICENSE);
- validateLicensingForTargets(analysisResult.getTargetsToBuild(),
- request.getViewOptions().keepGoing);
+ validateLicensingForTargets(analysisResult.getTargetsToBuild(), request.getKeepGoing());
}
return analysisResult;
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 006281e5e6..ccd939d3ec 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
@@ -685,7 +685,7 @@ public class ExecutionTool {
SkyframeExecutor skyframeExecutor,
ModifiedFileSet modifiedOutputFiles) {
BuildRequestOptions options = request.getBuildOptions();
- boolean keepGoing = request.getViewOptions().keepGoing;
+ boolean keepGoing = request.getKeepGoing();
Path actionOutputRoot = env.getActionConsoleOutputDirectory();
Predicate<Action> executionFilter = CheckUpToDateFilter.fromOptions(
diff --git a/src/main/java/com/google/devtools/build/lib/query2/output/QueryOptions.java b/src/main/java/com/google/devtools/build/lib/query2/output/QueryOptions.java
index 27e7217eaf..0ce1ab14ea 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/output/QueryOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/output/QueryOptions.java
@@ -131,19 +131,6 @@ public class QueryOptions extends OptionsBase {
public OrderOutput orderOutput;
@Option(
- name = "keep_going",
- abbrev = 'k',
- defaultValue = "false",
- category = "strategy",
- documentationCategory = OptionDocumentationCategory.EXECUTION_STRATEGY,
- effectTags = {OptionEffectTag.EAGERNESS_TO_EXIT},
- help =
- "Continue as much as possible after an error. While the target that failed, and those "
- + "that depend on it, cannot be analyzed, other prerequisites of these targets can be."
- )
- public boolean keepGoing;
-
- @Option(
name = "loading_phase_threads",
defaultValue = "200",
documentationCategory = OptionDocumentationCategory.EXECUTION_STRATEGY,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/genquery/BUILD b/src/main/java/com/google/devtools/build/lib/rules/genquery/BUILD
index 16853cf5d2..6be4e32d5d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/genquery/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/rules/genquery/BUILD
@@ -17,6 +17,7 @@ java_library(
deps = [
"//src/main/java/com/google/devtools/build/lib:build-base",
"//src/main/java/com/google/devtools/build/lib:events",
+ "//src/main/java/com/google/devtools/build/lib:keep-going-option",
"//src/main/java/com/google/devtools/build/lib:packages-internal",
"//src/main/java/com/google/devtools/build/lib:util",
"//src/main/java/com/google/devtools/build/lib/actions",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java b/src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java
index af785a57fd..d4a2c87d23 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java
@@ -33,6 +33,7 @@ import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.Runfiles;
import com.google.devtools.build.lib.analysis.RunfilesProvider;
import com.google.devtools.build.lib.analysis.actions.AbstractFileWriteAction;
+import com.google.devtools.build.lib.analysis.actions.AbstractFileWriteAction.DeterministicWriter;
import com.google.devtools.build.lib.analysis.actions.ByteStringDeterministicWriter;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
@@ -48,6 +49,7 @@ import com.google.devtools.build.lib.packages.BuildType;
import com.google.devtools.build.lib.packages.NoSuchPackageException;
import com.google.devtools.build.lib.packages.NoSuchTargetException;
import com.google.devtools.build.lib.packages.Package;
+import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
import com.google.devtools.build.lib.packages.Target;
import com.google.devtools.build.lib.pkgcache.FilteringPolicies;
import com.google.devtools.build.lib.pkgcache.FilteringPolicy;
@@ -67,6 +69,7 @@ import com.google.devtools.build.lib.query2.output.OutputFormatter;
import com.google.devtools.build.lib.query2.output.QueryOptions;
import com.google.devtools.build.lib.query2.output.QueryOptions.OrderOutput;
import com.google.devtools.build.lib.query2.output.QueryOutputUtils;
+import com.google.devtools.build.lib.runtime.KeepGoingOption;
import com.google.devtools.build.lib.skyframe.PackageValue;
import com.google.devtools.build.lib.skyframe.PrecomputedValue.Precomputed;
import com.google.devtools.build.lib.skyframe.SkyFunctions;
@@ -114,7 +117,8 @@ public class GenQuery implements RuleConfiguredTargetFactory {
// The query string
final String query = ruleContext.attributes().get("expression", Type.STRING);
- OptionsParser optionsParser = OptionsParser.newOptionsParser(QueryOptions.class);
+ OptionsParser optionsParser =
+ OptionsParser.newOptionsParser(QueryOptions.class, KeepGoingOption.class);
optionsParser.setAllowResidue(false);
try {
optionsParser.parse(ruleContext.attributes().get("opts", Type.STRING_LIST));
@@ -125,7 +129,7 @@ public class GenQuery implements RuleConfiguredTargetFactory {
// Parsed query options
QueryOptions queryOptions = optionsParser.getOptions(QueryOptions.class);
- if (queryOptions.keepGoing) {
+ if (optionsParser.getOptions(KeepGoingOption.class).keepGoing) {
ruleContext.attributeError("opts", "option --keep_going is not allowed");
return null;
}
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/commands/FetchOptions.java b/src/main/java/com/google/devtools/build/lib/runtime/KeepGoingOption.java
index 1743c45475..bad70e2295 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/commands/FetchOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/KeepGoingOption.java
@@ -1,4 +1,4 @@
-// Copyright 2015 The Bazel Authors. All rights reserved.
+// Copyright 2017 The Bazel Authors. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -11,18 +11,15 @@
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
-
-package com.google.devtools.build.lib.bazel.commands;
+package com.google.devtools.build.lib.runtime;
import com.google.devtools.common.options.Option;
import com.google.devtools.common.options.OptionDocumentationCategory;
import com.google.devtools.common.options.OptionEffectTag;
import com.google.devtools.common.options.OptionsBase;
-/**
- * Command-line options for the fetch command.
- */
-public class FetchOptions extends OptionsBase {
+/** Defines the --keep_going option which is used by multiple commands. */
+public class KeepGoingOption extends OptionsBase {
@Option(
name = "keep_going",
abbrev = 'k',
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/BuildCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/BuildCommand.java
index d0aa57bb81..d5315eaf38 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/BuildCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/BuildCommand.java
@@ -25,29 +25,34 @@ 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.runtime.KeepGoingOption;
import com.google.devtools.build.lib.util.ExitCode;
import com.google.devtools.common.options.OptionsParser;
import com.google.devtools.common.options.OptionsProvider;
import java.util.List;
/**
- * Handles the 'build' command on the Blaze command line, including targets
- * named by arguments passed to Blaze.
+ * Handles the 'build' command on the Blaze command line, including targets named by arguments
+ * passed to Blaze.
*/
-@Command(name = "build",
- builds = true,
- options = { BuildRequestOptions.class,
- ExecutionOptions.class,
- LocalExecutionOptions.class,
- PackageCacheOptions.class,
- BuildView.Options.class,
- LoadingOptions.class,
- },
- usesConfigurationOptions = true,
- shortDescription = "Builds the specified targets.",
- allowResidue = true,
- completion = "label",
- help = "resource:build.txt")
+@Command(
+ name = "build",
+ builds = true,
+ options = {
+ BuildRequestOptions.class,
+ ExecutionOptions.class,
+ LocalExecutionOptions.class,
+ PackageCacheOptions.class,
+ BuildView.Options.class,
+ LoadingOptions.class,
+ KeepGoingOption.class
+ },
+ usesConfigurationOptions = true,
+ shortDescription = "Builds the specified targets.",
+ allowResidue = true,
+ completion = "label",
+ help = "resource:build.txt"
+)
public final class BuildCommand implements BlazeCommand {
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/PrintActionCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/PrintActionCommand.java
index 608a93488c..36c3f8dbd7 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/PrintActionCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/PrintActionCommand.java
@@ -24,7 +24,6 @@ import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.CommandLineExpansionException;
import com.google.devtools.build.lib.actions.extra.DetailedExtraActionInfo;
import com.google.devtools.build.lib.actions.extra.ExtraActionSummary;
-import com.google.devtools.build.lib.analysis.BuildView;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.FileProvider;
import com.google.devtools.build.lib.analysis.OutputGroupInfo;
@@ -45,6 +44,7 @@ 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.runtime.KeepGoingOption;
import com.google.devtools.build.lib.util.ExitCode;
import com.google.devtools.build.lib.util.io.OutErr;
import com.google.devtools.common.options.Option;
@@ -126,8 +126,8 @@ public final class PrintActionCommand implements BlazeCommand {
this.options = options;
this.outErr = outErr;
this.requestedTargets = requestedTargets;
- BuildView.Options viewOptions = options.getOptions(BuildView.Options.class);
- keepGoing = viewOptions.keepGoing;
+ KeepGoingOption keepGoingOption = options.getOptions(KeepGoingOption.class);
+ keepGoing = keepGoingOption.keepGoing;
summaryBuilder = ExtraActionSummary.newBuilder();
actionMnemonicMatcher = new Predicate<ActionAnalysisMetadata>() {
@Override
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 8817c71ce8..dde4da7800 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
@@ -39,6 +39,7 @@ 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.runtime.KeepGoingOption;
import com.google.devtools.build.lib.util.AbruptExitException;
import com.google.devtools.build.lib.util.ExitCode;
import com.google.devtools.build.lib.vfs.FileSystemUtils;
@@ -53,18 +54,17 @@ import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.Set;
-/**
- * Command line wrapper for executing a query with blaze.
- */
-@Command(name = "query",
- options = { PackageCacheOptions.class,
- QueryOptions.class },
- help = "resource:query.txt",
- shortDescription = "Executes a dependency graph query.",
- allowResidue = true,
- binaryStdOut = true,
- completion = "label",
- canRunInOutputDirectory = true)
+/** Command line wrapper for executing a query with blaze. */
+@Command(
+ name = "query",
+ options = {PackageCacheOptions.class, QueryOptions.class, KeepGoingOption.class},
+ help = "resource:query.txt",
+ shortDescription = "Executes a dependency graph query.",
+ allowResidue = true,
+ binaryStdOut = true,
+ completion = "label",
+ canRunInOutputDirectory = true
+)
public final class QueryCommand implements BlazeCommand {
@Override
@@ -133,12 +133,12 @@ public final class QueryCommand implements BlazeCommand {
QueryEvalResult result;
AbstractBlazeQueryEnvironment<Target> queryEnv =
newQueryEnvironment(
- env,
- queryOptions.keepGoing,
- !streamResults,
- queryOptions.universeScope,
- queryOptions.loadingPhaseThreads,
- settings);
+ env,
+ options.getOptions(KeepGoingOption.class).keepGoing,
+ !streamResults,
+ queryOptions.universeScope,
+ queryOptions.loadingPhaseThreads,
+ settings);
QueryExpression expr;
try {
expr = QueryExpression.parse(query, queryEnv);
diff --git a/src/test/java/com/google/devtools/build/lib/BUILD b/src/test/java/com/google/devtools/build/lib/BUILD
index d1c037f016..0dc8f7b412 100644
--- a/src/test/java/com/google/devtools/build/lib/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/BUILD
@@ -382,6 +382,7 @@ java_library(
"//src/main/java/com/google/devtools/build/lib:io",
"//src/main/java/com/google/devtools/build/lib:java-compilation",
"//src/main/java/com/google/devtools/build/lib:java-rules",
+ "//src/main/java/com/google/devtools/build/lib:keep-going-option",
"//src/main/java/com/google/devtools/build/lib:packages",
"//src/main/java/com/google/devtools/build/lib:proto-rules",
"//src/main/java/com/google/devtools/build/lib:python-rules",
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java
index 282a3fa7e3..f00e30f2c5 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java
@@ -55,6 +55,7 @@ import com.google.devtools.build.lib.pkgcache.PackageCacheOptions;
import com.google.devtools.build.lib.pkgcache.PackageManager;
import com.google.devtools.build.lib.pkgcache.PathPackageLocator;
import com.google.devtools.build.lib.rules.repository.RepositoryDelegatorFunction;
+import com.google.devtools.build.lib.runtime.KeepGoingOption;
import com.google.devtools.build.lib.skyframe.BazelSkyframeExecutorConstants;
import com.google.devtools.build.lib.skyframe.ConfiguredTargetKey;
import com.google.devtools.build.lib.skyframe.PrecomputedValue;
@@ -232,13 +233,17 @@ public abstract class AnalysisTestCase extends FoundationTestCase {
* options for unspecified ones, and recreates the build view.
*/
protected final void useConfiguration(String... args) throws Exception {
- optionsParser = OptionsParser.newOptionsParser(Iterables.concat(Arrays.asList(
- ExecutionOptions.class,
- PackageCacheOptions.class,
- SkylarkSemanticsOptions.class,
- BuildRequestOptions.class,
- BuildView.Options.class),
- ruleClassProvider.getConfigurationOptions()));
+ optionsParser =
+ OptionsParser.newOptionsParser(
+ Iterables.concat(
+ Arrays.asList(
+ ExecutionOptions.class,
+ PackageCacheOptions.class,
+ SkylarkSemanticsOptions.class,
+ BuildRequestOptions.class,
+ BuildView.Options.class,
+ KeepGoingOption.class),
+ ruleClassProvider.getConfigurationOptions()));
optionsParser.parse(new String[] {"--default_visibility=public" });
optionsParser.parse(args);
if (defaultFlags().contains(Flag.TRIMMED_CONFIGURATIONS)) {
@@ -300,7 +305,9 @@ public abstract class AnalysisTestCase extends FoundationTestCase {
LoadingOptions loadingOptions = Options.getDefaults(LoadingOptions.class);
BuildView.Options viewOptions = optionsParser.getOptions(BuildView.Options.class);
- viewOptions.keepGoing = flags.contains(Flag.KEEP_GOING);
+ KeepGoingOption keepGoingOption = optionsParser.getOptions(KeepGoingOption.class);
+ // update --keep_going option if test requested it.
+ keepGoingOption.keepGoing = flags.contains(Flag.KEEP_GOING);
viewOptions.loadingPhaseThreads = LOADING_PHASE_THREADS;
PackageCacheOptions packageCacheOptions = optionsParser.getOptions(PackageCacheOptions.class);
@@ -337,9 +344,9 @@ public abstract class AnalysisTestCase extends FoundationTestCase {
ImmutableList.copyOf(labels),
PathFragment.EMPTY_FRAGMENT,
loadingOptions,
- viewOptions.keepGoing,
- /*determineTests=*/false,
- /*callback=*/null);
+ keepGoingOption.keepGoing,
+ /*determineTests=*/ false,
+ /*callback=*/ null);
BuildRequestOptions requestOptions = optionsParser.getOptions(BuildRequestOptions.class);
ImmutableSortedSet<String> multiCpu = ImmutableSortedSet.copyOf(requestOptions.multiCpus);
@@ -352,6 +359,7 @@ public abstract class AnalysisTestCase extends FoundationTestCase {
masterConfig,
aspects,
viewOptions,
+ keepGoingOption.keepGoing,
AnalysisTestUtil.TOP_LEVEL_ARTIFACT_CONTEXT,
reporter,
eventBus);
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
index 836379fb79..ba1641bef4 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
@@ -1548,7 +1548,6 @@ public abstract class BuildViewTestCase extends FoundationTestCase {
: customLoadingOptions;
BuildView.Options viewOptions = Options.getDefaults(BuildView.Options.class);
- viewOptions.keepGoing = keepGoing;
viewOptions.loadingPhaseThreads = loadingPhaseThreads;
LoadingPhaseRunner runner = new LegacyLoadingPhaseRunner(getPackageManager(),
@@ -1559,9 +1558,9 @@ public abstract class BuildViewTestCase extends FoundationTestCase {
targets,
PathFragment.EMPTY_FRAGMENT,
loadingOptions,
- viewOptions.keepGoing,
- /*determineTests=*/false,
- /*callback=*/null);
+ keepGoing,
+ /*determineTests=*/ false,
+ /*callback=*/ null);
if (!doAnalysis) {
// TODO(bazel-team): What's supposed to happen in this case?
return null;
@@ -1571,6 +1570,7 @@ public abstract class BuildViewTestCase extends FoundationTestCase {
masterConfig,
aspects,
viewOptions,
+ keepGoing,
AnalysisTestUtil.TOP_LEVEL_ARTIFACT_CONTEXT,
reporter,
eventBus);