Add BOARD_EXCLUDE_KERNEL_FROM_RECOVERY_IMAGE.
BOARD_EXCLUDE_KERNEL_FROM_RECOVERY_IMAGE removes kernel from the recovery image. Test: build recovery image and unpack_bootimg Test: build target files and unpack_bootimg IMAGES/recovery.img on device with GKI and dedicated recovery partition. Bug: 156098440 Change-Id: I5f37d74ed954b26fe3dd778708b6ab9cfdc51f1e
This commit is contained in:
@@ -1936,13 +1936,13 @@ $(recovery_ramdisk): $(MKBOOTFS) $(COMPRESSION_COMMAND_DEPS) \
|
||||
$(MKBOOTFS) -d $(TARGET_OUT) $(TARGET_RECOVERY_ROOT_OUT) | $(COMPRESSION_COMMAND) > $(recovery_ramdisk)
|
||||
|
||||
# $(1): output file
|
||||
# $(2): kernel file
|
||||
# $(2): optional kernel file
|
||||
define build-recoveryimage-target
|
||||
$(if $(filter true,$(PRODUCT_SUPPORTS_VBOOT)), \
|
||||
$(MKBOOTIMG) --kernel $(2) $(INTERNAL_RECOVERYIMAGE_ARGS) \
|
||||
$(MKBOOTIMG) $(if $(strip $(2)),--kernel $(strip $(2))) $(INTERNAL_RECOVERYIMAGE_ARGS) \
|
||||
$(INTERNAL_MKBOOTIMG_VERSION_ARGS) $(BOARD_RECOVERY_MKBOOTIMG_ARGS) \
|
||||
--output $(1).unsigned, \
|
||||
$(MKBOOTIMG) --kernel $(2) $(INTERNAL_RECOVERYIMAGE_ARGS) \
|
||||
$(MKBOOTIMG) $(if $(strip $(2)),--kernel $(strip $(2))) $(INTERNAL_RECOVERYIMAGE_ARGS) \
|
||||
$(INTERNAL_MKBOOTIMG_VERSION_ARGS) $(BOARD_RECOVERY_MKBOOTIMG_ARGS) \
|
||||
--output $(1))
|
||||
$(if $(filter true,$(PRODUCT_SUPPORTS_BOOT_SIGNER)),\
|
||||
@@ -1994,7 +1994,8 @@ $(INSTALLED_BOOTIMAGE_TARGET): $(recoveryimage-deps)
|
||||
endif # BOARD_USES_RECOVERY_AS_BOOT
|
||||
|
||||
$(INSTALLED_RECOVERYIMAGE_TARGET): $(recoveryimage-deps)
|
||||
$(call build-recoveryimage-target, $@, $(recovery_kernel))
|
||||
$(call build-recoveryimage-target, $@, \
|
||||
$(if $(filter true, $(BOARD_EXCLUDE_KERNEL_FROM_RECOVERY_IMAGE)),, $(recovery_kernel)))
|
||||
|
||||
ifdef RECOVERY_RESOURCE_ZIP
|
||||
$(RECOVERY_RESOURCE_ZIP): $(INSTALLED_RECOVERYIMAGE_TARGET) | $(ZIPTIME)
|
||||
@@ -2006,7 +2007,8 @@ endif
|
||||
.PHONY: recoveryimage-nodeps
|
||||
recoveryimage-nodeps:
|
||||
@echo "make $@: ignoring dependencies"
|
||||
$(call build-recoveryimage-target, $(INSTALLED_RECOVERYIMAGE_TARGET), $(recovery_kernel))
|
||||
$(call build-recoveryimage-target, $(INSTALLED_RECOVERYIMAGE_TARGET), \
|
||||
$(if $(filter true, $(BOARD_EXCLUDE_KERNEL_FROM_RECOVERY_IMAGE)),, $(recovery_kernel)))
|
||||
|
||||
else # BUILDING_RECOVERY_IMAGE
|
||||
RECOVERY_RESOURCE_ZIP :=
|
||||
@@ -4151,6 +4153,9 @@ endif
|
||||
ifeq ($(BOARD_BOOTLOADER_IN_UPDATE_PACKAGE),true)
|
||||
$(hide) echo "bootloader_in_update_package=true" >> $@
|
||||
endif
|
||||
ifeq ($(BOARD_EXCLUDE_KERNEL_FROM_RECOVERY_IMAGE),true)
|
||||
$(hide) echo "exclude_kernel_from_recovery_image=true" >> $@
|
||||
endif
|
||||
|
||||
.PHONY: misc_info
|
||||
misc_info: $(INSTALLED_MISC_INFO_TARGET)
|
||||
@@ -4428,7 +4433,7 @@ ifneq (,$(INSTALLED_RECOVERYIMAGE_TARGET)$(filter true,$(BOARD_USES_RECOVERY_AS_
|
||||
ifdef INSTALLED_KERNEL_TARGET
|
||||
ifneq (,$(filter true,$(BOARD_USES_RECOVERY_AS_BOOT)))
|
||||
cp $(INSTALLED_KERNEL_TARGET) $(zip_root)/$(PRIVATE_RECOVERY_OUT)/
|
||||
else # BOARD_USES_RECOVERY_AS_BOOT not true
|
||||
else ifneq (true,$(BOARD_EXCLUDE_KERNEL_FROM_RECOVERY_IMAGE))
|
||||
cp $(firstword $(INSTALLED_KERNEL_TARGET)) $(zip_root)/$(PRIVATE_RECOVERY_OUT)/kernel
|
||||
endif
|
||||
endif
|
||||
|
@@ -101,8 +101,11 @@ _board_strip_readonly_list += \
|
||||
# - BOARD_USES_GENERIC_KERNEL_IMAGE is the global variable that defines if the
|
||||
# board uses GKI and generic boot image.
|
||||
# Update mechanism of the boot image is not enforced by this variable.
|
||||
# - BOARD_EXCLUDE_KERNEL_FROM_RECOVERY_IMAGE controls whether the recovery image
|
||||
# contains a kernel or not.
|
||||
_board_strip_readonly_list += \
|
||||
BOARD_USES_GENERIC_KERNEL_IMAGE \
|
||||
BOARD_EXCLUDE_KERNEL_FROM_RECOVERY_IMAGE \
|
||||
|
||||
_build_broken_var_list := \
|
||||
BUILD_BROKEN_DUP_RULES \
|
||||
@@ -752,3 +755,9 @@ $(foreach m,$(filter-out BUILD_COPY_HEADERS,$(DEFAULT_ERROR_BUILD_MODULE_TYPES))
|
||||
$(if $(filter true,$(BUILD_BROKEN_USES_$(m))),\
|
||||
$(KATI_deprecated_var $(m),Please convert to Soong),\
|
||||
$(KATI_obsolete_var $(m),Please convert to Soong)))
|
||||
|
||||
ifndef BUILDING_RECOVERY_IMAGE
|
||||
ifeq (true,$(BOARD_EXCLUDE_KERNEL_FROM_RECOVERY_IMAGE))
|
||||
$(error Should not set BOARD_EXCLUDE_KERNEL_FROM_RECOVERY_IMAGE if not building recovery image)
|
||||
endif
|
||||
endif
|
||||
|
@@ -1257,23 +1257,27 @@ def _BuildBootableImage(image_name, sourcedir, fs_config_file, info_dict=None,
|
||||
for building the requested image.
|
||||
"""
|
||||
|
||||
if info_dict is None:
|
||||
info_dict = OPTIONS.info_dict
|
||||
|
||||
# "boot" or "recovery", without extension.
|
||||
partition_name = os.path.basename(sourcedir).lower()
|
||||
|
||||
kernel = None
|
||||
if partition_name == "recovery":
|
||||
kernel = "kernel"
|
||||
if info_dict.get("exclude_kernel_from_recovery_image") == "true":
|
||||
logger.info("Excluded kernel binary from recovery image.")
|
||||
else:
|
||||
kernel = "kernel"
|
||||
else:
|
||||
kernel = image_name.replace("boot", "kernel")
|
||||
kernel = kernel.replace(".img", "")
|
||||
if not os.access(os.path.join(sourcedir, kernel), os.F_OK):
|
||||
if kernel and not os.access(os.path.join(sourcedir, kernel), os.F_OK):
|
||||
return None
|
||||
|
||||
if has_ramdisk and not os.access(os.path.join(sourcedir, "RAMDISK"), os.F_OK):
|
||||
return None
|
||||
|
||||
if info_dict is None:
|
||||
info_dict = OPTIONS.info_dict
|
||||
|
||||
img = tempfile.NamedTemporaryFile()
|
||||
|
||||
if has_ramdisk:
|
||||
@@ -1283,7 +1287,9 @@ def _BuildBootableImage(image_name, sourcedir, fs_config_file, info_dict=None,
|
||||
# use MKBOOTIMG from environ, or "mkbootimg" if empty or not set
|
||||
mkbootimg = os.getenv('MKBOOTIMG') or "mkbootimg"
|
||||
|
||||
cmd = [mkbootimg, "--kernel", os.path.join(sourcedir, kernel)]
|
||||
cmd = [mkbootimg]
|
||||
if kernel:
|
||||
cmd += ["--kernel", os.path.join(sourcedir, kernel)]
|
||||
|
||||
fn = os.path.join(sourcedir, "second")
|
||||
if os.access(fn, os.F_OK):
|
||||
|
Reference in New Issue
Block a user