Vendor ramdisk modules install to correct location
Install to recovery/root/first_stage_ramdisk if
BOARD_MOVE_RECOVERY_RESOURCES_TO_VENDOR_BOOT,
otherwise vendor-ramdisk. In addition, append /system
if not InstallInRoot().
On devices with dedicated recovery partition,
BOARD_MOVE_RECOVERY_RESOURCES_TO_VENDOR_BOOT is not set,
and this installs to the correct place (under $OUT/vendor-ramdisk).
On devices without a dedicated recovery partition:
- To install a module available before switching root
to /first_stage_ramdisk, e.g. a binary under /system/bin,
use recovery{_available} and install the recovery variant
of the module.
- To install a module available after switching root
to /first_stage_ramdisk, e.g. a binary under
/first_stage_ramdisk/system/bin,
use vendor_ramdisk{_available} and install the vendor_ramdisk
variant of the module.
Test: pass
Bug: 156098440
Change-Id: I1af3f8889891a3e58263cda36f0680ce2b480499
diff --git a/android/config.go b/android/config.go
index cf6d596..004b743 100644
--- a/android/config.go
+++ b/android/config.go
@@ -1312,6 +1312,10 @@
return c.config.productVariables.BoardKernelModuleInterfaceVersions
}
+func (c *deviceConfig) BoardMoveRecoveryResourcesToVendorBoot() bool {
+ return Bool(c.config.productVariables.BoardMoveRecoveryResourcesToVendorBoot)
+}
+
// The ConfiguredJarList struct provides methods for handling a list of (apex, jar) pairs.
// Such lists are used in the build system for things like bootclasspath jars or system server jars.
// The apex part is either an apex name, or a special names "platform" or "system_ext". Jar is a
diff --git a/android/paths.go b/android/paths.go
index 8fd2e88..4eb9d20 100644
--- a/android/paths.go
+++ b/android/paths.go
@@ -1378,8 +1378,14 @@
partition += "/system"
}
} else if ctx.InstallInVendorRamdisk() {
- // TODO(elsk): Should be conditional on move_recovery_res_to_vendor_boot
- partition = "vendor-ramdisk"
+ if ctx.DeviceConfig().BoardMoveRecoveryResourcesToVendorBoot() {
+ partition = "recovery/root/first_stage_ramdisk"
+ } else {
+ partition = "vendor-ramdisk"
+ }
+ if !ctx.InstallInRoot() {
+ partition += "/system"
+ }
} else if ctx.InstallInRecovery() {
if ctx.InstallInRoot() {
partition = "recovery/root"
diff --git a/android/variable.go b/android/variable.go
index 73062ed..23fc6c2 100644
--- a/android/variable.go
+++ b/android/variable.go
@@ -352,6 +352,8 @@
BoardKernelBinaries []string `json:",omitempty"`
BoardKernelModuleInterfaceVersions []string `json:",omitempty"`
+
+ BoardMoveRecoveryResourcesToVendorBoot *bool `json:",omitempty"`
}
func boolPtr(v bool) *bool {