diff options
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); |