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
This commit is contained in:
Yifan Hong 2020-10-21 15:40:17 -07:00
parent 60e0cfb5cb
commit dd8dacc131
3 changed files with 14 additions and 2 deletions

View file

@ -1312,6 +1312,10 @@ func (c *deviceConfig) BoardKernelModuleInterfaceVersions() []string {
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

View file

@ -1378,8 +1378,14 @@ func modulePartition(ctx ModuleInstallPathContext, os OsType) string {
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"

View file

@ -352,6 +352,8 @@ type productVariables struct {
BoardKernelBinaries []string `json:",omitempty"`
BoardKernelModuleInterfaceVersions []string `json:",omitempty"`
BoardMoveRecoveryResourcesToVendorBoot *bool `json:",omitempty"`
}
func boolPtr(v bool) *bool {