From 41a03d3aeedcb550ad80282f9cf6667f67348abd Mon Sep 17 00:00:00 2001 From: Ram Muthiah Date: Thu, 20 Aug 2020 14:27:41 -0700 Subject: [PATCH] Add prebuilt bootloader var and add bootloader to img zip Needed to enable a prebuilt bootloader to make it to the dist and img directories. Added a flag to ensure only devices that request will have the update package populated with a bootloader Bug: 164917252 Test: local build and Treehugger build Change-Id: Id67b7bddda14b51a523f794976591c6de04d71ca --- core/Makefile | 12 ++++++++++++ core/board_config.mk | 1 + tools/releasetools/img_from_target_files.py | 8 ++++++-- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/core/Makefile b/core/Makefile index 92723d3277..19481df4b8 100644 --- a/core/Makefile +++ b/core/Makefile @@ -584,6 +584,10 @@ ALL_DEFAULT_INSTALLED_MODULES += $(event_log_tags_file) # ################################################################# ifneq ($(strip $(TARGET_NO_BOOTLOADER)),true) INSTALLED_BOOTLOADER_MODULE := $(PRODUCT_OUT)/bootloader + ifdef BOARD_PREBUILT_BOOTLOADER + $(eval $(call copy-one-file,$(BOARD_PREBUILT_BOOTLOADER),$(INSTALLED_BOOTLOADER_MODULE))) + $(call dist-for-goals,dist_files,$(INSTALLED_BOOTLOADER_MODULE)) + endif # BOARD_PREBUILT_BOOTLOADER ifeq ($(strip $(TARGET_BOOTLOADER_IS_2ND)),true) INSTALLED_2NDBOOTLOADER_TARGET := $(PRODUCT_OUT)/2ndbootloader else @@ -4138,6 +4142,9 @@ endif ifdef DEVICE_MANIFEST_FILE $(hide) echo "vintf_include_empty_vendor_sku=true" >> $@ endif +ifeq ($(BOARD_BOOTLOADER_IN_UPDATE_PACKAGE),true) + $(hide) echo "bootloader_in_update_package=true" >> $@ +endif .PHONY: misc_info misc_info: $(INSTALLED_MISC_INFO_TARGET) @@ -4317,6 +4324,7 @@ $(BUILT_TARGET_FILES_PACKAGE): \ $(INSTALLED_ANDROID_INFO_TXT_TARGET) \ $(INSTALLED_KERNEL_TARGET) \ $(INSTALLED_DTBIMAGE_TARGET) \ + $(INSTALLED_BOOTLOADER_MODULE) \ $(INSTALLED_2NDBOOTLOADER_TARGET) \ $(BOARD_PREBUILT_DTBOIMAGE) \ $(BOARD_PREBUILT_RECOVERY_DTBOIMAGE) \ @@ -4583,6 +4591,10 @@ ifdef BOARD_PREBUILT_DTBOIMAGE $(hide) mkdir -p $(zip_root)/PREBUILT_IMAGES $(hide) cp $(INSTALLED_DTBOIMAGE_TARGET) $(zip_root)/PREBUILT_IMAGES/ endif # BOARD_PREBUILT_DTBOIMAGE +ifdef BOARD_PREBUILT_BOOTLOADER + $(hide) mkdir -p $(zip_root)/IMAGES + $(hide) cp $(INSTALLED_BOOTLOADER_MODULE) $(zip_root)/IMAGES/ +endif ifneq ($(strip $(BOARD_CUSTOMIMAGES_PARTITION_LIST)),) $(hide) mkdir -p $(zip_root)/PREBUILT_IMAGES $(hide) $(foreach partition,$(BOARD_CUSTOMIMAGES_PARTITION_LIST), \ diff --git a/core/board_config.mk b/core/board_config.mk index b7d0178c0e..adef055df9 100644 --- a/core/board_config.mk +++ b/core/board_config.mk @@ -20,6 +20,7 @@ # ############################################################### _board_strip_readonly_list := \ + BOARD_BOOTLOADER_IN_UPDATE_PACKAGE \ BOARD_EGL_CFG \ BOARD_HAVE_BLUETOOTH \ BOARD_INSTALLER_CMDLINE \ diff --git a/tools/releasetools/img_from_target_files.py b/tools/releasetools/img_from_target_files.py index ab38d0d7f8..54091941ce 100755 --- a/tools/releasetools/img_from_target_files.py +++ b/tools/releasetools/img_from_target_files.py @@ -58,6 +58,7 @@ OPTIONS = common.OPTIONS OPTIONS.additional_entries = [] OPTIONS.bootable_only = False OPTIONS.put_super = None +OPTIONS.put_bootloader = None OPTIONS.dynamic_partition_list = None OPTIONS.super_device_list = None OPTIONS.retrofit_dap = None @@ -75,6 +76,7 @@ def LoadOptions(input_file): info = OPTIONS.info_dict = common.LoadInfoDict(input_zip) OPTIONS.put_super = info.get('super_image_in_update_package') == 'true' + OPTIONS.put_bootloader = info.get('bootloader_in_update_package') == 'true' OPTIONS.dynamic_partition_list = info.get('dynamic_partition_list', '').strip().split() OPTIONS.super_device_list = info.get('super_block_devices', @@ -122,9 +124,11 @@ def EntriesForUserImages(input_file): for image_path in [name for name in namelist if name.startswith('IMAGES/')]: image = os.path.basename(image_path) - if OPTIONS.bootable_only and image not in ('boot.img', 'recovery.img'): + if OPTIONS.bootable_only and image not in('boot.img', 'recovery.img', 'bootloader'): continue - if not image.endswith('.img'): + if not image.endswith('.img') and image != 'bootloader': + continue + if image == 'bootloader' and not OPTIONS.put_bootloader: continue # Filter out super_empty and the images that are already in super partition. if OPTIONS.put_super: