Add a coverage suffix to avoid Ninja file regeneration.
This CL uses the environment variable, EMMA_INSTRUMENT to determine whether or not coverage is enabled. If coverage is enabled, it adds a bunch of suffixes to the files generated in out/soong/ folders. This change reduces the build time by avoiding ninja regeneration when users simply switches from atest to atest --experimental-coverage, or vice versa, and no Android.bp changes are made. Bug: 331444846 Test: Locally run m libc, and then EMMA_INSTRUMENT m libc twice, no ninja regenerations required. Compared the hash of out/target/product/vsoc_x86_64/ between the before-change repo and after-change repo. Only diff is the after-change directory contains an extra file `out/target/product/vsoc_x86_64/.installable_files` while the original directory has only `out/target/product/vsoc_x86_64/.installable_files.previous`, both files have the same hash. Change-Id: I972aec20a9d97b223cc833ee245016ac4b0f09a2
This commit is contained in:
@@ -1041,7 +1041,7 @@ func (c *configImpl) NamedGlobFile(name string) string {
|
|||||||
|
|
||||||
func (c *configImpl) UsedEnvFile(tag string) string {
|
func (c *configImpl) UsedEnvFile(tag string) string {
|
||||||
if v, ok := c.environ.Get("TARGET_PRODUCT"); ok {
|
if v, ok := c.environ.Get("TARGET_PRODUCT"); ok {
|
||||||
return shared.JoinPath(c.SoongOutDir(), usedEnvFile+"."+v+"."+tag)
|
return shared.JoinPath(c.SoongOutDir(), usedEnvFile+"."+v+c.CoverageSuffix()+"."+tag)
|
||||||
}
|
}
|
||||||
return shared.JoinPath(c.SoongOutDir(), usedEnvFile+"."+tag)
|
return shared.JoinPath(c.SoongOutDir(), usedEnvFile+"."+tag)
|
||||||
}
|
}
|
||||||
@@ -1149,6 +1149,13 @@ func (c *configImpl) TargetProductOrErr() (string, error) {
|
|||||||
return "", fmt.Errorf("TARGET_PRODUCT is not defined")
|
return "", fmt.Errorf("TARGET_PRODUCT is not defined")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *configImpl) CoverageSuffix() string {
|
||||||
|
if v := c.environ.IsEnvTrue("EMMA_INSTRUMENT"); v {
|
||||||
|
return ".coverage"
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
func (c *configImpl) TargetDevice() string {
|
func (c *configImpl) TargetDevice() string {
|
||||||
return c.targetDevice
|
return c.targetDevice
|
||||||
}
|
}
|
||||||
@@ -1521,7 +1528,7 @@ func (c *configImpl) SoongVarsFile() string {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return filepath.Join(c.SoongOutDir(), "soong.variables")
|
return filepath.Join(c.SoongOutDir(), "soong.variables")
|
||||||
} else {
|
} else {
|
||||||
return filepath.Join(c.SoongOutDir(), "soong."+targetProduct+".variables")
|
return filepath.Join(c.SoongOutDir(), "soong."+targetProduct+c.CoverageSuffix()+".variables")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1530,7 +1537,7 @@ func (c *configImpl) SoongExtraVarsFile() string {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return filepath.Join(c.SoongOutDir(), "soong.extra.variables")
|
return filepath.Join(c.SoongOutDir(), "soong.extra.variables")
|
||||||
} else {
|
} else {
|
||||||
return filepath.Join(c.SoongOutDir(), "soong."+targetProduct+".extra.variables")
|
return filepath.Join(c.SoongOutDir(), "soong."+targetProduct+c.CoverageSuffix()+".extra.variables")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1539,7 +1546,7 @@ func (c *configImpl) SoongNinjaFile() string {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return filepath.Join(c.SoongOutDir(), "build.ninja")
|
return filepath.Join(c.SoongOutDir(), "build.ninja")
|
||||||
} else {
|
} else {
|
||||||
return filepath.Join(c.SoongOutDir(), "build."+targetProduct+".ninja")
|
return filepath.Join(c.SoongOutDir(), "build."+targetProduct+c.CoverageSuffix()+".ninja")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1551,11 +1558,11 @@ func (c *configImpl) CombinedNinjaFile() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *configImpl) SoongAndroidMk() string {
|
func (c *configImpl) SoongAndroidMk() string {
|
||||||
return filepath.Join(c.SoongOutDir(), "Android-"+c.TargetProduct()+".mk")
|
return filepath.Join(c.SoongOutDir(), "Android-"+c.TargetProduct()+c.CoverageSuffix()+".mk")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *configImpl) SoongMakeVarsMk() string {
|
func (c *configImpl) SoongMakeVarsMk() string {
|
||||||
return filepath.Join(c.SoongOutDir(), "make_vars-"+c.TargetProduct()+".mk")
|
return filepath.Join(c.SoongOutDir(), "make_vars-"+c.TargetProduct()+c.CoverageSuffix()+".mk")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *configImpl) SoongBuildMetrics() string {
|
func (c *configImpl) SoongBuildMetrics() string {
|
||||||
|
@@ -41,7 +41,7 @@ const katiPackageSuffix = "-package"
|
|||||||
// arguments.
|
// arguments.
|
||||||
func genKatiSuffix(ctx Context, config Config) {
|
func genKatiSuffix(ctx Context, config Config) {
|
||||||
// Construct the base suffix.
|
// Construct the base suffix.
|
||||||
katiSuffix := "-" + config.TargetProduct()
|
katiSuffix := "-" + config.TargetProduct() + config.CoverageSuffix()
|
||||||
|
|
||||||
// Append kati arguments to the suffix.
|
// Append kati arguments to the suffix.
|
||||||
if args := config.KatiArgs(); len(args) > 0 {
|
if args := config.KatiArgs(); len(args) > 0 {
|
||||||
|
Reference in New Issue
Block a user