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
This commit is contained in:
Dan Willemsen
2017-01-20 14:10:01 -08:00
parent 0043c0e767
commit c2af0bedc1
4 changed files with 230 additions and 8 deletions

View File

@@ -15,6 +15,8 @@
package build
import (
"log"
"os"
"path/filepath"
"runtime"
"strconv"
@@ -40,6 +42,8 @@ type configImpl struct {
katiSuffix string
}
const srcDirFileCheck = "build/soong/root.bp"
func NewConfig(ctx Context, args ...string) Config {
ret := &configImpl{
environ: OsEnvironment(),
@@ -71,6 +75,14 @@ func NewConfig(ctx Context, args ...string) Config {
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" {