From 8ff69de0f70638e1ab0b7e66aa2a03a3bde146bb Mon Sep 17 00:00:00 2001 From: Inseob Kim Date: Fri, 16 Jun 2023 14:19:33 +0900 Subject: [PATCH] Fix soong config hash missing for some modules Bug: 279362051 Test: see outputs of C++ modules using soong config Change-Id: I95e41350ff17a989faf7c010a4c4ed4fcd79d66b --- android/module.go | 9 +++++++-- android/paths.go | 7 ++----- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/android/module.go b/android/module.go index ba327108f..b554fd0bc 100644 --- a/android/module.go +++ b/android/module.go @@ -483,6 +483,7 @@ type ModuleContext interface { TargetRequiredModuleNames() []string ModuleSubDir() string + SoongConfigTraceHash() string Variable(pctx PackageContext, name, value string) Rule(pctx PackageContext, name string, params blueprint.RuleParams, argNames ...string) blueprint.Rule @@ -987,7 +988,11 @@ type commonProperties struct { // Bazel conversion status BazelConversionStatus BazelConversionStatus `blueprint:"mutated"` - // SoongConfigTrace records accesses to VendorVars (soong_config) + // SoongConfigTrace records accesses to VendorVars (soong_config). The trace will be hashed + // and used as a subdir of PathForModuleOut. Note that we mainly focus on incremental + // builds among similar products (e.g. aosp_cf_x86_64_phone and aosp_cf_x86_64_foldable), + // and there are variables other than soong_config, which isn't captured by soong config + // trace, but influence modules among products. SoongConfigTrace soongConfigTrace `blueprint:"mutated"` SoongConfigTraceHash string `blueprint:"mutated"` } @@ -3192,7 +3197,7 @@ func (m *moduleContext) ModuleSubDir() string { return m.bp.ModuleSubDir() } -func (m *moduleContext) ModuleSoongConfigHash() string { +func (m *moduleContext) SoongConfigTraceHash() string { return m.module.base().commonProperties.SoongConfigTraceHash } diff --git a/android/paths.go b/android/paths.go index 0f3d97232..94fa89cc0 100644 --- a/android/paths.go +++ b/android/paths.go @@ -1472,14 +1472,11 @@ type ModuleOutPathContext interface { ModuleName() string ModuleDir() string ModuleSubDir() string + SoongConfigTraceHash() string } func pathForModuleOut(ctx ModuleOutPathContext) OutputPath { - soongConfigHash := "" - if i, ok := ctx.(interface{ ModuleSoongConfigHash() string }); ok { - soongConfigHash = i.ModuleSoongConfigHash() - } - return PathForOutput(ctx, ".intermediates", ctx.ModuleDir(), ctx.ModuleName(), ctx.ModuleSubDir(), soongConfigHash) + return PathForOutput(ctx, ".intermediates", ctx.ModuleDir(), ctx.ModuleName(), ctx.ModuleSubDir(), ctx.SoongConfigTraceHash()) } // PathForModuleOut returns a Path representing the paths... under the module's