aboutsummaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorDan Willemsen <dwillemsen@google.com>2017-07-13 17:24:44 -0700
committerDan Willemsen <dwillemsen@google.com>2017-10-12 18:11:08 -0700
commitb2e6c2e571058cfd9a3cf7a23927fb1c49d59523 (patch)
treedc53eff1fe2df47201d24dfd0e16a1d21fb4eb56 /ui
parent432a2d4033cd3e78dc4f1b63295e281bbb4f89b4 (diff)
downloadbuild_soong-b2e6c2e571058cfd9a3cf7a23927fb1c49d59523.tar.gz
build_soong-b2e6c2e571058cfd9a3cf7a23927fb1c49d59523.tar.bz2
build_soong-b2e6c2e571058cfd9a3cf7a23927fb1c49d59523.zip
Switch product configs from make to ckati
This speeds up dumping make variables from ~380ms using make to ~220ms using ckati. It also means that we're consistently using the same parser for builds (with the same .KATI_READONLY/etc extensions). envsetup.sh (lunch) / other scripts still use make, changing those to go through soong_ui will be a future change. Test: m clean; m nothing Test: USE_GOMA=true m nothing Test: m PRODUCT-aosp_x86-sdk Test: m APP-Calculator Test: build/soong/build_test.bash -only-config (on AOSP and internal master) Change-Id: I6ca554de8de4955fb869001d06d29969b75751cc
Diffstat (limited to 'ui')
-rw-r--r--ui/build/Android.bp2
-rw-r--r--ui/build/build.go2
-rw-r--r--ui/build/dumpvars.go (renamed from ui/build/make.go)37
-rw-r--r--ui/build/kati.go2
-rw-r--r--ui/build/sandbox_darwin.go2
-rw-r--r--ui/build/sandbox_linux.go2
6 files changed, 23 insertions, 24 deletions
diff --git a/ui/build/Android.bp b/ui/build/Android.bp
index 34c21f70..d1b49438 100644
--- a/ui/build/Android.bp
+++ b/ui/build/Android.bp
@@ -27,11 +27,11 @@ bootstrap_go_package {
"cleanbuild.go",
"config.go",
"context.go",
+ "dumpvars.go",
"environment.go",
"exec.go",
"finder.go",
"kati.go",
- "make.go",
"ninja.go",
"proc_sync.go",
"signal.go",
diff --git a/ui/build/build.go b/ui/build/build.go
index 45d18e0a..0df22b34 100644
--- a/ui/build/build.go
+++ b/ui/build/build.go
@@ -104,7 +104,7 @@ func checkCaseSensitivity(ctx Context, config Config) {
func help(ctx Context, config Config, what int) {
cmd := Command(ctx, config, "help.sh", "build/make/help.sh")
- cmd.Sandbox = makeSandbox
+ cmd.Sandbox = dumpvarsSandbox
cmd.Stdout = ctx.Stdout()
cmd.Stderr = ctx.Stderr()
cmd.RunOrFatal()
diff --git a/ui/build/make.go b/ui/build/dumpvars.go
index edf6d96a..e6c3f56b 100644
--- a/ui/build/make.go
+++ b/ui/build/dumpvars.go
@@ -16,7 +16,6 @@ package build
import (
"fmt"
- "path/filepath"
"strings"
)
@@ -28,27 +27,29 @@ import (
// Make without actually building them. So all the variables based on
// MAKECMDGOALS can be read.
//
-// extra_targets adds real arguments to the make command, in case other targets
-// actually need to be run (like the Soong config generator).
-//
// vars is the list of variables to read. The values will be put in the
// returned map.
-func DumpMakeVars(ctx Context, config Config, goals, extra_targets, vars []string) (map[string]string, error) {
+func DumpMakeVars(ctx Context, config Config, goals, vars []string) (map[string]string, error) {
+ return dumpMakeVars(ctx, config, goals, vars, false)
+}
+
+func dumpMakeVars(ctx Context, config Config, goals, vars []string, write_soong_vars bool) (map[string]string, error) {
ctx.BeginTrace("dumpvars")
defer ctx.EndTrace()
- cmd := Command(ctx, config, "make",
- "make",
- "--no-print-directory",
- "-f", "build/core/config.mk",
+ cmd := Command(ctx, config, "dumpvars",
+ config.PrebuiltBuildTool("ckati"),
+ "-f", "build/make/core/config.mk",
+ "--color_warnings",
"dump-many-vars",
- "CALLED_FROM_SETUP=true",
- "BUILD_SYSTEM=build/core",
- "MAKECMDGOALS="+strings.Join(goals, " "),
- "DUMP_MANY_VARS="+strings.Join(vars, " "),
- "OUT_DIR="+config.OutDir())
- cmd.Args = append(cmd.Args, extra_targets...)
- cmd.Sandbox = makeSandbox
+ "MAKECMDGOALS="+strings.Join(goals, " "))
+ cmd.Environment.Set("CALLED_FROM_SETUP", "true")
+ cmd.Environment.Set("BUILD_SYSTEM", "build/make/core")
+ if write_soong_vars {
+ cmd.Environment.Set("WRITE_SOONG_VARIABLES", "true")
+ }
+ cmd.Environment.Set("DUMP_MANY_VARS", strings.Join(vars, " "))
+ cmd.Sandbox = dumpvarsSandbox
// TODO: error out when Stderr contains any content
cmd.Stderr = ctx.Stderr()
output, err := cmd.Output()
@@ -136,9 +137,7 @@ func runMakeProductConfig(ctx Context, config Config) {
"TARGET_DEVICE",
}, exportEnvVars...), bannerVars...)
- make_vars, err := DumpMakeVars(ctx, config, config.Arguments(), []string{
- filepath.Join(config.SoongOutDir(), "soong.variables"),
- }, allVars)
+ make_vars, err := dumpMakeVars(ctx, config, config.Arguments(), allVars, true)
if err != nil {
ctx.Fatalln("Error dumping make vars:", err)
}
diff --git a/ui/build/kati.go b/ui/build/kati.go
index cc02c761..c58621e7 100644
--- a/ui/build/kati.go
+++ b/ui/build/kati.go
@@ -77,7 +77,7 @@ func runKati(ctx Context, config Config) {
"--color_warnings",
"--gen_all_targets",
"--werror_find_emulator",
- "-f", "build/core/main.mk",
+ "-f", "build/make/core/main.mk",
}
if !config.Environment().IsFalse("KATI_EMULATE_FIND") {
diff --git a/ui/build/sandbox_darwin.go b/ui/build/sandbox_darwin.go
index 60407d49..2cf6e20e 100644
--- a/ui/build/sandbox_darwin.go
+++ b/ui/build/sandbox_darwin.go
@@ -24,7 +24,7 @@ type Sandbox string
const (
noSandbox = ""
globalSandbox = "build/soong/ui/build/sandbox/darwin/global.sb"
- makeSandbox = globalSandbox
+ dumpvarsSandbox = globalSandbox
soongSandbox = globalSandbox
katiSandbox = globalSandbox
katiCleanSpecSandbox = globalSandbox
diff --git a/ui/build/sandbox_linux.go b/ui/build/sandbox_linux.go
index 6615d374..f2bfac29 100644
--- a/ui/build/sandbox_linux.go
+++ b/ui/build/sandbox_linux.go
@@ -19,7 +19,7 @@ type Sandbox bool
const (
noSandbox = false
globalSandbox = false
- makeSandbox = false
+ dumpvarsSandbox = false
soongSandbox = false
katiSandbox = false
katiCleanSpecSandbox = false