From 1143aaf7729f7489808be7a288905d15a738706e Mon Sep 17 00:00:00 2001 From: Kelvin Zhang Date: Fri, 13 Jan 2023 09:45:00 -0800 Subject: [PATCH] Fix generic ramdisk build failures on dedicated recovery partitions For targets with BoardUsesRecoveryAsBoot set to true, binaries in generic_ramdisk are installed to $OUT/recovery/root/first_stage_ramdisk This path is not on generic_ramdisk.mk 's allowlist, hence build fails. To fix the failure, add $OUT/recovery/root/first_stage_ramdisk/system to allow list. Test: th, lunch eos-userdebug(a dedicated recovery partition target) and build. Bug: 265477065 Change-Id: I89cf229adc028a7e5de632b9a3188ecb411de735 --- core/base_rules.mk | 6 +++++- target/product/generic_ramdisk.mk | 5 +++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/core/base_rules.mk b/core/base_rules.mk index 00f5f2190f..18730aa0e3 100644 --- a/core/base_rules.mk +++ b/core/base_rules.mk @@ -600,7 +600,11 @@ ifneq (true,$(LOCAL_UNINSTALLABLE_MODULE)) # Manually handle the case where the # output file is in the recovery or ramdisk partition. ifneq (,$(filter $(TARGET_RECOVERY_ROOT_OUT)/%,$(my_module_path))) - my_init_rc_path := $(TARGET_RECOVERY_ROOT_OUT)/system/etc + ifneq (,$(filter $(TARGET_RECOVERY_ROOT_OUT)/first_stage_ramdisk/%,$(my_module_path))) + my_init_rc_path := $(TARGET_RECOVERY_ROOT_OUT)/first_stage_ramdisk/system/etc + else + my_init_rc_path := $(TARGET_RECOVERY_ROOT_OUT)/system/etc + endif else ifneq (,$(filter $(TARGET_RAMDISK_OUT)/%,$(my_module_path))) my_init_rc_path := $(TARGET_RAMDISK_OUT)/system/etc else diff --git a/target/product/generic_ramdisk.mk b/target/product/generic_ramdisk.mk index c7dcd60886..ebac62fd6b 100644 --- a/target/product/generic_ramdisk.mk +++ b/target/product/generic_ramdisk.mk @@ -29,11 +29,16 @@ PRODUCT_PACKAGES += \ adb_debug.prop \ userdebug_plat_sepolicy.cil \ + +# For targets using dedicated recovery partition, generic ramdisk +# might be relocated to recovery partition _my_paths := \ $(TARGET_COPY_OUT_RAMDISK)/ \ $(TARGET_COPY_OUT_DEBUG_RAMDISK)/ \ system/usr/share/zoneinfo/tz_version \ system/usr/share/zoneinfo/tzdata \ + $(TARGET_COPY_OUT_RECOVERY)/root/first_stage_ramdisk/system \ + # We use the "relaxed" version here because tzdata / tz_version is only produced # by this makefile on a subset of devices.