Merge "Extract generateUpdatableBcpPackagesRule from updatableBcpPackagesRule"
diff --git a/java/dexpreopt_bootjars.go b/java/dexpreopt_bootjars.go
index 963bc96..8a6f3d1 100644
--- a/java/dexpreopt_bootjars.go
+++ b/java/dexpreopt_bootjars.go
@@ -893,29 +893,39 @@
}
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)