aboutsummaryrefslogtreecommitdiffstats
path: root/ui/build/kati.go
diff options
context:
space:
mode:
Diffstat (limited to 'ui/build/kati.go')
-rw-r--r--ui/build/kati.go36
1 files changed, 34 insertions, 2 deletions
diff --git a/ui/build/kati.go b/ui/build/kati.go
index 4bb2db97..cc02c761 100644
--- a/ui/build/kati.go
+++ b/ui/build/kati.go
@@ -59,11 +59,13 @@ func genKatiSuffix(ctx Context, config Config) {
}
func runKati(ctx Context, config Config) {
+ genKatiSuffix(ctx, config)
+
+ runKatiCleanSpec(ctx, config)
+
ctx.BeginTrace("kati")
defer ctx.EndTrace()
- genKatiSuffix(ctx, config)
-
executable := config.PrebuiltBuildTool("ckati")
args := []string{
"--ninja",
@@ -159,3 +161,33 @@ func katiRewriteOutput(ctx Context, pipe io.ReadCloser) {
fmt.Fprintln(ctx.Stdout())
}
}
+
+func runKatiCleanSpec(ctx Context, config Config) {
+ ctx.BeginTrace("kati cleanspec")
+ defer ctx.EndTrace()
+
+ executable := config.PrebuiltBuildTool("ckati")
+ args := []string{
+ "--ninja",
+ "--ninja_dir=" + config.OutDir(),
+ "--ninja_suffix=" + config.KatiSuffix() + "-cleanspec",
+ "--regen",
+ "--detect_android_echo",
+ "--color_warnings",
+ "--gen_all_targets",
+ "--werror_find_emulator",
+ "--use_find_emulator",
+ "-f", "build/make/core/cleanbuild.mk",
+ "BUILDING_WITH_NINJA=true",
+ "SOONG_MAKEVARS_MK=" + config.SoongMakeVarsMk(),
+ }
+
+ cmd := Command(ctx, config, "ckati", executable, args...)
+ cmd.Sandbox = katiCleanSpecSandbox
+ cmd.Stdout = ctx.Stdout()
+ cmd.Stderr = ctx.Stderr()
+
+ // Kati leaks memory, so ensure leak detection is turned off
+ cmd.Environment.Set("ASAN_OPTIONS", "detect_leaks=0")
+ cmd.RunOrFatal()
+}