Fix path conflict for vendor_ramdisk_available
... and ramdisk_available modules. If a module is both
vendor_ramdisk_available and ramdisk_available, on a device
that mark recovery_as_boot and move_recovery_resources_to_vendor_boot
simultaneously (and incorrectly),
both will be installed to recovery/root/first_stage_ramdisk. Fix the
path conflict of the two variants by moving the vendor_ramdisk variant
to vendor-ramdisk/first_stage_ramdisk instead.
Also update comments for Vendor_ramdisk_available.
Test: m nothing -j
Bug: 156098440
Change-Id: I2b776b6fd8f5a2c361c0f6a89231e3cebc2646f0
diff --git a/android/paths.go b/android/paths.go
index 4eb9d20..c0d6a69 100644
--- a/android/paths.go
+++ b/android/paths.go
@@ -1378,8 +1378,12 @@
partition += "/system"
}
} else if ctx.InstallInVendorRamdisk() {
+ // The module is only available after switching root into
+ // /first_stage_ramdisk. To expose the module before switching root
+ // on a device without a dedicated recovery partition, install the
+ // recovery variant.
if ctx.DeviceConfig().BoardMoveRecoveryResourcesToVendorBoot() {
- partition = "recovery/root/first_stage_ramdisk"
+ partition = "vendor-ramdisk/first_stage_ramdisk"
} else {
partition = "vendor-ramdisk"
}
diff --git a/cc/cc.go b/cc/cc.go
index c1a4327..c93bdeb 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -255,10 +255,18 @@
// file
Logtags []string
- // Make this module available when building for ramdisk
+ // Make this module available when building for ramdisk.
+ // On device without a dedicated recovery partition, the module is only
+ // available after switching root into
+ // /first_stage_ramdisk. To expose the module before switching root, install
+ // the recovery variant instead.
Ramdisk_available *bool
- // Make this module available when building for vendor ramdisk
+ // Make this module available when building for vendor ramdisk.
+ // On device without a dedicated recovery partition, the module is only
+ // available after switching root into
+ // /first_stage_ramdisk. To expose the module before switching root, install
+ // the recovery variant instead.
Vendor_ramdisk_available *bool
// Make this module available when building for recovery
diff --git a/etc/prebuilt_etc.go b/etc/prebuilt_etc.go
index 337ad88..44b8149 100644
--- a/etc/prebuilt_etc.go
+++ b/etc/prebuilt_etc.go
@@ -59,9 +59,17 @@
Filename_from_src *bool `android:"arch_variant"`
// Make this module available when building for ramdisk.
+ // On device without a dedicated recovery partition, the module is only
+ // available after switching root into
+ // /first_stage_ramdisk. To expose the module before switching root, install
+ // the recovery variant instead.
Ramdisk_available *bool
// Make this module available when building for vendor ramdisk.
+ // On device without a dedicated recovery partition, the module is only
+ // available after switching root into
+ // /first_stage_ramdisk. To expose the module before switching root, install
+ // the recovery variant instead.
Vendor_ramdisk_available *bool
// Make this module available when building for recovery.
diff --git a/sh/sh_binary.go b/sh/sh_binary.go
index 6f40ae4..7e5c344 100644
--- a/sh/sh_binary.go
+++ b/sh/sh_binary.go
@@ -66,9 +66,17 @@
Symlinks []string `android:"arch_variant"`
// Make this module available when building for ramdisk.
+ // On device without a dedicated recovery partition, the module is only
+ // available after switching root into
+ // /first_stage_ramdisk. To expose the module before switching root, install
+ // the recovery variant instead.
Ramdisk_available *bool
// Make this module available when building for vendor ramdisk.
+ // On device without a dedicated recovery partition, the module is only
+ // available after switching root into
+ // /first_stage_ramdisk. To expose the module before switching root, install
+ // the recovery variant instead.
Vendor_ramdisk_available *bool
// Make this module available when building for recovery.