aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java
diff options
context:
space:
mode:
authorGravatar Ulf Adams <ulfjack@google.com>2016-11-15 17:30:45 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2016-11-16 15:56:25 +0000
commite134f794337054562d3119b2bf151fc83fcd9a66 (patch)
tree5059a70572bd4260bc284b78b296776ea0939dfc /src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java
parent461a772d45c2b7a7624b46d7aee44a460527b792 (diff)
Code cleanup for interleaving target pattern eval and config creation.
-- MOS_MIGRATED_REVID=139209942
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java39
1 files changed, 23 insertions, 16 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 522f753586..8eafd9d6fc 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
@@ -150,10 +150,7 @@ public final class BuildTool {
executionTool.init();
}
- // Loading phase.
- loadingResult = runLoadingPhase(request, validator);
-
- // Create the build configurations.
+ // Error out early if multi_cpus is set, but we're not in build or test command.
if (!request.getMultiCpus().isEmpty()) {
getReporter().handle(Event.warn(
"The --experimental_multi_cpu option is _very_ experimental and only intended for "
@@ -165,9 +162,25 @@ public final class BuildTool {
+ "'test' right now!");
}
}
- configurations = env.getSkyframeExecutor().createConfigurations(
- env.getReporter(), runtime.getConfigurationFactory(), buildOptions,
- request.getMultiCpus(), request.getViewOptions().keepGoing);
+
+ // Exit if there are any pending exceptions from modules.
+ env.throwPendingException();
+
+ // Target pattern evaluation.
+ loadingResult = evaluateTargetPatterns(request, validator);
+
+ // Exit if there are any pending exceptions from modules.
+ env.throwPendingException();
+
+ // Configuration creation.
+ configurations =
+ env.getSkyframeExecutor()
+ .createConfigurations(
+ env.getReporter(),
+ runtime.getConfigurationFactory(),
+ buildOptions,
+ request.getMultiCpus(),
+ request.getViewOptions().keepGoing);
env.throwPendingException();
if (configurations.getTargetConfigurations().size() == 1) {
@@ -389,14 +402,10 @@ public final class BuildTool {
return !(request.getViewOptions().keepGoing && request.getExecutionOptions().testKeepGoing);
}
- @VisibleForTesting
- protected final LoadingResult runLoadingPhase(final BuildRequest request,
- final TargetValidator validator)
- throws LoadingFailedException, TargetParsingException, InterruptedException,
- AbruptExitException {
+ private final LoadingResult evaluateTargetPatterns(
+ final BuildRequest request, final TargetValidator validator)
+ throws LoadingFailedException, TargetParsingException, InterruptedException {
Profiler.instance().markPhase(ProfilePhase.LOAD);
- env.throwPendingException();
-
initializeOutputFilter(request);
final boolean keepGoing = request.getViewOptions().keepGoing;
@@ -420,11 +429,9 @@ public final class BuildTool {
request.getTargets(),
env.getRelativeWorkingDirectory(),
request.getLoadingOptions(),
- runtime.createBuildOptions(request).getAllLabels(),
keepGoing,
request.shouldRunTests(),
callback);
- env.throwPendingException();
return result;
}