Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 98f6ade1 authored by Tao Bao's avatar Tao Bao Committed by android-build-merger
Browse files

Merge "Clean up the rules for making vbmeta.img." am: 7c417b7f am: 873481ae

am: f4018734

Change-Id: I6fb0c06869b14c9d49a571871008d61250f05e8f
parents 9ce52c64 f4018734
Loading
Loading
Loading
Loading
+42 −71
Original line number Original line Diff line number Diff line
@@ -2569,7 +2569,15 @@ $(INSTALLED_DTBOIMAGE_TARGET): $(BOARD_PREBUILT_DTBOIMAGE)
	cp $(BOARD_PREBUILT_DTBOIMAGE) $@
	cp $(BOARD_PREBUILT_DTBOIMAGE) $@
endif
endif


endif
endif # BOARD_PREBUILT_DTBOIMAGE

# Returns a list of image targets corresponding to the given list of partitions. For example, it
# returns "$(INSTALLED_PRODUCTIMAGE_TARGET)" for "product", or "$(INSTALLED_SYSTEMIMAGE_TARGET)
# $(INSTALLED_VENDORIMAGE_TARGET)" for "system vendor".
# (1): list of partitions like "system", "vendor" or "system product product_services".
define images-for-partitions
$(strip $(foreach item,$(1),$(INSTALLED_$(call to-upper,$(item))IMAGE_TARGET)))
endef


# -----------------------------------------------------------------
# -----------------------------------------------------------------
# vbmeta image
# vbmeta image
@@ -2586,8 +2594,9 @@ BOARD_AVB_ALGORITHM := SHA256_RSA4096
BOARD_AVB_KEY_PATH := external/avb/test/data/testkey_rsa4096.pem
BOARD_AVB_KEY_PATH := external/avb/test/data/testkey_rsa4096.pem
endif
endif


INTERNAL_AVB_SIGNING_ARGS := \
ifndef BOARD_BOOTIMAGE_PARTITION_SIZE
    --algorithm $(BOARD_AVB_ALGORITHM) --key $(BOARD_AVB_KEY_PATH)
$(error BOARD_BOOTIMAGE_PARTITION_SIZE must be set for BOARD_AVB_ENABLE)
endif


BOOT_FOOTER_ARGS := BOARD_AVB_BOOT_ADD_HASH_FOOTER_ARGS
BOOT_FOOTER_ARGS := BOARD_AVB_BOOT_ADD_HASH_FOOTER_ARGS
DTBO_FOOTER_ARGS := BOARD_AVB_DTBO_ADD_HASH_FOOTER_ARGS
DTBO_FOOTER_ARGS := BOARD_AVB_DTBO_ADD_HASH_FOOTER_ARGS
@@ -2598,11 +2607,11 @@ PRODUCT_FOOTER_ARGS := BOARD_AVB_PRODUCT_ADD_HASHTREE_FOOTER_ARGS
PRODUCT_SERVICES_FOOTER_ARGS := BOARD_AVB_PRODUCT_SERVICES_ADD_HASHTREE_FOOTER_ARGS
PRODUCT_SERVICES_FOOTER_ARGS := BOARD_AVB_PRODUCT_SERVICES_ADD_HASHTREE_FOOTER_ARGS
ODM_FOOTER_ARGS := BOARD_AVB_ODM_ADD_HASHTREE_FOOTER_ARGS
ODM_FOOTER_ARGS := BOARD_AVB_ODM_ADD_HASHTREE_FOOTER_ARGS


# Check and set required build variables for a chain partition.
# Helper function that checks and sets required build variables for an AVB chained partition.
# $(1): the partition to enable AVB chain, e.g., BOOT or SYSTEM.
# $(1): the partition to enable AVB chain, e.g., boot or system.
define check-and-set-avb-chain-args
define _check-and-set-avb-chain-args
$(eval PART := $(1))
$(eval part := $(1))
$(eval part=$(call to-lower,$(PART)))
$(eval PART=$(call to-upper,$(part)))


$(eval _key_path := BOARD_AVB_$(PART)_KEY_PATH)
$(eval _key_path := BOARD_AVB_$(PART)_KEY_PATH)
$(eval _signing_algorithm := BOARD_AVB_$(PART)_ALGORITHM)
$(eval _signing_algorithm := BOARD_AVB_$(PART)_ALGORITHM)
@@ -2626,78 +2635,47 @@ $(eval _footer_args := $(PART)_FOOTER_ARGS)
$(eval $($(_footer_args)) += --rollback_index $($(_rollback_index)))
$(eval $($(_footer_args)) += --rollback_index $($(_rollback_index)))
endef
endef


