From 2e9643c41113280803839d0e1af3b3d6ca5c6de9 Mon Sep 17 00:00:00 2001 From: leba Date: Fri, 6 May 2022 05:33:57 -0700 Subject: [PATCH] Make the existing tests for the test command work with Skymeld. Most of the changes in this CL concern what we print to the console in various cases. PiperOrigin-RevId: 446964183 --- .../AnalysisAndExecutionPhaseRunner.java | 5 +- .../lib/buildtool/AnalysisPhaseRunner.java | 9 +-- .../build/lib/buildtool/BuildTool.java | 67 ++++++++++++------- .../skyframe/serialization/autocodec/BUILD | 2 +- 4 files changed, 52 insertions(+), 31 deletions(-) diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/AnalysisAndExecutionPhaseRunner.java b/src/main/java/com/google/devtools/build/lib/buildtool/AnalysisAndExecutionPhaseRunner.java index 530979066e0285..f9d03c8b9e4ac2 100644 --- a/src/main/java/com/google/devtools/build/lib/buildtool/AnalysisAndExecutionPhaseRunner.java +++ b/src/main/java/com/google/devtools/build/lib/buildtool/AnalysisAndExecutionPhaseRunner.java @@ -38,6 +38,7 @@ import com.google.devtools.build.lib.server.FailureDetails.BuildConfiguration.Code; import com.google.devtools.build.lib.server.FailureDetails.FailureDetail; import com.google.devtools.build.lib.skyframe.BuildInfoCollectionFunction; +import com.google.devtools.build.lib.skyframe.BuildResultListener; import com.google.devtools.build.lib.skyframe.PrecomputedValue; import com.google.devtools.build.lib.skyframe.TargetPatternPhaseValue; import com.google.devtools.build.lib.util.AbruptExitException; @@ -114,7 +115,9 @@ static AnalysisAndExecutionResult execute( runAnalysisAndExecutionPhase( env, request, loadingResult, buildOptions, request.getMultiCpus()); } - // TODO(b/199053098) Report targets. + BuildResultListener buildResultListener = env.getBuildResultListener(); + AnalysisPhaseRunner.reportTargets( + env, buildResultListener.getAnalyzedTargets(), buildResultListener.getAnalyzedTests()); } else { env.getReporter().handle(Event.progress("Loading complete.")); diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/AnalysisPhaseRunner.java b/src/main/java/com/google/devtools/build/lib/buildtool/AnalysisPhaseRunner.java index b74834c6491e8c..2a461f42ebef96 100644 --- a/src/main/java/com/google/devtools/build/lib/buildtool/AnalysisPhaseRunner.java +++ b/src/main/java/com/google/devtools/build/lib/buildtool/AnalysisPhaseRunner.java @@ -134,7 +134,7 @@ public static AnalysisResult execute( module.afterAnalysis(env, request, buildOptions, analysisResult); } - reportTargets(env, analysisResult); + reportTargets(env, analysisResult.getTargetsToBuild(), analysisResult.getTargetsToTest()); for (ConfiguredTarget target : analysisResult.getTargetsToSkip()) { BuildConfigurationValue config = @@ -274,9 +274,10 @@ private static AnalysisResult runAnalysisPhase( return analysisResult; } - private static void reportTargets(CommandEnvironment env, AnalysisResult analysisResult) { - Collection targetsToBuild = analysisResult.getTargetsToBuild(); - Collection targetsToTest = analysisResult.getTargetsToTest(); + static void reportTargets( + CommandEnvironment env, + Collection targetsToBuild, + Collection targetsToTest) { if (targetsToTest != null) { int testCount = targetsToTest.size(); int targetCount = targetsToBuild.size() - testCount; 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 4990aab9a8c3e6..b9cc320539f733 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 @@ -214,32 +214,49 @@ public void buildTargets(BuildRequest request, BuildResult result, TargetValidat } // TODO(b/199053098): implement support for --nobuild. - AnalysisAndExecutionResult analysisAndExecutionResult = - AnalysisAndExecutionPhaseRunner.execute(env, request, buildOptions, loadingResult); - - BuildResultListener buildResultListener = - Preconditions.checkNotNull(env.getBuildResultListener()); - result.setBuildConfigurationCollection( - analysisAndExecutionResult.getConfigurationCollection()); - result.setActualTargets(buildResultListener.getAnalyzedTargets()); - result.setTestTargets(buildResultListener.getAnalyzedTests()); - try (SilentCloseable c = Profiler.instance().profile("Show results")) { - result.setSuccessfulTargets( - ExecutionTool.determineSuccessfulTargets( - buildResultListener.getAnalyzedTargets(), - buildResultListener.getBuiltTargets())); - result.setSuccessfulAspects( - ExecutionTool.determineSuccessfulAspects( - buildResultListener.getAnalyzedAspects().keySet(), - buildResultListener.getBuiltAspects())); - result.setSkippedTargets(buildResultListener.getSkippedTargets()); + AnalysisAndExecutionResult analysisAndExecutionResult; + boolean buildCompleted = false; + try { + analysisAndExecutionResult = + AnalysisAndExecutionPhaseRunner.execute(env, request, buildOptions, loadingResult); + buildCompleted = true; + result.setBuildConfigurationCollection( + analysisAndExecutionResult.getConfigurationCollection()); + } catch (InvalidConfigurationException + | TargetParsingException + | LoadingFailedException + | ViewCreationFailedException + | BuildFailedException + | TestExecException e) { + // These are non-catastrophic. + buildCompleted = true; + throw e; + } finally { + BuildResultListener buildResultListener = + Preconditions.checkNotNull(env.getBuildResultListener()); + result.setActualTargets(buildResultListener.getAnalyzedTargets()); + result.setTestTargets(buildResultListener.getAnalyzedTests()); + try (SilentCloseable c = Profiler.instance().profile("Show results")) { + result.setSuccessfulTargets( + ExecutionTool.determineSuccessfulTargets( + buildResultListener.getAnalyzedTargets(), + buildResultListener.getBuiltTargets())); + result.setSuccessfulAspects( + ExecutionTool.determineSuccessfulAspects( + buildResultListener.getAnalyzedAspects().keySet(), + buildResultListener.getBuiltAspects())); + result.setSkippedTargets(buildResultListener.getSkippedTargets()); + if (buildCompleted) { + getReporter().handle(Event.progress("Building complete.")); + } BuildResultPrinter buildResultPrinter = new BuildResultPrinter(env); - buildResultPrinter.showBuildResult( - request, - result, - buildResultListener.getAnalyzedTargets(), - buildResultListener.getSkippedTargets(), - buildResultListener.getAnalyzedAspects()); + buildResultPrinter.showBuildResult( + request, + result, + buildResultListener.getAnalyzedTargets(), + buildResultListener.getSkippedTargets(), + buildResultListener.getAnalyzedAspects()); + } } FailureDetail delayedFailureDetail = analysisAndExecutionResult.getFailureDetail(); if (delayedFailureDetail != null) { diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/BUILD b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/BUILD index f8f6c30ebc5412..ba072c469ff3f2 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/BUILD +++ b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec/BUILD @@ -1,5 +1,5 @@ load("@rules_java//java:defs.bzl", "java_library", "java_plugin") -load("@rules_pkg//:pkg.bzl", "pkg_tar") +load("//tools/build_defs/pkg:pkg.bzl", "pkg_tar") package(default_visibility = ["//src:__subpackages__"])