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)
|
$(MKBOOTFS) -d $(TARGET_OUT) $(TARGET_RECOVERY_ROOT_OUT) | $(COMPRESSION_COMMAND) > $(recovery_ramdisk)
|
||||||
|
|
||||||
# $(1): output file
|
# $(1): output file
|
||||||
# $(2): kernel file
|
# $(2): optional kernel file
|
||||||
define build-recoveryimage-target
|
define build-recoveryimage-target
|
||||||
$(if $(filter true,$(PRODUCT_SUPPORTS_VBOOT)), \
|
$(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) \
|
$(INTERNAL_MKBOOTIMG_VERSION_ARGS) $(BOARD_RECOVERY_MKBOOTIMG_ARGS) \
|
||||||
--output $(1).unsigned, \
|
--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) \
|
$(INTERNAL_MKBOOTIMG_VERSION_ARGS) $(BOARD_RECOVERY_MKBOOTIMG_ARGS) \
|
||||||
--output $(1))
|
--output $(1))
|
||||||
$(if $(filter true,$(PRODUCT_SUPPORTS_BOOT_SIGNER)),\
|
$(if $(filter true,$(PRODUCT_SUPPORTS_BOOT_SIGNER)),\
|
||||||
@@ -1994,7 +1994,8 @@ $(INSTALLED_BOOTIMAGE_TARGET): $(recoveryimage-deps)
|
|||||||
endif # BOARD_USES_RECOVERY_AS_BOOT
|
endif # BOARD_USES_RECOVERY_AS_BOOT
|
||||||
|
|
||||||
$(INSTALLED_RECOVERYIMAGE_TARGET): $(recoveryimage-deps)
|
$(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
|
ifdef RECOVERY_RESOURCE_ZIP
|
||||||
$(RECOVERY_RESOURCE_ZIP): $(INSTALLED_RECOVERYIMAGE_TARGET) | $(ZIPTIME)
|
$(RECOVERY_RESOURCE_ZIP): $(INSTALLED_RECOVERYIMAGE_TARGET) | $(ZIPTIME)
|
||||||
@@ -2006,7 +2007,8 @@ endif
|
|||||||
.PHONY: recoveryimage-nodeps
|
.PHONY: recoveryimage-nodeps
|
||||||
recoveryimage-nodeps:
|
recoveryimage-nodeps:
|
||||||
@echo "make $@: ignoring dependencies"
|
@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
|
else # BUILDING_RECOVERY_IMAGE
|
||||||
RECOVERY_RESOURCE_ZIP :=
|
RECOVERY_RESOURCE_ZIP :=
|
||||||
@@ -4151,6 +4153,9 @@ endif
|
|||||||
ifeq ($(BOARD_BOOTLOADER_IN_UPDATE_PACKAGE),true)
|
ifeq ($(BOARD_BOOTLOADER_IN_UPDATE_PACKAGE),true)
|
||||||
$(hide) echo "bootloader_in_update_package=true" >> $@
|
$(hide) echo "bootloader_in_update_package=true" >> $@
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(BOARD_EXCLUDE_KERNEL_FROM_RECOVERY_IMAGE),true)
|
||||||
|
$(hide) echo "exclude_kernel_from_recovery_image=true" >> $@
|
||||||
|
endif
|
||||||
|
|
||||||
.PHONY: misc_info
|
.PHONY: misc_info
|
||||||
misc_info: $(INSTALLED_MISC_INFO_TARGET)
|
misc_info: $(INSTALLED_MISC_INFO_TARGET)
|
||||||
@@ -4428,7 +4433,7 @@ ifneq (,$(INSTALLED_RECOVERYIMAGE_TARGET)$(filter true,$(BOARD_USES_RECOVERY_AS_
|
|||||||
ifdef INSTALLED_KERNEL_TARGET
|
ifdef INSTALLED_KERNEL_TARGET
|
||||||
ifneq (,$(filter true,$(BOARD_USES_RECOVERY_AS_BOOT)))
|
ifneq (,$(filter true,$(BOARD_USES_RECOVERY_AS_BOOT)))
|
||||||
cp $(INSTALLED_KERNEL_TARGET) $(zip_root)/$(PRIVATE_RECOVERY_OUT)/
|
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
|
cp $(firstword $(INSTALLED_KERNEL_TARGET)) $(zip_root)/$(PRIVATE_RECOVERY_OUT)/kernel
|
||||||
endif
|
endif
|
||||||
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_GENERIC_KERNEL_IMAGE is the global variable that defines if the
|
||||||
# board uses GKI and generic boot image.
|
# board uses GKI and generic boot image.
|
||||||
# Update mechanism of the boot image is not enforced by this variable.
|
# 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_strip_readonly_list += \
|
||||||
BOARD_USES_GENERIC_KERNEL_IMAGE \
|
BOARD_USES_GENERIC_KERNEL_IMAGE \
|
||||||
|
BOARD_EXCLUDE_KERNEL_FROM_RECOVERY_IMAGE \
|
||||||
|
|
||||||
_build_broken_var_list := \
|
_build_broken_var_list := \
|
||||||
BUILD_BROKEN_DUP_RULES \
|
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))),\
|
$(if $(filter true,$(BUILD_BROKEN_USES_$(m))),\
|
||||||
$(KATI_deprecated_var $(m),Please convert to Soong),\
|
$(KATI_deprecated_var $(m),Please convert to Soong),\
|
||||||
$(KATI_obsolete_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.
|
for building the requested image.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
if info_dict is None:
|
||||||
|
info_dict = OPTIONS.info_dict
|
||||||
|
|
||||||
# "boot" or "recovery", without extension.
|
# "boot" or "recovery", without extension.
|
||||||
partition_name = os.path.basename(sourcedir).lower()
|
partition_name = os.path.basename(sourcedir).lower()
|
||||||
|
|
||||||
|
kernel = None
|
||||||
if partition_name == "recovery":
|
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:
|
else:
|
||||||
kernel = image_name.replace("boot", "kernel")
|
kernel = image_name.replace("boot", "kernel")
|
||||||
kernel = kernel.replace(".img", "")
|
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
|
return None
|
||||||
|
|
||||||
if has_ramdisk and not os.access(os.path.join(sourcedir, "RAMDISK"), os.F_OK):
|
if has_ramdisk and not os.access(os.path.join(sourcedir, "RAMDISK"), os.F_OK):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
if info_dict is None:
|
|
||||||
info_dict = OPTIONS.info_dict
|
|
||||||
|
|
||||||
img = tempfile.NamedTemporaryFile()
|
img = tempfile.NamedTemporaryFile()
|
||||||
|
|
||||||
if has_ramdisk:
|
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
|
# use MKBOOTIMG from environ, or "mkbootimg" if empty or not set
|
||||||
mkbootimg = os.getenv('MKBOOTIMG') or "mkbootimg"
|
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")
|
fn = os.path.join(sourcedir, "second")
|
||||||
if os.access(fn, os.F_OK):
|
if os.access(fn, os.F_OK):
|
||||||
|
Reference in New Issue
Block a user