# Checks and sets the required build variables for an AVB partition. The partition will be
# configured as a chained partition, if BOARD_AVB_<partition>_KEY_PATH is defined. Otherwise the
# image descriptor will be included into vbmeta.img.
# $(1): Partition name, e.g. boot or system.
define check-and-set-avb-args
$(if $(BOARD_AVB_$(call to-upper,$(1))_KEY_PATH),\
    $(call _check-and-set-avb-chain-args,$(1)),\
    $(eval INTERNAL_AVB_MAKE_VBMETA_IMAGE_ARGS += \
        --include_descriptors_from_image $(call images-for-partitions,$(1))))
endef

ifdef INSTALLED_BOOTIMAGE_TARGET
ifdef INSTALLED_BOOTIMAGE_TARGET
ifdef BOARD_AVB_BOOT_KEY_PATH
$(eval $(call check-and-set-avb-args,boot))
$(eval $(call check-and-set-avb-chain-args,BOOT))
else
INTERNAL_AVB_MAKE_VBMETA_IMAGE_ARGS += \
    --include_descriptors_from_image $(INSTALLED_BOOTIMAGE_TARGET)
endif
endif
endif


ifdef BOARD_AVB_SYSTEM_KEY_PATH
$(eval $(call check-and-set-avb-args,system))
$(eval $(call check-and-set-avb-chain-args,SYSTEM))
else
INTERNAL_AVB_MAKE_VBMETA_IMAGE_ARGS += \
    --include_descriptors_from_image $(INSTALLED_SYSTEMIMAGE_TARGET)
endif


ifdef INSTALLED_VENDORIMAGE_TARGET
ifdef INSTALLED_VENDORIMAGE_TARGET
ifdef BOARD_AVB_VENDOR_KEY_PATH
$(eval $(call check-and-set-avb-args,vendor))
$(eval $(call check-and-set-avb-chain-args,VENDOR))
else
INTERNAL_AVB_MAKE_VBMETA_IMAGE_ARGS += \
    --include_descriptors_from_image $(INSTALLED_VENDORIMAGE_TARGET)
endif
endif
endif


ifdef INSTALLED_PRODUCTIMAGE_TARGET
ifdef INSTALLED_PRODUCTIMAGE_TARGET
ifdef BOARD_AVB_PRODUCT_KEY_PATH
$(eval $(call check-and-set-avb-args,product))
$(eval $(call check-and-set-avb-chain-args,PRODUCT))
else
INTERNAL_AVB_MAKE_VBMETA_IMAGE_ARGS += \
    --include_descriptors_from_image $(INSTALLED_PRODUCTIMAGE_TARGET)
endif
endif
endif


ifdef INSTALLED_PRODUCT_SERVICESIMAGE_TARGET
ifdef INSTALLED_PRODUCT_SERVICESIMAGE_TARGET
ifdef BOARD_AVB_PRODUCT_SERVICES_KEY_PATH
$(eval $(call check-and-set-avb-args,product_services))
$(eval $(call check-and-set-avb-chain-args,PRODUCT_SERVICES))
else
INTERNAL_AVB_MAKE_VBMETA_IMAGE_ARGS += \
    --include_descriptors_from_image $(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET)
endif
endif
endif


ifdef INSTALLED_ODMIMAGE_TARGET
ifdef INSTALLED_ODMIMAGE_TARGET
ifdef BOARD_AVB_ODM_KEY_PATH
$(eval $(call check-and-set-avb-args,odm))
$(eval $(call check-and-set-avb-chain-args,ODM))
else
INTERNAL_AVB_MAKE_VBMETA_IMAGE_ARGS += \
    --include_descriptors_from_image $(INSTALLED_ODMIMAGE_TARGET)
endif
endif
endif


ifdef INSTALLED_DTBOIMAGE_TARGET
ifdef INSTALLED_DTBOIMAGE_TARGET
ifdef BOARD_AVB_DTBO_KEY_PATH
$(eval $(call check-and-set-avb-args,dtbo))
$(eval $(call check-and-set-avb-chain-args,DTBO))
else
INTERNAL_AVB_MAKE_VBMETA_IMAGE_ARGS += \
    --include_descriptors_from_image $(INSTALLED_DTBOIMAGE_TARGET)
endif
endif
endif


ifdef INSTALLED_RECOVERYIMAGE_TARGET
ifdef INSTALLED_RECOVERYIMAGE_TARGET
ifdef BOARD_AVB_RECOVERY_KEY_PATH
$(eval $(call check-and-set-avb-args,recovery))
$(eval $(call check-and-set-avb-chain-args,RECOVERY))
else
INTERNAL_AVB_MAKE_VBMETA_IMAGE_ARGS += \
    --include_descriptors_from_image $(INSTALLED_RECOVERYIMAGE_TARGET)
endif
endif
endif


BOARD_AVB_MAKE_VBMETA_IMAGE_ARGS += --padding_size 4096

