Extract generateUpdatableBcpPackagesRule from updatableBcpPackagesRule
This simplifies the process of moving the updatableBcpPackagesRule to the platform_bootclasspath by separating the gathering of the list of updatable modules (which differs between the singleton and the platform_bootclasspath module) from the gathering of the permitted packages list and generation of the rule which are generally common. Bug: 177892522 Test: lunch art_module_arm64 m out/soong/module_arm64/dex_bootjars/updatable-bcp-packages.txt - make sure it is not affected by this change Change-Id: I3cb64310f618059758a32cfe00d3745d52388e49
This commit is contained in:
parent
2ac45f019b
commit
44d1594081
|
@ -893,28 +893,38 @@ func updatableBcpPackagesRule(ctx android.SingletonContext, image *bootImageConf
|
||||||
}
|
}
|
||||||
|
|
||||||
global := dexpreopt.GetGlobalConfig(ctx)
|
global := dexpreopt.GetGlobalConfig(ctx)
|
||||||
|
var modules []android.Module
|
||||||
updatableModules := global.UpdatableBootJars.CopyOfJars()
|
updatableModules := global.UpdatableBootJars.CopyOfJars()
|
||||||
|
|
||||||
// Collect `permitted_packages` for updatable boot jars.
|
|
||||||
var updatablePackages []string
|
|
||||||
ctx.VisitAllModules(func(module android.Module) {
|
ctx.VisitAllModules(func(module android.Module) {
|
||||||
if !isActiveModule(module) {
|
if !isActiveModule(module) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if j, ok := module.(PermittedPackagesForUpdatableBootJars); ok {
|
|
||||||
name := ctx.ModuleName(module)
|
name := ctx.ModuleName(module)
|
||||||
if i := android.IndexList(name, updatableModules); i != -1 {
|
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()
|
pp := j.PermittedPackagesForUpdatableBootJars()
|
||||||
if len(pp) > 0 {
|
if len(pp) > 0 {
|
||||||
updatablePackages = append(updatablePackages, pp...)
|
updatablePackages = append(updatablePackages, pp...)
|
||||||
} else {
|
} else {
|
||||||
ctx.Errorf("Missing permitted_packages for %s", name)
|
ctx.Errorf("Missing permitted_packages for %s", ctx.ModuleName(module))
|
||||||
}
|
}
|
||||||
// Do not match the same library repeatedly.
|
|
||||||
updatableModules = append(updatableModules[:i], updatableModules[i+1:]...)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
|
||||||
|
|
||||||
// Sort updatable packages to ensure deterministic ordering.
|
// Sort updatable packages to ensure deterministic ordering.
|
||||||
sort.Strings(updatablePackages)
|
sort.Strings(updatablePackages)
|
||||||
|
|
Loading…
Reference in New Issue