Allow librecovery_ui_ext to set InstallInRoot() to true.
`librecovery_ui_ext` is the Recovery UI library used by the device in
Recovery mode. Its default installation directory is
$(TARGET_RECOVERY_ROOT_OUT), not $(TARGET_RECOVERY_ROOT_OUT)/system.
It needs to be able to set InstallInRoot to true to match the original
installation location settings.
Bug: 339143524
Test: m -j librecovery_ui_ext
Change-Id: Ic2f7fd9bacc7d1e320481dd4dc034b5db8e80fa7
diff --git a/android/neverallow.go b/android/neverallow.go
index 326150b..2215504 100644
--- a/android/neverallow.go
+++ b/android/neverallow.go
@@ -55,7 +55,7 @@
AddNeverAllowRules(createJavaDeviceForHostRules()...)
AddNeverAllowRules(createCcSdkVariantRules()...)
AddNeverAllowRules(createUncompressDexRules()...)
- AddNeverAllowRules(createInitFirstStageRules()...)
+ AddNeverAllowRules(createInstallInRootAllowingRules()...)
AddNeverAllowRules(createProhibitFrameworkAccessRules()...)
AddNeverAllowRules(createCcStubsRule())
AddNeverAllowRules(createProhibitHeaderOnlyRule())
@@ -235,15 +235,16 @@
}
}
-func createInitFirstStageRules() []Rule {
+func createInstallInRootAllowingRules() []Rule {
return []Rule{
NeverAllow().
Without("name", "init_first_stage_defaults").
Without("name", "init_first_stage").
Without("name", "init_first_stage.microdroid").
+ Without("name", "librecovery_ui_ext").
With("install_in_root", "true").
NotModuleType("prebuilt_root").
- Because("install_in_root is only for init_first_stage."),
+ Because("install_in_root is only for init_first_stage or librecovery_ui_ext."),
}
}