Rename product_services to system_ext

Bug: 134359158
Test: build and check if system_ext.img is created
Change-Id: I67f2e95dd29eac6a28e07e24ea973d3a134c3bfc
gugelfrei-debug
Justin Yun 5 years ago
parent 6e3ae4e849
commit 6151e3f1ea

@ -592,33 +592,26 @@ $(INSTALLED_ODM_BUILD_PROP_TARGET): $(BUILDINFO_COMMON_SH) $(POST_PROCESS_PROPS)
$(hide) $(POST_PROCESS_PROPS) $@ $(hide) $(POST_PROCESS_PROPS) $@
# ----------------------------------------------------------------- # -----------------------------------------------------------------
# product_services build.prop (unless it's merged into /product) # system_ext build.prop
ifdef MERGE_PRODUCT_SERVICES_INTO_PRODUCT INSTALLED_SYSTEM_EXT_BUILD_PROP_TARGET := $(TARGET_OUT_SYSTEM_EXT)/build.prop
ifneq (,$(PRODUCT_PRODUCT_SERVICES_PROPERTIES)) ALL_DEFAULT_INSTALLED_MODULES += $(INSTALLED_SYSTEM_EXT_BUILD_PROP_TARGET)
$(error PRODUCT_PRODUCT_SERVICES_PROPERTIES is not supported in this build.)
endif FINAL_SYSTEM_EXT_PROPERTIES += \
else $(call collapse-pairs, $(PRODUCT_SYSTEM_EXT_PROPERTIES))
INSTALLED_PRODUCT_SERVICES_BUILD_PROP_TARGET := $(TARGET_OUT_PRODUCT_SERVICES)/build.prop FINAL_SYSTEM_EXT_PROPERTIES := $(call uniq-pairs-by-first-component, \
ALL_DEFAULT_INSTALLED_MODULES += $(INSTALLED_PRODUCT_SERVICES_BUILD_PROP_TARGET) $(FINAL_SYSTEM_EXT_PROPERTIES),=)
FINAL_PRODUCT_SERVICES_PROPERTIES += \ $(INSTALLED_SYSTEM_EXT_BUILD_PROP_TARGET): $(BUILDINFO_COMMON_SH) $(POST_PROCESS_PROPS)
$(call collapse-pairs, $(PRODUCT_PRODUCT_SERVICES_PROPERTIES)) @echo Target system_ext buildinfo: $@
FINAL_PRODUCT_SERVICES_PROPERTIES := $(call uniq-pairs-by-first-component, \
$(FINAL_PRODUCT_SERVICES_PROPERTIES),=)
$(INSTALLED_PRODUCT_SERVICES_BUILD_PROP_TARGET): $(BUILDINFO_COMMON_SH) $(POST_PROCESS_PROPS)
@echo Target product_services buildinfo: $@
@mkdir -p $(dir $@) @mkdir -p $(dir $@)
$(hide) echo > $@ $(hide) echo > $@
ifdef BOARD_USES_PRODUCT_SERVICESIMAGE $(hide) $(call generate-common-build-props,system_ext,$@)
$(hide) $(call generate-common-build-props,product_services,$@)
endif # BOARD_USES_PRODUCT_SERVICESIMAGE
$(hide) echo "#" >> $@; \ $(hide) echo "#" >> $@; \
echo "# ADDITIONAL PRODUCT_SERVICES PROPERTIES" >> $@; \ echo "# ADDITIONAL SYSTEM_EXT BUILD PROPERTIES" >> $@; \
echo "#" >> $@; echo "#" >> $@;
$(hide) $(foreach line,$(FINAL_PRODUCT_SERVICES_PROPERTIES), \ $(hide) $(foreach line,$(FINAL_SYSTEM_EXT_PROPERTIES), \
echo "$(line)" >> $@;) echo "$(line)" >> $@;)
$(hide) $(POST_PROCESS_PROPS) $@ $(hide) $(POST_PROCESS_PROPS) $@
endif # MERGE_PRODUCT_SERVICES_INTO_PRODUCT
# ---------------------------------------------------------------- # ----------------------------------------------------------------
@ -1195,10 +1188,10 @@ $(2) $(3): PRIVATE_DIR := $(5)
$(2) : $(3) $(2) : $(3)
$(3) : $(6) $(BUILD_SYSTEM)/Makefile build/make/tools/generate-notice-files.py $(3) : $(6) $(BUILD_SYSTEM)/Makefile build/make/tools/generate-notice-files.py
build/make/tools/generate-notice-files.py --text-output $(2) \ build/make/tools/generate-notice-files.py --text-output $(2) \
$(if $(filter $(1),xml_excluded_extra_partitions),-e vendor -e product -e product_services --xml-output, \ $(if $(filter $(1),xml_excluded_extra_partitions),-e vendor -e product -e system_ext --xml-output, \
$(if $(filter $(1),xml_vendor),-i vendor --xml-output, \ $(if $(filter $(1),xml_vendor),-i vendor --xml-output, \
$(if $(filter $(1),xml_product),-i product --xml-output, \ $(if $(filter $(1),xml_product),-i product --xml-output, \
$(if $(filter $(1),xml_product_services),-i product_services --xml-output, \ $(if $(filter $(1),xml_system_ext),-i system_ext --xml-output, \
--html-output)))) $(3) \ --html-output)))) $(3) \
-t $$(PRIVATE_MESSAGE) -s $$(PRIVATE_DIR)/src -t $$(PRIVATE_MESSAGE) -s $$(PRIVATE_DIR)/src
notice_files: $(2) $(3) notice_files: $(2) $(3)
@ -1247,10 +1240,10 @@ target_product_notice_file_xml := $(TARGET_OUT_INTERMEDIATES)/NOTICE_PRODUCT.xml
target_product_notice_file_xml_gz := $(TARGET_OUT_INTERMEDIATES)/NOTICE_PRODUCT.xml.gz target_product_notice_file_xml_gz := $(TARGET_OUT_INTERMEDIATES)/NOTICE_PRODUCT.xml.gz
installed_product_notice_xml_gz := $(TARGET_OUT_PRODUCT)/etc/NOTICE.xml.gz installed_product_notice_xml_gz := $(TARGET_OUT_PRODUCT)/etc/NOTICE.xml.gz
target_product_services_notice_file_txt := $(TARGET_OUT_INTERMEDIATES)/NOTICE_PRODUCT_SERVICES.txt target_system_ext_notice_file_txt := $(TARGET_OUT_INTERMEDIATES)/NOTICE_SYSTEM_EXT.txt
target_product_services_notice_file_xml := $(TARGET_OUT_INTERMEDIATES)/NOTICE_PRODUCT_SERVICES.xml target_system_ext_notice_file_xml := $(TARGET_OUT_INTERMEDIATES)/NOTICE_SYSTEM_EXT.xml
target_product_services_notice_file_xml_gz := $(TARGET_OUT_INTERMEDIATES)/NOTICE_PRODUCT_SERVICES.xml.gz target_system_ext_notice_file_xml_gz := $(TARGET_OUT_INTERMEDIATES)/NOTICE_SYSTEM_EXT.xml.gz
installed_product_services_notice_xml_gz := $(TARGET_OUT_PRODUCT_SERVICES)/etc/NOTICE.xml.gz installed_system_ext_notice_xml_gz := $(TARGET_OUT_SYSTEM_EXT)/etc/NOTICE.xml.gz
# Notice files are copied to TARGET_OUT_NOTICE_FILES as a side-effect of their module # Notice files are copied to TARGET_OUT_NOTICE_FILES as a side-effect of their module
# being built. A notice xml file must depend on all modules that could potentially # being built. A notice xml file must depend on all modules that could potentially
@ -1262,8 +1255,8 @@ license_modules := $(filter-out $(TARGET_OUT_FAKE)/%,$(license_modules))
license_modules := $(filter-out $(TARGET_OUT_TESTCASES)/%,$(license_modules)) license_modules := $(filter-out $(TARGET_OUT_TESTCASES)/%,$(license_modules))
license_modules_vendor := $(filter $(TARGET_OUT_VENDOR)/%,$(license_modules)) license_modules_vendor := $(filter $(TARGET_OUT_VENDOR)/%,$(license_modules))
license_modules_product := $(filter $(TARGET_OUT_PRODUCT)/%,$(license_modules)) license_modules_product := $(filter $(TARGET_OUT_PRODUCT)/%,$(license_modules))
license_modules_product_services := $(filter $(TARGET_OUT_PRODUCT_SERVICES)/%,$(license_modules)) license_modules_system_ext := $(filter $(TARGET_OUT_SYSTEM_EXT)/%,$(license_modules))
license_modules_agg := $(license_modules_vendor) $(license_modules_product) $(license_modules_product_services) license_modules_agg := $(license_modules_vendor) $(license_modules_product) $(license_modules_system_ext)
license_modules_rest := $(filter-out $(license_modules_agg),$(license_modules)) license_modules_rest := $(filter-out $(license_modules_agg),$(license_modules))
$(eval $(call combine-notice-files, xml_excluded_extra_partitions, \ $(eval $(call combine-notice-files, xml_excluded_extra_partitions, \
@ -1284,12 +1277,12 @@ $(eval $(call combine-notice-files, xml_product, \
"Notices for files contained in the product filesystem image in this directory:", \ "Notices for files contained in the product filesystem image in this directory:", \
$(TARGET_OUT_NOTICE_FILES), \ $(TARGET_OUT_NOTICE_FILES), \
$(license_modules_product))) $(license_modules_product)))
$(eval $(call combine-notice-files, xml_product_services, \ $(eval $(call combine-notice-files, xml_system_ext, \
$(target_product_services_notice_file_txt), \ $(target_system_ext_notice_file_txt), \
$(target_product_services_notice_file_xml), \ $(target_system_ext_notice_file_xml), \
"Notices for files contained in the product_services filesystem image in this directory:", \ "Notices for files contained in the system_ext filesystem image in this directory:", \
$(TARGET_OUT_NOTICE_FILES), \ $(TARGET_OUT_NOTICE_FILES), \
$(license_modules_product_services))) $(license_modules_system_ext)))
$(target_notice_file_xml_gz): $(target_notice_file_xml) | $(MINIGZIP) $(target_notice_file_xml_gz): $(target_notice_file_xml) | $(MINIGZIP)
$(hide) $(MINIGZIP) -9 < $< > $@ $(hide) $(MINIGZIP) -9 < $< > $@
@ -1297,7 +1290,7 @@ $(target_vendor_notice_file_xml_gz): $(target_vendor_notice_file_xml) | $(MINIGZ
$(hide) $(MINIGZIP) -9 < $< > $@ $(hide) $(MINIGZIP) -9 < $< > $@
$(target_product_notice_file_xml_gz): $(target_product_notice_file_xml) | $(MINIGZIP) $(target_product_notice_file_xml_gz): $(target_product_notice_file_xml) | $(MINIGZIP)
$(hide) $(MINIGZIP) -9 < $< > $@ $(hide) $(MINIGZIP) -9 < $< > $@
$(target_product_services_notice_file_xml_gz): $(target_product_services_notice_file_xml) | $(MINIGZIP) $(target_system_ext_notice_file_xml_gz): $(target_system_ext_notice_file_xml) | $(MINIGZIP)
$(hide) $(MINIGZIP) -9 < $< > $@ $(hide) $(MINIGZIP) -9 < $< > $@
$(installed_notice_html_or_xml_gz): $(target_notice_file_xml_gz) $(installed_notice_html_or_xml_gz): $(target_notice_file_xml_gz)
$(copy-file-to-target) $(copy-file-to-target)
@ -1305,20 +1298,15 @@ $(installed_vendor_notice_xml_gz): $(target_vendor_notice_file_xml_gz)
$(copy-file-to-target) $(copy-file-to-target)
$(installed_product_notice_xml_gz): $(target_product_notice_file_xml_gz) $(installed_product_notice_xml_gz): $(target_product_notice_file_xml_gz)
$(copy-file-to-target) $(copy-file-to-target)
$(installed_system_ext_notice_xml_gz): $(target_system_ext_notice_file_xml_gz)
# No notice file for product_services if its contents are merged into /product.
# The notices will be part of the /product notice file.
ifndef MERGE_PRODUCT_SERVICES_INTO_PRODUCT
$(installed_product_services_notice_xml_gz): $(target_product_services_notice_file_xml_gz)
$(copy-file-to-target) $(copy-file-to-target)
endif
# if we've been run my mm, mmm, etc, don't reinstall this every time # if we've been run my mm, mmm, etc, don't reinstall this every time
ifeq ($(ONE_SHOT_MAKEFILE),) ifeq ($(ONE_SHOT_MAKEFILE),)
ALL_DEFAULT_INSTALLED_MODULES += $(installed_notice_html_or_xml_gz) ALL_DEFAULT_INSTALLED_MODULES += $(installed_notice_html_or_xml_gz)
ALL_DEFAULT_INSTALLED_MODULES += $(installed_vendor_notice_xml_gz) ALL_DEFAULT_INSTALLED_MODULES += $(installed_vendor_notice_xml_gz)
ALL_DEFAULT_INSTALLED_MODULES += $(installed_product_notice_xml_gz) ALL_DEFAULT_INSTALLED_MODULES += $(installed_product_notice_xml_gz)
ALL_DEFAULT_INSTALLED_MODULES += $(installed_product_services_notice_xml_gz) ALL_DEFAULT_INSTALLED_MODULES += $(installed_system_ext_notice_xml_gz)
endif endif
endif # PRODUCT_NOTICE_SPLIT endif # PRODUCT_NOTICE_SPLIT
@ -1387,7 +1375,7 @@ ifeq ($(TARGET_USERIMAGES_USE_F2FS),true)
INTERNAL_USERIMAGES_DEPS += $(MKF2FSUSERIMG) INTERNAL_USERIMAGES_DEPS += $(MKF2FSUSERIMG)
endif endif
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),) ifneq ($(filter $(BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE) $(BOARD_SYSTEM_EXTIMAGE_FILE_SYSTEM_TYPE) $(BOARD_ODMIMAGE_FILE_SYSTEM_TYPE) $(BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE) $(BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE),squashfs),)
INTERNAL_USERIMAGES_DEPS += $(MKSQUASHFSUSERIMG) INTERNAL_USERIMAGES_DEPS += $(MKSQUASHFSUSERIMG)
endif endif
@ -1420,7 +1408,7 @@ endif
endif # PRODUCT_USE_DYNAMIC_PARTITIONS endif # PRODUCT_USE_DYNAMIC_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 odm" # $(2): a subset of "system vendor cache userdata product system_ext 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),\
@ -1477,18 +1465,18 @@ $(if $(filter $(2),product),\
$(if $(BOARD_PRODUCTIMAGE_PARTITION_RESERVED_SIZE),$(hide) echo "product_reserved_size=$(BOARD_PRODUCTIMAGE_PARTITION_RESERVED_SIZE)" >> $(1)) $(if $(BOARD_PRODUCTIMAGE_PARTITION_RESERVED_SIZE),$(hide) echo "product_reserved_size=$(BOARD_PRODUCTIMAGE_PARTITION_RESERVED_SIZE)" >> $(1))
$(hide) echo "product_selinux_fc=$(SELINUX_FC)" >> $(1) $(hide) echo "product_selinux_fc=$(SELINUX_FC)" >> $(1)
) )
$(if $(filter $(2),product_services),\ $(if $(filter $(2),system_ext),\
$(if $(BOARD_PRODUCT_SERVICESIMAGE_FILE_SYSTEM_TYPE),$(hide) echo "product_services_fs_type=$(BOARD_PRODUCT_SERVICESIMAGE_FILE_SYSTEM_TYPE)" >> $(1)) $(if $(BOARD_SYSTEM_EXTIMAGE_FILE_SYSTEM_TYPE),$(hide) echo "system_ext_fs_type=$(BOARD_SYSTEM_EXTIMAGE_FILE_SYSTEM_TYPE)" >> $(1))
$(if $(BOARD_PRODUCT_SERVICESIMAGE_EXTFS_INODE_COUNT),$(hide) echo "product_services_extfs_inode_count=$(BOARD_PRODUCT_SERVICESIMAGE_EXTFS_INODE_COUNT)" >> $(1)) $(if $(BOARD_SYSTEM_EXTIMAGE_EXTFS_INODE_COUNT),$(hide) echo "system_ext_extfs_inode_count=$(BOARD_SYSTEM_EXTIMAGE_EXTFS_INODE_COUNT)" >> $(1))
$(if $(BOARD_PRODUCT_SERVICESIMAGE_EXTFS_RSV_PCT),$(hide) echo "product_services_extfs_rsv_pct=$(BOARD_PRODUCT_SERVICESIMAGE_EXTFS_RSV_PCT)" >> $(1)) $(if $(BOARD_SYSTEM_EXTIMAGE_EXTFS_RSV_PCT),$(hide) echo "system_ext_extfs_rsv_pct=$(BOARD_SYSTEM_EXTIMAGE_EXTFS_RSV_PCT)" >> $(1))
$(if $(BOARD_PRODUCT_SERVICESIMAGE_PARTITION_SIZE),$(hide) echo "product_services_size=$(BOARD_PRODUCT_SERVICESIMAGE_PARTITION_SIZE)" >> $(1)) $(if $(BOARD_SYSTEM_EXTIMAGE_PARTITION_SIZE),$(hide) echo "system_ext_size=$(BOARD_SYSTEM_EXTIMAGE_PARTITION_SIZE)" >> $(1))
$(if $(BOARD_PRODUCT_SERVICESIMAGE_JOURNAL_SIZE),$(hide) echo "product_services_journal_size=$(BOARD_PRODUCT_SERVICESIMAGE_JOURNAL_SIZE)" >> $(1)) $(if $(BOARD_SYSTEM_EXTIMAGE_JOURNAL_SIZE),$(hide) echo "system_ext_journal_size=$(BOARD_SYSTEM_EXTIMAGE_JOURNAL_SIZE)" >> $(1))
$(if $(BOARD_PRODUCT_SERVICESIMAGE_SQUASHFS_COMPRESSOR),$(hide) echo "product_services_squashfs_compressor=$(BOARD_PRODUCT_SERVICESIMAGE_SQUASHFS_COMPRESSOR)" >> $(1)) $(if $(BOARD_SYSTEM_EXTIMAGE_SQUASHFS_COMPRESSOR),$(hide) echo "system_ext_squashfs_compressor=$(BOARD_SYSTEM_EXTIMAGE_SQUASHFS_COMPRESSOR)" >> $(1))
$(if $(BOARD_PRODUCT_SERVICESIMAGE_SQUASHFS_COMPRESSOR_OPT),$(hide) echo "product_services_squashfs_compressor_opt=$(BOARD_PRODUCT_SERVICESIMAGE_SQUASHFS_COMPRESSOR_OPT)" >> $(1)) $(if $(BOARD_SYSTEM_EXTIMAGE_SQUASHFS_COMPRESSOR_OPT),$(hide) echo "system_ext_squashfs_compressor_opt=$(BOARD_SYSTEM_EXTIMAGE_SQUASHFS_COMPRESSOR_OPT)" >> $(1))
$(if $(BOARD_PRODUCT_SERVICESIMAGE_SQUASHFS_BLOCK_SIZE),$(hide) echo "product_services_squashfs_block_size=$(BOARD_PRODUCT_SERVICESIMAGE_SQUASHFS_BLOCK_SIZE)" >> $(1)) $(if $(BOARD_SYSTEM_EXTIMAGE_SQUASHFS_BLOCK_SIZE),$(hide) echo "system_ext_squashfs_block_size=$(BOARD_SYSTEM_EXTIMAGE_SQUASHFS_BLOCK_SIZE)" >> $(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_SYSTEM_EXTIMAGE_SQUASHFS_DISABLE_4K_ALIGN),$(hide) echo "system_ext_squashfs_disable_4k_align=$(BOARD_SYSTEM_EXTIMAGE_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_SYSTEM_EXTIMAGE_PARTITION_RESERVED_SIZE),$(hide) echo "system_ext_reserved_size=$(BOARD_SYSTEM_EXTIMAGE_PARTITION_RESERVED_SIZE)" >> $(1))
$(hide) echo "product_services_selinux_fc=$(SELINUX_FC)" >> $(1) $(hide) echo "system_ext_selinux_fc=$(SELINUX_FC)" >> $(1)
) )
$(if $(filter $(2),odm),\ $(if $(filter $(2),odm),\
$(if $(BOARD_ODMIMAGE_FILE_SYSTEM_TYPE),$(hide) echo "odm_fs_type=$(BOARD_ODMIMAGE_FILE_SYSTEM_TYPE)" >> $(1)) $(if $(BOARD_ODMIMAGE_FILE_SYSTEM_TYPE),$(hide) echo "odm_fs_type=$(BOARD_ODMIMAGE_FILE_SYSTEM_TYPE)" >> $(1))
@ -1528,7 +1516,7 @@ $(if $(filter eng, $(TARGET_BUILD_VARIANT)),$(hide) echo "verity_disable=true" >
$(if $(PRODUCT_SYSTEM_VERITY_PARTITION),$(hide) echo "system_verity_block_device=$(PRODUCT_SYSTEM_VERITY_PARTITION)" >> $(1)) $(if $(PRODUCT_SYSTEM_VERITY_PARTITION),$(hide) echo "system_verity_block_device=$(PRODUCT_SYSTEM_VERITY_PARTITION)" >> $(1))
$(if $(PRODUCT_VENDOR_VERITY_PARTITION),$(hide) echo "vendor_verity_block_device=$(PRODUCT_VENDOR_VERITY_PARTITION)" >> $(1)) $(if $(PRODUCT_VENDOR_VERITY_PARTITION),$(hide) echo "vendor_verity_block_device=$(PRODUCT_VENDOR_VERITY_PARTITION)" >> $(1))
$(if $(PRODUCT_PRODUCT_VERITY_PARTITION),$(hide) echo "product_verity_block_device=$(PRODUCT_PRODUCT_VERITY_PARTITION)" >> $(1)) $(if $(PRODUCT_PRODUCT_VERITY_PARTITION),$(hide) echo "product_verity_block_device=$(PRODUCT_PRODUCT_VERITY_PARTITION)" >> $(1))
$(if $(PRODUCT_PRODUCT_SERVICES_VERITY_PARTITION),$(hide) echo "product_services_verity_block_device=$(PRODUCT_PRODUCT_SERVICES_VERITY_PARTITION)" >> $(1)) $(if $(PRODUCT_SYSTEM_EXT_VERITY_PARTITION),$(hide) echo "system_ext_verity_block_device=$(PRODUCT_SYSTEM_EXT_VERITY_PARTITION)" >> $(1))
$(if $(PRODUCT_SUPPORTS_VBOOT),$(hide) echo "vboot=$(PRODUCT_SUPPORTS_VBOOT)" >> $(1)) $(if $(PRODUCT_SUPPORTS_VBOOT),$(hide) echo "vboot=$(PRODUCT_SUPPORTS_VBOOT)" >> $(1))
$(if $(PRODUCT_SUPPORTS_VBOOT),$(hide) echo "vboot_key=$(PRODUCT_VBOOT_SIGNING_KEY)" >> $(1)) $(if $(PRODUCT_SUPPORTS_VBOOT),$(hide) echo "vboot_key=$(PRODUCT_VBOOT_SIGNING_KEY)" >> $(1))
$(if $(PRODUCT_SUPPORTS_VBOOT),$(hide) echo "vboot_subkey=$(PRODUCT_VBOOT_SIGNING_SUBKEY)" >> $(1)) $(if $(PRODUCT_SUPPORTS_VBOOT),$(hide) echo "vboot_subkey=$(PRODUCT_VBOOT_SIGNING_SUBKEY)" >> $(1))
@ -1562,14 +1550,14 @@ $(if $(BOARD_AVB_ENABLE),\
$(hide) echo "avb_product_key_path=$(BOARD_AVB_PRODUCT_KEY_PATH)" >> $(1) $(hide) echo "avb_product_key_path=$(BOARD_AVB_PRODUCT_KEY_PATH)" >> $(1)
$(hide) echo "avb_product_algorithm=$(BOARD_AVB_PRODUCT_ALGORITHM)" >> $(1) $(hide) echo "avb_product_algorithm=$(BOARD_AVB_PRODUCT_ALGORITHM)" >> $(1)
$(hide) echo "avb_product_rollback_index_location=$(BOARD_AVB_PRODUCT_ROLLBACK_INDEX_LOCATION)" >> $(1))) $(hide) echo "avb_product_rollback_index_location=$(BOARD_AVB_PRODUCT_ROLLBACK_INDEX_LOCATION)" >> $(1)))
$(if $(BOARD_AVB_ENABLE),$(hide) echo "avb_product_services_hashtree_enable=$(BOARD_AVB_ENABLE)" >> $(1)) $(if $(BOARD_AVB_ENABLE),$(hide) echo "avb_system_ext_hashtree_enable=$(BOARD_AVB_ENABLE)" >> $(1))
$(if $(BOARD_AVB_ENABLE),\ $(if $(BOARD_AVB_ENABLE),\
$(hide) echo "avb_product_services_add_hashtree_footer_args=$(BOARD_AVB_PRODUCT_SERVICES_ADD_HASHTREE_FOOTER_ARGS)" >> $(1)) $(hide) echo "avb_system_ext_add_hashtree_footer_args=$(BOARD_AVB_SYSTEM_EXT_ADD_HASHTREE_FOOTER_ARGS)" >> $(1))
$(if $(BOARD_AVB_ENABLE),\ $(if $(BOARD_AVB_ENABLE),\
$(if $(BOARD_AVB_PRODUCT_SERVICES_KEY_PATH),\ $(if $(BOARD_AVB_SYSTEM_EXT_KEY_PATH),\
$(hide) echo "avb_product_services_key_path=$(BOARD_AVB_PRODUCT_SERVICES_KEY_PATH)" >> $(1) $(hide) echo "avb_system_ext_key_path=$(BOARD_AVB_SYSTEM_EXT_KEY_PATH)" >> $(1)
$(hide) echo "avb_product_services_algorithm=$(BOARD_AVB_PRODUCT_SERVICES_ALGORITHM)" >> $(1) $(hide) echo "avb_system_ext_algorithm=$(BOARD_AVB_SYSTEM_EXT_ALGORITHM)" >> $(1)
$(hide) echo "avb_product_services_rollback_index_location=$(BOARD_AVB_PRODUCT_SERVICES_ROLLBACK_INDEX_LOCATION)" >> $(1))) $(hide) echo "avb_system_ext_rollback_index_location=$(BOARD_AVB_SYSTEM_EXT_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_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),$(hide) echo "avb_odm_add_hashtree_footer_args=$(BOARD_AVB_ODM_ADD_HASHTREE_FOOTER_ARGS)" >> $(1))
$(if $(BOARD_AVB_ENABLE),\ $(if $(BOARD_AVB_ENABLE),\
@ -1604,8 +1592,8 @@ endif
ifdef BUILDING_PRODUCT_IMAGE ifdef BUILDING_PRODUCT_IMAGE
PROP_DICTIONARY_IMAGES += product PROP_DICTIONARY_IMAGES += product
endif endif
ifdef BUILDING_PRODUCT_SERVICES_IMAGE ifdef BUILDING_SYSTEM_EXT_IMAGE
PROP_DICTIONARY_IMAGES += product_services PROP_DICTIONARY_IMAGES += system_ext
endif endif
ifdef BUILDING_ODM_IMAGE ifdef BUILDING_ODM_IMAGE
PROP_DICTIONARY_IMAGES += odm PROP_DICTIONARY_IMAGES += odm
@ -1881,7 +1869,7 @@ $(INSTALLED_RECOVERY_BUILD_PROP_TARGET): \
$(INSTALLED_VENDOR_BUILD_PROP_TARGET) \ $(INSTALLED_VENDOR_BUILD_PROP_TARGET) \
$(INSTALLED_ODM_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_SYSTEM_EXT_BUILD_PROP_TARGET)
@echo "Target recovery buildinfo: $@" @echo "Target recovery buildinfo: $@"
$(hide) mkdir -p $(dir $@) $(hide) mkdir -p $(dir $@)
$(hide) rm -f $@ $(hide) rm -f $@
@ -1891,7 +1879,7 @@ $(INSTALLED_RECOVERY_BUILD_PROP_TARGET): \
$(hide) cat $(INSTALLED_VENDOR_BUILD_PROP_TARGET) >> $@ $(hide) cat $(INSTALLED_VENDOR_BUILD_PROP_TARGET) >> $@
$(hide) cat $(INSTALLED_ODM_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_SYSTEM_EXT_BUILD_PROP_TARGET) >> $@
$(call append-recovery-ui-properties,$(PRIVATE_RECOVERY_UI_PROPERTIES),$@) $(call append-recovery-ui-properties,$(PRIVATE_RECOVERY_UI_PROPERTIES),$@)
INTERNAL_RECOVERYIMAGE_ARGS := \ INTERNAL_RECOVERYIMAGE_ARGS := \
@ -2275,18 +2263,18 @@ define create-system-product-symlink
endef endef
endif endif
# Create symlink /system/product_services to /product_services if necessary. # Create symlink /system/system_ext to /system_ext if necessary.
ifdef BOARD_USES_PRODUCT_SERVICESIMAGE ifdef BOARD_USES_SYSTEM_EXTIMAGE
define create-system-product_services-symlink define create-system-system_ext-symlink
$(hide) if [ -d $(TARGET_OUT)/product_services ] && [ ! -h $(TARGET_OUT)/product_services ]; then \ $(hide) if [ -d $(TARGET_OUT)/system_ext ] && [ ! -h $(TARGET_OUT)/system_ext ]; then \
echo 'Non-symlink $(TARGET_OUT)/product_services detected!' 1>&2; \ echo 'Non-symlink $(TARGET_OUT)/system_ext detected!' 1>&2; \
echo 'You cannot install files to $(TARGET_OUT)/product_services while building a separate product_services.img!' 1>&2; \ echo 'You cannot install files to $(TARGET_OUT)/system_ext while building a separate system_ext.img!' 1>&2; \
exit 1; \ exit 1; \
fi fi
$(hide) ln -sf /product_services $(TARGET_OUT)/product_services $(hide) ln -sf /system_ext $(TARGET_OUT)/system_ext
endef endef
else else
define create-system-product_services-symlink define create-system-system_ext-symlink
endef endef
endif endif
@ -2295,7 +2283,7 @@ define build-systemimage-target
@echo "Target system fs image: $(1)" @echo "Target system fs image: $(1)"
$(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-system_ext-symlink)
$(call check-apex-libs-absence-on-disk) $(call check-apex-libs-absence-on-disk)
@mkdir -p $(dir $(1)) $(systemimage_intermediates) && rm -rf $(systemimage_intermediates)/system_image_info.txt @mkdir -p $(dir $(1)) $(systemimage_intermediates) && rm -rf $(systemimage_intermediates)/system_image_info.txt
$(call generate-image-prop-dictionary, $(systemimage_intermediates)/system_image_info.txt,system, \ $(call generate-image-prop-dictionary, $(systemimage_intermediates)/system_image_info.txt,system, \
@ -2380,7 +2368,7 @@ define build-systemtarball-target
$(call pretty,"Target system fs tarball: $(INSTALLED_SYSTEMTARBALL_TARGET)") $(call pretty,"Target system fs tarball: $(INSTALLED_SYSTEMTARBALL_TARGET)")
$(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-system_ext-symlink)
$(MKTARBALL) $(FS_GET_STATS) \ $(MKTARBALL) $(FS_GET_STATS) \
$(PRODUCT_OUT) system $(PRIVATE_SYSTEM_TAR) \ $(PRODUCT_OUT) system $(PRIVATE_SYSTEM_TAR) \
$(INSTALLED_SYSTEMTARBALL_TARGET) $(TARGET_OUT) $(INSTALLED_SYSTEMTARBALL_TARGET) $(TARGET_OUT)
@ -2467,8 +2455,8 @@ endif
ifdef BUILDING_PRODUCT_IMAGE ifdef BUILDING_PRODUCT_IMAGE
echo "-D $(TARGET_OUT_PRODUCT)" >> $@.lst echo "-D $(TARGET_OUT_PRODUCT)" >> $@.lst
endif endif
ifdef BUILDING_PRODUCT_SERVICES_IMAGE ifdef BUILDING_SYSTEM_EXT_IMAGE
echo "-D $(TARGET_OUT_PRODUCT_SERVICES)" >> $@.lst echo "-D $(TARGET_OUT_SYSTEM_EXT)" >> $@.lst
endif endif
ifdef BUILDING_ODM_IMAGE ifdef BUILDING_ODM_IMAGE
echo "-D $(TARGET_OUT_ODM)" >> $@.lst echo "-D $(TARGET_OUT_ODM)" >> $@.lst
@ -3002,55 +2990,55 @@ check_framework_manifest :=
endif # BUILDING_SYSTEM_IMAGE endif # BUILDING_SYSTEM_IMAGE
# ----------------------------------------------------------------- # -----------------------------------------------------------------
# product_services partition image # system_ext partition image
ifdef BUILDING_PRODUCT_SERVICES_IMAGE ifdef BUILDING_SYSTEM_EXT_IMAGE
INTERNAL_PRODUCT_SERVICESIMAGE_FILES := \ INTERNAL_SYSTEM_EXTIMAGE_FILES := \
$(filter $(TARGET_OUT_PRODUCT_SERVICES)/%,\ $(filter $(TARGET_OUT_SYSTEM_EXT)/%,\
$(ALL_DEFAULT_INSTALLED_MODULES)\ $(ALL_DEFAULT_INSTALLED_MODULES)\
$(ALL_PDK_FUSION_FILES)) \ $(ALL_PDK_FUSION_FILES)) \
$(PDK_FUSION_SYMLINK_STAMP) $(PDK_FUSION_SYMLINK_STAMP)
# platform.zip depends on $(INTERNAL_PRODUCT_SERVICESIMAGE_FILES). # platform.zip depends on $(INTERNAL_SYSTEM_EXTIMAGE_FILES).
$(INSTALLED_PLATFORM_ZIP) : $(INTERNAL_PRODUCT_SERVICESIMAGE_FILES) $(INSTALLED_PLATFORM_ZIP) : $(INTERNAL_SYSTEM_EXTIMAGE_FILES)
INSTALLED_FILES_FILE_PRODUCT_SERVICES := $(PRODUCT_OUT)/installed-files-product_services.txt INSTALLED_FILES_FILE_SYSTEM_EXT := $(PRODUCT_OUT)/installed-files-system_ext.txt
INSTALLED_FILES_JSON_PRODUCT_SERVICES := $(INSTALLED_FILES_FILE_PRODUCT_SERVICES:.txt=.json) INSTALLED_FILES_JSON_SYSTEM_EXT := $(INSTALLED_FILES_FILE_SYSTEM_EXT:.txt=.json)
$(INSTALLED_FILES_FILE_PRODUCT_SERVICES): .KATI_IMPLICIT_OUTPUTS := $(INSTALLED_FILES_JSON_PRODUCT_SERVICES) $(INSTALLED_FILES_FILE_SYSTEM_EXT): .KATI_IMPLICIT_OUTPUTS := $(INSTALLED_FILES_JSON_SYSTEM_EXT)
$(INSTALLED_FILES_FILE_PRODUCT_SERVICES) : $(INTERNAL_PRODUCT_SERVICESIMAGE_FILES) $(FILESLIST) $(FILESLIST_UTIL) $(INSTALLED_FILES_FILE_SYSTEM_EXT) : $(INTERNAL_SYSTEM_EXTIMAGE_FILES) $(FILESLIST) $(FILESLIST_UTIL)
@echo Installed file list: $@ @echo Installed file list: $@
@mkdir -p $(dir $@) @mkdir -p $(dir $@)
@rm -f $@ @rm -f $@
$(hide) $(FILESLIST) $(TARGET_OUT_PRODUCT_SERVICES) > $(@:.txt=.json) $(hide) $(FILESLIST) $(TARGET_OUT_SYSTEM_EXT) > $(@:.txt=.json)
$(hide) $(FILESLIST_UTIL) -c $(@:.txt=.json) > $@ $(hide) $(FILESLIST_UTIL) -c $(@:.txt=.json) > $@
product_servicesimage_intermediates := \ system_extimage_intermediates := \
$(call intermediates-dir-for,PACKAGING,product_services) $(call intermediates-dir-for,PACKAGING,system_ext)
BUILT_PRODUCT_SERVICESIMAGE_TARGET := $(PRODUCT_OUT)/product_services.img BUILT_SYSTEM_EXTIMAGE_TARGET := $(PRODUCT_OUT)/system_ext.img
define build-product_servicesimage-target define build-system_extimage-target
$(call pretty,"Target product_services fs image: $(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET)") $(call pretty,"Target system_ext fs image: $(INSTALLED_SYSTEM_EXTIMAGE_TARGET)")
@mkdir -p $(TARGET_OUT_PRODUCT_SERVICES) @mkdir -p $(TARGET_OUT_SYSTEM_EXT)
@mkdir -p $(product_servicesimage_intermediates) && rm -rf $(product_servicesimage_intermediates)/product_services_image_info.txt @mkdir -p $(system_extimage_intermediates) && rm -rf $(system_extimage_intermediates)/system_ext_image_info.txt
$(call generate-image-prop-dictionary, $(product_servicesimage_intermediates)/product_services_image_info.txt,product_services, skip_fsck=true) $(call generate-image-prop-dictionary, $(system_extimage_intermediates)/system_ext_image_info.txt,system_ext, skip_fsck=true)
PATH=$(INTERNAL_USERIMAGES_BINARY_PATHS):$$PATH \ PATH=$(INTERNAL_USERIMAGES_BINARY_PATHS):$$PATH \
./build/tools/releasetools/build_image.py \ ./build/tools/releasetools/build_image.py \
$(TARGET_OUT_PRODUCT_SERVICES) $(product_servicesimage_intermediates)/product_services_image_info.txt $(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET) $(TARGET_OUT) $(TARGET_OUT_SYSTEM_EXT) $(system_extimage_intermediates)/system_ext_image_info.txt $(INSTALLED_SYSTEM_EXTIMAGE_TARGET) $(TARGET_OUT)
$(hide) $(call assert-max-image-size,$(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET),$(BOARD_PRODUCT_SERVICESIMAGE_PARTITION_SIZE)) $(hide) $(call assert-max-image-size,$(INSTALLED_SYSTEM_EXTIMAGE_TARGET),$(BOARD_SYSTEM_EXTIMAGE_PARTITION_SIZE))
endef endef
# We just build this directly to the install location. # We just build this directly to the install location.
INSTALLED_PRODUCT_SERVICESIMAGE_TARGET := $(BUILT_PRODUCT_SERVICESIMAGE_TARGET) INSTALLED_SYSTEM_EXTIMAGE_TARGET := $(BUILT_SYSTEM_EXTIMAGE_TARGET)
$(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET): $(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_PRODUCT_SERVICESIMAGE_FILES) $(INSTALLED_FILES_FILE_PRODUCT_SERVICES) $(BUILD_IMAGE_SRCS) $(INSTALLED_SYSTEM_EXTIMAGE_TARGET): $(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_SYSTEM_EXTIMAGE_FILES) $(INSTALLED_FILES_FILE_SYSTEM_EXT) $(BUILD_IMAGE_SRCS)
$(build-product_servicesimage-target) $(build-system_extimage-target)
.PHONY: productservicesimage-nodeps psnod .PHONY: systemextimage-nodeps senod
productservicesimage-nodeps psnod: | $(INTERNAL_USERIMAGES_DEPS) systemextimage-nodeps senod: | $(INTERNAL_USERIMAGES_DEPS)
$(build-product_servicesimage-target) $(build-system_extimage-target)
sync: $(INTERNAL_PRODUCT_SERVICESIMAGE_FILES) sync: $(INTERNAL_SYSTEM_EXTIMAGE_FILES)
else ifdef BOARD_PREBUILT_PRODUCT_SERVICESIMAGE else ifdef BOARD_PREBUILT_SYSTEM_EXTIMAGE
INSTALLED_PRODUCT_SERVICESIMAGE_TARGET := $(PRODUCT_OUT)/product_services.img INSTALLED_SYSTEM_EXTIMAGE_TARGET := $(PRODUCT_OUT)/system_ext.img
$(eval $(call copy-one-file,$(BOARD_PREBUILT_PRODUCT_SERVICESIMAGE),$(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET))) $(eval $(call copy-one-file,$(BOARD_PREBUILT_SYSTEM_EXTIMAGE),$(INSTALLED_SYSTEM_EXTIMAGE_TARGET)))
endif endif
# ----------------------------------------------------------------- # -----------------------------------------------------------------
@ -3127,7 +3115,7 @@ endif # BOARD_PREBUILT_DTBOIMAGE
# Returns a list of image targets corresponding to the given list of partitions. For example, it # 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) # returns "$(INSTALLED_PRODUCTIMAGE_TARGET)" for "product", or "$(INSTALLED_SYSTEMIMAGE_TARGET)
# $(INSTALLED_VENDORIMAGE_TARGET)" for "system vendor". # $(INSTALLED_VENDORIMAGE_TARGET)" for "system vendor".
# (1): list of partitions like "system", "vendor" or "system product product_services". # (1): list of partitions like "system", "vendor" or "system product system_ext".
define images-for-partitions define images-for-partitions
$(strip $(foreach item,$(1),$(INSTALLED_$(call to-upper,$(item))IMAGE_TARGET))) $(strip $(foreach item,$(1),$(INSTALLED_$(call to-upper,$(item))IMAGE_TARGET)))
endef endef
@ -3189,9 +3177,9 @@ BOARD_AVB_PRODUCT_ADD_HASHTREE_FOOTER_ARGS += \
--prop com.android.build.product.os_version:$(PLATFORM_VERSION) \ --prop com.android.build.product.os_version:$(PLATFORM_VERSION) \
--prop com.android.build.product.security_patch:$(PLATFORM_SECURITY_PATCH) --prop com.android.build.product.security_patch:$(PLATFORM_SECURITY_PATCH)
BOARD_AVB_PRODUCT_SERVICES_ADD_HASHTREE_FOOTER_ARGS += \ BOARD_AVB_SYSTEM_EXT_ADD_HASHTREE_FOOTER_ARGS += \
--prop com.android.build.product_services.os_version:$(PLATFORM_VERSION) \ --prop com.android.build.system_ext.os_version:$(PLATFORM_VERSION) \
--prop com.android.build.product_services.security_patch:$(PLATFORM_SECURITY_PATCH) --prop com.android.build.system_ext.security_patch:$(PLATFORM_SECURITY_PATCH)
BOARD_AVB_BOOT_ADD_HASH_FOOTER_ARGS += \ BOARD_AVB_BOOT_ADD_HASH_FOOTER_ARGS += \
--prop com.android.build.boot.os_version:$(PLATFORM_VERSION) --prop com.android.build.boot.os_version:$(PLATFORM_VERSION)
@ -3224,7 +3212,7 @@ SYSTEM_FOOTER_ARGS := BOARD_AVB_SYSTEM_ADD_HASHTREE_FOOTER_ARGS
VENDOR_FOOTER_ARGS := BOARD_AVB_VENDOR_ADD_HASHTREE_FOOTER_ARGS 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 SYSTEM_EXT_FOOTER_ARGS := BOARD_AVB_SYSTEM_EXT_ADD_HASHTREE_FOOTER_ARGS
ODM_FOOTER_ARGS := BOARD_AVB_ODM_ADD_HASHTREE_FOOTER_ARGS ODM_FOOTER_ARGS := BOARD_AVB_ODM_ADD_HASHTREE_FOOTER_ARGS
# Helper function that checks and sets required build variables for an AVB chained partition. # Helper function that checks and sets required build variables for an AVB chained partition.
@ -3287,8 +3275,8 @@ ifdef INSTALLED_PRODUCTIMAGE_TARGET
$(eval $(call check-and-set-avb-args,product)) $(eval $(call check-and-set-avb-args,product))
endif endif
ifdef INSTALLED_PRODUCT_SERVICESIMAGE_TARGET ifdef INSTALLED_SYSTEM_EXTIMAGE_TARGET
$(eval $(call check-and-set-avb-args,product_services)) $(eval $(call check-and-set-avb-args,system_ext))
endif endif
ifdef INSTALLED_ODMIMAGE_TARGET ifdef INSTALLED_ODMIMAGE_TARGET
@ -3361,9 +3349,9 @@ define extract-avb-chain-public-keys
$(if $(BOARD_AVB_PRODUCT_KEY_PATH),\ $(if $(BOARD_AVB_PRODUCT_KEY_PATH),\
$(hide) $(AVBTOOL) extract_public_key --key $(BOARD_AVB_PRODUCT_KEY_PATH) \ $(hide) $(AVBTOOL) extract_public_key --key $(BOARD_AVB_PRODUCT_KEY_PATH) \
--output $(1)/product.avbpubkey) --output $(1)/product.avbpubkey)
$(if $(BOARD_AVB_PRODUCT_SERVICES_KEY_PATH),\ $(if $(BOARD_AVB_SYSTEM_EXT_KEY_PATH),\
$(hide) $(AVBTOOL) extract_public_key --key $(BOARD_AVB_PRODUCT_SERVICES_KEY_PATH) \ $(hide) $(AVBTOOL) extract_public_key --key $(BOARD_AVB_SYSTEM_EXT_KEY_PATH) \
--output $(1)/product_services.avbpubkey) --output $(1)/system_ext.avbpubkey)
$(if $(BOARD_AVB_ODM_KEY_PATH),\ $(if $(BOARD_AVB_ODM_KEY_PATH),\
$(hide) $(AVBTOOL) extract_public_key --key $(BOARD_AVB_ODM_KEY_PATH) \ $(hide) $(AVBTOOL) extract_public_key --key $(BOARD_AVB_ODM_KEY_PATH) \
--output $(1)/odm.avbpubkey) --output $(1)/odm.avbpubkey)
@ -3384,8 +3372,8 @@ endef
# Builds a chained VBMeta image. This VBMeta image will contain the descriptors for the partitions # Builds a chained VBMeta image. This VBMeta image will contain the descriptors for the partitions
# specified in BOARD_AVB_VBMETA_<NAME>. The built VBMeta image will be included into the top-level # specified in BOARD_AVB_VBMETA_<NAME>. The built VBMeta image will be included into the top-level
# vbmeta image as a chained partition. For example, if a target defines `BOARD_AVB_VBMETA_SYSTEM # vbmeta image as a chained partition. For example, if a target defines `BOARD_AVB_VBMETA_SYSTEM
# := system product_services`, `vbmeta_system.img` will be created that includes the descriptors # := system system_ext`, `vbmeta_system.img` will be created that includes the descriptors for
# for `system.img` and `product_services.img`. `vbmeta_system.img` itself will be included into # `system.img` and `system_ext.img`. `vbmeta_system.img` itself will be included into
# `vbmeta.img` as a chained partition. # `vbmeta.img` as a chained partition.
# $(1): VBMeta image name, such as "vbmeta_system", "vbmeta_vendor" etc. # $(1): VBMeta image name, such as "vbmeta_system", "vbmeta_vendor" etc.
# $(2): Output filename. # $(2): Output filename.
@ -3441,7 +3429,7 @@ $(INSTALLED_VBMETAIMAGE_TARGET): \
$(INSTALLED_SYSTEMIMAGE_TARGET) \ $(INSTALLED_SYSTEMIMAGE_TARGET) \
$(INSTALLED_VENDORIMAGE_TARGET) \ $(INSTALLED_VENDORIMAGE_TARGET) \
$(INSTALLED_PRODUCTIMAGE_TARGET) \ $(INSTALLED_PRODUCTIMAGE_TARGET) \
$(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET) \ $(INSTALLED_SYSTEM_EXTIMAGE_TARGET) \
$(INSTALLED_ODMIMAGE_TARGET) \ $(INSTALLED_ODMIMAGE_TARGET) \
$(INSTALLED_DTBOIMAGE_TARGET) \ $(INSTALLED_DTBOIMAGE_TARGET) \
$(INSTALLED_RECOVERYIMAGE_TARGET) \ $(INSTALLED_RECOVERYIMAGE_TARGET) \
@ -3466,7 +3454,7 @@ ifeq (,$(TARGET_BUILD_APPS))
ifeq (true,$(PRODUCT_BUILD_SUPER_PARTITION)) ifeq (true,$(PRODUCT_BUILD_SUPER_PARTITION))
# (1): list of items like "system", "vendor", "product", "product_services" # (1): list of items like "system", "vendor", "product", "system_ext"
# 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
$(foreach image,$(call images-for-partitions,$(1)),$$( \ $(foreach image,$(call images-for-partitions,$(1)),$$( \
@ -3895,7 +3883,7 @@ $(BUILT_TARGET_FILES_PACKAGE): \
$(INSTALLED_CACHEIMAGE_TARGET) \ $(INSTALLED_CACHEIMAGE_TARGET) \
$(INSTALLED_VENDORIMAGE_TARGET) \ $(INSTALLED_VENDORIMAGE_TARGET) \
$(INSTALLED_PRODUCTIMAGE_TARGET) \ $(INSTALLED_PRODUCTIMAGE_TARGET) \
$(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET) \ $(INSTALLED_SYSTEM_EXTIMAGE_TARGET) \
$(INSTALLED_VBMETAIMAGE_TARGET) \ $(INSTALLED_VBMETAIMAGE_TARGET) \
$(INSTALLED_ODMIMAGE_TARGET) \ $(INSTALLED_ODMIMAGE_TARGET) \
$(INSTALLED_DTBOIMAGE_TARGET) \ $(INSTALLED_DTBOIMAGE_TARGET) \
@ -3910,7 +3898,7 @@ $(BUILT_TARGET_FILES_PACKAGE): \
$(PRODUCT_SYSTEM_BASE_FS_PATH) \ $(PRODUCT_SYSTEM_BASE_FS_PATH) \
$(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_SYSTEM_EXT_BASE_FS_PATH) \
$(PRODUCT_ODM_BASE_FS_PATH) \ $(PRODUCT_ODM_BASE_FS_PATH) \
$(LPMAKE) \ $(LPMAKE) \
$(SELINUX_FC) \ $(SELINUX_FC) \
@ -3930,7 +3918,7 @@ $(BUILT_TARGET_FILES_PACKAGE): \
@echo "Package target files: $@" @echo "Package target files: $@"
$(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-system_ext-symlink)
$(call create-vendor-odm-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)
@ -4021,10 +4009,10 @@ ifdef BUILDING_PRODUCT_IMAGE
$(hide) $(call package_files-copy-root, \ $(hide) $(call package_files-copy-root, \
$(TARGET_OUT_PRODUCT),$(zip_root)/PRODUCT) $(TARGET_OUT_PRODUCT),$(zip_root)/PRODUCT)
endif endif
ifdef BUILDING_PRODUCT_SERVICES_IMAGE ifdef BUILDING_SYSTEM_EXT_IMAGE
@# Contents of the product_services image @# Contents of the system_ext image
$(hide) $(call package_files-copy-root, \ $(hide) $(call package_files-copy-root, \
$(TARGET_OUT_PRODUCT_SERVICES),$(zip_root)/PRODUCT_SERVICES) $(TARGET_OUT_SYSTEM_EXT),$(zip_root)/SYSTEM_EXT)
endif endif
ifdef BUILDING_ODM_IMAGE ifdef BUILDING_ODM_IMAGE
@# Contents of the odm image @# Contents of the odm image
@ -4112,9 +4100,9 @@ ifneq ($(PRODUCT_PRODUCT_BASE_FS_PATH),)
$(hide) cp $(PRODUCT_PRODUCT_BASE_FS_PATH) \ $(hide) cp $(PRODUCT_PRODUCT_BASE_FS_PATH) \
$(zip_root)/META/$(notdir $(PRODUCT_PRODUCT_BASE_FS_PATH)) $(zip_root)/META/$(notdir $(PRODUCT_PRODUCT_BASE_FS_PATH))
endif endif
ifneq ($(PRODUCT_PRODUCT_SERVICES_BASE_FS_PATH),) ifneq ($(PRODUCT_SYSTEM_EXT_BASE_FS_PATH),)
$(hide) cp $(PRODUCT_PRODUCT_SERVICES_BASE_FS_PATH) \ $(hide) cp $(PRODUCT_SYSTEM_EXT_BASE_FS_PATH) \
$(zip_root)/META/$(notdir $(PRODUCT_PRODUCT_SERVICES_BASE_FS_PATH)) $(zip_root)/META/$(notdir $(PRODUCT_SYSTEM_EXT_BASE_FS_PATH))
endif endif
ifneq ($(PRODUCT_ODM_BASE_FS_PATH),) ifneq ($(PRODUCT_ODM_BASE_FS_PATH),)
$(hide) cp $(PRODUCT_ODM_BASE_FS_PATH) \ $(hide) cp $(PRODUCT_ODM_BASE_FS_PATH) \
@ -4204,9 +4192,9 @@ ifdef BOARD_PREBUILT_PRODUCTIMAGE
$(hide) mkdir -p $(zip_root)/IMAGES $(hide) mkdir -p $(zip_root)/IMAGES
$(hide) cp $(INSTALLED_PRODUCTIMAGE_TARGET) $(zip_root)/IMAGES/ $(hide) cp $(INSTALLED_PRODUCTIMAGE_TARGET) $(zip_root)/IMAGES/
endif endif
ifdef BOARD_PREBUILT_PRODUCT_SERVICESIMAGE ifdef BOARD_PREBUILT_SYSTEM_EXTIMAGE
$(hide) mkdir -p $(zip_root)/IMAGES $(hide) mkdir -p $(zip_root)/IMAGES
$(hide) cp $(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET) $(zip_root)/IMAGES/ $(hide) cp $(INSTALLED_SYSTEM_EXTIMAGE_TARGET) $(zip_root)/IMAGES/
endif endif
ifdef BOARD_PREBUILT_BOOTIMAGE ifdef BOARD_PREBUILT_BOOTIMAGE
$(hide) mkdir -p $(zip_root)/IMAGES $(hide) mkdir -p $(zip_root)/IMAGES
@ -4248,8 +4236,8 @@ endif
ifdef BUILDING_PRODUCT_IMAGE ifdef BUILDING_PRODUCT_IMAGE
$(hide) $(call fs_config,$(zip_root)/PRODUCT,product/) > $(zip_root)/META/product_filesystem_config.txt $(hide) $(call fs_config,$(zip_root)/PRODUCT,product/) > $(zip_root)/META/product_filesystem_config.txt
endif endif
ifdef BUILDING_PRODUCT_SERVICES_IMAGE ifdef BUILDING_SYSTEM_EXT_IMAGE
$(hide) $(call fs_config,$(zip_root)/PRODUCT_SERVICES,product_services/) > $(zip_root)/META/product_services_filesystem_config.txt $(hide) $(call fs_config,$(zip_root)/SYSTEM_EXT,system_ext/) > $(zip_root)/META/system_ext_filesystem_config.txt
endif endif
ifdef BUILDING_ODM_IMAGE ifdef BUILDING_ODM_IMAGE
$(hide) $(call fs_config,$(zip_root)/ODM,odm/) > $(zip_root)/META/odm_filesystem_config.txt $(hide) $(call fs_config,$(zip_root)/ODM,odm/) > $(zip_root)/META/odm_filesystem_config.txt
@ -4404,7 +4392,7 @@ $(APPCOMPAT_ZIP): $(INSTALLED_SYSTEMIMAGE_TARGET) \
$(INSTALLED_USERDATAIMAGE_TARGET) \ $(INSTALLED_USERDATAIMAGE_TARGET) \
$(INSTALLED_VENDORIMAGE_TARGET) \ $(INSTALLED_VENDORIMAGE_TARGET) \
$(INSTALLED_PRODUCTIMAGE_TARGET) \ $(INSTALLED_PRODUCTIMAGE_TARGET) \
$(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET) $(INSTALLED_SYSTEM_EXTIMAGE_TARGET)
endif endif
$(APPCOMPAT_ZIP): PRIVATE_LIST_FILE := $(call intermediates-dir-for,PACKAGING,appcompat)/filelist $(APPCOMPAT_ZIP): PRIVATE_LIST_FILE := $(call intermediates-dir-for,PACKAGING,appcompat)/filelist
$(APPCOMPAT_ZIP): $(SOONG_ZIP) $(APPCOMPAT_ZIP): $(SOONG_ZIP)
@ -4433,7 +4421,7 @@ $(SYMBOLS_ZIP): $(INSTALLED_SYSTEMIMAGE_TARGET) \
$(INSTALLED_USERDATAIMAGE_TARGET) \ $(INSTALLED_USERDATAIMAGE_TARGET) \
$(INSTALLED_VENDORIMAGE_TARGET) \ $(INSTALLED_VENDORIMAGE_TARGET) \
$(INSTALLED_PRODUCTIMAGE_TARGET) \ $(INSTALLED_PRODUCTIMAGE_TARGET) \
$(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET) \ $(INSTALLED_SYSTEM_EXTIMAGE_TARGET) \
$(INSTALLED_ODMIMAGE_TARGET) \ $(INSTALLED_ODMIMAGE_TARGET) \
$(updater_dep) $(updater_dep)
endif endif
@ -4459,7 +4447,7 @@ $(COVERAGE_ZIP): $(INSTALLED_SYSTEMIMAGE_TARGET) \
$(INSTALLED_USERDATAIMAGE_TARGET) \ $(INSTALLED_USERDATAIMAGE_TARGET) \
$(INSTALLED_VENDORIMAGE_TARGET) \ $(INSTALLED_VENDORIMAGE_TARGET) \
$(INSTALLED_PRODUCTIMAGE_TARGET) \ $(INSTALLED_PRODUCTIMAGE_TARGET) \
$(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET) \ $(INSTALLED_SYSTEM_EXTIMAGE_TARGET) \
$(INSTALLED_ODMIMAGE_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
@ -4743,14 +4731,14 @@ $(INSTALLED_QEMU_PRODUCTIMAGE): $(INSTALLED_PRODUCTIMAGE_TARGET) $(MK_QEMU_IMAGE
productimage: $(INSTALLED_QEMU_PRODUCTIMAGE) productimage: $(INSTALLED_QEMU_PRODUCTIMAGE)
droidcore: $(INSTALLED_QEMU_PRODUCTIMAGE) droidcore: $(INSTALLED_QEMU_PRODUCTIMAGE)
endif endif
ifdef INSTALLED_PRODUCT_SERVICESIMAGE_TARGET ifdef INSTALLED_SYSTEM_EXTIMAGE_TARGET
INSTALLED_QEMU_PRODUCT_SERVICESIMAGE := $(PRODUCT_OUT)/product_services-qemu.img INSTALLED_QEMU_SYSTEM_EXTIMAGE := $(PRODUCT_OUT)/system_ext-qemu.img
$(INSTALLED_QEMU_PRODUCT_SERVICESIMAGE): $(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET) $(MK_QEMU_IMAGE_SH) $(SGDISK_HOST) $(SIMG2IMG) $(INSTALLED_QEMU_SYSTEM_EXTIMAGE): $(INSTALLED_SYSTEM_EXTIMAGE_TARGET) $(MK_QEMU_IMAGE_SH) $(SGDISK_HOST) $(SIMG2IMG)
@echo Create product_services-qemu.img @echo Create system_ext-qemu.img
(export SGDISK=$(SGDISK_HOST) SIMG2IMG=$(SIMG2IMG); $(MK_QEMU_IMAGE_SH) $(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET)) (export SGDISK=$(SGDISK_HOST) SIMG2IMG=$(SIMG2IMG); $(MK_QEMU_IMAGE_SH) $(INSTALLED_SYSTEM_EXTIMAGE_TARGET))
productservicesimage: $(INSTALLED_QEMU_PRODUCT_SERVICESIMAGE) systemextimage: $(INSTALLED_QEMU_SYSTEM_EXTIMAGE)
droidcore: $(INSTALLED_QEMU_PRODUCT_SERVICESIMAGE) droidcore: $(INSTALLED_QEMU_SYSTEM_EXTIMAGE)
endif endif
ifdef INSTALLED_ODMIMAGE_TARGET ifdef INSTALLED_ODMIMAGE_TARGET
INSTALLED_QEMU_ODMIMAGE := $(PRODUCT_OUT)/odm-qemu.img INSTALLED_QEMU_ODMIMAGE := $(PRODUCT_OUT)/odm-qemu.img

@ -41,7 +41,7 @@ endif # LOCAL_COMPRESSED_MODULE
include $(BUILD_SYSTEM)/base_rules.mk include $(BUILD_SYSTEM)/base_rules.mk
built_module := $(LOCAL_BUILT_MODULE) built_module := $(LOCAL_BUILT_MODULE)
# Run veridex on product, product_services and vendor modules. # Run veridex on product, system_ext and vendor modules.
# We skip it for unbundled app builds where we cannot build veridex. # We skip it for unbundled app builds where we cannot build veridex.
module_run_appcompat := module_run_appcompat :=
ifeq (true,$(non_system_module)) ifeq (true,$(non_system_module))

@ -81,11 +81,17 @@ else ifneq ($(filter $(TARGET_OUT_ODM)/%,$(_path)),)
LOCAL_ODM_MODULE := true LOCAL_ODM_MODULE := true
else ifneq ($(filter $(TARGET_OUT_PRODUCT)/%,$(_path)),) else ifneq ($(filter $(TARGET_OUT_PRODUCT)/%,$(_path)),)
LOCAL_PRODUCT_MODULE := true LOCAL_PRODUCT_MODULE := true
else ifneq ($(filter $(TARGET_OUT_PRODUCT_SERVICES)/%,$(_path)),) else ifneq ($(filter $(TARGET_OUT_SYSTEM_EXT)/%,$(_path)),)
LOCAL_PRODUCT_SERVICES_MODULE := true LOCAL_SYSTEM_EXT_MODULE := true
endif endif
_path := _path :=
# TODO(b/135957588) Remove following workaround
# LOCAL_PRODUCT_SERVICES_MODULE to LOCAL_PRODUCT_MODULE for all Android.mk
ifndef LOCAL_PRODUCT_MODULE
LOCAL_PRODUCT_MODULE := $(LOCAL_PRODUCT_SERVICES_MODULE)
endif
ifndef LOCAL_PROPRIETARY_MODULE ifndef LOCAL_PROPRIETARY_MODULE
LOCAL_PROPRIETARY_MODULE := $(LOCAL_VENDOR_MODULE) LOCAL_PROPRIETARY_MODULE := $(LOCAL_VENDOR_MODULE)
endif endif
@ -98,7 +104,7 @@ endif
non_system_module := $(filter true, \ non_system_module := $(filter true, \
$(LOCAL_PRODUCT_MODULE) \ $(LOCAL_PRODUCT_MODULE) \
$(LOCAL_PRODUCT_SERVICES_MODULE) \ $(LOCAL_SYSTEM_EXT_MODULE) \
$(LOCAL_VENDOR_MODULE) \ $(LOCAL_VENDOR_MODULE) \
$(LOCAL_PROPRIETARY_MODULE)) $(LOCAL_PROPRIETARY_MODULE))
@ -227,8 +233,8 @@ else ifeq (true,$(strip $(LOCAL_ODM_MODULE)))
partition_tag := _ODM partition_tag := _ODM
else ifeq (true,$(strip $(LOCAL_PRODUCT_MODULE))) else ifeq (true,$(strip $(LOCAL_PRODUCT_MODULE)))
partition_tag := _PRODUCT partition_tag := _PRODUCT
else ifeq (true,$(strip $(LOCAL_PRODUCT_SERVICES_MODULE))) else ifeq (true,$(strip $(LOCAL_SYSTEM_EXT_MODULE)))
partition_tag := _PRODUCT_SERVICES partition_tag := _SYSTEM_EXT
else ifeq (NATIVE_TESTS,$(LOCAL_MODULE_CLASS)) else ifeq (NATIVE_TESTS,$(LOCAL_MODULE_CLASS))
partition_tag := _DATA partition_tag := _DATA
else else

@ -67,8 +67,8 @@ _board_strip_readonly_list += \
BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE \ BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE \
BOARD_PRODUCTIMAGE_PARTITION_SIZE \ BOARD_PRODUCTIMAGE_PARTITION_SIZE \
BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE \ BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE \
BOARD_PRODUCT_SERVICESIMAGE_PARTITION_SIZE \ BOARD_SYSTEM_EXTIMAGE_PARTITION_SIZE \
BOARD_PRODUCT_SERVICESIMAGE_FILE_SYSTEM_TYPE \ BOARD_SYSTEM_EXTIMAGE_FILE_SYSTEM_TYPE \
BOARD_ODMIMAGE_PARTITION_SIZE \ BOARD_ODMIMAGE_PARTITION_SIZE \
BOARD_ODMIMAGE_FILE_SYSTEM_TYPE \ BOARD_ODMIMAGE_FILE_SYSTEM_TYPE \
@ -78,7 +78,7 @@ _dynamic_partitions_var_list += \
BOARD_VENDORIMAGE_PARTITION_RESERVED_SIZE \ BOARD_VENDORIMAGE_PARTITION_RESERVED_SIZE \
BOARD_ODMIMAGE_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_SYSTEM_EXTIMAGE_PARTITION_RESERVED_SIZE \
BOARD_SUPER_PARTITION_SIZE \ BOARD_SUPER_PARTITION_SIZE \
BOARD_SUPER_PARTITION_GROUPS \ BOARD_SUPER_PARTITION_GROUPS \
@ -413,48 +413,48 @@ endif
.KATI_READONLY := BUILDING_PRODUCT_IMAGE .KATI_READONLY := BUILDING_PRODUCT_IMAGE
########################################### ###########################################
# Now we can substitute with the real value of TARGET_COPY_OUT_PRODUCT_SERVICES # TODO(b/135957588) TARGET_COPY_OUT_PRODUCT_SERVICES will be set to
MERGE_PRODUCT_SERVICES_INTO_PRODUCT := # TARGET_COPY_OUT_PRODUCT as a workaround.
ifeq ($(TARGET_COPY_OUT_PRODUCT_SERVICES),$(_product_services_path_placeholder)) TARGET_COPY_OUT_PRODUCT_SERVICES := $(TARGET_COPY_OUT_PRODUCT)
TARGET_COPY_OUT_PRODUCT_SERVICES := $(TARGET_COPY_OUT_PRODUCT)
MERGE_PRODUCT_SERVICES_INTO_PRODUCT := true ###########################################
else ifeq ($(TARGET_COPY_OUT_PRODUCT),$(TARGET_COPY_OUT_PRODUCT_SERVICES)) # Now we can substitute with the real value of TARGET_COPY_OUT_SYSTEM_EXT
MERGE_PRODUCT_SERVICES_INTO_PRODUCT := true ifeq ($(TARGET_COPY_OUT_SYSTEM_EXT),$(_system_ext_path_placeholder))
else ifeq ($(filter product_services system/product_services,$(TARGET_COPY_OUT_PRODUCT_SERVICES)),) TARGET_COPY_OUT_SYSTEM_EXT := system/system_ext
$(error TARGET_COPY_OUT_PRODUCT_SERVICES must be either 'product_services',\ else ifeq ($(filter system_ext system/system_ext,$(TARGET_COPY_OUT_SYSTEM_EXT)),)
'$(TARGET_COPY_OUT_PRODUCT)' or 'system/product_services', seeing '$(TARGET_COPY_OUT_PRODUCT_SERVICES)'.) $(error TARGET_COPY_OUT_SYSTEM_EXT must be either 'system_ext' or 'system/system_ext', seeing '$(TARGET_COPY_OUT_SYSTEM_EXT)'.)
endif endif
.KATI_READONLY := MERGE_PRODUCT_SERVICES_INTO_PRODUCT PRODUCT_COPY_FILES := $(subst $(_system_ext_path_placeholder),$(TARGET_COPY_OUT_SYSTEM_EXT),$(PRODUCT_COPY_FILES))
PRODUCT_COPY_FILES := $(subst $(_product_services_path_placeholder),$(TARGET_COPY_OUT_PRODUCT_SERVICES),$(PRODUCT_COPY_FILES))
BOARD_USES_SYSTEM_EXTIMAGE :=
BOARD_USES_PRODUCT_SERVICESIMAGE := ifdef BOARD_PREBUILT_SYSTEM_EXTIMAGE
ifdef BOARD_PREBUILT_PRODUCT_SERVICESIMAGE BOARD_USES_SYSTEM_EXTIMAGE := true
BOARD_USES_PRODUCT_SERVICESIMAGE := true endif
endif ifdef BOARD_SYSTEM_EXTIMAGE_FILE_SYSTEM_TYPE
ifdef BOARD_PRODUCT_SERVICESIMAGE_FILE_SYSTEM_TYPE BOARD_USES_SYSTEM_EXTIMAGE := true
BOARD_USES_PRODUCT_SERVICESIMAGE := true endif
endif ifeq ($(TARGET_COPY_OUT_SYSTEM_EXT),system_ext)
ifeq ($(TARGET_COPY_OUT_PRODUCT_SERVICES),product_services) BOARD_USES_SYSTEM_EXTIMAGE := true
BOARD_USES_PRODUCT_SERVICESIMAGE := true else ifdef BOARD_USES_SYSTEM_EXTIMAGE
else ifdef BOARD_USES_PRODUCT_SERVICESIMAGE $(error TARGET_COPY_OUT_SYSTEM_EXT must be set to 'system_ext' to use a system_ext image)
$(error TARGET_COPY_OUT_PRODUCT_SERVICES must be set to 'product_services' to use a product_services image) endif
endif .KATI_READONLY := BOARD_USES_SYSTEM_EXTIMAGE
BUILDING_PRODUCT_SERVICES_IMAGE := BUILDING_SYSTEM_EXT_IMAGE :=
ifeq ($(PRODUCT_BUILD_PRODUCT_SERVICES_IMAGE),) ifeq ($(PRODUCT_BUILD_SYSTEM_EXT_IMAGE),)
ifdef BOARD_PRODUCT_SERVICESIMAGE_FILE_SYSTEM_TYPE ifdef BOARD_SYSTEM_EXTIMAGE_FILE_SYSTEM_TYPE
BUILDING_PRODUCT_SERVICES_IMAGE := true BUILDING_SYSTEM_EXT_IMAGE := true
endif endif
else ifeq ($(PRODUCT_BUILD_PRODUCT_SERVICES_IMAGE),true) else ifeq ($(PRODUCT_BUILD_SYSTEM_EXT_IMAGE),true)
BUILDING_PRODUCT_SERVICES_IMAGE := true BUILDING_SYSTEM_EXT_IMAGE := true
ifndef BOARD_PRODUCT_SERVICESIMAGE_FILE_SYSTEM_TYPE ifndef BOARD_SYSTEM_EXTIMAGE_FILE_SYSTEM_TYPE
$(error PRODUCT_BUILD_PRODUCT_SERVICES_IMAGE set to true, but BOARD_PRODUCT_SERVICESIMAGE_FILE_SYSTEM_TYPE not defined) $(error PRODUCT_BUILD_SYSTEM_EXT_IMAGE set to true, but BOARD_SYSTEM_EXTIMAGE_FILE_SYSTEM_TYPE not defined)
endif endif
endif endif
ifdef BOARD_PREBUILT_PRODUCT_SERVICESIMAGE ifdef BOARD_PREBUILT_SYSTEM_EXTIMAGE
BUILDING_PRODUCT_SERVICES_IMAGE := BUILDING_SYSTEM_EXT_IMAGE :=
endif endif
.KATI_READONLY := BUILDING_PRODUCT_SERVICES_IMAGE .KATI_READONLY := BUILDING_SYSTEM_EXT_IMAGE
########################################### ###########################################
# Now we can substitute with the real value of TARGET_COPY_OUT_ODM # Now we can substitute with the real value of TARGET_COPY_OUT_ODM

@ -20,8 +20,8 @@ ifeq ($(strip $(LOCAL_ODM_MODULE)),true)
partition := $(TARGET_OUT_ODM) partition := $(TARGET_OUT_ODM)
else ifeq ($(strip $(LOCAL_VENDOR_MODULE)),true) else ifeq ($(strip $(LOCAL_VENDOR_MODULE)),true)
partition := $(TARGET_OUT_VENDOR) partition := $(TARGET_OUT_VENDOR)
else ifeq ($(strip $(LOCAL_PRODUCT_SERVICES_MODULE)),true) else ifeq ($(strip $(LOCAL_SYSTEM_EXT_MODULE)),true)
partition := $(TARGET_OUT_PRODUCT_SERVICES) partition := $(TARGET_OUT_SYSTEM_EXT)
else else
partition := $(TARGET_OUT_PRODUCT) partition := $(TARGET_OUT_PRODUCT)
endif endif

@ -216,7 +216,8 @@ LOCAL_PRIVATE_PLATFORM_APIS:=
LOCAL_PRIVILEGED_MODULE:= LOCAL_PRIVILEGED_MODULE:=
# '',full,custom,disabled,obfuscation,optimization # '',full,custom,disabled,obfuscation,optimization
LOCAL_PRODUCT_MODULE:= LOCAL_PRODUCT_MODULE:=
LOCAL_PRODUCT_SERVICES_MODULE:= # TODO(b/135957588) Remove LOCAL_PRODUCT_SERVICES_MODULE
LOCAL_PRODUCT_SERVICES_MODULE :=
LOCAL_PROGUARD_ENABLED:= LOCAL_PROGUARD_ENABLED:=
LOCAL_PROGUARD_FLAG_FILES:= LOCAL_PROGUARD_FLAG_FILES:=
LOCAL_PROGUARD_FLAGS:= LOCAL_PROGUARD_FLAGS:=
@ -279,6 +280,7 @@ LOCAL_STATIC_ANDROID_LIBRARIES:=
LOCAL_STATIC_JAVA_AAR_LIBRARIES:= LOCAL_STATIC_JAVA_AAR_LIBRARIES:=
LOCAL_STATIC_JAVA_LIBRARIES:= LOCAL_STATIC_JAVA_LIBRARIES:=
LOCAL_STATIC_LIBRARIES:= LOCAL_STATIC_LIBRARIES:=
LOCAL_SYSTEM_EXT_MODULE:=
LOCAL_STRIP_MODULE:= LOCAL_STRIP_MODULE:=
LOCAL_SYSTEM_SHARED_LIBRARIES:=none LOCAL_SYSTEM_SHARED_LIBRARIES:=none
LOCAL_TARGET_REQUIRED_MODULES:= LOCAL_TARGET_REQUIRED_MODULES:=

@ -871,10 +871,10 @@ $(error Should not define BOARD_PRODUCTIMAGE_PARTITION_SIZE and \
endif endif
endif endif
ifneq ($(BOARD_PRODUCT_SERVICESIMAGE_PARTITION_SIZE),) ifneq ($(BOARD_SYSTEM_EXTIMAGE_PARTITION_SIZE),)
ifneq ($(BOARD_PRODUCT_SERVICESIMAGE_PARTITION_RESERVED_SIZE),) ifneq ($(BOARD_SYSTEM_EXTIMAGE_PARTITION_RESERVED_SIZE),)
$(error Should not define BOARD_PRODUCT_SERVICESIMAGE_PARTITION_SIZE and \ $(error Should not define BOARD_SYSTEM_EXTIMAGE_PARTITION_SIZE and \
BOARD_PRODUCT_SERVICESIMAGE_PARTITION_RESERVED_SIZE together) BOARD_SYSTEM_EXTIMAGE_PARTITION_RESERVED_SIZE together)
endif endif
endif endif
@ -899,7 +899,7 @@ $(foreach group,$(call to-upper,$(BOARD_SUPER_PARTITION_GROUPS)), \
) )
# BOARD_*_PARTITION_LIST: a list of the following tokens # BOARD_*_PARTITION_LIST: a list of the following tokens
valid_super_partition_list := system vendor product product_services odm valid_super_partition_list := system vendor product system_ext odm
$(foreach group,$(call to-upper,$(BOARD_SUPER_PARTITION_GROUPS)), \ $(foreach group,$(call to-upper,$(BOARD_SUPER_PARTITION_GROUPS)), \
$(if $(filter-out $(valid_super_partition_list),$(BOARD_$(group)_PARTITION_LIST)), \ $(if $(filter-out $(valid_super_partition_list),$(BOARD_$(group)_PARTITION_LIST)), \
$(error BOARD_$(group)_PARTITION_LIST contains invalid partition name \ $(error BOARD_$(group)_PARTITION_LIST contains invalid partition name \
@ -1160,7 +1160,7 @@ dont_bother_goals := out \
bptimage-nodeps \ bptimage-nodeps \
vnod vendorimage-nodeps \ vnod vendorimage-nodeps \
pnod productimage-nodeps \ pnod productimage-nodeps \
psnod productservicesimage-nodeps \ senod systemextimage-nodeps \
onod odmimage-nodeps \ onod odmimage-nodeps \
systemotherimage-nodeps \ systemotherimage-nodeps \
ramdisk-nodeps \ ramdisk-nodeps \

@ -8,8 +8,8 @@ DEX_PREOPT_DEFAULT ?= true
SYSTEM_OTHER_ODEX_FILTER ?= \ SYSTEM_OTHER_ODEX_FILTER ?= \
app/% \ app/% \
priv-app/% \ priv-app/% \
product_services/app/% \ system_ext/app/% \
product_services/priv-app/% \ system_ext/priv-app/% \
product/app/% \ product/app/% \
product/priv-app/% \ product/priv-app/% \

@ -233,11 +233,14 @@ TARGET_COPY_OUT_RECOVERY := recovery
# BoardConfig, to be either the partition dir, or a subdir within 'system'. # BoardConfig, to be either the partition dir, or a subdir within 'system'.
_vendor_path_placeholder := ||VENDOR-PATH-PH|| _vendor_path_placeholder := ||VENDOR-PATH-PH||
_product_path_placeholder := ||PRODUCT-PATH-PH|| _product_path_placeholder := ||PRODUCT-PATH-PH||
_product_services_path_placeholder := ||PRODUCT_SERVICES-PATH-PH|| _system_ext_path_placeholder := ||SYSTEM_EXT-PATH-PH||
_odm_path_placeholder := ||ODM-PATH-PH|| _odm_path_placeholder := ||ODM-PATH-PH||
TARGET_COPY_OUT_VENDOR := $(_vendor_path_placeholder) TARGET_COPY_OUT_VENDOR := $(_vendor_path_placeholder)
TARGET_COPY_OUT_PRODUCT := $(_product_path_placeholder) TARGET_COPY_OUT_PRODUCT := $(_product_path_placeholder)
TARGET_COPY_OUT_PRODUCT_SERVICES := $(_product_services_path_placeholder) # TODO(b/135957588) TARGET_COPY_OUT_PRODUCT_SERVICES will copy the target to
# product
TARGET_COPY_OUT_PRODUCT_SERVICES := $(_product_path_placeholder)
TARGET_COPY_OUT_SYSTEM_EXT := $(_system_ext_path_placeholder)
TARGET_COPY_OUT_ODM := $(_odm_path_placeholder) TARGET_COPY_OUT_ODM := $(_odm_path_placeholder)
# Returns the non-sanitized version of the path provided in $1. # Returns the non-sanitized version of the path provided in $1.
@ -785,38 +788,38 @@ $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS_PRIVILEGED := $(TARGET_OUT_
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS \ $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS \
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS_PRIVILEGED $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS_PRIVILEGED
TARGET_OUT_PRODUCT_SERVICES := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_PRODUCT_SERVICES) TARGET_OUT_SYSTEM_EXT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM_EXT)
ifneq ($(filter address,$(SANITIZE_TARGET)),) ifneq ($(filter address,$(SANITIZE_TARGET)),)
target_out_product_services_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_PRODUCT_SERVICES) target_out_system_ext_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_SYSTEM_EXT)
ifeq ($(SANITIZE_LITE),true) ifeq ($(SANITIZE_LITE),true)
# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not # 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/. # work with unsanitized app_process. For simplicity, generate APKs into /data/asan/.
target_out_product_services_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_PRODUCT_SERVICES) target_out_system_ext_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_SYSTEM_EXT)
else else
target_out_product_services_app_base := $(TARGET_OUT_PRODUCT_SERVICES) target_out_system_ext_app_base := $(TARGET_OUT_SYSTEM_EXT)
endif endif
else else
target_out_product_services_shared_libraries_base := $(TARGET_OUT_PRODUCT_SERVICES) target_out_system_ext_shared_libraries_base := $(TARGET_OUT_SYSTEM_EXT)
target_out_product_services_app_base := $(TARGET_OUT_PRODUCT_SERVICES) target_out_system_ext_app_base := $(TARGET_OUT_SYSTEM_EXT)
endif endif
ifeq ($(TARGET_IS_64_BIT),true) ifeq ($(TARGET_IS_64_BIT),true)
TARGET_OUT_PRODUCT_SERVICES_SHARED_LIBRARIES := $(target_out_product_services_shared_libraries_base)/lib64 TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES := $(target_out_system_ext_shared_libraries_base)/lib64
else else
TARGET_OUT_PRODUCT_SERVICES_SHARED_LIBRARIES := $(target_out_product_services_shared_libraries_base)/lib TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES := $(target_out_system_ext_shared_libraries_base)/lib
endif endif
TARGET_OUT_PRODUCT_SERVICES_JAVA_LIBRARIES:= $(TARGET_OUT_PRODUCT_SERVICES)/framework TARGET_OUT_SYSTEM_EXT_JAVA_LIBRARIES:= $(TARGET_OUT_SYSTEM_EXT)/framework
TARGET_OUT_PRODUCT_SERVICES_APPS := $(target_out_product_services_app_base)/app TARGET_OUT_SYSTEM_EXT_APPS := $(target_out_system_ext_app_base)/app
TARGET_OUT_PRODUCT_SERVICES_APPS_PRIVILEGED := $(target_out_product_services_app_base)/priv-app TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED := $(target_out_system_ext_app_base)/priv-app
TARGET_OUT_PRODUCT_SERVICES_ETC := $(TARGET_OUT_PRODUCT_SERVICES)/etc TARGET_OUT_SYSTEM_EXT_ETC := $(TARGET_OUT_SYSTEM_EXT)/etc
ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true) ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true)
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_SERVICES_SHARED_LIBRARIES := $(target_out_product_services_shared_libraries_base)/lib/$(TARGET_2ND_ARCH) $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES := $(target_out_system_ext_shared_libraries_base)/lib/$(TARGET_2ND_ARCH)
else else
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_SERVICES_SHARED_LIBRARIES := $(target_out_product_services_shared_libraries_base)/lib $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES := $(target_out_system_ext_shared_libraries_base)/lib
endif endif
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_SERVICES_APPS := $(TARGET_OUT_PRODUCT_SERVICES_APPS) $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_APPS := $(TARGET_OUT_SYSTEM_EXT_APPS)
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_SERVICES_APPS_PRIVILEGED := $(TARGET_OUT_PRODUCT_SERVICES_APPS_PRIVILEGED) $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED := $(TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED)
TARGET_OUT_BREAKPAD := $(PRODUCT_OUT)/breakpad TARGET_OUT_BREAKPAD := $(PRODUCT_OUT)/breakpad
.KATI_READONLY := TARGET_OUT_BREAKPAD .KATI_READONLY := TARGET_OUT_BREAKPAD

@ -26,7 +26,7 @@ supported_partition_patterns := \
$(TARGET_OUT_VENDOR)/% \ $(TARGET_OUT_VENDOR)/% \
$(TARGET_OUT_OEM)/% \ $(TARGET_OUT_OEM)/% \
$(TARGET_OUT_PRODUCT)/% \ $(TARGET_OUT_PRODUCT)/% \
$(TARGET_OUT_PRODUCT_SERVICES)/% \ $(TARGET_OUT_SYSTEM_EXT)/% \
ifeq ($(filter $(supported_partition_patterns),$(my_module_path)),) ifeq ($(filter $(supported_partition_patterns),$(my_module_path)),)
my_embed_jni := true my_embed_jni := true

@ -1111,7 +1111,7 @@ endef
define resolve-product-relative-paths define resolve-product-relative-paths
$(subst $(_vendor_path_placeholder),$(TARGET_COPY_OUT_VENDOR),\ $(subst $(_vendor_path_placeholder),$(TARGET_COPY_OUT_VENDOR),\
$(subst $(_product_path_placeholder),$(TARGET_COPY_OUT_PRODUCT),\ $(subst $(_product_path_placeholder),$(TARGET_COPY_OUT_PRODUCT),\
$(subst $(_product_services_path_placeholder),$(TARGET_COPY_OUT_PRODUCT_SERVICES),\ $(subst $(_system_ext_path_placeholder),$(TARGET_COPY_OUT_SYSTEM_EXT),\
$(subst $(_odm_path_placeholder),$(TARGET_COPY_OUT_ODM),\ $(subst $(_odm_path_placeholder),$(TARGET_COPY_OUT_ODM),\
$(foreach p,$(1),$(call append-path,$(PRODUCT_OUT),$(p)$(2))))))) $(foreach p,$(1),$(call append-path,$(PRODUCT_OUT),$(p)$(2)))))))
endef endef
@ -1601,8 +1601,8 @@ vendorimage: $(INSTALLED_VENDORIMAGE_TARGET)
.PHONY: productimage .PHONY: productimage
productimage: $(INSTALLED_PRODUCTIMAGE_TARGET) productimage: $(INSTALLED_PRODUCTIMAGE_TARGET)
.PHONY: productservicesimage .PHONY: systemextimage
productservicesimage: $(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET) systemextimage: $(INSTALLED_SYSTEM_EXTIMAGE_TARGET)
.PHONY: odmimage .PHONY: odmimage
odmimage: $(INSTALLED_ODMIMAGE_TARGET) odmimage: $(INSTALLED_ODMIMAGE_TARGET)
@ -1652,8 +1652,8 @@ droidcore: $(filter $(HOST_OUT_ROOT)/%,$(modules_to_install)) \
$(INSTALLED_FILES_JSON_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_SYSTEM_EXT) \
$(INSTALLED_FILES_JSON_PRODUCT_SERVICES) \ $(INSTALLED_FILES_JSON_SYSTEM_EXT) \
$(INSTALLED_FILES_FILE_SYSTEMOTHER) \ $(INSTALLED_FILES_FILE_SYSTEMOTHER) \
$(INSTALLED_FILES_JSON_SYSTEMOTHER) \ $(INSTALLED_FILES_JSON_SYSTEMOTHER) \
$(INSTALLED_FILES_FILE_RAMDISK) \ $(INSTALLED_FILES_FILE_RAMDISK) \
@ -1745,8 +1745,8 @@ else # TARGET_BUILD_APPS
$(INSTALLED_FILES_JSON_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_SYSTEM_EXT) \
$(INSTALLED_FILES_JSON_PRODUCT_SERVICES) \ $(INSTALLED_FILES_JSON_SYSTEM_EXT) \
$(INSTALLED_FILES_FILE_SYSTEMOTHER) \ $(INSTALLED_FILES_FILE_SYSTEMOTHER) \
$(INSTALLED_FILES_JSON_SYSTEMOTHER) \ $(INSTALLED_FILES_JSON_SYSTEMOTHER) \
$(INSTALLED_FILES_FILE_RECOVERY) \ $(INSTALLED_FILES_FILE_RECOVERY) \

@ -109,7 +109,7 @@ ifeq ($(PRODUCT_ENFORCE_RRO_TARGETS),*)
$(LOCAL_ODM_MODULE) \ $(LOCAL_ODM_MODULE) \
$(LOCAL_OEM_MODULE) \ $(LOCAL_OEM_MODULE) \
$(LOCAL_PRODUCT_MODULE) \ $(LOCAL_PRODUCT_MODULE) \
$(LOCAL_PRODUCT_SERVICES_MODULE) \ $(LOCAL_SYSTEM_EXT_MODULE) \
$(LOCAL_PROPRIETARY_MODULE) \ $(LOCAL_PROPRIETARY_MODULE) \
$(LOCAL_VENDOR_MODULE)) $(LOCAL_VENDOR_MODULE))
enforce_rro_enabled := $(if $(non_system_module),,true) enforce_rro_enabled := $(if $(non_system_module),,true)
@ -508,7 +508,7 @@ else
endif endif
endif endif
# Run veridex on product, product_services and vendor modules. # Run veridex on product, system_ext and vendor modules.
# We skip it for unbundled app builds where we cannot build veridex. # We skip it for unbundled app builds where we cannot build veridex.
module_run_appcompat := module_run_appcompat :=
ifeq (true,$(non_system_module)) ifeq (true,$(non_system_module))

@ -117,7 +117,7 @@ $(OUT_DIR)/products/$(strip $(1)).txt: $(this_makefile)
$(hide) echo 'PRODUCT_DEFAULT_PROPERTY_OVERRIDES=$$(PRODUCTS.$(strip $(1)).PRODUCT_DEFAULT_PROPERTY_OVERRIDES)' >> $$@ $(hide) echo 'PRODUCT_DEFAULT_PROPERTY_OVERRIDES=$$(PRODUCTS.$(strip $(1)).PRODUCT_DEFAULT_PROPERTY_OVERRIDES)' >> $$@
$(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_SYSTEM_EXT_PROPERTIES=$$(PRODUCTS.$(strip $(1)).PRODUCT_SYSTEM_EXT_PROPERTIES)' >> $$@
$(hide) echo 'PRODUCT_ODM_PROPERTIES=$$(PRODUCTS.$(strip $(1)).PRODUCT_ODM_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)' >> $$@

@ -161,8 +161,8 @@ _product_list_vars += PRODUCT_PRODUCT_PROPERTIES
# A list of property assignments, like "key = value", with zero or more # A list of property assignments, like "key = value", with zero or more
# whitespace characters on either side of the '='. # whitespace characters on either side of the '='.
# used for adding properties to build.prop of product partition # used for adding properties to build.prop of system_ext and odm partitions
_product_list_vars += PRODUCT_PRODUCT_SERVICES_PROPERTIES _product_list_vars += PRODUCT_SYSTEM_EXT_PROPERTIES
_product_list_vars += PRODUCT_ODM_PROPERTIES _product_list_vars += PRODUCT_ODM_PROPERTIES
# The characteristics of the product, which among other things is passed to aapt # The characteristics of the product, which among other things is passed to aapt
@ -238,7 +238,7 @@ _product_single_value_vars += PRODUCT_VERITY_SIGNING_KEY
_product_single_value_vars += PRODUCT_SYSTEM_VERITY_PARTITION _product_single_value_vars += PRODUCT_SYSTEM_VERITY_PARTITION
_product_single_value_vars += PRODUCT_VENDOR_VERITY_PARTITION _product_single_value_vars += PRODUCT_VENDOR_VERITY_PARTITION
_product_single_value_vars += PRODUCT_PRODUCT_VERITY_PARTITION _product_single_value_vars += PRODUCT_PRODUCT_VERITY_PARTITION
_product_single_value_vars += PRODUCT_PRODUCT_SERVICES_VERITY_PARTITION _product_single_value_vars += PRODUCT_SYSTEM_EXT_VERITY_PARTITION
_product_single_value_vars += PRODUCT_ODM_VERITY_PARTITION _product_single_value_vars += PRODUCT_ODM_VERITY_PARTITION
_product_single_value_vars += PRODUCT_SYSTEM_SERVER_DEBUG_INFO _product_single_value_vars += PRODUCT_SYSTEM_SERVER_DEBUG_INFO
_product_single_value_vars += PRODUCT_OTHER_JAVA_DEBUG_INFO _product_single_value_vars += PRODUCT_OTHER_JAVA_DEBUG_INFO
@ -265,7 +265,7 @@ _product_list_vars += PRODUCT_SANITIZER_MODULE_CONFIGS
_product_single_value_vars += PRODUCT_SYSTEM_BASE_FS_PATH _product_single_value_vars += PRODUCT_SYSTEM_BASE_FS_PATH
_product_single_value_vars += PRODUCT_VENDOR_BASE_FS_PATH _product_single_value_vars += PRODUCT_VENDOR_BASE_FS_PATH
_product_single_value_vars += PRODUCT_PRODUCT_BASE_FS_PATH _product_single_value_vars += PRODUCT_PRODUCT_BASE_FS_PATH
_product_single_value_vars += PRODUCT_PRODUCT_SERVICES_BASE_FS_PATH _product_single_value_vars += PRODUCT_SYSTEM_EXT_BASE_FS_PATH
_product_single_value_vars += PRODUCT_ODM_BASE_FS_PATH _product_single_value_vars += PRODUCT_ODM_BASE_FS_PATH
# The first API level this product shipped with # The first API level this product shipped with
@ -357,7 +357,7 @@ _product_single_value_vars += PRODUCT_BUILD_SYSTEM_IMAGE
_product_single_value_vars += PRODUCT_BUILD_SYSTEM_OTHER_IMAGE _product_single_value_vars += PRODUCT_BUILD_SYSTEM_OTHER_IMAGE
_product_single_value_vars += PRODUCT_BUILD_VENDOR_IMAGE _product_single_value_vars += PRODUCT_BUILD_VENDOR_IMAGE
_product_single_value_vars += PRODUCT_BUILD_PRODUCT_IMAGE _product_single_value_vars += PRODUCT_BUILD_PRODUCT_IMAGE
_product_single_value_vars += PRODUCT_BUILD_PRODUCT_SERVICES_IMAGE _product_single_value_vars += PRODUCT_BUILD_SYSTEM_EXT_IMAGE
_product_single_value_vars += PRODUCT_BUILD_ODM_IMAGE _product_single_value_vars += PRODUCT_BUILD_ODM_IMAGE
_product_single_value_vars += PRODUCT_BUILD_CACHE_IMAGE _product_single_value_vars += PRODUCT_BUILD_CACHE_IMAGE
_product_single_value_vars += PRODUCT_BUILD_RAMDISK_IMAGE _product_single_value_vars += PRODUCT_BUILD_RAMDISK_IMAGE

@ -418,7 +418,7 @@ $(foreach image, \
SYSTEM_OTHER \ SYSTEM_OTHER \
VENDOR \ VENDOR \
PRODUCT \ PRODUCT \
PRODUCT_SERVICES \ SYSTEM_EXT \
ODM \ ODM \
CACHE \ CACHE \
RAMDISK \ RAMDISK \

@ -43,7 +43,7 @@ ifdef LOCAL_SOONG_CLASSES_JAR
endif # TURBINE_ENABLED != false endif # TURBINE_ENABLED != false
endif endif
# Run veridex on product, product_services and vendor modules. # Run veridex on product, system_ext and vendor modules.
# We skip it for unbundled app builds where we cannot build veridex. # We skip it for unbundled app builds where we cannot build veridex.
module_run_appcompat := module_run_appcompat :=
ifeq (true,$(non_system_module)) ifeq (true,$(non_system_module))

@ -146,7 +146,7 @@ $(call add_json_bool, Use_lmkd_stats_log, $(filter true,$(TARGET_
$(call add_json_str, VendorPath, $(TARGET_COPY_OUT_VENDOR)) $(call add_json_str, VendorPath, $(TARGET_COPY_OUT_VENDOR))
$(call add_json_str, OdmPath, $(TARGET_COPY_OUT_ODM)) $(call add_json_str, OdmPath, $(TARGET_COPY_OUT_ODM))
$(call add_json_str, ProductPath, $(TARGET_COPY_OUT_PRODUCT)) $(call add_json_str, ProductPath, $(TARGET_COPY_OUT_PRODUCT))
$(call add_json_str, ProductServicesPath, $(TARGET_COPY_OUT_PRODUCT_SERVICES)) $(call add_json_str, SystemExtPath, $(TARGET_COPY_OUT_SYSTEM_EXT))
$(call add_json_bool, MinimizeJavaDebugInfo, $(filter true,$(PRODUCT_MINIMIZE_JAVA_DEBUG_INFO))) $(call add_json_bool, MinimizeJavaDebugInfo, $(filter true,$(PRODUCT_MINIMIZE_JAVA_DEBUG_INFO)))
$(call add_json_bool, UseGoma, $(filter-out false,$(USE_GOMA))) $(call add_json_bool, UseGoma, $(filter-out false,$(USE_GOMA)))

@ -24,7 +24,7 @@ $(shareduid_violation_modules_filename): $(INSTALLED_SYSTEMIMAGE_TARGET) \
$(INSTALLED_USERDATAIMAGE_TARGET) \ $(INSTALLED_USERDATAIMAGE_TARGET) \
$(INSTALLED_VENDORIMAGE_TARGET) \ $(INSTALLED_VENDORIMAGE_TARGET) \
$(INSTALLED_PRODUCTIMAGE_TARGET) \ $(INSTALLED_PRODUCTIMAGE_TARGET) \
$(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET) $(INSTALLED_SYSTEM_EXTIMAGE_TARGET)
$(shareduid_violation_modules_filename): $(find_shareduid_script) $(shareduid_violation_modules_filename): $(find_shareduid_script)
$(shareduid_violation_modules_filename): $(AAPT2) $(shareduid_violation_modules_filename): $(AAPT2)

@ -40,8 +40,8 @@ Common goals are:
Stands for "Vendor, NO Dependencies" Stands for "Vendor, NO Dependencies"
pnod Quickly rebuild the product image from built packages pnod Quickly rebuild the product image from built packages
Stands for "Product, NO Dependencies" Stands for "Product, NO Dependencies"
psnod Quickly rebuild the product_services image from built packages senod Quickly rebuild the system_ext image from built packages
Stands for "ProductServices, NO Dependencies" Stands for "SystemExt, NO Dependencies"
onod Quickly rebuild the odm image from built packages onod Quickly rebuild the odm image from built packages
Stands for "ODM, NO Dependencies" Stands for "ODM, NO Dependencies"

@ -19,8 +19,9 @@ TARGET_USERIMAGES_USE_F2FS := true
# Enable dynamic system image size and reserved 64MB in it. # Enable dynamic system image size and reserved 64MB in it.
BOARD_SYSTEMIMAGE_PARTITION_RESERVED_SIZE := 67108864 BOARD_SYSTEMIMAGE_PARTITION_RESERVED_SIZE := 67108864
# GSI forces product packages to /system for now. # GSI forces product and system_ext packages to /system for now.
TARGET_COPY_OUT_PRODUCT := system/product TARGET_COPY_OUT_PRODUCT := system/product
TARGET_COPY_OUT_SYSTEM_EXT := system/system_ext
BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE := BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE :=
# Creates metadata partition mount point under root for # Creates metadata partition mount point under root for

@ -8,7 +8,8 @@ TARGET_NO_RECOVERY := true
TARGET_USERIMAGES_USE_EXT4 := true TARGET_USERIMAGES_USE_EXT4 := true
# Mainline devices must have /vendor and /product partitions. # Mainline devices must have /system_ext, /vendor and /product partitions.
TARGET_COPY_OUT_SYSTEM_EXT := system_ext
TARGET_COPY_OUT_VENDOR := vendor TARGET_COPY_OUT_VENDOR := vendor
TARGET_COPY_OUT_PRODUCT := product TARGET_COPY_OUT_PRODUCT := product

@ -1,2 +1,2 @@
/product /product
/product_services /system_ext

@ -55,10 +55,10 @@ PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST += \
system/etc/init/config/skip_mount.cfg \ system/etc/init/config/skip_mount.cfg \
system/etc/init/init.gsi.rc \ system/etc/init/init.gsi.rc \
# Exclude all files under system/product and system/product_services # Exclude all files under system/product and system/system_ext
PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST += \ PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST += \
system/product/% \ system/product/% \
system/product_services/% system/system_ext/%
# Split selinux policy # Split selinux policy

@ -21,7 +21,7 @@ $(call enforce-product-packages-exist,)
PRODUCT_BUILD_CACHE_IMAGE := false PRODUCT_BUILD_CACHE_IMAGE := false
PRODUCT_BUILD_ODM_IMAGE := false PRODUCT_BUILD_ODM_IMAGE := false
PRODUCT_BUILD_PRODUCT_IMAGE := false PRODUCT_BUILD_PRODUCT_IMAGE := false
PRODUCT_BUILD_PRODUCT_SERVICES_IMAGE := false PRODUCT_BUILD_SYSTEM_EXT_IMAGE := false
PRODUCT_BUILD_RAMDISK_IMAGE := false PRODUCT_BUILD_RAMDISK_IMAGE := false
PRODUCT_BUILD_SYSTEM_IMAGE := true PRODUCT_BUILD_SYSTEM_IMAGE := true
PRODUCT_BUILD_SYSTEM_OTHER_IMAGE := false PRODUCT_BUILD_SYSTEM_OTHER_IMAGE := false

@ -27,13 +27,13 @@ endif
system_android_filesystem_config := system/core/include/private/android_filesystem_config.h system_android_filesystem_config := system/core/include/private/android_filesystem_config.h
system_capability_header := bionic/libc/kernel/uapi/linux/capability.h system_capability_header := bionic/libc/kernel/uapi/linux/capability.h
# List of supported vendor, oem, odm, product and product_services Partitions # List of supported vendor, oem, odm, product and system_ext Partitions
fs_config_generate_extra_partition_list := $(strip \ fs_config_generate_extra_partition_list := $(strip \
$(if $(BOARD_USES_VENDORIMAGE)$(BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE),vendor) \ $(if $(BOARD_USES_VENDORIMAGE)$(BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE),vendor) \
$(if $(BOARD_USES_OEMIMAGE)$(BOARD_OEMIMAGE_FILE_SYSTEM_TYPE),oem) \ $(if $(BOARD_USES_OEMIMAGE)$(BOARD_OEMIMAGE_FILE_SYSTEM_TYPE),oem) \
$(if $(BOARD_USES_ODMIMAGE)$(BOARD_ODMIMAGE_FILE_SYSTEM_TYPE),odm) \ $(if $(BOARD_USES_ODMIMAGE)$(BOARD_ODMIMAGE_FILE_SYSTEM_TYPE),odm) \
$(if $(BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE),product) \ $(if $(BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE),product) \
$(if $(BOARD_PRODUCT_SERVICESIMAGE_FILE_SYSTEM_TYPE),product_services) \ $(if $(BOARD_SYSTEM_EXTIMAGE_FILE_SYSTEM_TYPE),system_ext) \
) )
################################## ##################################
@ -332,17 +332,17 @@ $(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/fs_config_generator.py $(TARGET_FS_CONFIG_G
$(or $(PRIVATE_TARGET_FS_CONFIG_GEN),/dev/null) $(or $(PRIVATE_TARGET_FS_CONFIG_GEN),/dev/null)
endif endif
ifneq ($(filter product_services,$(fs_config_generate_extra_partition_list)),) ifneq ($(filter system_ext,$(fs_config_generate_extra_partition_list)),)
################################## ##################################
# Generate the product_services/etc/fs_config_dirs binary file for the target # Generate the system_ext/etc/fs_config_dirs binary file for the target
# Add fs_config_dirs or fs_config_dirs_product_services to PRODUCT_PACKAGES in # Add fs_config_dirs or fs_config_dirs_system_ext to PRODUCT_PACKAGES in
# the device make file to enable # the device make file to enable
include $(CLEAR_VARS) include $(CLEAR_VARS)
LOCAL_MODULE := fs_config_dirs_product_services LOCAL_MODULE := fs_config_dirs_system_ext
LOCAL_MODULE_CLASS := ETC LOCAL_MODULE_CLASS := ETC
LOCAL_INSTALLED_MODULE_STEM := fs_config_dirs LOCAL_INSTALLED_MODULE_STEM := fs_config_dirs
LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT_SERVICES)/etc LOCAL_MODULE_PATH := $(TARGET_OUT_SYSTEM_EXT)/etc
include $(BUILD_SYSTEM)/base_rules.mk include $(BUILD_SYSTEM)/base_rules.mk
$(LOCAL_BUILT_MODULE): PRIVATE_ANDROID_FS_HDR := $(system_android_filesystem_config) $(LOCAL_BUILT_MODULE): PRIVATE_ANDROID_FS_HDR := $(system_android_filesystem_config)
$(LOCAL_BUILT_MODULE): PRIVATE_ANDROID_CAP_HDR := $(system_capability_header) $(LOCAL_BUILT_MODULE): PRIVATE_ANDROID_CAP_HDR := $(system_capability_header)
@ -352,21 +352,21 @@ $(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/fs_config_generator.py $(TARGET_FS_CONFIG_G
$< fsconfig \ $< fsconfig \
--aid-header $(PRIVATE_ANDROID_FS_HDR) \ --aid-header $(PRIVATE_ANDROID_FS_HDR) \
--capability-header $(PRIVATE_ANDROID_CAP_HDR) \ --capability-header $(PRIVATE_ANDROID_CAP_HDR) \
--partition product_services \ --partition system_ext \
--dirs \ --dirs \
--out_file $@ \ --out_file $@ \
$(or $(PRIVATE_TARGET_FS_CONFIG_GEN),/dev/null) $(or $(PRIVATE_TARGET_FS_CONFIG_GEN),/dev/null)
################################## ##################################
# Generate the product_services/etc/fs_config_files binary file for the target # Generate the system_ext/etc/fs_config_files binary file for the target
# Add fs_config_files of fs_config_files_product_services to PRODUCT_PACKAGES in # Add fs_config_files of fs_config_files_system_ext to PRODUCT_PACKAGES in
# the device make file to enable # the device make file to enable
include $(CLEAR_VARS) include $(CLEAR_VARS)
LOCAL_MODULE := fs_config_files_product_services LOCAL_MODULE := fs_config_files_system_ext
LOCAL_MODULE_CLASS := ETC LOCAL_MODULE_CLASS := ETC
LOCAL_INSTALLED_MODULE_STEM := fs_config_files LOCAL_INSTALLED_MODULE_STEM := fs_config_files
LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT_SERVICES)/etc LOCAL_MODULE_PATH := $(TARGET_OUT_SYSTEM_EXT)/etc
include $(BUILD_SYSTEM)/base_rules.mk include $(BUILD_SYSTEM)/base_rules.mk
$(LOCAL_BUILT_MODULE): PRIVATE_ANDROID_FS_HDR := $(system_android_filesystem_config) $(LOCAL_BUILT_MODULE): PRIVATE_ANDROID_FS_HDR := $(system_android_filesystem_config)
$(LOCAL_BUILT_MODULE): PRIVATE_ANDROID_CAP_HDR := $(system_capability_header) $(LOCAL_BUILT_MODULE): PRIVATE_ANDROID_CAP_HDR := $(system_capability_header)
@ -376,7 +376,7 @@ $(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/fs_config_generator.py $(TARGET_FS_CONFIG_G
$< fsconfig \ $< fsconfig \
--aid-header $(PRIVATE_ANDROID_FS_HDR) \ --aid-header $(PRIVATE_ANDROID_FS_HDR) \
--capability-header $(PRIVATE_ANDROID_CAP_HDR) \ --capability-header $(PRIVATE_ANDROID_CAP_HDR) \
--partition product_services \ --partition system_ext \
--files \ --files \
--out_file $@ \ --out_file $@ \
$(or $(PRIVATE_TARGET_FS_CONFIG_GEN),/dev/null) $(or $(PRIVATE_TARGET_FS_CONFIG_GEN),/dev/null)

@ -222,20 +222,20 @@ def AddProduct(output_zip):
return img.name return img.name
def AddProductServices(output_zip): def AddSystemExt(output_zip):
"""Turn the contents of PRODUCT_SERVICES into a product_services image and """Turn the contents of SYSTEM_EXT into a system_ext image and store it in
store it in output_zip.""" output_zip."""
img = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES", img = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES",
"product_services.img") "system_ext.img")
if os.path.exists(img.name): if os.path.exists(img.name):
logger.info("product_services.img already exists; no need to rebuild...") logger.info("system_ext.img already exists; no need to rebuild...")
return img.name return img.name
block_list = OutputFile( block_list = OutputFile(
output_zip, OPTIONS.input_tmp, "IMAGES", "product_services.map") output_zip, OPTIONS.input_tmp, "IMAGES", "system_ext.map")
CreateImage( CreateImage(
OPTIONS.input_tmp, OPTIONS.info_dict, "product_services", img, OPTIONS.input_tmp, OPTIONS.info_dict, "system_ext", img,
block_list=block_list) block_list=block_list)
return img.name return img.name
@ -734,10 +734,10 @@ def AddImagesToTargetFiles(filename):
has_recovery = OPTIONS.info_dict.get("no_recovery") != "true" has_recovery = OPTIONS.info_dict.get("no_recovery") != "true"
has_boot = OPTIONS.info_dict.get("no_boot") != "true" has_boot = OPTIONS.info_dict.get("no_boot") != "true"
# {vendor,odm,product,product_services}.img are unlike system.img or # {vendor,odm,product,system_ext}.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,system_ext}.img being available, which could be
# used when generating vbmeta.img for AVB. # used when generating vbmeta.img for AVB.
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",
@ -748,11 +748,11 @@ def AddImagesToTargetFiles(filename):
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")))
has_product_services = (os.path.isdir(os.path.join(OPTIONS.input_tmp, has_system_ext = (os.path.isdir(os.path.join(OPTIONS.input_tmp,
"PRODUCT_SERVICES")) or "SYSTEM_EXT")) or
os.path.exists(os.path.join(OPTIONS.input_tmp, os.path.exists(os.path.join(OPTIONS.input_tmp,
"IMAGES", "IMAGES",
"product_services.img"))) "system_ext.img")))
has_system = os.path.isdir(os.path.join(OPTIONS.input_tmp, "SYSTEM")) has_system = os.path.isdir(os.path.join(OPTIONS.input_tmp, "SYSTEM"))
has_system_other = os.path.isdir(os.path.join(OPTIONS.input_tmp, has_system_other = os.path.isdir(os.path.join(OPTIONS.input_tmp,
"SYSTEM_OTHER")) "SYSTEM_OTHER"))
@ -833,9 +833,9 @@ def AddImagesToTargetFiles(filename):
banner("product") banner("product")
partitions['product'] = AddProduct(output_zip) partitions['product'] = AddProduct(output_zip)
if has_product_services: if has_system_ext:
banner("product_services") banner("system_ext")
partitions['product_services'] = AddProductServices(output_zip) partitions['system_ext'] = AddSystemExt(output_zip)
if has_odm: if has_odm:
banner("odm") banner("odm")

@ -644,30 +644,30 @@ def ImagePropFromGlobalDict(glob_dict, mount_point):
d["extfs_rsv_pct"] = "0" d["extfs_rsv_pct"] = "0"
copy_prop("product_reserved_size", "partition_reserved_size") copy_prop("product_reserved_size", "partition_reserved_size")
copy_prop("product_selinux_fc", "selinux_fc") copy_prop("product_selinux_fc", "selinux_fc")
elif mount_point == "product_services": elif mount_point == "system_ext":
copy_prop("avb_product_services_hashtree_enable", "avb_hashtree_enable") copy_prop("avb_system_ext_hashtree_enable", "avb_hashtree_enable")
copy_prop("avb_product_services_add_hashtree_footer_args", copy_prop("avb_system_ext_add_hashtree_footer_args",
"avb_add_hashtree_footer_args") "avb_add_hashtree_footer_args")
copy_prop("avb_product_services_key_path", "avb_key_path") copy_prop("avb_system_ext_key_path", "avb_key_path")
copy_prop("avb_product_services_algorithm", "avb_algorithm") copy_prop("avb_system_ext_algorithm", "avb_algorithm")
copy_prop("product_services_fs_type", "fs_type") copy_prop("system_ext_fs_type", "fs_type")
copy_prop("product_services_size", "partition_size") copy_prop("system_ext_size", "partition_size")
if not copy_prop("product_services_journal_size", "journal_size"): if not copy_prop("system_ext_journal_size", "journal_size"):
d["journal_size"] = "0" d["journal_size"] = "0"
copy_prop("product_services_verity_block_device", "verity_block_device") copy_prop("system_ext_verity_block_device", "verity_block_device")
copy_prop("ext4_share_dup_blocks", "ext4_share_dup_blocks") copy_prop("ext4_share_dup_blocks", "ext4_share_dup_blocks")
copy_prop("product_services_squashfs_compressor", "squashfs_compressor") copy_prop("system_ext_squashfs_compressor", "squashfs_compressor")
copy_prop("product_services_squashfs_compressor_opt", copy_prop("system_ext_squashfs_compressor_opt",
"squashfs_compressor_opt") "squashfs_compressor_opt")
copy_prop("product_services_squashfs_block_size", "squashfs_block_size") copy_prop("system_ext_squashfs_block_size", "squashfs_block_size")
copy_prop("product_services_squashfs_disable_4k_align", copy_prop("system_ext_squashfs_disable_4k_align",
"squashfs_disable_4k_align") "squashfs_disable_4k_align")
copy_prop("product_services_base_fs_file", "base_fs_file") copy_prop("system_ext_base_fs_file", "base_fs_file")
copy_prop("product_services_extfs_inode_count", "extfs_inode_count") copy_prop("system_ext_extfs_inode_count", "extfs_inode_count")
if not copy_prop("product_services_extfs_rsv_pct", "extfs_rsv_pct"): if not copy_prop("system_ext_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("system_ext_reserved_size", "partition_reserved_size")
copy_prop("product_services_selinux_fc", "selinux_fc") copy_prop("system_ext_selinux_fc", "selinux_fc")
elif mount_point == "odm": elif mount_point == "odm":
copy_prop("avb_odm_hashtree_enable", "avb_hashtree_enable") copy_prop("avb_odm_hashtree_enable", "avb_hashtree_enable")
copy_prop("avb_odm_add_hashtree_footer_args", copy_prop("avb_odm_add_hashtree_footer_args",
@ -736,8 +736,8 @@ def GlobalDictFromImageProp(image_prop, mount_point):
copy_prop("partition_size", "odm_size") copy_prop("partition_size", "odm_size")
elif mount_point == "product": elif mount_point == "product":
copy_prop("partition_size", "product_size") copy_prop("partition_size", "product_size")
elif mount_point == "product_services": elif mount_point == "system_ext":
copy_prop("partition_size", "product_services_size") copy_prop("partition_size", "system_ext_size")
return d return d
@ -777,8 +777,8 @@ def main(argv):
mount_point = "oem" mount_point = "oem"
elif image_filename == "product.img": elif image_filename == "product.img":
mount_point = "product" mount_point = "product"
elif image_filename == "product_services.img": elif image_filename == "system_ext.img":
mount_point = "product_services" mount_point = "system_ext"
else: else:
logger.error("Unknown image file name %s", image_filename) logger.error("Unknown image file name %s", image_filename)
sys.exit(1) sys.exit(1)

@ -98,15 +98,14 @@ SPECIAL_CERT_STRINGS = ("PRESIGNED", "EXTERNAL")
# The partitions allowed to be signed by AVB (Android Verified Boot 2.0). Note # The partitions allowed to be signed by AVB (Android Verified Boot 2.0). Note
# that system_other is not in the list because we don't want to include its # that system_other is not in the list because we don't want to include its
# descriptor into vbmeta.img. # descriptor into vbmeta.img.
AVB_PARTITIONS = ('boot', 'dtbo', 'odm', 'product', 'product_services', AVB_PARTITIONS = ('boot', 'dtbo', 'odm', 'product', 'recovery', 'system',
'recovery', 'system', 'vendor') 'system_ext', 'vendor')
# Chained VBMeta partitions. # Chained VBMeta partitions.
AVB_VBMETA_PARTITIONS = ('vbmeta_system', 'vbmeta_vendor') AVB_VBMETA_PARTITIONS = ('vbmeta_system', 'vbmeta_vendor')
# Partitions that should have their care_map added to META/care_map.pb # Partitions that should have their care_map added to META/care_map.pb
PARTITIONS_WITH_CARE_MAP = ('system', 'vendor', 'product', 'product_services', PARTITIONS_WITH_CARE_MAP = ('system', 'vendor', 'product', 'system_ext', 'odm')
'odm')
class ErrorCode(object): class ErrorCode(object):

@ -146,8 +146,8 @@ DEFAULT_FRAMEWORK_MISC_INFO_KEYS = (
'avb_system_rollback_index_location', 'avb_system_rollback_index_location',
'avb_product_hashtree_enable', 'avb_product_hashtree_enable',
'avb_product_add_hashtree_footer_args', 'avb_product_add_hashtree_footer_args',
'avb_product_services_hashtree_enable', 'avb_system_ext_hashtree_enable',
'avb_product_services_add_hashtree_footer_args', 'avb_system_ext_add_hashtree_footer_args',
'system_root_image', 'system_root_image',
'root_dir', 'root_dir',
'ab_update', 'ab_update',
@ -193,7 +193,7 @@ SINGLE_BUILD_PARTITIONS = (
'DATA/', 'DATA/',
'ODM/', 'ODM/',
'PRODUCT/', 'PRODUCT/',
'PRODUCT_SERVICES/', 'SYSTEM_EXT/',
'RADIO/', 'RADIO/',
'RECOVERY/', 'RECOVERY/',
'ROOT/', 'ROOT/',

@ -276,8 +276,8 @@ class BuildInfo(object):
_RO_PRODUCT_RESOLVE_PROPS = ["ro.product.brand", "ro.product.device", _RO_PRODUCT_RESOLVE_PROPS = ["ro.product.brand", "ro.product.device",
"ro.product.manufacturer", "ro.product.model", "ro.product.manufacturer", "ro.product.model",
"ro.product.name"] "ro.product.name"]
_RO_PRODUCT_PROPS_DEFAULT_SOURCE_ORDER = ["product", "product_services", _RO_PRODUCT_PROPS_DEFAULT_SOURCE_ORDER = ["product", "odm", "vendor",
"odm", "vendor", "system"] "system_ext", "system"]
def __init__(self, info_dict, oem_dicts): def __init__(self, info_dict, oem_dicts):
"""Initializes a BuildInfo instance with the given dicts. """Initializes a BuildInfo instance with the given dicts.

@ -501,8 +501,8 @@ def ProcessTargetFiles(input_tf_zip, output_tf_zip, misc_info,
"PRODUCT/build.prop", "PRODUCT/build.prop",
"SYSTEM/product/build.prop", "SYSTEM/product/build.prop",
"PRODUCT_SERVICES/build.prop", "SYSTEM_EXT/build.prop",
"SYSTEM/product_services/build.prop", "SYSTEM/system_ext/build.prop",
"SYSTEM/etc/prop.default", "SYSTEM/etc/prop.default",
"BOOT/RAMDISK/prop.default", "BOOT/RAMDISK/prop.default",

@ -1254,10 +1254,10 @@ super_group_qux_group_size={group_qux_size}
def test_incremental(self): def test_incremental(self):
source_info = common.LoadDictionaryFromLines(""" source_info = common.LoadDictionaryFromLines("""
dynamic_partition_list=system vendor product product_services dynamic_partition_list=system vendor product system_ext
super_partition_groups=group_foo super_partition_groups=group_foo
super_group_foo_group_size={group_foo_size} super_group_foo_group_size={group_foo_size}
super_group_foo_partition_list=system vendor product product_services super_group_foo_partition_list=system vendor product system_ext
""".format(group_foo_size=4 * GiB).split("\n")) """.format(group_foo_size=4 * GiB).split("\n"))
target_info = common.LoadDictionaryFromLines(""" target_info = common.LoadDictionaryFromLines("""
dynamic_partition_list=system vendor product odm dynamic_partition_list=system vendor product odm
@ -1274,7 +1274,7 @@ super_group_bar_partition_list=product
src=FakeSparseImage(1024 * MiB)), src=FakeSparseImage(1024 * MiB)),
MockBlockDifference("product", FakeSparseImage(1024 * MiB), MockBlockDifference("product", FakeSparseImage(1024 * MiB),
src=FakeSparseImage(1024 * MiB)), src=FakeSparseImage(1024 * MiB)),
MockBlockDifference("product_services", None, MockBlockDifference("system_ext", None,
src=FakeSparseImage(1024 * MiB)), src=FakeSparseImage(1024 * MiB)),
MockBlockDifference("odm", FakeSparseImage(1024 * MiB), MockBlockDifference("odm", FakeSparseImage(1024 * MiB),
src=None)] src=None)]
@ -1297,11 +1297,11 @@ super_group_bar_partition_list=product
self.assertLess(patch_idx, verify_idx, self.assertLess(patch_idx, verify_idx,
"Should verify {} after patching".format(p)) "Should verify {} after patching".format(p))
self.assertNotIn("patch(product_services);", self.script.lines) self.assertNotIn("patch(system_ext);", self.script.lines)
lines = self.get_op_list(self.output_path) lines = self.get_op_list(self.output_path)
remove = lines.index("remove product_services") remove = lines.index("remove system_ext")
move_product_out = lines.index("move product default") move_product_out = lines.index("move product default")
shrink = lines.index("resize vendor 536870912") shrink = lines.index("resize vendor 536870912")
shrink_group = lines.index("resize_group group_foo 3221225472") shrink_group = lines.index("resize_group group_foo 3221225472")

@ -70,10 +70,10 @@ name="apex.apexd_test_different_app.apex" public_key="system/apex/apexd/apexd_te
'ro.product.build.fingerprint=foo/bar/release-keys'), 'ro.product.build.fingerprint=foo/bar/release-keys'),
('ro.product.build.thumbprint=foo/bar/dev-keys', ('ro.product.build.thumbprint=foo/bar/dev-keys',
'ro.product.build.thumbprint=foo/bar/release-keys'), 'ro.product.build.thumbprint=foo/bar/release-keys'),
('ro.product_services.build.fingerprint=foo/bar/test-keys', ('ro.system_ext.build.fingerprint=foo/bar/test-keys',
'ro.product_services.build.fingerprint=foo/bar/release-keys'), 'ro.system_ext.build.fingerprint=foo/bar/release-keys'),
('ro.product_services.build.thumbprint=foo/bar/test-keys', ('ro.system_ext.build.thumbprint=foo/bar/test-keys',
'ro.product_services.build.thumbprint=foo/bar/release-keys'), 'ro.system_ext.build.thumbprint=foo/bar/release-keys'),
('# comment line 1', '# comment line 1'), ('# comment line 1', '# comment line 1'),
('ro.bootimage.build.fingerprint=foo/bar/dev-keys', ('ro.bootimage.build.fingerprint=foo/bar/dev-keys',
'ro.bootimage.build.fingerprint=foo/bar/release-keys'), 'ro.bootimage.build.fingerprint=foo/bar/release-keys'),
@ -91,8 +91,8 @@ name="apex.apexd_test_different_app.apex" public_key="system/apex/apexd/apexd_te
'ro.odm.build.tags=release-keys'), 'ro.odm.build.tags=release-keys'),
('ro.product.build.tags=dev-keys', ('ro.product.build.tags=dev-keys',
'ro.product.build.tags=release-keys'), 'ro.product.build.tags=release-keys'),
('ro.product_services.build.tags=dev-keys', ('ro.system_ext.build.tags=dev-keys',
'ro.product_services.build.tags=release-keys'), 'ro.system_ext.build.tags=release-keys'),
('# comment line 2', '# comment line 2'), ('# comment line 2', '# comment line 2'),
('ro.build.display.id=OPR6.170623.012 dev-keys', ('ro.build.display.id=OPR6.170623.012 dev-keys',
'ro.build.display.id=OPR6.170623.012'), 'ro.build.display.id=OPR6.170623.012'),

Loading…
Cancel
Save