forked from openkylin/platform_build
Add support for /odm partition
This CL is largely an adaptation of Change-Id I5d229f6ac729ea6df9ff1f14cee2e28972cd9b4d tools/vendor_buildinfo.sh is also renamed to tools/device_buildinfo.sh. The caller then can invoke device_buildinfo.sh "vendor" | "odm" to generate properties for vendor.img and odm.img, respectively. It adds the following variables: - BOARD_AVB_ODM_KEY_PATH - BOARD_AVB_ODM_ALGORITHM - BOARD_AVB_ODM_ROLLBACK_INDEX_LOCATION - BOARD_ODMIMAGE_FILE_SYSTEM_TYPE - BOARD_ODMIMAGE_EXTFS_INODE_COUNT - BOARD_ODMIMAGE_EXTFS_RSV_PCT - BOARD_ODMIMAGE_PARTITION_SIZE - BOARD_ODMIMAGE_JOURNAL_SIZE - BOARD_ODMIMAGE_SQUASHFS_BLOCK_SIZE - BOARD_ODMIMAGE_SQUASHFS_COMPRESSOR - BOARD_ODMIMAGE_SQUASHFS_COMPRESSOR_OPT - BOARD_ODMIMAGE_SQUASHFS_DISABLE_4K_ALIGN - BOARD_PREBUILT_ODMIMAGE - BOARD_USES_ODMIMAGE - LOCAL_ODM_MODULE - PRODUCT_ODM_BASE_FS_PATH - PRODUCT_ODM_VERITY_PARTITION - PRODUCT_ODM_PROPERTIES - TARGET_COPY_OUT_ODM - TARGET_OUT_ODM - TARGET_OUT_ODM_* Bug: 64195575 Test: boot a Taimen with existing images Test: `make odmimage` with - BOARD_AVB_ENABLE := true - BOARD_ODMIMAGE_PARTITION_SIZE := 62914560 - BOARD_ODMIMAGE_FILE_SYSTEM_TYPE := ext4 - TARGET_COPY_OUT_ODM := odm - PRODUCT_ODM_PROPERTIES += odm.test.build=success Test: `make odmimage` with - BOARD_ODMIMAGE_PARTITION_RESERVED_SIZE := 10485760 - BOARD_ODMIMAGE_FILE_SYSTEM_TYPE := ext4 - BOARD_AVB_ENABLE := true - TARGET_COPY_OUT_ODM := odm - PRODUCT_ODM_PROPERTIES += odm.test.build=success - PRODUCT_USE_DYNAMIC_PARTITION_SIZE := true Change-Id: I4dea7b567ec49a766c7a4683decaf81c7e921d55
This commit is contained in:
parent
9243997500
commit
d624fa63d5
190
core/Makefile
190
core/Makefile
|
@ -300,7 +300,7 @@ $(strip $(subst _,-, $(firstword $(1))))
|
||||||
endef
|
endef
|
||||||
|
|
||||||
BUILDINFO_SH := build/make/tools/buildinfo.sh
|
BUILDINFO_SH := build/make/tools/buildinfo.sh
|
||||||
VENDOR_BUILDINFO_SH := build/make/tools/vendor_buildinfo.sh
|
DEVICE_BUILDINFO_SH := build/make/tools/device_buildinfo.sh
|
||||||
|
|
||||||
# TARGET_BUILD_FLAVOR and ro.build.flavor are used only by the test
|
# TARGET_BUILD_FLAVOR and ro.build.flavor are used only by the test
|
||||||
# harness to distinguish builds. Only add _asan for a sanitized build
|
# harness to distinguish builds. Only add _asan for a sanitized build
|
||||||
|
@ -410,7 +410,7 @@ FINAL_VENDOR_BUILD_PROPERTIES := $(call uniq-pairs-by-first-component, \
|
||||||
$(FINAL_VENDOR_BUILD_PROPERTIES),=)
|
$(FINAL_VENDOR_BUILD_PROPERTIES),=)
|
||||||
endif # property_overrides_split_enabled
|
endif # property_overrides_split_enabled
|
||||||
|
|
||||||
$(INSTALLED_VENDOR_BUILD_PROP_TARGET): $(VENDOR_BUILDINFO_SH) $(intermediate_system_build_prop)
|
$(INSTALLED_VENDOR_BUILD_PROP_TARGET): $(DEVICE_BUILDINFO_SH) $(intermediate_system_build_prop)
|
||||||
@echo Target vendor buildinfo: $@
|
@echo Target vendor buildinfo: $@
|
||||||
@mkdir -p $(dir $@)
|
@mkdir -p $(dir $@)
|
||||||
$(hide) echo > $@
|
$(hide) echo > $@
|
||||||
|
@ -435,7 +435,7 @@ $(INSTALLED_VENDOR_BUILD_PROP_TARGET): $(VENDOR_BUILDINFO_SH) $(intermediate_sys
|
||||||
PRODUCT_MANUFACTURER="$(PRODUCT_MANUFACTURER)" \
|
PRODUCT_MANUFACTURER="$(PRODUCT_MANUFACTURER)" \
|
||||||
TARGET_BOOTLOADER_BOARD_NAME="$(TARGET_BOOTLOADER_BOARD_NAME)" \
|
TARGET_BOOTLOADER_BOARD_NAME="$(TARGET_BOOTLOADER_BOARD_NAME)" \
|
||||||
TARGET_BOARD_PLATFORM="$(TARGET_BOARD_PLATFORM)" \
|
TARGET_BOARD_PLATFORM="$(TARGET_BOARD_PLATFORM)" \
|
||||||
bash $(VENDOR_BUILDINFO_SH) >> $@
|
bash $(DEVICE_BUILDINFO_SH) "vendor" >> $@
|
||||||
ifdef property_overrides_split_enabled
|
ifdef property_overrides_split_enabled
|
||||||
$(hide) echo "#" >> $@; \
|
$(hide) echo "#" >> $@; \
|
||||||
echo "# ADDITIONAL VENDOR BUILD PROPERTIES" >> $@; \
|
echo "# ADDITIONAL VENDOR BUILD PROPERTIES" >> $@; \
|
||||||
|
@ -472,6 +472,39 @@ endif # BOARD_USES_PRODUCTIMAGE
|
||||||
$(hide) build/make/tools/post_process_props.py $@
|
$(hide) build/make/tools/post_process_props.py $@
|
||||||
|
|
||||||
# ----------------------------------------------------------------
|
# ----------------------------------------------------------------
|
||||||
|
# odm build.prop
|
||||||
|
INSTALLED_ODM_BUILD_PROP_TARGET := $(TARGET_OUT_ODM)/build.prop
|
||||||
|
ALL_DEFAULT_INSTALLED_MODULES += $(INSTALLED_ODM_BUILD_PROP_TARGET)
|
||||||
|
|
||||||
|
FINAL_ODM_BUILD_PROPERTIES += \
|
||||||
|
$(call collapse-pairs, $(PRODUCT_ODM_PROPERTIES))
|
||||||
|
FINAL_ODM_BUILD_PROPERTIES := $(call uniq-pairs-by-first-component, \
|
||||||
|
$(FINAL_ODM_BUILD_PROPERTIES),=)
|
||||||
|
|
||||||
|
$(INSTALLED_ODM_BUILD_PROP_TARGET): $(DEVICE_BUILDINFO_SH)
|
||||||
|
@echo Target odm buildinfo: $@
|
||||||
|
@mkdir -p $(dir $@)
|
||||||
|
$(hide) echo > $@
|
||||||
|
$(hide) echo ro.odm.build.date=`$(DATE_FROM_FILE)`>>$@
|
||||||
|
$(hide) echo ro.odm.build.date.utc=`$(DATE_FROM_FILE) +%s`>>$@
|
||||||
|
$(hide) echo ro.odm.build.fingerprint="$(BUILD_FINGERPRINT_FROM_FILE)">>$@
|
||||||
|
$(hide) echo ro.odm.product.cpu.abilist="$(TARGET_CPU_ABI_LIST)">>$@
|
||||||
|
$(hide) echo ro.odm.product.cpu.abilist32="$(TARGET_CPU_ABI_LIST_32_BIT)">>$@
|
||||||
|
$(hide) echo ro.odm.product.cpu.abilist64="$(TARGET_CPU_ABI_LIST_64_BIT)">>$@
|
||||||
|
$(hide) TARGET_DEVICE="$(TARGET_DEVICE)" \
|
||||||
|
PRODUCT_NAME="$(TARGET_PRODUCT)" \
|
||||||
|
PRODUCT_BRAND="$(PRODUCT_BRAND)" \
|
||||||
|
PRODUCT_MODEL="$(PRODUCT_MODEL)" \
|
||||||
|
PRODUCT_MANUFACTURER="$(PRODUCT_MANUFACTURER)" \
|
||||||
|
TARGET_BOOTLOADER_BOARD_NAME="$(TARGET_BOOTLOADER_BOARD_NAME)" \
|
||||||
|
TARGET_BOARD_PLATFORM="$(TARGET_BOARD_PLATFORM)" \
|
||||||
|
bash $(DEVICE_BUILDINFO_SH) "odm" >> $@
|
||||||
|
$(hide) echo "#" >> $@; \
|
||||||
|
echo "# ADDITIONAL ODM BUILD PROPERTIES" >> $@; \
|
||||||
|
echo "#" >> $@;
|
||||||
|
$(hide) $(foreach line,$(FINAL_ODM_BUILD_PROPERTIES), \
|
||||||
|
echo "$(line)" >> $@;)
|
||||||
|
$(hide) build/make/tools/post_process_props.py $@
|
||||||
|
|
||||||
# -----------------------------------------------------------------
|
# -----------------------------------------------------------------
|
||||||
# product-services build.prop
|
# product-services build.prop
|
||||||
|
@ -1136,7 +1169,7 @@ endif
|
||||||
ifneq (true,$(TARGET_USERIMAGES_SPARSE_SQUASHFS_DISABLED))
|
ifneq (true,$(TARGET_USERIMAGES_SPARSE_SQUASHFS_DISABLED))
|
||||||
INTERNAL_USERIMAGES_SPARSE_SQUASHFS_FLAG := -s
|
INTERNAL_USERIMAGES_SPARSE_SQUASHFS_FLAG := -s
|
||||||
endif
|
endif
|
||||||
ifneq ($(filter $(BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE) $(BOARD_PRODUCT_SERVICESIMAGE_FILE_SYSTEM_TYPE) $(BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE) $(BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE),squashfs),)
|
ifneq ($(filter $(BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE) $(BOARD_PRODUCT_SERVICESIMAGE_FILE_SYSTEM_TYPE) $(BOARD_ODMIMAGE_FILE_SYSTEM_TYPE) $(BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE) $(BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE),squashfs),)
|
||||||
INTERNAL_USERIMAGES_DEPS += $(MAKE_SQUASHFS) $(MKSQUASHFSUSERIMG) $(IMG2SIMG)
|
INTERNAL_USERIMAGES_DEPS += $(MAKE_SQUASHFS) $(MKSQUASHFSUSERIMG) $(IMG2SIMG)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -1170,7 +1203,7 @@ endif
|
||||||
endif # PRODUCT_USE_LOGICAL_PARTITIONS
|
endif # PRODUCT_USE_LOGICAL_PARTITIONS
|
||||||
|
|
||||||
# $(1): the path of the output dictionary file
|
# $(1): the path of the output dictionary file
|
||||||
# $(2): a subset of "system vendor cache userdata product product_services oem"
|
# $(2): a subset of "system vendor cache userdata product product_services oem odm"
|
||||||
# $(3): additional "key=value" pairs to append to the dictionary file.
|
# $(3): additional "key=value" pairs to append to the dictionary file.
|
||||||
define generate-image-prop-dictionary
|
define generate-image-prop-dictionary
|
||||||
$(if $(filter $(2),system),\
|
$(if $(filter $(2),system),\
|
||||||
|
@ -1233,6 +1266,19 @@ $(if $(filter $(2),product_services),\
|
||||||
$(if $(BOARD_PRODUCT_SERVICESIMAGE_SQUASHFS_DISABLE_4K_ALIGN),$(hide) echo "product_services_squashfs_disable_4k_align=$(BOARD_PRODUCT_SERVICESIMAGE_SQUASHFS_DISABLE_4K_ALIGN)" >> $(1))
|
$(if $(BOARD_PRODUCT_SERVICESIMAGE_SQUASHFS_DISABLE_4K_ALIGN),$(hide) echo "product_services_squashfs_disable_4k_align=$(BOARD_PRODUCT_SERVICESIMAGE_SQUASHFS_DISABLE_4K_ALIGN)" >> $(1))
|
||||||
$(if $(BOARD_PRODUCT_SERVICESIMAGE_PARTITION_RESERVED_SIZE),$(hide) echo "product_services_reserved_size=$(BOARD_PRODUCT_SERVICESIMAGE_PARTITION_RESERVED_SIZE)" >> $(1))
|
$(if $(BOARD_PRODUCT_SERVICESIMAGE_PARTITION_RESERVED_SIZE),$(hide) echo "product_services_reserved_size=$(BOARD_PRODUCT_SERVICESIMAGE_PARTITION_RESERVED_SIZE)" >> $(1))
|
||||||
)
|
)
|
||||||
|
$(if $(filter $(2),odm),\
|
||||||
|
$(if $(BOARD_ODMIMAGE_FILE_SYSTEM_TYPE),$(hide) echo "odm_fs_type=$(BOARD_ODMIMAGE_FILE_SYSTEM_TYPE)" >> $(1))
|
||||||
|
$(if $(BOARD_ODMIMAGE_EXTFS_INODE_COUNT),$(hide) echo "odm_extfs_inode_count=$(BOARD_ODMIMAGE_EXTFS_INODE_COUNT)" >> $(1))
|
||||||
|
$(if $(BOARD_ODMIMAGE_EXTFS_RSV_PCT),$(hide) echo "odm_extfs_rsv_pct=$(BOARD_ODMIMAGE_EXTFS_RSV_PCT)" >> $(1))
|
||||||
|
$(if $(BOARD_ODMIMAGE_PARTITION_SIZE),$(hide) echo "odm_size=$(BOARD_ODMIMAGE_PARTITION_SIZE)" >> $(1))
|
||||||
|
$(if $(BOARD_ODMIMAGE_JOURNAL_SIZE),$(hide) echo "odm_journal_size=$(BOARD_ODMIMAGE_JOURNAL_SIZE)" >> $(1))
|
||||||
|
$(if $(BOARD_ODMIMAGE_SQUASHFS_COMPRESSOR),$(hide) echo "odm_squashfs_compressor=$(BOARD_ODMIMAGE_SQUASHFS_COMPRESSOR)" >> $(1))
|
||||||
|
$(if $(BOARD_ODMIMAGE_SQUASHFS_COMPRESSOR_OPT),$(hide) echo "odm_squashfs_compressor_opt=$(BOARD_ODMIMAGE_SQUASHFS_COMPRESSOR_OPT)" >> $(1))
|
||||||
|
$(if $(BOARD_ODMIMAGE_SQUASHFS_BLOCK_SIZE),$(hide) echo "odm_squashfs_block_size=$(BOARD_ODMIMAGE_SQUASHFS_BLOCK_SIZE)" >> $(1))
|
||||||
|
$(if $(BOARD_ODMIMAGE_SQUASHFS_DISABLE_4K_ALIGN),$(hide) echo "odm_squashfs_disable_4k_align=$(BOARD_ODMIMAGE_SQUASHFS_DISABLE_4K_ALIGN)" >> $(1))
|
||||||
|
$(if $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_ODM_BASE_FS_PATH),$(hide) echo "odm_base_fs_file=$(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_ODM_BASE_FS_PATH)" >> $(1))
|
||||||
|
$(if $(BOARD_ODMIMAGE_PARTITION_RESERVED_SIZE),$(hide) echo "odm_reserved_size=$(BOARD_ODMIMAGE_PARTITION_RESERVED_SIZE)" >> $(1))
|
||||||
|
)
|
||||||
$(if $(filter $(2),oem),\
|
$(if $(filter $(2),oem),\
|
||||||
$(if $(BOARD_OEMIMAGE_PARTITION_SIZE),$(hide) echo "oem_size=$(BOARD_OEMIMAGE_PARTITION_SIZE)" >> $(1))
|
$(if $(BOARD_OEMIMAGE_PARTITION_SIZE),$(hide) echo "oem_size=$(BOARD_OEMIMAGE_PARTITION_SIZE)" >> $(1))
|
||||||
$(if $(BOARD_OEMIMAGE_JOURNAL_SIZE),$(hide) echo "oem_journal_size=$(BOARD_OEMIMAGE_JOURNAL_SIZE)" >> $(1))
|
$(if $(BOARD_OEMIMAGE_JOURNAL_SIZE),$(hide) echo "oem_journal_size=$(BOARD_OEMIMAGE_JOURNAL_SIZE)" >> $(1))
|
||||||
|
@ -1240,6 +1286,7 @@ $(if $(filter $(2),oem),\
|
||||||
$(if $(BOARD_OEMIMAGE_EXTFS_RSV_PCT),$(hide) echo "oem_extfs_rsv_pct=$(BOARD_OEMIMAGE_EXTFS_RSV_PCT)" >> $(1))
|
$(if $(BOARD_OEMIMAGE_EXTFS_RSV_PCT),$(hide) echo "oem_extfs_rsv_pct=$(BOARD_OEMIMAGE_EXTFS_RSV_PCT)" >> $(1))
|
||||||
)
|
)
|
||||||
$(hide) echo "ext_mkuserimg=$(notdir $(MKEXTUSERIMG))" >> $(1)
|
$(hide) echo "ext_mkuserimg=$(notdir $(MKEXTUSERIMG))" >> $(1)
|
||||||
|
|
||||||
$(if $(INTERNAL_USERIMAGES_EXT_VARIANT),$(hide) echo "fs_type=$(INTERNAL_USERIMAGES_EXT_VARIANT)" >> $(1))
|
$(if $(INTERNAL_USERIMAGES_EXT_VARIANT),$(hide) echo "fs_type=$(INTERNAL_USERIMAGES_EXT_VARIANT)" >> $(1))
|
||||||
$(if $(INTERNAL_USERIMAGES_SPARSE_EXT_FLAG),$(hide) echo "extfs_sparse_flag=$(INTERNAL_USERIMAGES_SPARSE_EXT_FLAG)" >> $(1))
|
$(if $(INTERNAL_USERIMAGES_SPARSE_EXT_FLAG),$(hide) echo "extfs_sparse_flag=$(INTERNAL_USERIMAGES_SPARSE_EXT_FLAG)" >> $(1))
|
||||||
$(if $(INTERNAL_USERIMAGES_SPARSE_SQUASHFS_FLAG),$(hide) echo "squashfs_sparse_flag=$(INTERNAL_USERIMAGES_SPARSE_SQUASHFS_FLAG)" >> $(1))
|
$(if $(INTERNAL_USERIMAGES_SPARSE_SQUASHFS_FLAG),$(hide) echo "squashfs_sparse_flag=$(INTERNAL_USERIMAGES_SPARSE_SQUASHFS_FLAG)" >> $(1))
|
||||||
|
@ -1292,6 +1339,13 @@ $(if $(BOARD_AVB_ENABLE),\
|
||||||
$(hide) echo "avb_product_services_key_path=$(BOARD_AVB_PRODUCT_SERVICES_KEY_PATH)" >> $(1)
|
$(hide) echo "avb_product_services_key_path=$(BOARD_AVB_PRODUCT_SERVICES_KEY_PATH)" >> $(1)
|
||||||
$(hide) echo "avb_product_services_algorithm=$(BOARD_AVB_PRODUCT_SERVICES_ALGORITHM)" >> $(1)
|
$(hide) echo "avb_product_services_algorithm=$(BOARD_AVB_PRODUCT_SERVICES_ALGORITHM)" >> $(1)
|
||||||
$(hide) echo "avb_product_services_rollback_index_location=$(BOARD_AVB_PRODUCT_SERVICES_ROLLBACK_INDEX_LOCATION)" >> $(1)))
|
$(hide) echo "avb_product_services_rollback_index_location=$(BOARD_AVB_PRODUCT_SERVICES_ROLLBACK_INDEX_LOCATION)" >> $(1)))
|
||||||
|
$(if $(BOARD_AVB_ENABLE),$(hide) echo "avb_odm_hashtree_enable=$(BOARD_AVB_ENABLE)" >> $(1))
|
||||||
|
$(if $(BOARD_AVB_ENABLE),$(hide) echo "avb_odm_add_hashtree_footer_args=$(BOARD_AVB_ODM_ADD_HASHTREE_FOOTER_ARGS)" >> $(1))
|
||||||
|
$(if $(BOARD_AVB_ENABLE),\
|
||||||
|
$(if $(BOARD_AVB_ODM_KEY_PATH),\
|
||||||
|
$(hide) echo "avb_odm_key_path=$(BOARD_AVB_ODM_KEY_PATH)" >> $(1)
|
||||||
|
$(hide) echo "avb_odm_algorithm=$(BOARD_AVB_ODM_ALGORITHM)" >> $(1)
|
||||||
|
$(hide) echo "avb_odm_rollback_index_location=$(BOARD_AVB_ODM_ROLLBACK_INDEX_LOCATION)" >> $(1)))
|
||||||
$(if $(filter true,$(BOARD_USES_RECOVERY_AS_BOOT)),\
|
$(if $(filter true,$(BOARD_USES_RECOVERY_AS_BOOT)),\
|
||||||
$(hide) echo "recovery_as_boot=true" >> $(1))
|
$(hide) echo "recovery_as_boot=true" >> $(1))
|
||||||
$(if $(filter true,$(BOARD_BUILD_SYSTEM_ROOT_IMAGE)),\
|
$(if $(filter true,$(BOARD_BUILD_SYSTEM_ROOT_IMAGE)),\
|
||||||
|
@ -1304,7 +1358,7 @@ endef
|
||||||
# $(1): the path of the output dictionary file
|
# $(1): the path of the output dictionary file
|
||||||
# $(2): additional "key=value" pairs to append to the dictionary file.
|
# $(2): additional "key=value" pairs to append to the dictionary file.
|
||||||
define generate-userimage-prop-dictionary
|
define generate-userimage-prop-dictionary
|
||||||
$(call generate-image-prop-dictionary,$(1),system vendor cache userdata product product_services oem,$(2))
|
$(call generate-image-prop-dictionary,$(1),system vendor cache userdata product product_services oem odm,$(2))
|
||||||
endef
|
endef
|
||||||
|
|
||||||
# $(1): the path of the input dictionary file, where each line has the format key=value
|
# $(1): the path of the input dictionary file, where each line has the format key=value
|
||||||
|
@ -1468,6 +1522,7 @@ $(INSTALLED_RECOVERY_BUILD_PROP_TARGET): \
|
||||||
$(INSTALLED_VENDOR_DEFAULT_PROP_TARGET) \
|
$(INSTALLED_VENDOR_DEFAULT_PROP_TARGET) \
|
||||||
$(intermediate_system_build_prop) \
|
$(intermediate_system_build_prop) \
|
||||||
$(INSTALLED_VENDOR_BUILD_PROP_TARGET) \
|
$(INSTALLED_VENDOR_BUILD_PROP_TARGET) \
|
||||||
|
$(INSTALLED_ODM_BUILD_PROP_TARGET) \
|
||||||
$(INSTALLED_PRODUCT_BUILD_PROP_TARGET) \
|
$(INSTALLED_PRODUCT_BUILD_PROP_TARGET) \
|
||||||
$(INSTALLED_PRODUCT_SERVICES_BUILD_PROP_TARGET)
|
$(INSTALLED_PRODUCT_SERVICES_BUILD_PROP_TARGET)
|
||||||
@echo "Target recovery buildinfo: $@
|
@echo "Target recovery buildinfo: $@
|
||||||
|
@ -1477,6 +1532,7 @@ $(INSTALLED_RECOVERY_BUILD_PROP_TARGET): \
|
||||||
$(hide) cat $(INSTALLED_VENDOR_DEFAULT_PROP_TARGET) >> $@
|
$(hide) cat $(INSTALLED_VENDOR_DEFAULT_PROP_TARGET) >> $@
|
||||||
$(hide) cat $(intermediate_system_build_prop) >> $@
|
$(hide) cat $(intermediate_system_build_prop) >> $@
|
||||||
$(hide) cat $(INSTALLED_VENDOR_BUILD_PROP_TARGET) >> $@
|
$(hide) cat $(INSTALLED_VENDOR_BUILD_PROP_TARGET) >> $@
|
||||||
|
$(hide) cat $(INSTALLED_ODM_BUILD_PROP_TARGET) >> $@
|
||||||
$(hide) cat $(INSTALLED_PRODUCT_BUILD_PROP_TARGET) >> $@
|
$(hide) cat $(INSTALLED_PRODUCT_BUILD_PROP_TARGET) >> $@
|
||||||
$(hide) cat $(INSTALLED_PRODUCT_SERVICES_BUILD_PROP_TARGET) >> $@
|
$(hide) cat $(INSTALLED_PRODUCT_SERVICES_BUILD_PROP_TARGET) >> $@
|
||||||
$(call append-recovery-ui-properties,$(PRIVATE_RECOVERY_UI_PROPERTIES),$@)
|
$(call append-recovery-ui-properties,$(PRIVATE_RECOVERY_UI_PROPERTIES),$@)
|
||||||
|
@ -1755,6 +1811,21 @@ define create-system-product-services-symlink
|
||||||
endef
|
endef
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Create symlink /vendor/odm to /odm if necessary.
|
||||||
|
ifdef BOARD_USES_ODMIMAGE
|
||||||
|
define create-vendor-odm-symlink
|
||||||
|
$(hide) if [ -d $(TARGET_OUT_VENDOR)/odm ] && [ ! -h $(TARGET_OUT_VENDOR)/odm ]; then \
|
||||||
|
echo 'Non-symlink $(TARGET_OUT_VENDOR)/odm detected!' 1>&2; \
|
||||||
|
echo 'You cannot install files to $(TARGET_OUT_VENDOR)/odm while building a separate odm.img!' 1>&2; \
|
||||||
|
exit 1; \
|
||||||
|
fi
|
||||||
|
$(hide) ln -sf /odm $(TARGET_OUT_VENDOR)/odm
|
||||||
|
endef
|
||||||
|
else
|
||||||
|
define create-vendor-odm-symlink
|
||||||
|
endef
|
||||||
|
endif
|
||||||
|
|
||||||
# $(1): output file
|
# $(1): output file
|
||||||
define build-systemimage-target
|
define build-systemimage-target
|
||||||
@echo "Target system fs image: $(1)"
|
@echo "Target system fs image: $(1)"
|
||||||
|
@ -1929,6 +2000,10 @@ ifdef BOARD_PRODUCT_SERVICESIMAGE_FILE_SYSTEM_TYPE
|
||||||
$(hide) cd $(dir $@) && zip -qryX $(notdir $@) \
|
$(hide) cd $(dir $@) && zip -qryX $(notdir $@) \
|
||||||
$(TARGET_COPY_OUT_PRODUCT_SERVICES)
|
$(TARGET_COPY_OUT_PRODUCT_SERVICES)
|
||||||
endif
|
endif
|
||||||
|
ifdef BOARD_ODMIMAGE_FILE_SYSTEM_TYPE
|
||||||
|
$(hide) cd $(dir $@) && zip -qryX $(notdir $@) \
|
||||||
|
$(TARGET_COPY_OUT_ODM)
|
||||||
|
endif
|
||||||
ifneq ($(PDK_PLATFORM_JAVA_ZIP_CONTENTS),)
|
ifneq ($(PDK_PLATFORM_JAVA_ZIP_CONTENTS),)
|
||||||
$(hide) cd $(OUT_DIR) && zip -qryX $(patsubst $(OUT_DIR)/%,%,$@) $(PDK_PLATFORM_JAVA_ZIP_CONTENTS)
|
$(hide) cd $(OUT_DIR) && zip -qryX $(patsubst $(OUT_DIR)/%,%,$@) $(PDK_PLATFORM_JAVA_ZIP_CONTENTS)
|
||||||
endif
|
endif
|
||||||
|
@ -2246,6 +2321,7 @@ BUILT_VENDORIMAGE_TARGET := $(PRODUCT_OUT)/vendor.img
|
||||||
define build-vendorimage-target
|
define build-vendorimage-target
|
||||||
$(call pretty,"Target vendor fs image: $(INSTALLED_VENDORIMAGE_TARGET)")
|
$(call pretty,"Target vendor fs image: $(INSTALLED_VENDORIMAGE_TARGET)")
|
||||||
@mkdir -p $(TARGET_OUT_VENDOR)
|
@mkdir -p $(TARGET_OUT_VENDOR)
|
||||||
|
$(call create-vendor-odm-symlink)
|
||||||
@mkdir -p $(vendorimage_intermediates) && rm -rf $(vendorimage_intermediates)/vendor_image_info.txt
|
@mkdir -p $(vendorimage_intermediates) && rm -rf $(vendorimage_intermediates)/vendor_image_info.txt
|
||||||
$(call generate-image-prop-dictionary, $(vendorimage_intermediates)/vendor_image_info.txt,vendor,skip_fsck=true)
|
$(call generate-image-prop-dictionary, $(vendorimage_intermediates)/vendor_image_info.txt,vendor,skip_fsck=true)
|
||||||
$(if $(BOARD_VENDOR_KERNEL_MODULES), \
|
$(if $(BOARD_VENDOR_KERNEL_MODULES), \
|
||||||
|
@ -2388,6 +2464,62 @@ INSTALLED_PRODUCT_SERVICESIMAGE_TARGET := $(PRODUCT_OUT)/product-services.img
|
||||||
$(eval $(call copy-one-file,$(BOARD_PREBUILT_PRODUCT_SERVICESIMAGE),$(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET)))
|
$(eval $(call copy-one-file,$(BOARD_PREBUILT_PRODUCT_SERVICESIMAGE),$(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET)))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------
|
||||||
|
# odm partition image
|
||||||
|
ifdef BOARD_ODMIMAGE_FILE_SYSTEM_TYPE
|
||||||
|
INTERNAL_ODMIMAGE_FILES := \
|
||||||
|
$(filter $(TARGET_OUT_ODM)/%,\
|
||||||
|
$(ALL_DEFAULT_INSTALLED_MODULES)\
|
||||||
|
$(ALL_PDK_FUSION_FILES)) \
|
||||||
|
$(PDK_FUSION_SYMLINK_STAMP)
|
||||||
|
# platform.zip depends on $(INTERNAL_ODMIMAGE_FILES).
|
||||||
|
$(INSTALLED_PLATFORM_ZIP) : $(INTERNAL_ODMIMAGE_FILES)
|
||||||
|
|
||||||
|
INSTALLED_FILES_FILE_ODM := $(PRODUCT_OUT)/installed-files-odm.txt
|
||||||
|
INSTALLED_FILES_JSON_ODM := $(INSTALLED_FILES_FILE_ODM:.txt=.json)
|
||||||
|
$(INSTALLED_FILES_FILE_ODM): .KATI_IMPLICIT_OUTPUTS := $(INSTALLED_FILES_JSON_ODM)
|
||||||
|
$(INSTALLED_FILES_FILE_ODM) : $(INTERNAL_ODMIMAGE_FILES) $(FILESLIST)
|
||||||
|
@echo Installed file list: $@
|
||||||
|
@mkdir -p $(dir $@)
|
||||||
|
@rm -f $@
|
||||||
|
$(hide) $(FILESLIST) $(TARGET_OUT_ODM) > $(@:.txt=.json)
|
||||||
|
$(hide) build/tools/fileslist_util.py -c $(@:.txt=.json) > $@
|
||||||
|
|
||||||
|
odmimage_intermediates := \
|
||||||
|
$(call intermediates-dir-for,PACKAGING,odm)
|
||||||
|
BUILT_ODMIMAGE_TARGET := $(PRODUCT_OUT)/odm.img
|
||||||
|
define build-odmimage-target
|
||||||
|
$(call pretty,"Target odm fs image: $(INSTALLED_ODMIMAGE_TARGET)")
|
||||||
|
@mkdir -p $(TARGET_OUT_ODM)
|
||||||
|
@mkdir -p $(odmimage_intermediates) && rm -rf $(odmimage_intermediates)/odm_image_info.txt
|
||||||
|
$(call generate-userimage-prop-dictionary, $(odmimage_intermediates)/odm_image_info.txt, skip_fsck=true)
|
||||||
|
$(if $(BOARD_ODM_KERNEL_MODULES), \
|
||||||
|
$(call build-image-kernel-modules,$(BOARD_ODM_KERNEL_MODULES),$(TARGET_OUT_ODM),odm/,$(call intermediates-dir-for,PACKAGING,depmod_odm)))
|
||||||
|
$(hide) PATH=$(foreach p,$(INTERNAL_USERIMAGES_BINARY_PATHS),$(p):)$$PATH \
|
||||||
|
./build/tools/releasetools/build_image.py \
|
||||||
|
$(TARGET_OUT_ODM) $(odmimage_intermediates)/odm_image_info.txt $(INSTALLED_ODMIMAGE_TARGET) $(TARGET_OUT) \
|
||||||
|
$(odmimage_intermediates)/generated_odm_image_info.txt
|
||||||
|
$(hide) $(call assert-max-image-size,$(INSTALLED_ODMIMAGE_TARGET),\
|
||||||
|
$(call read-image-prop-dictionary,\
|
||||||
|
$(odmimage_intermediates)/generated_odm_image_info.txt,odm_size))
|
||||||
|
endef
|
||||||
|
|
||||||
|
# We just build this directly to the install location.
|
||||||
|
INSTALLED_ODMIMAGE_TARGET := $(BUILT_ODMIMAGE_TARGET)
|
||||||
|
$(INSTALLED_ODMIMAGE_TARGET): $(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_ODMIMAGE_FILES) $(INSTALLED_FILES_FILE_ODM) $(BUILD_IMAGE_SRCS) $(DEPMOD) $(BOARD_ODM_KERNEL_MODULES)
|
||||||
|
$(build-odmimage-target)
|
||||||
|
|
||||||
|
.PHONY: odmimage-nodeps onod
|
||||||
|
odmimage-nodeps onod: | $(INTERNAL_USERIMAGES_DEPS) $(DEPMOD)
|
||||||
|
$(build-odmimage-target)
|
||||||
|
|
||||||
|
sync: $(INTERNAL_ODMIMAGE_FILES)
|
||||||
|
|
||||||
|
else ifdef BOARD_PREBUILT_ODMIMAGE
|
||||||
|
INSTALLED_ODMIMAGE_TARGET := $(PRODUCT_OUT)/odm.img
|
||||||
|
$(eval $(call copy-one-file,$(BOARD_PREBUILT_ODMIMAGE),$(INSTALLED_ODMIMAGE_TARGET)))
|
||||||
|
endif
|
||||||
|
|
||||||
# -----------------------------------------------------------------
|
# -----------------------------------------------------------------
|
||||||
# dtbo image
|
# dtbo image
|
||||||
ifdef BOARD_PREBUILT_DTBOIMAGE
|
ifdef BOARD_PREBUILT_DTBOIMAGE
|
||||||
|
@ -2433,6 +2565,7 @@ VENDOR_FOOTER_ARGS := BOARD_AVB_VENDOR_ADD_HASHTREE_FOOTER_ARGS
|
||||||
RECOVERY_FOOTER_ARGS := BOARD_AVB_RECOVERY_ADD_HASH_FOOTER_ARGS
|
RECOVERY_FOOTER_ARGS := BOARD_AVB_RECOVERY_ADD_HASH_FOOTER_ARGS
|
||||||
PRODUCT_FOOTER_ARGS := BOARD_AVB_PRODUCT_ADD_HASHTREE_FOOTER_ARGS
|
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
|
||||||
|
|
||||||
# Check and set required build variables for a chain partition.
|
# Check and set required build variables for a chain 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.
|
||||||
|
@ -2494,6 +2627,15 @@ INTERNAL_AVB_MAKE_VBMETA_IMAGE_ARGS += \
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifdef INSTALLED_ODMIMAGE_TARGET
|
||||||
|
ifdef BOARD_AVB_ODM_KEY_PATH
|
||||||
|
$(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
|
||||||
|
|
||||||
ifdef INSTALLED_DTBOIMAGE_TARGET
|
ifdef INSTALLED_DTBOIMAGE_TARGET
|
||||||
ifdef BOARD_AVB_DTBO_KEY_PATH
|
ifdef BOARD_AVB_DTBO_KEY_PATH
|
||||||
$(eval $(call check-and-set-avb-chain-args,DTBO))
|
$(eval $(call check-and-set-avb-chain-args,DTBO))
|
||||||
|
@ -2553,6 +2695,9 @@ define extract-avb-chain-public-keys
|
||||||
$(if $(BOARD_AVB_PRODUCT_SERVICES_KEY_PATH),\
|
$(if $(BOARD_AVB_PRODUCT_SERVICES_KEY_PATH),\
|
||||||
$(hide) $(AVBTOOL) extract_public_key --key $(BOARD_AVB_PRODUCT_SERVICES_KEY_PATH) \
|
$(hide) $(AVBTOOL) extract_public_key --key $(BOARD_AVB_PRODUCT_SERVICES_KEY_PATH) \
|
||||||
--output $(1)/product-services.avbpubkey)
|
--output $(1)/product-services.avbpubkey)
|
||||||
|
$(if $(BOARD_AVB_ODM_KEY_PATH),\
|
||||||
|
$(hide) $(AVBTOOL) extract_public_key --key $(BOARD_AVB_ODM_KEY_PATH) \
|
||||||
|
--output $(1)/odm.avbpubkey)
|
||||||
$(if $(BOARD_AVB_DTBO_KEY_PATH),\
|
$(if $(BOARD_AVB_DTBO_KEY_PATH),\
|
||||||
$(hide) $(AVBTOOL) extract_public_key --key $(BOARD_AVB_DTBO_KEY_PATH) \
|
$(hide) $(AVBTOOL) extract_public_key --key $(BOARD_AVB_DTBO_KEY_PATH) \
|
||||||
--output $(1)/dtbo.avbpubkey)
|
--output $(1)/dtbo.avbpubkey)
|
||||||
|
@ -2581,6 +2726,7 @@ $(INSTALLED_VBMETAIMAGE_TARGET): \
|
||||||
$(INSTALLED_VENDORIMAGE_TARGET) \
|
$(INSTALLED_VENDORIMAGE_TARGET) \
|
||||||
$(INSTALLED_PRODUCTIMAGE_TARGET) \
|
$(INSTALLED_PRODUCTIMAGE_TARGET) \
|
||||||
$(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET) \
|
$(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET) \
|
||||||
|
$(INSTALLED_ODMIMAGE_TARGET) \
|
||||||
$(INSTALLED_DTBOIMAGE_TARGET) \
|
$(INSTALLED_DTBOIMAGE_TARGET) \
|
||||||
$(INSTALLED_RECOVERYIMAGE_TARGET) \
|
$(INSTALLED_RECOVERYIMAGE_TARGET) \
|
||||||
$(BOARD_AVB_KEY_PATH)
|
$(BOARD_AVB_KEY_PATH)
|
||||||
|
@ -2935,6 +3081,7 @@ $(BUILT_TARGET_FILES_PACKAGE): \
|
||||||
$(INSTALLED_PRODUCTIMAGE_TARGET) \
|
$(INSTALLED_PRODUCTIMAGE_TARGET) \
|
||||||
$(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET) \
|
$(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET) \
|
||||||
$(INSTALLED_VBMETAIMAGE_TARGET) \
|
$(INSTALLED_VBMETAIMAGE_TARGET) \
|
||||||
|
$(INSTALLED_ODMIMAGE_TARGET) \
|
||||||
$(INSTALLED_DTBOIMAGE_TARGET) \
|
$(INSTALLED_DTBOIMAGE_TARGET) \
|
||||||
$(INTERNAL_SYSTEMOTHERIMAGE_FILES) \
|
$(INTERNAL_SYSTEMOTHERIMAGE_FILES) \
|
||||||
$(INSTALLED_ANDROID_INFO_TXT_TARGET) \
|
$(INSTALLED_ANDROID_INFO_TXT_TARGET) \
|
||||||
|
@ -2944,6 +3091,7 @@ $(BUILT_TARGET_FILES_PACKAGE): \
|
||||||
$(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_VENDOR_BASE_FS_PATH) \
|
$(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_VENDOR_BASE_FS_PATH) \
|
||||||
$(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PRODUCT_BASE_FS_PATH) \
|
$(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PRODUCT_BASE_FS_PATH) \
|
||||||
$(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PRODUCT_SERVICES_BASE_FS_PATH) \
|
$(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PRODUCT_SERVICES_BASE_FS_PATH) \
|
||||||
|
$(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_ODM_BASE_FS_PATH) \
|
||||||
$(SELINUX_FC) \
|
$(SELINUX_FC) \
|
||||||
$(APKCERTS_FILE) \
|
$(APKCERTS_FILE) \
|
||||||
$(SOONG_ZIP) \
|
$(SOONG_ZIP) \
|
||||||
|
@ -2960,6 +3108,7 @@ $(BUILT_TARGET_FILES_PACKAGE): \
|
||||||
$(call create-system-vendor-symlink)
|
$(call create-system-vendor-symlink)
|
||||||
$(call create-system-product-symlink)
|
$(call create-system-product-symlink)
|
||||||
$(call create-system-product-services-symlink)
|
$(call create-system-product-services-symlink)
|
||||||
|
$(call create-vendor-odm-symlink)
|
||||||
$(hide) rm -rf $@ $@.list $(zip_root)
|
$(hide) rm -rf $@ $@.list $(zip_root)
|
||||||
$(hide) mkdir -p $(dir $@) $(zip_root)
|
$(hide) mkdir -p $(dir $@) $(zip_root)
|
||||||
ifneq (,$(INSTALLED_RECOVERYIMAGE_TARGET)$(filter true,$(BOARD_USES_RECOVERY_AS_BOOT)))
|
ifneq (,$(INSTALLED_RECOVERYIMAGE_TARGET)$(filter true,$(BOARD_USES_RECOVERY_AS_BOOT)))
|
||||||
|
@ -3038,6 +3187,11 @@ ifdef BOARD_PRODUCT_SERVICESIMAGE_FILE_SYSTEM_TYPE
|
||||||
$(hide) $(call package_files-copy-root, \
|
$(hide) $(call package_files-copy-root, \
|
||||||
$(TARGET_OUT_PRODUCT_SERVICES),$(zip_root)/PRODUCT-SERVICES)
|
$(TARGET_OUT_PRODUCT_SERVICES),$(zip_root)/PRODUCT-SERVICES)
|
||||||
endif
|
endif
|
||||||
|
ifdef BOARD_ODMIMAGE_FILE_SYSTEM_TYPE
|
||||||
|
@# Contents of the odm image
|
||||||
|
$(hide) $(call package_files-copy-root, \
|
||||||
|
$(TARGET_OUT_ODM),$(zip_root)/ODM)
|
||||||
|
endif
|
||||||
ifdef INSTALLED_SYSTEMOTHERIMAGE_TARGET
|
ifdef INSTALLED_SYSTEMOTHERIMAGE_TARGET
|
||||||
@# Contents of the system_other image
|
@# Contents of the system_other image
|
||||||
$(hide) $(call package_files-copy-root, \
|
$(hide) $(call package_files-copy-root, \
|
||||||
|
@ -3113,6 +3267,10 @@ ifneq ($(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PRODUCT_SERVICES_BASE_FS_PATH),)
|
||||||
$(hide) cp $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PRODUCT_SERVICES_BASE_FS_PATH) \
|
$(hide) cp $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PRODUCT_SERVICES_BASE_FS_PATH) \
|
||||||
$(zip_root)/META/$(notdir $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PRODUCT_SERVICES_BASE_FS_PATH))
|
$(zip_root)/META/$(notdir $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PRODUCT_SERVICES_BASE_FS_PATH))
|
||||||
endif
|
endif
|
||||||
|
ifneq ($(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_ODM_BASE_FS_PATH),)
|
||||||
|
$(hide) cp $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_ODM_BASE_FS_PATH) \
|
||||||
|
$(zip_root)/META/$(notdir $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_ODM_BASE_FS_PATH))
|
||||||
|
endif
|
||||||
ifneq ($(strip $(SANITIZE_TARGET)),)
|
ifneq ($(strip $(SANITIZE_TARGET)),)
|
||||||
# We need to create userdata.img with real data because the instrumented libraries are in userdata.img.
|
# We need to create userdata.img with real data because the instrumented libraries are in userdata.img.
|
||||||
$(hide) echo "userdata_img_with_data=true" >> $(zip_root)/META/misc_info.txt
|
$(hide) echo "userdata_img_with_data=true" >> $(zip_root)/META/misc_info.txt
|
||||||
|
@ -3197,6 +3355,10 @@ ifdef BOARD_PREBUILT_BOOTIMAGE
|
||||||
$(hide) mkdir -p $(zip_root)/IMAGES
|
$(hide) mkdir -p $(zip_root)/IMAGES
|
||||||
$(hide) cp $(INSTALLED_BOOTIMAGE_TARGET) $(zip_root)/IMAGES/
|
$(hide) cp $(INSTALLED_BOOTIMAGE_TARGET) $(zip_root)/IMAGES/
|
||||||
endif
|
endif
|
||||||
|
ifdef BOARD_PREBUILT_ODMIMAGE
|
||||||
|
$(hide) mkdir -p $(zip_root)/IMAGES
|
||||||
|
$(hide) cp $(INSTALLED_ODMIMAGE_TARGET) $(zip_root)/IMAGES/
|
||||||
|
endif
|
||||||
ifdef BOARD_PREBUILT_DTBOIMAGE
|
ifdef BOARD_PREBUILT_DTBOIMAGE
|
||||||
$(hide) mkdir -p $(zip_root)/PREBUILT_IMAGES
|
$(hide) mkdir -p $(zip_root)/PREBUILT_IMAGES
|
||||||
$(hide) cp $(INSTALLED_DTBOIMAGE_TARGET) $(zip_root)/PREBUILT_IMAGES/
|
$(hide) cp $(INSTALLED_DTBOIMAGE_TARGET) $(zip_root)/PREBUILT_IMAGES/
|
||||||
|
@ -3229,6 +3391,9 @@ endif
|
||||||
ifdef BOARD_PRODUCT_SERVICESIMAGE_FILE_SYSTEM_TYPE
|
ifdef BOARD_PRODUCT_SERVICESIMAGE_FILE_SYSTEM_TYPE
|
||||||
$(hide) $(call fs_config,$(zip_root)/PRODUCT_SERVICES,product-services/) > $(zip_root)/META/product_services_filesystem_config.txt
|
$(hide) $(call fs_config,$(zip_root)/PRODUCT_SERVICES,product-services/) > $(zip_root)/META/product_services_filesystem_config.txt
|
||||||
endif
|
endif
|
||||||
|
ifdef BOARD_ODMIMAGE_FILE_SYSTEM_TYPE
|
||||||
|
$(hide) $(call fs_config,$(zip_root)/ODM,odm/) > $(zip_root)/META/odm_filesystem_config.txt
|
||||||
|
endif
|
||||||
ifeq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true)
|
ifeq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true)
|
||||||
@# When using BOARD_BUILD_SYSTEM_ROOT_IMAGE, ROOT always contains the files for the root under
|
@# When using BOARD_BUILD_SYSTEM_ROOT_IMAGE, ROOT always contains the files for the root under
|
||||||
@# normal boot. BOOT/RAMDISK exists only if additionally using BOARD_USES_RECOVERY_AS_BOOT.
|
@# normal boot. BOOT/RAMDISK exists only if additionally using BOARD_USES_RECOVERY_AS_BOOT.
|
||||||
|
@ -3375,6 +3540,7 @@ $(SYMBOLS_ZIP): $(INSTALLED_SYSTEMIMAGE) \
|
||||||
$(INSTALLED_VENDORIMAGE_TARGET) \
|
$(INSTALLED_VENDORIMAGE_TARGET) \
|
||||||
$(INSTALLED_PRODUCTIMAGE_TARGET) \
|
$(INSTALLED_PRODUCTIMAGE_TARGET) \
|
||||||
$(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET) \
|
$(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET) \
|
||||||
|
$(INSTALLED_ODMIMAGE_TARGET) \
|
||||||
$(updater_dep)
|
$(updater_dep)
|
||||||
endif
|
endif
|
||||||
$(SYMBOLS_ZIP): PRIVATE_LIST_FILE := $(call intermediates-dir-for,PACKAGING,symbols)/filelist
|
$(SYMBOLS_ZIP): PRIVATE_LIST_FILE := $(call intermediates-dir-for,PACKAGING,symbols)/filelist
|
||||||
|
@ -3399,7 +3565,8 @@ $(COVERAGE_ZIP): $(INSTALLED_SYSTEMIMAGE) \
|
||||||
$(INSTALLED_USERDATAIMAGE_TARGET) \
|
$(INSTALLED_USERDATAIMAGE_TARGET) \
|
||||||
$(INSTALLED_VENDORIMAGE_TARGET) \
|
$(INSTALLED_VENDORIMAGE_TARGET) \
|
||||||
$(INSTALLED_PRODUCTIMAGE_TARGET) \
|
$(INSTALLED_PRODUCTIMAGE_TARGET) \
|
||||||
$(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET)
|
$(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET) \
|
||||||
|
$(INSTALLED_ODMIMAGE_TARGET)
|
||||||
endif
|
endif
|
||||||
$(COVERAGE_ZIP): PRIVATE_LIST_FILE := $(call intermediates-dir-for,PACKAGING,coverage)/filelist
|
$(COVERAGE_ZIP): PRIVATE_LIST_FILE := $(call intermediates-dir-for,PACKAGING,coverage)/filelist
|
||||||
$(COVERAGE_ZIP): $(SOONG_ZIP)
|
$(COVERAGE_ZIP): $(SOONG_ZIP)
|
||||||
|
@ -3517,6 +3684,15 @@ $(INSTALLED_QEMU_PRODUCT_SERVICESIMAGE): $(INSTALLED_PRODUCT_SERVICESIMAGE_TARGE
|
||||||
productservicesimage: $(INSTALLED_QEMU_PRODUCT_SERVICESIMAGE)
|
productservicesimage: $(INSTALLED_QEMU_PRODUCT_SERVICESIMAGE)
|
||||||
droidcore: $(INSTALLED_QEMU_PRODUCT_SERVICESIMAGE)
|
droidcore: $(INSTALLED_QEMU_PRODUCT_SERVICESIMAGE)
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(BOARD_USES_ODMIMAGE),true)
|
||||||
|
INSTALLED_QEMU_ODMIMAGE := $(PRODUCT_OUT)/odm-qemu.img
|
||||||
|
$(INSTALLED_QEMU_ODMIMAGE): $(INSTALLED_ODMIMAGE_TARGET) $(MK_QEMU_IMAGE_SH) $(SGDISK_HOST)
|
||||||
|
@echo Create odm-qemu.img
|
||||||
|
(export SGDISK=$(SGDISK_HOST); $(MK_QEMU_IMAGE_SH) ${PRODUCT_OUT}/odm.img)
|
||||||
|
|
||||||
|
odmimage: $(INSTALLED_QEMU_ODMIMAGE)
|
||||||
|
droidcore: $(INSTALLED_QEMU_ODMIMAGE)
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
# -----------------------------------------------------------------
|
# -----------------------------------------------------------------
|
||||||
# The emulator package
|
# The emulator package
|
||||||
|
|
|
@ -978,6 +978,13 @@ $(error Should not define BOARD_VENDORIMAGE_PARTITION_SIZE and \
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifneq ($(BOARD_ODMIMAGE_PARTITION_SIZE),)
|
||||||
|
ifneq ($(BOARD_ODMIMAGE_PARTITION_RESERVED_SIZE),)
|
||||||
|
$(error Should not define BOARD_ODMIMAGE_PARTITION_SIZE and \
|
||||||
|
BOARD_ODMIMAGE_PARTITION_RESERVED_SIZE together)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
ifneq ($(BOARD_PRODUCTIMAGE_PARTITION_SIZE),)
|
ifneq ($(BOARD_PRODUCTIMAGE_PARTITION_SIZE),)
|
||||||
ifneq ($(BOARD_PRODUCTIMAGE_PARTITION_RESERVED_SIZE),)
|
ifneq ($(BOARD_PRODUCTIMAGE_PARTITION_RESERVED_SIZE),)
|
||||||
$(error Should not define BOARD_PRODUCTIMAGE_PARTITION_SIZE and \
|
$(error Should not define BOARD_PRODUCTIMAGE_PARTITION_SIZE and \
|
||||||
|
@ -1177,6 +1184,7 @@ dont_bother_goals := out \
|
||||||
vnod vendorimage-nodeps \
|
vnod vendorimage-nodeps \
|
||||||
pnod productimage-nodeps \
|
pnod productimage-nodeps \
|
||||||
psnod productservicesimage-nodeps \
|
psnod productservicesimage-nodeps \
|
||||||
|
onod odmimage-nodeps \
|
||||||
systemotherimage-nodeps \
|
systemotherimage-nodeps \
|
||||||
ramdisk-nodeps \
|
ramdisk-nodeps \
|
||||||
bootimage-nodeps \
|
bootimage-nodeps \
|
||||||
|
|
|
@ -222,6 +222,17 @@ _product_services_path_placeholder := ||PRODUCT-SERVICES-PATH-PH||
|
||||||
TARGET_COPY_OUT_PRODUCT_SERVICES := $(_product_services_path_placeholder)
|
TARGET_COPY_OUT_PRODUCT_SERVICES := $(_product_services_path_placeholder)
|
||||||
###########################################
|
###########################################
|
||||||
|
|
||||||
|
###########################################
|
||||||
|
# Define TARGET_COPY_OUT_ODM to a placeholder, for at this point
|
||||||
|
# we don't know if the device wants to build a separate odm.img
|
||||||
|
# or just build odm stuff into vendor.img.
|
||||||
|
# A device can set up TARGET_COPY_OUT_ODM to "odm" in its
|
||||||
|
# BoardConfig.mk.
|
||||||
|
# We'll substitute with the real value after loading BoardConfig.mk.
|
||||||
|
_odm_path_placeholder := ||ODM-PATH-PH||
|
||||||
|
TARGET_COPY_OUT_ODM := $(_odm_path_placeholder)
|
||||||
|
###########################################
|
||||||
|
|
||||||
#################################################################
|
#################################################################
|
||||||
# Set up minimal BOOTCLASSPATH list of jars to build/execute
|
# Set up minimal BOOTCLASSPATH list of jars to build/execute
|
||||||
# java code with dalvikvm/art.
|
# java code with dalvikvm/art.
|
||||||
|
@ -375,6 +386,28 @@ else ifdef BOARD_USES_PRODUCT_SERVICESIMAGE
|
||||||
$(error TARGET_COPY_OUT_PRODUCT_SERVICES must be set to 'product-services' to use a product-services image)
|
$(error TARGET_COPY_OUT_PRODUCT_SERVICES must be set to 'product-services' to use a product-services image)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
###########################################
|
||||||
|
# Now we can substitute with the real value of TARGET_COPY_OUT_ODM
|
||||||
|
ifeq ($(TARGET_COPY_OUT_ODM),$(_odm_path_placeholder))
|
||||||
|
TARGET_COPY_OUT_ODM := vendor/odm
|
||||||
|
else ifeq ($(filter odm vendor/odm,$(TARGET_COPY_OUT_ODM)),)
|
||||||
|
$(error TARGET_COPY_OUT_ODM must be either 'odm' or 'vendor/odm', seeing '$(TARGET_COPY_OUT_ODM)'.)
|
||||||
|
endif
|
||||||
|
PRODUCT_COPY_FILES := $(subst $(_odm_path_placeholder),$(TARGET_COPY_OUT_ODM),$(PRODUCT_COPY_FILES))
|
||||||
|
|
||||||
|
BOARD_USES_ODMIMAGE :=
|
||||||
|
ifdef BOARD_PREBUILT_ODMIMAGE
|
||||||
|
BOARD_USES_ODMIMAGE := true
|
||||||
|
endif
|
||||||
|
ifdef BOARD_ODMIMAGE_FILE_SYSTEM_TYPE
|
||||||
|
BOARD_USES_ODMIMAGE := true
|
||||||
|
endif
|
||||||
|
ifeq ($(TARGET_COPY_OUT_ODM),odm)
|
||||||
|
BOARD_USES_ODMIMAGE := true
|
||||||
|
else ifdef BOARD_USES_ODMIMAGE
|
||||||
|
$(error TARGET_COPY_OUT_ODM must be set to 'odm' to use an odm image)
|
||||||
|
endif
|
||||||
|
|
||||||
###########################################
|
###########################################
|
||||||
# Ensure that only TARGET_RECOVERY_UPDATER_LIBS *or* AB_OTA_UPDATER is set.
|
# Ensure that only TARGET_RECOVERY_UPDATER_LIBS *or* AB_OTA_UPDATER is set.
|
||||||
TARGET_RECOVERY_UPDATER_LIBS ?=
|
TARGET_RECOVERY_UPDATER_LIBS ?=
|
||||||
|
@ -839,32 +872,58 @@ $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_APPS := $(TARGET_OUT_OEM_APPS)
|
||||||
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_APPS \
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_APPS \
|
||||||
|
|
||||||
TARGET_OUT_ODM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ODM)
|
TARGET_OUT_ODM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ODM)
|
||||||
TARGET_OUT_ODM_EXECUTABLES := $(TARGET_OUT_ODM)/bin
|
ifneq ($(filter address,$(SANITIZE_TARGET)),)
|
||||||
ifeq ($(TARGET_IS_64_BIT),true)
|
target_out_odm_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/odm
|
||||||
TARGET_OUT_ODM_SHARED_LIBRARIES := $(TARGET_OUT_ODM)/lib64
|
ifeq ($(SANITIZE_LITE),true)
|
||||||
|
# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not
|
||||||
|
# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/.
|
||||||
|
target_out_odm_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/odm
|
||||||
else
|
else
|
||||||
TARGET_OUT_ODM_SHARED_LIBRARIES := $(TARGET_OUT_ODM)/lib
|
target_out_odm_app_base := $(TARGET_OUT_ODM)
|
||||||
endif
|
endif
|
||||||
TARGET_OUT_ODM_APPS := $(TARGET_OUT_ODM)/app
|
else
|
||||||
|
target_out_odm_shared_libraries_base := $(TARGET_OUT_ODM)
|
||||||
|
target_out_odm_app_base := $(TARGET_OUT_ODM)
|
||||||
|
endif
|
||||||
|
|
||||||
|
TARGET_OUT_ODM_EXECUTABLES := $(TARGET_OUT_ODM)/bin
|
||||||
|
TARGET_OUT_ODM_OPTIONAL_EXECUTABLES := $(TARGET_OUT_ODM)/xbin
|
||||||
|
ifeq ($(TARGET_IS_64_BIT),true)
|
||||||
|
TARGET_OUT_ODM_SHARED_LIBRARIES := $(target_out_odm_shared_libraries_base)/lib64
|
||||||
|
else
|
||||||
|
TARGET_OUT_ODM_SHARED_LIBRARIES := $(target_out_odm_shared_libraries_base)/lib
|
||||||
|
endif
|
||||||
|
TARGET_OUT_ODM_RENDERSCRIPT_BITCODE := $(TARGET_OUT_ODM_SHARED_LIBRARIES)
|
||||||
|
TARGET_OUT_ODM_JAVA_LIBRARIES := $(TARGET_OUT_ODM)/framework
|
||||||
|
TARGET_OUT_ODM_APPS := $(target_out_odm_app_base)/app
|
||||||
|
TARGET_OUT_ODM_APPS_PRIVILEGED := $(target_out_odm_app_base)/priv-app
|
||||||
TARGET_OUT_ODM_ETC := $(TARGET_OUT_ODM)/etc
|
TARGET_OUT_ODM_ETC := $(TARGET_OUT_ODM)/etc
|
||||||
.KATI_READONLY := \
|
.KATI_READONLY := \
|
||||||
TARGET_OUT_ODM \
|
TARGET_OUT_ODM \
|
||||||
TARGET_OUT_ODM_EXECUTABLES \
|
TARGET_OUT_ODM_EXECUTABLES \
|
||||||
|
TARGET_OUT_ODM_OPTIONAL_EXECUTABLES \
|
||||||
TARGET_OUT_ODM_SHARED_LIBRARIES \
|
TARGET_OUT_ODM_SHARED_LIBRARIES \
|
||||||
|
TARGET_OUT_ODM_RENDERSCRIPT_BITCODE \
|
||||||
|
TARGET_OUT_ODM_JAVA_LIBRARIES \
|
||||||
TARGET_OUT_ODM_APPS \
|
TARGET_OUT_ODM_APPS \
|
||||||
|
TARGET_OUT_ODM_APPS_PRIVILEGED \
|
||||||
TARGET_OUT_ODM_ETC
|
TARGET_OUT_ODM_ETC
|
||||||
|
|
||||||
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_EXECUTABLES := $(TARGET_OUT_ODM_EXECUTABLES)
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_EXECUTABLES := $(TARGET_OUT_ODM_EXECUTABLES)
|
||||||
ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true)
|
ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true)
|
||||||
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES := $(TARGET_OUT_ODM)/lib/$(TARGET_2ND_ARCH)
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES := $(target_out_odm_shared_libraries_base)/lib/$(TARGET_2ND_ARCH)
|
||||||
else
|
else
|
||||||
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES := $(TARGET_OUT_ODM)/lib
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES := $(target_out_odm_shared_libraries_base)/lib
|
||||||
endif
|
endif
|
||||||
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_RENDERSCRIPT_BITCODE := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES)
|
||||||
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS := $(TARGET_OUT_ODM_APPS)
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS := $(TARGET_OUT_ODM_APPS)
|
||||||
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS_PRIVILEGED := $(TARGET_OUT_ODM_APPS_PRIVILEGED)
|
||||||
.KATI_READONLY := \
|
.KATI_READONLY := \
|
||||||
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_EXECUTABLES \
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_EXECUTABLES \
|
||||||
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES \
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES \
|
||||||
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_RENDERSCRIPT_BITCODE \
|
||||||
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS \
|
||||||
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS_PRIVILEGED
|
||||||
|
|
||||||
TARGET_OUT_PRODUCT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_PRODUCT)
|
TARGET_OUT_PRODUCT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_PRODUCT)
|
||||||
TARGET_OUT_PRODUCT_EXECUTABLES := $(TARGET_OUT_PRODUCT)/bin
|
TARGET_OUT_PRODUCT_EXECUTABLES := $(TARGET_OUT_PRODUCT)/bin
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
#Set LOCAL_USE_VNDK for modules going into vendor partition, except for host modules
|
#Set LOCAL_USE_VNDK for modules going into vendor or odm partition, except for host modules
|
||||||
#If LOCAL_SDK_VERSION is set, thats a more restrictive set, so they dont need LOCAL_USE_VNDK
|
#If LOCAL_SDK_VERSION is set, thats a more restrictive set, so they dont need LOCAL_USE_VNDK
|
||||||
ifndef LOCAL_IS_HOST_MODULE
|
ifndef LOCAL_IS_HOST_MODULE
|
||||||
ifndef LOCAL_SDK_VERSION
|
ifndef LOCAL_SDK_VERSION
|
||||||
|
|
|
@ -1202,6 +1202,9 @@ productimage: $(INSTALLED_PRODUCTIMAGE_TARGET)
|
||||||
.PHONY: productservicesimage
|
.PHONY: productservicesimage
|
||||||
productservicesimage: $(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET)
|
productservicesimage: $(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET)
|
||||||
|
|
||||||
|
.PHONY: odmimage
|
||||||
|
odmimage: $(INSTALLED_ODMIMAGE_TARGET)
|
||||||
|
|
||||||
.PHONY: systemotherimage
|
.PHONY: systemotherimage
|
||||||
systemotherimage: $(INSTALLED_SYSTEMOTHERIMAGE_TARGET)
|
systemotherimage: $(INSTALLED_SYSTEMOTHERIMAGE_TARGET)
|
||||||
|
|
||||||
|
@ -1228,12 +1231,15 @@ droidcore: files \
|
||||||
$(INSTALLED_CACHEIMAGE_TARGET) \
|
$(INSTALLED_CACHEIMAGE_TARGET) \
|
||||||
$(INSTALLED_BPTIMAGE_TARGET) \
|
$(INSTALLED_BPTIMAGE_TARGET) \
|
||||||
$(INSTALLED_VENDORIMAGE_TARGET) \
|
$(INSTALLED_VENDORIMAGE_TARGET) \
|
||||||
|
$(INSTALLED_ODMIMAGE_TARGET) \
|
||||||
$(INSTALLED_PRODUCTIMAGE_TARGET) \
|
$(INSTALLED_PRODUCTIMAGE_TARGET) \
|
||||||
$(INSTALLED_SYSTEMOTHERIMAGE_TARGET) \
|
$(INSTALLED_SYSTEMOTHERIMAGE_TARGET) \
|
||||||
$(INSTALLED_FILES_FILE) \
|
$(INSTALLED_FILES_FILE) \
|
||||||
$(INSTALLED_FILES_JSON) \
|
$(INSTALLED_FILES_JSON) \
|
||||||
$(INSTALLED_FILES_FILE_VENDOR) \
|
$(INSTALLED_FILES_FILE_VENDOR) \
|
||||||
$(INSTALLED_FILES_JSON_VENDOR) \
|
$(INSTALLED_FILES_JSON_VENDOR) \
|
||||||
|
$(INSTALLED_FILES_FILE_ODM) \
|
||||||
|
$(INSTALLED_FILES_JSON_ODM) \
|
||||||
$(INSTALLED_FILES_FILE_PRODUCT) \
|
$(INSTALLED_FILES_FILE_PRODUCT) \
|
||||||
$(INSTALLED_FILES_JSON_PRODUCT) \
|
$(INSTALLED_FILES_JSON_PRODUCT) \
|
||||||
$(INSTALLED_FILES_FILE_PRODUCT_SERVICES) \
|
$(INSTALLED_FILES_FILE_PRODUCT_SERVICES) \
|
||||||
|
@ -1307,6 +1313,8 @@ else # TARGET_BUILD_APPS
|
||||||
$(INSTALLED_FILES_JSON) \
|
$(INSTALLED_FILES_JSON) \
|
||||||
$(INSTALLED_FILES_FILE_VENDOR) \
|
$(INSTALLED_FILES_FILE_VENDOR) \
|
||||||
$(INSTALLED_FILES_JSON_VENDOR) \
|
$(INSTALLED_FILES_JSON_VENDOR) \
|
||||||
|
$(INSTALLED_FILES_FILE_ODM) \
|
||||||
|
$(INSTALLED_FILES_JSON_ODM) \
|
||||||
$(INSTALLED_FILES_FILE_PRODUCT) \
|
$(INSTALLED_FILES_FILE_PRODUCT) \
|
||||||
$(INSTALLED_FILES_JSON_PRODUCT) \
|
$(INSTALLED_FILES_JSON_PRODUCT) \
|
||||||
$(INSTALLED_FILES_FILE_PRODUCT_SERVICES) \
|
$(INSTALLED_FILES_FILE_PRODUCT_SERVICES) \
|
||||||
|
|
|
@ -106,6 +106,7 @@ $(OUT_DIR)/products/$(strip $(1)).txt: $(this_makefile)
|
||||||
$(hide) echo 'PRODUCT_SYSTEM_DEFAULT_PROPERTIES=$$(PRODUCTS.$(strip $(1)).PRODUCT_SYSTEM_DEFAULT_PROPERTIES)' >> $$@
|
$(hide) echo 'PRODUCT_SYSTEM_DEFAULT_PROPERTIES=$$(PRODUCTS.$(strip $(1)).PRODUCT_SYSTEM_DEFAULT_PROPERTIES)' >> $$@
|
||||||
$(hide) echo 'PRODUCT_PRODUCT_PROPERTIES=$$(PRODUCTS.$(strip $(1)).PRODUCT_PRODUCT_PROPERTIES)' >> $$@
|
$(hide) echo 'PRODUCT_PRODUCT_PROPERTIES=$$(PRODUCTS.$(strip $(1)).PRODUCT_PRODUCT_PROPERTIES)' >> $$@
|
||||||
$(hide) echo 'PRODUCT_PRODUCT_SERVICES_PROPERTIES=$$(PRODUCTS.$(strip $(1)).PRODUCT_PRODUCT_SERVICES_PROPERTIES)' >> $$@
|
$(hide) echo 'PRODUCT_PRODUCT_SERVICES_PROPERTIES=$$(PRODUCTS.$(strip $(1)).PRODUCT_PRODUCT_SERVICES_PROPERTIES)' >> $$@
|
||||||
|
$(hide) echo 'PRODUCT_ODM_PROPERTIES=$$(PRODUCTS.$(strip $(1)).PRODUCT_ODM_PROPERTIES)' >> $$@
|
||||||
$(hide) echo 'PRODUCT_CHARACTERISTICS=$$(PRODUCTS.$(strip $(1)).PRODUCT_CHARACTERISTICS)' >> $$@
|
$(hide) echo 'PRODUCT_CHARACTERISTICS=$$(PRODUCTS.$(strip $(1)).PRODUCT_CHARACTERISTICS)' >> $$@
|
||||||
$(hide) echo 'PRODUCT_COPY_FILES=$$(PRODUCTS.$(strip $(1)).PRODUCT_COPY_FILES)' >> $$@
|
$(hide) echo 'PRODUCT_COPY_FILES=$$(PRODUCTS.$(strip $(1)).PRODUCT_COPY_FILES)' >> $$@
|
||||||
$(hide) echo 'PRODUCT_OTA_PUBLIC_KEYS=$$(PRODUCTS.$(strip $(1)).PRODUCT_OTA_PUBLIC_KEYS)' >> $$@
|
$(hide) echo 'PRODUCT_OTA_PUBLIC_KEYS=$$(PRODUCTS.$(strip $(1)).PRODUCT_OTA_PUBLIC_KEYS)' >> $$@
|
||||||
|
|
|
@ -129,6 +129,7 @@ _product_var_list := \
|
||||||
PRODUCT_DEFAULT_PROPERTY_OVERRIDES \
|
PRODUCT_DEFAULT_PROPERTY_OVERRIDES \
|
||||||
PRODUCT_PRODUCT_PROPERTIES \
|
PRODUCT_PRODUCT_PROPERTIES \
|
||||||
PRODUCT_PRODUCT_SERVICES_PROPERTIES \
|
PRODUCT_PRODUCT_SERVICES_PROPERTIES \
|
||||||
|
PRODUCT_ODM_PROPERTIES \
|
||||||
PRODUCT_CHARACTERISTICS \
|
PRODUCT_CHARACTERISTICS \
|
||||||
PRODUCT_COPY_FILES \
|
PRODUCT_COPY_FILES \
|
||||||
PRODUCT_OTA_PUBLIC_KEYS \
|
PRODUCT_OTA_PUBLIC_KEYS \
|
||||||
|
@ -169,6 +170,7 @@ _product_var_list := \
|
||||||
PRODUCT_VENDOR_VERITY_PARTITION \
|
PRODUCT_VENDOR_VERITY_PARTITION \
|
||||||
PRODUCT_PRODUCT_VERITY_PARTITION \
|
PRODUCT_PRODUCT_VERITY_PARTITION \
|
||||||
PRODUCT_PRODUCT_SERVICES_VERITY_PARTITION \
|
PRODUCT_PRODUCT_SERVICES_VERITY_PARTITION \
|
||||||
|
PRODUCT_ODM_VERITY_PARTITION \
|
||||||
PRODUCT_SYSTEM_SERVER_DEBUG_INFO \
|
PRODUCT_SYSTEM_SERVER_DEBUG_INFO \
|
||||||
PRODUCT_OTHER_JAVA_DEBUG_INFO \
|
PRODUCT_OTHER_JAVA_DEBUG_INFO \
|
||||||
PRODUCT_DEX_PREOPT_MODULE_CONFIGS \
|
PRODUCT_DEX_PREOPT_MODULE_CONFIGS \
|
||||||
|
@ -185,6 +187,7 @@ _product_var_list := \
|
||||||
PRODUCT_VENDOR_BASE_FS_PATH \
|
PRODUCT_VENDOR_BASE_FS_PATH \
|
||||||
PRODUCT_PRODUCT_BASE_FS_PATH \
|
PRODUCT_PRODUCT_BASE_FS_PATH \
|
||||||
PRODUCT_PRODUCT_SERVICES_BASE_FS_PATH \
|
PRODUCT_PRODUCT_SERVICES_BASE_FS_PATH \
|
||||||
|
PRODUCT_ODM_BASE_FS_PATH \
|
||||||
PRODUCT_SHIPPING_API_LEVEL \
|
PRODUCT_SHIPPING_API_LEVEL \
|
||||||
VENDOR_PRODUCT_RESTRICT_VENDOR_FILES \
|
VENDOR_PRODUCT_RESTRICT_VENDOR_FILES \
|
||||||
VENDOR_EXCEPTION_MODULES \
|
VENDOR_EXCEPTION_MODULES \
|
||||||
|
@ -386,6 +389,8 @@ _product_stash_var_list += \
|
||||||
BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE \
|
BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE \
|
||||||
BOARD_PRODUCT_SERVICESIMAGE_PARTITION_SIZE \
|
BOARD_PRODUCT_SERVICESIMAGE_PARTITION_SIZE \
|
||||||
BOARD_PRODUCT_SERVICESIMAGE_FILE_SYSTEM_TYPE \
|
BOARD_PRODUCT_SERVICESIMAGE_FILE_SYSTEM_TYPE \
|
||||||
|
BOARD_ODMIMAGE_PARTITION_SIZE \
|
||||||
|
BOARD_ODMIMAGE_FILE_SYSTEM_TYPE \
|
||||||
BOARD_INSTALLER_CMDLINE \
|
BOARD_INSTALLER_CMDLINE \
|
||||||
|
|
||||||
|
|
||||||
|
@ -398,6 +403,7 @@ _product_stash_var_list += \
|
||||||
_product_stash_var_list += \
|
_product_stash_var_list += \
|
||||||
BOARD_SYSTEMIMAGE_PARTITION_RESERVED_SIZE \
|
BOARD_SYSTEMIMAGE_PARTITION_RESERVED_SIZE \
|
||||||
BOARD_VENDORIMAGE_PARTITION_RESERVED_SIZE \
|
BOARD_VENDORIMAGE_PARTITION_RESERVED_SIZE \
|
||||||
|
BOARD_ODMIMAGE_PARTITION_RESERVED_SIZE \
|
||||||
BOARD_PRODUCTIMAGE_PARTITION_RESERVED_SIZE \
|
BOARD_PRODUCTIMAGE_PARTITION_RESERVED_SIZE \
|
||||||
BOARD_PRODUCT_SERVICESIMAGE_PARTITION_RESERVED_SIZE \
|
BOARD_PRODUCT_SERVICESIMAGE_PARTITION_RESERVED_SIZE \
|
||||||
BOARD_SUPER_PARTITION_SIZE \
|
BOARD_SUPER_PARTITION_SIZE \
|
||||||
|
|
2
help.sh
2
help.sh
|
@ -42,6 +42,8 @@ Common goals are:
|
||||||
Stands for "Product, NO Dependencies"
|
Stands for "Product, NO Dependencies"
|
||||||
psnod Quickly rebuild the product-services image from built packages
|
psnod Quickly rebuild the product-services image from built packages
|
||||||
Stands for "ProductServices, NO Dependencies"
|
Stands for "ProductServices, NO Dependencies"
|
||||||
|
onod Quickly rebuild the odm image from built packages
|
||||||
|
Stands for "ODM, NO Dependencies"
|
||||||
|
|
||||||
|
|
||||||
So, for example, you could run:
|
So, for example, you could run:
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
partition="$1"
|
||||||
|
|
||||||
|
if [ "$#" -ne 1 ]; then
|
||||||
|
echo "Usage: $0 <vendor|odm>" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$partition" != "vendor" ] && [ "$partition" != "odm" ]; then
|
||||||
|
echo "Unknown partition name: $partition" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "# begin build properties"
|
||||||
|
echo "# autogenerated by device_buildinfo.sh"
|
||||||
|
|
||||||
|
echo "ro.${partition}.build.id=$BUILD_ID"
|
||||||
|
echo "ro.${partition}.build.version.incremental=$BUILD_NUMBER"
|
||||||
|
echo "ro.${partition}.build.version.sdk=$PLATFORM_SDK_VERSION"
|
||||||
|
echo "ro.${partition}.build.version.release=$PLATFORM_VERSION"
|
||||||
|
echo "ro.${partition}.build.type=$TARGET_BUILD_TYPE"
|
||||||
|
echo "ro.${partition}.build.tags=$BUILD_VERSION_TAGS"
|
||||||
|
|
||||||
|
echo "ro.product.board=$TARGET_BOOTLOADER_BOARD_NAME"
|
||||||
|
echo "ro.board.platform=$TARGET_BOARD_PLATFORM"
|
||||||
|
|
||||||
|
echo "ro.product.${partition}.manufacturer=$PRODUCT_MANUFACTURER"
|
||||||
|
echo "ro.product.${partition}.model=$PRODUCT_MODEL"
|
||||||
|
echo "ro.product.${partition}.brand=$PRODUCT_BRAND"
|
||||||
|
echo "ro.product.${partition}.name=$PRODUCT_NAME"
|
||||||
|
echo "ro.product.${partition}.device=$TARGET_DEVICE"
|
||||||
|
|
||||||
|
echo "# end build properties"
|
|
@ -73,12 +73,14 @@ OPTIONS.replace_verity_private_key = False
|
||||||
OPTIONS.is_signing = False
|
OPTIONS.is_signing = False
|
||||||
|
|
||||||
# Partitions that should have their care_map added to META/care_map.txt.
|
# Partitions that should have their care_map added to META/care_map.txt.
|
||||||
PARTITIONS_WITH_CARE_MAP = ('system', 'vendor', 'product', 'product-services')
|
PARTITIONS_WITH_CARE_MAP = ('system', 'vendor', 'product', 'product-services',
|
||||||
|
'odm')
|
||||||
# Use a fixed timestamp (01/01/2009 00:00:00 UTC) for files when packaging
|
# Use a fixed timestamp (01/01/2009 00:00:00 UTC) for files when packaging
|
||||||
# images. (b/24377993, b/80600931)
|
# images. (b/24377993, b/80600931)
|
||||||
FIXED_FILE_TIMESTAMP = (datetime.datetime(2009, 1, 1, 0, 0, 0, 0, None)
|
FIXED_FILE_TIMESTAMP = (datetime.datetime(2009, 1, 1, 0, 0, 0, 0, None)
|
||||||
- datetime.datetime.utcfromtimestamp(0)).total_seconds()
|
- datetime.datetime.utcfromtimestamp(0)).total_seconds()
|
||||||
|
|
||||||
|
|
||||||
class OutputFile(object):
|
class OutputFile(object):
|
||||||
def __init__(self, output_zip, input_dir, prefix, name):
|
def __init__(self, output_zip, input_dir, prefix, name):
|
||||||
self._output_zip = output_zip
|
self._output_zip = output_zip
|
||||||
|
@ -215,6 +217,22 @@ def AddProductServices(output_zip):
|
||||||
return img.name
|
return img.name
|
||||||
|
|
||||||
|
|
||||||
|
def AddOdm(output_zip):
|
||||||
|
"""Turn the contents of ODM into an odm image and store it in output_zip."""
|
||||||
|
|
||||||
|
img = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES", "odm.img")
|
||||||
|
if os.path.exists(img.input_name):
|
||||||
|
print("odm.img already exists; no need to rebuild...")
|
||||||
|
return img.input_name
|
||||||
|
|
||||||
|
block_list = OutputFile(
|
||||||
|
output_zip, OPTIONS.input_tmp, "IMAGES", "odm.map")
|
||||||
|
CreateImage(
|
||||||
|
OPTIONS.input_tmp, OPTIONS.info_dict, "odm", img,
|
||||||
|
block_list=block_list)
|
||||||
|
return img.name
|
||||||
|
|
||||||
|
|
||||||
def AddDtbo(output_zip):
|
def AddDtbo(output_zip):
|
||||||
"""Adds the DTBO image.
|
"""Adds the DTBO image.
|
||||||
|
|
||||||
|
@ -631,7 +649,7 @@ def AddImagesToTargetFiles(filename):
|
||||||
|
|
||||||
has_recovery = OPTIONS.info_dict.get("no_recovery") != "true"
|
has_recovery = OPTIONS.info_dict.get("no_recovery") != "true"
|
||||||
|
|
||||||
# {vendor,product,product-services}.img are unlike system.img or
|
# {vendor,odm,product,product-services}.img are unlike system.img or
|
||||||
# system_other.img. Because it could be built from source, or dropped into
|
# system_other.img. Because it could be built from source, or dropped into
|
||||||
# target_files.zip as a prebuilt blob. We consider either of them as
|
# target_files.zip as a prebuilt blob. We consider either of them as
|
||||||
# {vendor,product,product-services}.img being available, which could be
|
# {vendor,product,product-services}.img being available, which could be
|
||||||
|
@ -639,6 +657,9 @@ def AddImagesToTargetFiles(filename):
|
||||||
has_vendor = (os.path.isdir(os.path.join(OPTIONS.input_tmp, "VENDOR")) or
|
has_vendor = (os.path.isdir(os.path.join(OPTIONS.input_tmp, "VENDOR")) or
|
||||||
os.path.exists(os.path.join(OPTIONS.input_tmp, "IMAGES",
|
os.path.exists(os.path.join(OPTIONS.input_tmp, "IMAGES",
|
||||||
"vendor.img")))
|
"vendor.img")))
|
||||||
|
has_odm = (os.path.isdir(os.path.join(OPTIONS.input_tmp, "ODM")) or
|
||||||
|
os.path.exists(os.path.join(OPTIONS.input_tmp, "IMAGES",
|
||||||
|
"odm.img")))
|
||||||
has_product = (os.path.isdir(os.path.join(OPTIONS.input_tmp, "PRODUCT")) or
|
has_product = (os.path.isdir(os.path.join(OPTIONS.input_tmp, "PRODUCT")) or
|
||||||
os.path.exists(os.path.join(OPTIONS.input_tmp, "IMAGES",
|
os.path.exists(os.path.join(OPTIONS.input_tmp, "IMAGES",
|
||||||
"product.img")))
|
"product.img")))
|
||||||
|
@ -727,6 +748,10 @@ def AddImagesToTargetFiles(filename):
|
||||||
banner("product-services")
|
banner("product-services")
|
||||||
partitions['product-services'] = AddProductServices(output_zip)
|
partitions['product-services'] = AddProductServices(output_zip)
|
||||||
|
|
||||||
|
if has_odm:
|
||||||
|
banner("odm")
|
||||||
|
partitions['odm'] = AddOdm(output_zip)
|
||||||
|
|
||||||
if has_system_other:
|
if has_system_other:
|
||||||
banner("system_other")
|
banner("system_other")
|
||||||
AddSystemOther(output_zip)
|
AddSystemOther(output_zip)
|
||||||
|
|
|
@ -931,6 +931,26 @@ def ImagePropFromGlobalDict(glob_dict, mount_point):
|
||||||
if not copy_prop("product_services_extfs_rsv_pct", "extfs_rsv_pct"):
|
if not copy_prop("product_services_extfs_rsv_pct", "extfs_rsv_pct"):
|
||||||
d["extfs_rsv_pct"] = "0"
|
d["extfs_rsv_pct"] = "0"
|
||||||
copy_prop("product_services_reserved_size", "partition_reserved_size")
|
copy_prop("product_services_reserved_size", "partition_reserved_size")
|
||||||
|
elif mount_point == "odm":
|
||||||
|
copy_prop("avb_odm_hashtree_enable", "avb_hashtree_enable")
|
||||||
|
copy_prop("avb_odm_add_hashtree_footer_args",
|
||||||
|
"avb_add_hashtree_footer_args")
|
||||||
|
copy_prop("avb_odm_key_path", "avb_key_path")
|
||||||
|
copy_prop("avb_odm_algorithm", "avb_algorithm")
|
||||||
|
copy_prop("odm_fs_type", "fs_type")
|
||||||
|
copy_prop("odm_size", "partition_size")
|
||||||
|
if not copy_prop("odm_journal_size", "journal_size"):
|
||||||
|
d["journal_size"] = "0"
|
||||||
|
copy_prop("odm_verity_block_device", "verity_block_device")
|
||||||
|
copy_prop("odm_squashfs_compressor", "squashfs_compressor")
|
||||||
|
copy_prop("odm_squashfs_compressor_opt", "squashfs_compressor_opt")
|
||||||
|
copy_prop("odm_squashfs_block_size", "squashfs_block_size")
|
||||||
|
copy_prop("odm_squashfs_disable_4k_align", "squashfs_disable_4k_align")
|
||||||
|
copy_prop("odm_base_fs_file", "base_fs_file")
|
||||||
|
copy_prop("odm_extfs_inode_count", "extfs_inode_count")
|
||||||
|
if not copy_prop("odm_extfs_rsv_pct", "extfs_rsv_pct"):
|
||||||
|
d["extfs_rsv_pct"] = "0"
|
||||||
|
copy_prop("odm_reserved_size", "partition_reserved_size")
|
||||||
elif mount_point == "oem":
|
elif mount_point == "oem":
|
||||||
copy_prop("fs_type", "fs_type")
|
copy_prop("fs_type", "fs_type")
|
||||||
copy_prop("oem_size", "partition_size")
|
copy_prop("oem_size", "partition_size")
|
||||||
|
@ -976,6 +996,8 @@ def GlobalDictFromImageProp(image_prop, mount_point):
|
||||||
copy_prop(size_property, "system_size")
|
copy_prop(size_property, "system_size")
|
||||||
elif mount_point == "vendor":
|
elif mount_point == "vendor":
|
||||||
copy_prop(size_property, "vendor_size")
|
copy_prop(size_property, "vendor_size")
|
||||||
|
elif mount_point == "odm":
|
||||||
|
copy_prop(size_property, "odm_size")
|
||||||
elif mount_point == "product":
|
elif mount_point == "product":
|
||||||
copy_prop(size_property, "product_size")
|
copy_prop(size_property, "product_size")
|
||||||
elif mount_point == "product-services":
|
elif mount_point == "product-services":
|
||||||
|
@ -1017,6 +1039,8 @@ def main(argv):
|
||||||
mount_point = "cache"
|
mount_point = "cache"
|
||||||
elif image_filename == "vendor.img":
|
elif image_filename == "vendor.img":
|
||||||
mount_point = "vendor"
|
mount_point = "vendor"
|
||||||
|
elif image_filename == "odm.img":
|
||||||
|
mount_point = "odm"
|
||||||
elif image_filename == "oem.img":
|
elif image_filename == "oem.img":
|
||||||
mount_point = "oem"
|
mount_point = "oem"
|
||||||
elif image_filename == "product.img":
|
elif image_filename == "product.img":
|
||||||
|
|
|
@ -79,7 +79,7 @@ SPECIAL_CERT_STRINGS = ("PRESIGNED", "EXTERNAL")
|
||||||
|
|
||||||
# The partitions allowed to be signed by AVB (Android verified boot 2.0).
|
# The partitions allowed to be signed by AVB (Android verified boot 2.0).
|
||||||
AVB_PARTITIONS = ('boot', 'recovery', 'system', 'vendor', 'product',
|
AVB_PARTITIONS = ('boot', 'recovery', 'system', 'vendor', 'product',
|
||||||
'product-services', 'dtbo')
|
'product-services', 'dtbo', 'odm')
|
||||||
|
|
||||||
|
|
||||||
class ErrorCode(object):
|
class ErrorCode(object):
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
echo "# begin build properties"
|
|
||||||
echo "# autogenerated by vendor_buildinfo.sh"
|
|
||||||
|
|
||||||
echo "ro.vendor.build.id=$BUILD_ID"
|
|
||||||
echo "ro.vendor.build.version.incremental=$BUILD_NUMBER"
|
|
||||||
echo "ro.vendor.build.version.sdk=$PLATFORM_SDK_VERSION"
|
|
||||||
echo "ro.vendor.build.version.release=$PLATFORM_VERSION"
|
|
||||||
echo "ro.vendor.build.type=$TARGET_BUILD_TYPE"
|
|
||||||
echo "ro.vendor.build.tags=$BUILD_VERSION_TAGS"
|
|
||||||
|
|
||||||
echo "ro.product.board=$TARGET_BOOTLOADER_BOARD_NAME"
|
|
||||||
echo "ro.board.platform=$TARGET_BOARD_PLATFORM"
|
|
||||||
|
|
||||||
echo "ro.product.vendor.manufacturer=$PRODUCT_MANUFACTURER"
|
|
||||||
echo "ro.product.vendor.model=$PRODUCT_MODEL"
|
|
||||||
echo "ro.product.vendor.brand=$PRODUCT_BRAND"
|
|
||||||
echo "ro.product.vendor.name=$PRODUCT_NAME"
|
|
||||||
echo "ro.product.vendor.device=$TARGET_DEVICE"
|
|
||||||
|
|
||||||
echo "# end build properties"
|
|
Loading…
Reference in New Issue