From e134f794337054562d3119b2bf151fc83fcd9a66 Mon Sep 17 00:00:00 2001 From: Ulf Adams Date: Tue, 15 Nov 2016 17:30:45 +0000 Subject: Code cleanup for interleaving target pattern eval and config creation. -- MOS_MIGRATED_REVID=139209942 --- .../devtools/build/lib/buildtool/BuildTool.java | 39 +++++++++++++--------- 1 file changed, 23 insertions(+), 16 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java') 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; } -- cgit v1.2.3