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
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 5309790..f9d03c8 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 @@
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 b74834c..2a461f4 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 @@
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 @@
return analysisResult;
}
- private static void reportTargets(CommandEnvironment env, AnalysisResult analysisResult) {
- Collection<ConfiguredTarget> targetsToBuild = analysisResult.getTargetsToBuild();
- Collection<ConfiguredTarget> targetsToTest = analysisResult.getTargetsToTest();
+ static void reportTargets(
+ CommandEnvironment env,
+ Collection<ConfiguredTarget> targetsToBuild,
+ Collection<ConfiguredTarget> 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 4990aab..b9cc320 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 @@
}
// 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 f8f6c30..ba072c4 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__"])