Search in sources :

Example 1 with AnalysisPhaseCompleteEvent

use of com.google.devtools.build.lib.analysis.AnalysisPhaseCompleteEvent in project bazel by bazelbuild.

the class BuildTool method runAnalysisPhase.

/**
   * Performs the initial phases 0-2 of the build: Setup, Loading and Analysis.
   * <p>
   * Postcondition: On success, populates the BuildRequest's set of targets to
   * build.
   *
   * @return null if loading / analysis phases were successful; a useful error
   *         message if loading or analysis phase errors were encountered and
   *         request.keepGoing.
   * @throws InterruptedException if the current thread was interrupted.
   * @throws ViewCreationFailedException if analysis failed for any reason.
   */
private AnalysisResult runAnalysisPhase(BuildRequest request, LoadingResult loadingResult, BuildConfigurationCollection configurations) throws InterruptedException, ViewCreationFailedException {
    Stopwatch timer = Stopwatch.createStarted();
    getReporter().handle(Event.progress("Loading complete.  Analyzing..."));
    Profiler.instance().markPhase(ProfilePhase.ANALYZE);
    BuildView view = new BuildView(env.getDirectories(), runtime.getRuleClassProvider(), env.getSkyframeExecutor(), runtime.getCoverageReportActionFactory(request));
    AnalysisResult analysisResult = view.update(loadingResult, configurations, request.getAspects(), request.getViewOptions(), request.getTopLevelArtifactContext(), env.getReporter(), env.getEventBus());
    // TODO(bazel-team): Merge these into one event.
    env.getEventBus().post(new AnalysisPhaseCompleteEvent(analysisResult.getTargetsToBuild(), view.getTargetsVisited(), timer.stop().elapsed(TimeUnit.MILLISECONDS)));
    env.getEventBus().post(new TestFilteringCompleteEvent(analysisResult.getTargetsToBuild(), analysisResult.getTargetsToTest()));
    // Check licenses.
    // We check licenses if the first target configuration has license checking enabled. Right now,
    // it is not possible to have multiple target configurations with different settings for this
    // flag, which allows us to take this short cut.
    boolean checkLicenses = configurations.getTargetConfigurations().get(0).checkLicenses();
    if (checkLicenses) {
        Profiler.instance().markPhase(ProfilePhase.LICENSE);
        validateLicensingForTargets(analysisResult.getTargetsToBuild(), request.getViewOptions().keepGoing);
    }
    return analysisResult;
}
Also used : BuildView(com.google.devtools.build.lib.analysis.BuildView) AnalysisPhaseCompleteEvent(com.google.devtools.build.lib.analysis.AnalysisPhaseCompleteEvent) Stopwatch(com.google.common.base.Stopwatch) TestFilteringCompleteEvent(com.google.devtools.build.lib.buildtool.buildevent.TestFilteringCompleteEvent) AnalysisResult(com.google.devtools.build.lib.analysis.BuildView.AnalysisResult)

Aggregations

Stopwatch (com.google.common.base.Stopwatch)1 AnalysisPhaseCompleteEvent (com.google.devtools.build.lib.analysis.AnalysisPhaseCompleteEvent)1 BuildView (com.google.devtools.build.lib.analysis.BuildView)1 AnalysisResult (com.google.devtools.build.lib.analysis.BuildView.AnalysisResult)1 TestFilteringCompleteEvent (com.google.devtools.build.lib.buildtool.buildevent.TestFilteringCompleteEvent)1