# Add kernel cmdline descriptor for kernel to mount system.img as root with
# Add kernel cmdline descriptor for kernel to mount system.img as root with
# dm-verity. This works when system.img is either chained or not-chained:
# dm-verity. This works when system.img is either chained or not-chained:
# - chained: The --setup_as_rootfs_from_kernel option will add dm-verity kernel
# - chained: The --setup_as_rootfs_from_kernel option will add dm-verity kernel
@@ -2708,6 +2686,8 @@ ifeq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true)
BOARD_AVB_SYSTEM_ADD_HASHTREE_FOOTER_ARGS += --setup_as_rootfs_from_kernel
BOARD_AVB_SYSTEM_ADD_HASHTREE_FOOTER_ARGS += --setup_as_rootfs_from_kernel
endif
endif


BOARD_AVB_MAKE_VBMETA_IMAGE_ARGS += --padding_size 4096

ifdef BOARD_AVB_ROLLBACK_INDEX
ifdef BOARD_AVB_ROLLBACK_INDEX
BOARD_AVB_MAKE_VBMETA_IMAGE_ARGS += --rollback_index $(BOARD_AVB_ROLLBACK_INDEX)
BOARD_AVB_MAKE_VBMETA_IMAGE_ARGS += --rollback_index $(BOARD_AVB_ROLLBACK_INDEX)
endif
endif
@@ -2716,10 +2696,6 @@ ifeq (eng,$(filter eng, $(TARGET_BUILD_VARIANT)))
BOARD_AVB_MAKE_VBMETA_IMAGE_ARGS += --set_hashtree_disabled_flag
BOARD_AVB_MAKE_VBMETA_IMAGE_ARGS += --set_hashtree_disabled_flag
endif
endif


ifndef BOARD_BOOTIMAGE_PARTITION_SIZE
  $(error BOARD_BOOTIMAGE_PARTITION_SIZE must be set for BOARD_AVB_ENABLE)
endif

# $(1): the directory to extract public keys to
# $(1): the directory to extract public keys to
define extract-avb-chain-public-keys
define extract-avb-chain-public-keys
  $(if $(BOARD_AVB_BOOT_KEY_PATH),\
  $(if $(BOARD_AVB_BOOT_KEY_PATH),\
@@ -2754,13 +2730,16 @@ define build-vbmetaimage-target
  $(call extract-avb-chain-public-keys, $(AVB_CHAIN_KEY_DIR))
  $(call extract-avb-chain-public-keys, $(AVB_CHAIN_KEY_DIR))
  $(hide) $(AVBTOOL) make_vbmeta_image \
  $(hide) $(AVBTOOL) make_vbmeta_image \
    $(INTERNAL_AVB_MAKE_VBMETA_IMAGE_ARGS) \
    $(INTERNAL_AVB_MAKE_VBMETA_IMAGE_ARGS) \
    $(INTERNAL_AVB_SIGNING_ARGS) \
    $(PRIVATE_AVB_VBMETA_SIGNING_ARGS) \
    $(BOARD_AVB_MAKE_VBMETA_IMAGE_ARGS) \
    $(BOARD_AVB_MAKE_VBMETA_IMAGE_ARGS) \
    --output $@
    --output $@
  $(hide) rm -rf $(AVB_CHAIN_KEY_DIR)
  $(hide) rm -rf $(AVB_CHAIN_KEY_DIR)
endef
endef


INSTALLED_VBMETAIMAGE_TARGET := $(BUILT_VBMETAIMAGE_TARGET)
INSTALLED_VBMETAIMAGE_TARGET := $(BUILT_VBMETAIMAGE_TARGET)
$(INSTALLED_VBMETAIMAGE_TARGET): PRIVATE_AVB_VBMETA_SIGNING_ARGS := \
    --algorithm $(BOARD_AVB_ALGORITHM) --key $(BOARD_AVB_KEY_PATH)

$(INSTALLED_VBMETAIMAGE_TARGET): \
$(INSTALLED_VBMETAIMAGE_TARGET): \
		$(AVBTOOL) \
		$(AVBTOOL) \
		$(INSTALLED_BOOTIMAGE_TARGET) \
		$(INSTALLED_BOOTIMAGE_TARGET) \
@@ -2791,14 +2770,6 @@ endif # BOARD_AVB_ENABLE
# -----------------------------------------------------------------
# -----------------------------------------------------------------
# super partition image
# super partition image


# Returns a list of image targets corresponding to the given list of partitions. For example, it
# returns "$(INSTALLED_PRODUCTIMAGE_TARGET)" for "product", or "$(INSTALLED_SYSTEMIMAGE_TARGET)
# $(INSTALLED_VENDORIMAGE_TARGET)" for "system vendor".
# (1): list of partitions like "system", "vendor" or "system product product_services".
define images-for-partitions
$(strip $(foreach item,$(1),$(INSTALLED_$(call to-upper,$(item))IMAGE_TARGET)))
endef

# (1): list of items like "system", "vendor", "product", "product_services"
# (1): list of items like "system", "vendor", "product", "product_services"
# return: map each item into a command ( wrapped in $$() ) that reads the size
# return: map each item into a command ( wrapped in $$() ) that reads the size
define read-size-of-partitions
define read-size-of-partitions