Add multiproduct_kati
This is a replacement for build/tools/kati_all_products.sh using the new
Soong ui/build package. It doesn't even attempt to run ninja, and it can
be configured to run only the product config, or only the product config
and Soong.
For AOSP on my machine:
-only-config 1.4s
-only-soong 1m20s
<none> 13m
Test: multiproduct_kati
Change-Id: Ie3e6e7bdf692e46a8b8eb828f437190f8003500b
diff --git a/ui/build/config.go b/ui/build/config.go
index b0a7d7a..35c5213 100644
--- a/ui/build/config.go
+++ b/ui/build/config.go
@@ -15,6 +15,8 @@
package build
import (
+ "log"
+ "os"
"path/filepath"
"runtime"
"strconv"
@@ -40,6 +42,8 @@
katiSuffix string
}
+const srcDirFileCheck = "build/soong/root.bp"
+
func NewConfig(ctx Context, args ...string) Config {
ret := &configImpl{
environ: OsEnvironment(),
@@ -71,6 +75,14 @@
ret.parallel = runtime.NumCPU() + 2
ret.keepGoing = 1
+ // Precondition: the current directory is the top of the source tree
+ if _, err := os.Stat(srcDirFileCheck); err != nil {
+ if os.IsNotExist(err) {
+ log.Fatalf("Current working directory must be the source tree. %q not found", srcDirFileCheck)
+ }
+ log.Fatalln("Error verifying tree state:", err)
+ }
+
for _, arg := range args {
arg = strings.TrimSpace(arg)
if arg == "--make-mode" {