Skip writing ninja file for module with a cache hit during incremental build.

This is just the first change, many more will come to make this feature
really work. The main changes included here are:

1. Skip the writing of ninja file if a module has a cache hit.
2. Handle the case where a skipped module doesn't have the build defs
   info for the OrderOnlyStrings dedup logic to work by caching the
   missing info.

Bug: 335718784
Test: local manual tests
Change-Id: I32542bd1e7fd268113e072e7f68b51b293d83d03
This commit is contained in:
Yu Liu
2024-07-30 17:30:45 +00:00
parent 2800675b31
commit f072120c00
3 changed files with 7 additions and 12 deletions

View File

@@ -220,15 +220,10 @@ func (module *DeclarationsModule) GenerateAndroidBuildActions(ctx android.Module
} }
func (module *DeclarationsModule) BuildActionProviderKeys() []blueprint.AnyProviderKey { func (module *DeclarationsModule) BuildActionProviderKeys() []blueprint.AnyProviderKey {
return []blueprint.AnyProviderKey{android.AconfigDeclarationsProviderKey} return []blueprint.AnyProviderKey{
} android.AconfigDeclarationsProviderKey,
android.AconfigReleaseDeclarationsProviderKey,
func (module *DeclarationsModule) PackageContextPath() string { }
return pkgPath
}
func (module *DeclarationsModule) CachedRules() []blueprint.Rule {
return []blueprint.Rule{aconfigRule, aconfigTextRule}
} }
var _ blueprint.Incremental = &DeclarationsModule{} var _ blueprint.Incremental = &DeclarationsModule{}

View File

@@ -23,8 +23,7 @@ import (
) )
var ( var (
pkgPath = "android/soong/aconfig" pctx = android.NewPackageContext("android/soong/aconfig")
pctx = android.NewPackageContext(pkgPath)
// For aconfig_declarations: Generate cache file // For aconfig_declarations: Generate cache file
aconfigRule = pctx.AndroidStaticRule("aconfig", aconfigRule = pctx.AndroidStaticRule("aconfig",
@@ -111,6 +110,7 @@ func init() {
pctx.HostBinToolVariable("soong_zip", "soong_zip") pctx.HostBinToolVariable("soong_zip", "soong_zip")
gob.Register(android.AconfigDeclarationsProviderData{}) gob.Register(android.AconfigDeclarationsProviderData{})
gob.Register(android.AconfigReleaseDeclarationsProviderData{})
gob.Register(android.ModuleOutPath{}) gob.Register(android.ModuleOutPath{})
} }

View File

@@ -1921,7 +1921,7 @@ func (m *ModuleBase) GenerateBuildActions(blueprintCtx blueprint.ModuleContext)
restored := false restored := false
if incrementalAnalysis && cacheKey != nil { if incrementalAnalysis && cacheKey != nil {
restored = ctx.bp.RestoreBuildActions(cacheKey, incrementalModule) restored = ctx.bp.RestoreBuildActions(cacheKey)
} }
if !restored { if !restored {