Merge "Extract generateUpdatableBcpPackagesRule from updatableBcpPackagesRule" am: 0e98e86a3c am: ada6da8aa4

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1686152

Change-Id: I4a75e0b1b2f8977aa3dd16ec0a135c5a06fa7c0c
This commit is contained in:
Paul Duffin
2021-04-28 12:28:31 +00:00
committed by Automerger Merge Worker

View File

@@ -893,29 +893,39 @@ func updatableBcpPackagesRule(ctx android.SingletonContext, image *bootImageConf
}
global := dexpreopt.GetGlobalConfig(ctx)
var modules []android.Module
updatableModules := global.UpdatableBootJars.CopyOfJars()
// Collect `permitted_packages` for updatable boot jars.
var updatablePackages []string
ctx.VisitAllModules(func(module android.Module) {
if !isActiveModule(module) {
return
}
if j, ok := module.(PermittedPackagesForUpdatableBootJars); ok {
name := ctx.ModuleName(module)
if i := android.IndexList(name, updatableModules); i != -1 {
pp := j.PermittedPackagesForUpdatableBootJars()
if len(pp) > 0 {
updatablePackages = append(updatablePackages, pp...)
} else {
ctx.Errorf("Missing permitted_packages for %s", name)
}
// Do not match the same library repeatedly.
updatableModules = append(updatableModules[:i], updatableModules[i+1:]...)
}
name := ctx.ModuleName(module)
if i := android.IndexList(name, updatableModules); i != -1 {
modules = append(modules, module)
// Do not match the same library repeatedly.
updatableModules = append(updatableModules[:i], updatableModules[i+1:]...)
}
})
return generateUpdatableBcpPackagesRule(ctx, image, modules)
}
// generateUpdatableBcpPackagesRule generates the rule to create the updatable-bcp-packages.txt file
// and returns a path to the generated file.
func generateUpdatableBcpPackagesRule(ctx android.SingletonContext, image *bootImageConfig, updatableModules []android.Module) android.WritablePath {
// Collect `permitted_packages` for updatable boot jars.
var updatablePackages []string
for _, module := range updatableModules {
if j, ok := module.(PermittedPackagesForUpdatableBootJars); ok {
pp := j.PermittedPackagesForUpdatableBootJars()
if len(pp) > 0 {
updatablePackages = append(updatablePackages, pp...)
} else {
ctx.Errorf("Missing permitted_packages for %s", ctx.ModuleName(module))
}
}
}
// Sort updatable packages to ensure deterministic ordering.
sort.Strings(updatablePackages)