Implement a tear-down phase in otapreopt_chroot.
Collect the list of APEX packages activated by `otapreopt_chroot` and
deactivate them after executing `otapreopt` (in its own process).
Also share android::installd::Exec between `otapreopt` and
`otapreopt_chroot`.
This tear-down phase ensures loop devices associated during by
`otapreopt_chroot` are detached before `otapreopt_chroot` exits.
Test: m otapreopt_chroot
Test: A/B OTA update test (asit/dexoptota/self_full).
Bug: 113373927
Bug: 120796514
Change-Id: I236ac49bb698fb672e7a4f9de9903229e535e9c6
diff --git a/cmds/installd/Android.bp b/cmds/installd/Android.bp
index 85652b3..95f5efb 100644
--- a/cmds/installd/Android.bp
+++ b/cmds/installd/Android.bp
@@ -136,7 +136,10 @@
],
clang: true,
- srcs: ["otapreopt_chroot.cpp"],
+ srcs: [
+ "otapreopt_chroot.cpp",
+ "otapreopt_utils.cpp",
+ ],
shared_libs: [
"libbase",
"liblog",
@@ -197,6 +200,7 @@
"dexopt.cpp",
"globals.cpp",
"otapreopt.cpp",
+ "otapreopt_utils.cpp",
"utils.cpp",
],