Add top level and per-mutator traces to soong_build
- Top-level trace for all soong_build runs
- Includes adding Peek() to OncePer because not all soong_build
invocations have GenerateBuildActions run.
- A trace per mutator invocation
Test: m && build/bazel/scripts/print_analysis_metrics.py
Change-Id: Ief5c04630484fb38ec7e3757de45c7dc294d3b3c
diff --git a/cmd/soong_build/main.go b/cmd/soong_build/main.go
index c583a49..53422cd 100644
--- a/cmd/soong_build/main.go
+++ b/cmd/soong_build/main.go
@@ -220,7 +220,7 @@
// doChosenActivity runs Soong for a specific activity, like bp2build, queryview
// or the actual Soong build for the build.ninja file. Returns the top level
// output file of the specific activity.
-func doChosenActivity(configuration android.Config, extraNinjaDeps []string, logDir string) string {
+func doChosenActivity(ctx *android.Context, configuration android.Config, extraNinjaDeps []string, logDir string) string {
mixedModeBuild := configuration.BazelContext.BazelEnabled()
generateBazelWorkspace := bp2buildMarker != ""
generateQueryView := bazelQueryViewDir != ""
@@ -236,7 +236,6 @@
blueprintArgs := cmdlineArgs
- ctx := newContext(configuration)
if mixedModeBuild {
runMixedModeBuild(configuration, ctx, extraNinjaDeps)
} else {
@@ -284,7 +283,6 @@
}
}
- writeMetrics(configuration, *ctx.EventHandler, logDir)
return cmdlineArgs.OutFile
}
@@ -344,7 +342,13 @@
// change between every CI build, so tracking it would require re-running Soong for every build.
logDir := availableEnv["LOG_DIR"]
- finalOutputFile := doChosenActivity(configuration, extraNinjaDeps, logDir)
+ ctx := newContext(configuration)
+ ctx.EventHandler.Begin("soong_build")
+
+ finalOutputFile := doChosenActivity(ctx, configuration, extraNinjaDeps, logDir)
+
+ ctx.EventHandler.End("soong_build")
+ writeMetrics(configuration, *ctx.EventHandler, logDir)
writeUsedEnvironmentFile(configuration, finalOutputFile)
}