Add PRODUCT_PACKAGES_* in fsgen deps Adds PRODUCT_PACKAGES_* to dep candidates in fsgen mutators, which are later added as deps of the autogenerated filesystem modules if appropriate. The change utilizes the same conditionals as those in make in determining which PRODUCT_PACKAGES_* lists should be added to dep candidates. Test: build/soong/script/soong_only_diff_test.py cf_arm64_only_phone Bug: 417228445 Change-Id: I22e11753f3318e3c527adb25ab80205beb64af62
diff --git a/android/variable.go b/android/variable.go index b231d4e..71994d2 100644 --- a/android/variable.go +++ b/android/variable.go
@@ -688,10 +688,17 @@ BuildingVbmetaImage bool `json:",omitempty"` ChainedVbmetaPartitions map[string]ChainedAvbPartitionProps `json:",omitempty"` - ProductPackages []string `json:",omitempty"` - ProductPackagesDebug []string `json:",omitempty"` - VendorLinkerConfigSrcs []string `json:",omitempty"` - ProductLinkerConfigSrcs []string `json:",omitempty"` + ProductPackages []string `json:",omitempty"` + ProductPackagesDebug []string `json:",omitempty"` + ProductPackagesEng []string `json:",omitempty"` + ProductPackagesDebugAsan []string `json:",omitempty"` + ProductPackagesDebugJavaCoverage []string `json:",omitempty"` + ProductPackagesArm64 []string `json:",omitempty"` + ProductPackagesShippingApiLevel29 []string `json:",omitempty"` + ProductPackagesShippingApiLevel33 []string `json:",omitempty"` + ProductPackagesShippingApiLevel34 []string `json:",omitempty"` + VendorLinkerConfigSrcs []string `json:",omitempty"` + ProductLinkerConfigSrcs []string `json:",omitempty"` BoardInfoFiles []string `json:",omitempty"` BootLoaderBoardName string `json:",omitempty"`
diff --git a/fsgen/fsgen_mutators.go b/fsgen/fsgen_mutators.go index e2c8fe5..2ae8604 100644 --- a/fsgen/fsgen_mutators.go +++ b/fsgen/fsgen_mutators.go
@@ -16,6 +16,7 @@ import ( "fmt" + "slices" "strings" "sync" @@ -89,17 +90,45 @@ } } +func productInstalledModules(ctx android.LoadHookContext) []string { + partitionVars := ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse + allInstalledModules := partitionVars.ProductPackages + if ctx.Config().Debuggable() { + allInstalledModules = append(allInstalledModules, partitionVars.ProductPackagesDebug...) + if ctx.Config().Eng() { + allInstalledModules = append(allInstalledModules, partitionVars.ProductPackagesEng...) + } + if android.InList("address", ctx.Config().SanitizeDevice()) { + allInstalledModules = append(allInstalledModules, partitionVars.ProductPackagesDebugAsan...) + } + if ctx.Config().IsEnvTrue("EMMA_INSTRUMENT") { + allInstalledModules = append(allInstalledModules, partitionVars.ProductPackagesDebugJavaCoverage...) + } + } + if android.InList("arm64", []string{ctx.DeviceConfig().DeviceArch(), ctx.DeviceConfig().DeviceSecondaryArch()}) { + allInstalledModules = append(allInstalledModules, partitionVars.ProductPackagesArm64...) + } + if android.UncheckedFinalApiLevel(29).GreaterThanOrEqualTo(ctx.DeviceConfig().ShippingApiLevel()) { + allInstalledModules = append(allInstalledModules, partitionVars.ProductPackagesShippingApiLevel29...) + } + if android.UncheckedFinalApiLevel(33).GreaterThanOrEqualTo(ctx.DeviceConfig().ShippingApiLevel()) { + allInstalledModules = append(allInstalledModules, partitionVars.ProductPackagesShippingApiLevel33...) + } + if android.UncheckedFinalApiLevel(34).GreaterThanOrEqualTo(ctx.DeviceConfig().ShippingApiLevel()) { + allInstalledModules = append(allInstalledModules, partitionVars.ProductPackagesShippingApiLevel34...) + } + + return allInstalledModules +} + func createFsGenState(ctx android.LoadHookContext, generatedPrebuiltEtcModuleNames []string, avbpubkeyGenerated bool) *FsGenState { return ctx.Config().Once(fsGenStateOnceKey, func() interface{} { - partitionVars := ctx.Config().ProductVariables().PartitionVarsForSoongMigrationOnlyDoNotUse + allInstalledModules := slices.Concat( + productInstalledModules(ctx), + generatedPrebuiltEtcModuleNames, + ) candidatesMap := map[string]bool{} - for _, candidate := range partitionVars.ProductPackages { - candidatesMap[candidate] = true - } - for _, candidate := range partitionVars.ProductPackagesDebug { - candidatesMap[candidate] = true - } - for _, candidate := range generatedPrebuiltEtcModuleNames { + for _, candidate := range allInstalledModules { candidatesMap[candidate] = true } fsGenState := FsGenState{