Pass TARGET_DEVICE_DIR from dumpvars to later kati runs

The find commands used to locate the BoardConfig.mk can't be optimized
by Kati, so we're currently spending ~125ms three times during every
build (dumpvars, cleanspec, and the main kati run). Preserve the value
of TARGET_DEVICE_DIR from the dumpvars run so that we only need to run
the find commands once.

Bug: 78020936
Test: out/build-taimen.ninja is identical
Test: out/soong.log shows that we're not running these finds again
Change-Id: Iee56b454c3661de2b58c161169218ecaf2135398
This commit is contained in:
Dan Willemsen
2018-05-02 00:06:28 -07:00
parent d126f7b52f
commit 6ab79db2e6
3 changed files with 20 additions and 5 deletions

View File

@@ -44,10 +44,11 @@ type configImpl struct {
skipMake bool
// From the product config
katiArgs []string
ninjaArgs []string
katiSuffix string
targetDevice string
katiArgs []string
ninjaArgs []string
katiSuffix string
targetDevice string
targetDeviceDir string
brokenDupRules bool
}
@@ -568,3 +569,11 @@ func (c *configImpl) SetBuildBrokenDupRules(val bool) {
func (c *configImpl) BuildBrokenDupRules() bool {
return c.brokenDupRules
}
func (c *configImpl) SetTargetDeviceDir(dir string) {
c.targetDeviceDir = dir
}
func (c *configImpl) TargetDeviceDir() string {
return c.targetDeviceDir
}

View File

@@ -157,6 +157,9 @@ func runMakeProductConfig(ctx Context, config Config) {
// To find target/product/<DEVICE>
"TARGET_DEVICE",
// So that later Kati runs can find BoardConfig.mk faster
"TARGET_DEVICE_DIR",
// Whether --werror_overriding_commands will work
"BUILD_BROKEN_DUP_RULES",
}, exportEnvVars...), BannerVars...)
@@ -182,6 +185,7 @@ func runMakeProductConfig(ctx Context, config Config) {
config.SetKatiArgs(strings.Fields(make_vars["KATI_GOALS"]))
config.SetNinjaArgs(strings.Fields(make_vars["NINJA_GOALS"]))
config.SetTargetDevice(make_vars["TARGET_DEVICE"])
config.SetTargetDeviceDir(make_vars["TARGET_DEVICE_DIR"])
config.SetBuildBrokenDupRules(make_vars["BUILD_BROKEN_DUP_RULES"] != "false")
}

View File

@@ -94,7 +94,8 @@ func runKati(ctx Context, config Config) {
args = append(args,
"BUILDING_WITH_NINJA=true",
"SOONG_ANDROID_MK="+config.SoongAndroidMk(),
"SOONG_MAKEVARS_MK="+config.SoongMakeVarsMk())
"SOONG_MAKEVARS_MK="+config.SoongMakeVarsMk(),
"TARGET_DEVICE_DIR="+config.TargetDeviceDir())
if config.UseGoma() {
args = append(args, "-j"+strconv.Itoa(config.Parallel()))
@@ -199,6 +200,7 @@ func runKatiCleanSpec(ctx Context, config Config) {
"-f", "build/make/core/cleanbuild.mk",
"BUILDING_WITH_NINJA=true",
"SOONG_MAKEVARS_MK=" + config.SoongMakeVarsMk(),
"TARGET_DEVICE_DIR=" + config.TargetDeviceDir(),
}
cmd := Command(ctx, config, "ckati", executable, args...)