forked from openkylin/platform_build
Add modules partition.
Modules partition is a dynamic read-write partition. - AVB is not enabled on the partition - OTA is file-based; see follow up CL for details - No build prop files; in particular, no build fingerprint - No fs_config - No notice files; notice files are included in individual APEXes Test: build on CF Bug: 163543381 Change-Id: Ie397b9ec61dfd1c158450d050196024604854d4d
This commit is contained in:
parent
897cfaee46
commit
c0f187f5f9
|
@ -1409,6 +1409,20 @@ $(if $(filter $(2),odm_dlkm),\
|
||||||
$(hide) echo "odm_dlkm_selinux_fc=$(SELINUX_FC)" >> $(1)
|
$(hide) echo "odm_dlkm_selinux_fc=$(SELINUX_FC)" >> $(1)
|
||||||
$(hide) echo "building_odm_dlkm_image=$(BUILDING_ODM_DLKM_IMAGE)" >> $(1)
|
$(hide) echo "building_odm_dlkm_image=$(BUILDING_ODM_DLKM_IMAGE)" >> $(1)
|
||||||
)
|
)
|
||||||
|
$(if $(filter $(2),modules),\
|
||||||
|
$(if $(BOARD_MODULESIMAGE_FILE_SYSTEM_TYPE),$(hide) echo "modules_fs_type=$(BOARD_MODULESIMAGE_FILE_SYSTEM_TYPE)" >> $(1))
|
||||||
|
$(if $(BOARD_MODULESIMAGE_EXTFS_INODE_COUNT),$(hide) echo "modules_extfs_inode_count=$(BOARD_MODULESIMAGE_EXTFS_INODE_COUNT)" >> $(1))
|
||||||
|
$(if $(BOARD_MODULESIMAGE_EXTFS_RSV_PCT),$(hide) echo "modules_extfs_rsv_pct=$(BOARD_MODULESIMAGE_EXTFS_RSV_PCT)" >> $(1))
|
||||||
|
$(if $(BOARD_MODULESIMAGE_PARTITION_SIZE),$(hide) echo "modules_size=$(BOARD_MODULESIMAGE_PARTITION_SIZE)" >> $(1))
|
||||||
|
$(if $(BOARD_MODULESIMAGE_JOURNAL_SIZE),$(hide) echo "modules_journal_size=$(BOARD_MODULESIMAGE_JOURNAL_SIZE)" >> $(1))
|
||||||
|
$(if $(BOARD_MODULESIMAGE_SQUASHFS_COMPRESSOR),$(hide) echo "modules_squashfs_compressor=$(BOARD_MODULESIMAGE_SQUASHFS_COMPRESSOR)" >> $(1))
|
||||||
|
$(if $(BOARD_MODULESIMAGE_SQUASHFS_COMPRESSOR_OPT),$(hide) echo "modules_squashfs_compressor_opt=$(BOARD_MODULESIMAGE_SQUASHFS_COMPRESSOR_OPT)" >> $(1))
|
||||||
|
$(if $(BOARD_MODULESIMAGE_SQUASHFS_BLOCK_SIZE),$(hide) echo "modules_squashfs_block_size=$(BOARD_MODULESIMAGE_SQUASHFS_BLOCK_SIZE)" >> $(1))
|
||||||
|
$(if $(BOARD_MODULESIMAGE_SQUASHFS_DISABLE_4K_ALIGN),$(hide) echo "modules_squashfs_disable_4k_align=$(BOARD_MODULESIMAGE_SQUASHFS_DISABLE_4K_ALIGN)" >> $(1))
|
||||||
|
$(if $(BOARD_MODULESIMAGE_PARTITION_RESERVED_SIZE),$(hide) echo "modules_reserved_size=$(BOARD_MODULESIMAGE_PARTITION_RESERVED_SIZE)" >> $(1))
|
||||||
|
$(hide) echo "modules_selinux_fc=$(SELINUX_FC)" >> $(1)
|
||||||
|
$(hide) echo "building_modules_image=$(BUILDING_MODULES_IMAGE)" >> $(1)
|
||||||
|
)
|
||||||
$(if $(filter $(2),oem),\
|
$(if $(filter $(2),oem),\
|
||||||
$(if $(BOARD_OEMIMAGE_PARTITION_SIZE),$(hide) echo "oem_size=$(BOARD_OEMIMAGE_PARTITION_SIZE)" >> $(1))
|
$(if $(BOARD_OEMIMAGE_PARTITION_SIZE),$(hide) echo "oem_size=$(BOARD_OEMIMAGE_PARTITION_SIZE)" >> $(1))
|
||||||
$(if $(BOARD_OEMIMAGE_JOURNAL_SIZE),$(hide) echo "oem_journal_size=$(BOARD_OEMIMAGE_JOURNAL_SIZE)" >> $(1))
|
$(if $(BOARD_OEMIMAGE_JOURNAL_SIZE),$(hide) echo "oem_journal_size=$(BOARD_OEMIMAGE_JOURNAL_SIZE)" >> $(1))
|
||||||
|
@ -1544,6 +1558,9 @@ endif
|
||||||
ifdef BUILDING_ODM_DLKM_IMAGE
|
ifdef BUILDING_ODM_DLKM_IMAGE
|
||||||
PROP_DICTIONARY_IMAGES += odm_dlkm
|
PROP_DICTIONARY_IMAGES += odm_dlkm
|
||||||
endif
|
endif
|
||||||
|
ifdef BUILDING_MODULES_IMAGE
|
||||||
|
PROP_DICTIONARY_IMAGES += modules
|
||||||
|
endif
|
||||||
define generate-userimage-prop-dictionary
|
define generate-userimage-prop-dictionary
|
||||||
$(call generate-image-prop-dictionary,$(1),$(PROP_DICTIONARY_IMAGES),$(2))
|
$(call generate-image-prop-dictionary,$(1),$(PROP_DICTIONARY_IMAGES),$(2))
|
||||||
endef
|
endef
|
||||||
|
@ -3000,6 +3017,54 @@ INSTALLED_ODM_DLKMIMAGE_TARGET := $(PRODUCT_OUT)/odm_dlkm.img
|
||||||
$(eval $(call copy-one-file,$(BOARD_PREBUILT_ODM_DLKMIMAGE),$(INSTALLED_ODM_DLKMIMAGE_TARGET)))
|
$(eval $(call copy-one-file,$(BOARD_PREBUILT_ODM_DLKMIMAGE),$(INSTALLED_ODM_DLKMIMAGE_TARGET)))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------
|
||||||
|
# modules partition image
|
||||||
|
ifdef BUILDING_MODULES_IMAGE
|
||||||
|
INTERNAL_MODULESIMAGE_FILES := \
|
||||||
|
$(filter $(TARGET_OUT_MODULES)/%,\
|
||||||
|
$(ALL_DEFAULT_INSTALLED_MODULES))
|
||||||
|
|
||||||
|
INSTALLED_FILES_FILE_MODULES := $(PRODUCT_OUT)/installed-files-modules.txt
|
||||||
|
INSTALLED_FILES_JSON_MODULES := $(INSTALLED_FILES_FILE_MODULES:.txt=.json)
|
||||||
|
$(INSTALLED_FILES_FILE_MODULES): .KATI_IMPLICIT_OUTPUTS := $(INSTALLED_FILES_JSON_MODULES)
|
||||||
|
$(INSTALLED_FILES_FILE_MODULES) : $(INTERNAL_MODULESIMAGE_FILES) $(FILESLIST) $(FILESLIST_UTIL)
|
||||||
|
@echo Installed file list: $@
|
||||||
|
@mkdir -p $(dir $@)
|
||||||
|
@rm -f $@
|
||||||
|
@mkdir -p $(TARGET_OUT_MODULES)
|
||||||
|
$(hide) $(FILESLIST) $(TARGET_OUT_MODULES) > $(@:.txt=.json)
|
||||||
|
$(hide) $(FILESLIST_UTIL) -c $(@:.txt=.json) > $@
|
||||||
|
|
||||||
|
modulesimage_intermediates := \
|
||||||
|
$(call intermediates-dir-for,PACKAGING,modules)
|
||||||
|
BUILT_MODULESIMAGE_TARGET := $(PRODUCT_OUT)/modules.img
|
||||||
|
define build-modulesimage-target
|
||||||
|
$(call pretty,"Target modules fs image: $(INSTALLED_MODULESIMAGE_TARGET)")
|
||||||
|
@mkdir -p $(TARGET_OUT_MODULES)
|
||||||
|
@mkdir -p $(modulesimage_intermediates) && rm -rf $(modulesimage_intermediates)/modules_image_info.txt
|
||||||
|
$(call generate-userimage-prop-dictionary, $(modulesimage_intermediates)/modules_image_info.txt, skip_fsck=true)
|
||||||
|
PATH=$(INTERNAL_USERIMAGES_BINARY_PATHS):$$PATH \
|
||||||
|
$(BUILD_IMAGE) \
|
||||||
|
$(TARGET_OUT_MODULES) $(modulesimage_intermediates)/modules_image_info.txt \
|
||||||
|
$(INSTALLED_MODULESIMAGE_TARGET) $(TARGET_OUT)
|
||||||
|
$(call assert-max-image-size,$(INSTALLED_MODULESIMAGE_TARGET),$(BOARD_MODULESIMAGE_PARTITION_SIZE))
|
||||||
|
endef
|
||||||
|
|
||||||
|
# We just build this directly to the install location.
|
||||||
|
INSTALLED_MODULESIMAGE_TARGET := $(BUILT_MODULESIMAGE_TARGET)
|
||||||
|
$(INSTALLED_MODULESIMAGE_TARGET): \
|
||||||
|
$(INTERNAL_USERIMAGES_DEPS) \
|
||||||
|
$(INTERNAL_MODULESIMAGE_FILES) \
|
||||||
|
$(INSTALLED_FILES_FILE_MODULES)
|
||||||
|
$(build-modulesimage-target)
|
||||||
|
|
||||||
|
.PHONY: modulesimage-nodeps mnod
|
||||||
|
modulesimage-nodeps mnod: | $(INTERNAL_USERIMAGES_DEPS)
|
||||||
|
$(build-modulesimage-target)
|
||||||
|
|
||||||
|
sync: $(INTERNAL_MODULESIMAGE_FILES)
|
||||||
|
# BOARD_PREBUILT_MODULESIMAGE is not allowed.
|
||||||
|
endif
|
||||||
|
|
||||||
# -----------------------------------------------------------------
|
# -----------------------------------------------------------------
|
||||||
# dtbo image
|
# dtbo image
|
||||||
|
@ -3499,7 +3564,10 @@ endif # BOARD_AVB_ENABLE
|
||||||
# -----------------------------------------------------------------
|
# -----------------------------------------------------------------
|
||||||
# Check VINTF of build
|
# Check VINTF of build
|
||||||
|
|
||||||
# Note: vendor_dlkm and odm_dlkm does not have VINTF files.
|
# Note: the following do not have VINTF files:
|
||||||
|
# - vendor_dlkm
|
||||||
|
# - odm_dlkm
|
||||||
|
# - modules
|
||||||
ifeq (,$(TARGET_BUILD_UNBUNDLED))
|
ifeq (,$(TARGET_BUILD_UNBUNDLED))
|
||||||
|
|
||||||
intermediates := $(call intermediates-dir-for,PACKAGING,check_vintf_all)
|
intermediates := $(call intermediates-dir-for,PACKAGING,check_vintf_all)
|
||||||
|
@ -4521,6 +4589,11 @@ ifdef BUILDING_SYSTEM_OTHER_IMAGE
|
||||||
@# Contents of the system_other image
|
@# Contents of the system_other image
|
||||||
$(hide) $(call package_files-copy-root, \
|
$(hide) $(call package_files-copy-root, \
|
||||||
$(TARGET_OUT_SYSTEM_OTHER),$(zip_root)/SYSTEM_OTHER)
|
$(TARGET_OUT_SYSTEM_OTHER),$(zip_root)/SYSTEM_OTHER)
|
||||||
|
endif
|
||||||
|
ifdef BUILDING_MODULES_IMAGE
|
||||||
|
@# Contents of the modules image
|
||||||
|
$(hide) $(call package_files-copy-root, \
|
||||||
|
$(TARGET_OUT_MODULES),$(zip_root)/MODULES)
|
||||||
endif
|
endif
|
||||||
@# Extra contents of the OTA package
|
@# Extra contents of the OTA package
|
||||||
$(hide) mkdir -p $(zip_root)/OTA
|
$(hide) mkdir -p $(zip_root)/OTA
|
||||||
|
@ -4570,6 +4643,7 @@ ifneq ($(PRODUCT_ODM_DLKM_BASE_FS_PATH),)
|
||||||
$(hide) cp $(PRODUCT_ODM_DLKM_BASE_FS_PATH) \
|
$(hide) cp $(PRODUCT_ODM_DLKM_BASE_FS_PATH) \
|
||||||
$(zip_root)/META/$(notdir $(PRODUCT_ODM_DLKM_BASE_FS_PATH))
|
$(zip_root)/META/$(notdir $(PRODUCT_ODM_DLKM_BASE_FS_PATH))
|
||||||
endif
|
endif
|
||||||
|
# No PRODUCT_MODULES_BASE_FS_PATH for modules partition
|
||||||
ifeq ($(TARGET_OTA_ALLOW_NON_AB),true)
|
ifeq ($(TARGET_OTA_ALLOW_NON_AB),true)
|
||||||
ifneq ($(INSTALLED_RECOVERYIMAGE_TARGET),)
|
ifneq ($(INSTALLED_RECOVERYIMAGE_TARGET),)
|
||||||
$(hide) PATH=$(INTERNAL_USERIMAGES_BINARY_PATHS):$$PATH MKBOOTIMG=$(MKBOOTIMG) \
|
$(hide) PATH=$(INTERNAL_USERIMAGES_BINARY_PATHS):$$PATH MKBOOTIMG=$(MKBOOTIMG) \
|
||||||
|
@ -4663,6 +4737,9 @@ ifdef BUILDING_VENDOR_DLKM_IMAGE
|
||||||
endif
|
endif
|
||||||
ifdef BUILDING_ODM_DLKM_IMAGE
|
ifdef BUILDING_ODM_DLKM_IMAGE
|
||||||
$(hide) $(call fs_config,$(zip_root)/ODM_DLKM,odm_dlkm/) > $(zip_root)/META/odm_dlkm_filesystem_config.txt
|
$(hide) $(call fs_config,$(zip_root)/ODM_DLKM,odm_dlkm/) > $(zip_root)/META/odm_dlkm_filesystem_config.txt
|
||||||
|
endif
|
||||||
|
ifdef BUILDING_MODULES_IMAGE
|
||||||
|
$(hide) $(call fs_config,$(zip_root)/MODULES,modules/) > $(zip_root)/META/modules_filesystem_config.txt
|
||||||
endif
|
endif
|
||||||
@# ROOT always contains the files for the root under normal boot.
|
@# ROOT always contains the files for the root under normal boot.
|
||||||
$(hide) $(call fs_config,$(zip_root)/ROOT,) > $(zip_root)/META/root_filesystem_config.txt
|
$(hide) $(call fs_config,$(zip_root)/ROOT,) > $(zip_root)/META/root_filesystem_config.txt
|
||||||
|
@ -5207,6 +5284,16 @@ odm_dlkmimage: $(INSTALLED_QEMU_ODM_DLKMIMAGE)
|
||||||
droidcore: $(INSTALLED_QEMU_ODM_DLKMIMAGE)
|
droidcore: $(INSTALLED_QEMU_ODM_DLKMIMAGE)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifdef INSTALLED_MODULESIMAGE_TARGET
|
||||||
|
INSTALLED_QEMU_MODULESIMAGE := $(PRODUCT_OUT)/modules-qemu.img
|
||||||
|
$(INSTALLED_QEMU_MODULESIMAGE): $(INSTALLED_MODULESIMAGE_TARGET) $(MK_QEMU_IMAGE_SH) $(SGDISK_HOST)
|
||||||
|
@echo Create modules-qemu.img
|
||||||
|
(export SGDISK=$(SGDISK_HOST); $(MK_QEMU_IMAGE_SH) $(INSTALLED_MODULESIMAGE_TARGET))
|
||||||
|
|
||||||
|
modulesimage: $(INSTALLED_QEMU_MODULESIMAGE)
|
||||||
|
droidcore: $(INSTALLED_QEMU_MODULESIMAGE)
|
||||||
|
endif
|
||||||
|
|
||||||
QEMU_VERIFIED_BOOT_PARAMS := $(PRODUCT_OUT)/VerifiedBootParams.textproto
|
QEMU_VERIFIED_BOOT_PARAMS := $(PRODUCT_OUT)/VerifiedBootParams.textproto
|
||||||
$(QEMU_VERIFIED_BOOT_PARAMS): $(INSTALLED_VBMETAIMAGE_TARGET) $(INSTALLED_SYSTEMIMAGE_TARGET) \
|
$(QEMU_VERIFIED_BOOT_PARAMS): $(INSTALLED_VBMETAIMAGE_TARGET) $(INSTALLED_SYSTEMIMAGE_TARGET) \
|
||||||
$(MK_VBMETA_BOOT_KERNEL_CMDLINE_SH) $(AVBTOOL)
|
$(MK_VBMETA_BOOT_KERNEL_CMDLINE_SH) $(AVBTOOL)
|
||||||
|
|
|
@ -627,6 +627,31 @@ ifdef BOARD_PREBUILT_ODM_DLKMIMAGE
|
||||||
endif
|
endif
|
||||||
.KATI_READONLY := BUILDING_ODM_DLKM_IMAGE
|
.KATI_READONLY := BUILDING_ODM_DLKM_IMAGE
|
||||||
|
|
||||||
|
###########################################
|
||||||
|
# Are we building modules image
|
||||||
|
BOARD_USES_MODULESIMAGE :=
|
||||||
|
ifdef BOARD_PREBUILT_MODULESIMAGE
|
||||||
|
$(error BOARD_PREBUILT_MODULESIMAGE must not be set. Prebuilt modules image is not allowed. Instead, install prebuilt APEXes.)
|
||||||
|
endif
|
||||||
|
ifdef BOARD_MODULESIMAGE_FILE_SYSTEM_TYPE
|
||||||
|
BOARD_USES_MODULESIMAGE := true
|
||||||
|
endif
|
||||||
|
|
||||||
|
BUILDING_MODULES_IMAGE :=
|
||||||
|
ifeq ($(PRODUCT_BUILD_MODULES_IMAGE),)
|
||||||
|
ifdef BOARD_MODULESIMAGE_FILE_SYSTEM_TYPE
|
||||||
|
BUILDING_MODULES_IMAGE := true
|
||||||
|
endif
|
||||||
|
else ifeq ($(PRODUCT_BUILD_MODULES_IMAGE),true)
|
||||||
|
BUILDING_MODULES_IMAGE := true
|
||||||
|
ifndef BOARD_MODULESIMAGE_FILE_SYSTEM_TYPE
|
||||||
|
$(error PRODUCT_BUILD_MODULES_IMAGE set to true, but BOARD_MODULESIMAGE_FILE_SYSTEM_TYPE not defined)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
# BOARD_PREBUILT_MODULESIMAGE is not allowed.
|
||||||
|
# The prebuilt for an individual module should be provided instead.
|
||||||
|
.KATI_READONLY := BUILDING_MODULES_IMAGE
|
||||||
|
|
||||||
###########################################
|
###########################################
|
||||||
# Ensure consistency among TARGET_RECOVERY_UPDATER_LIBS, AB_OTA_UPDATER, and PRODUCT_OTA_FORCE_NON_AB_PACKAGE.
|
# Ensure consistency among TARGET_RECOVERY_UPDATER_LIBS, AB_OTA_UPDATER, and PRODUCT_OTA_FORCE_NON_AB_PACKAGE.
|
||||||
TARGET_RECOVERY_UPDATER_LIBS ?=
|
TARGET_RECOVERY_UPDATER_LIBS ?=
|
||||||
|
|
|
@ -898,7 +898,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 system_ext odm vendor_dlkm odm_dlkm
|
valid_super_partition_list := system vendor product system_ext odm vendor_dlkm odm_dlkm modules
|
||||||
$(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 \
|
||||||
|
|
|
@ -255,6 +255,7 @@ TARGET_COPY_OUT_VENDOR_DEBUG_RAMDISK := vendor_debug_ramdisk
|
||||||
TARGET_COPY_OUT_TEST_HARNESS_RAMDISK := test_harness_ramdisk
|
TARGET_COPY_OUT_TEST_HARNESS_RAMDISK := test_harness_ramdisk
|
||||||
TARGET_COPY_OUT_ROOT := root
|
TARGET_COPY_OUT_ROOT := root
|
||||||
TARGET_COPY_OUT_RECOVERY := recovery
|
TARGET_COPY_OUT_RECOVERY := recovery
|
||||||
|
TARGET_COPY_OUT_MODULES := modules
|
||||||
# The directory used for optional partitions depend on the BoardConfig, so
|
# The directory used for optional partitions depend on the BoardConfig, so
|
||||||
# they're defined to placeholder values here and swapped after reading the
|
# they're defined to placeholder values here and swapped after reading the
|
||||||
# BoardConfig, to be either the partition dir, or a subdir within 'system'.
|
# BoardConfig, to be either the partition dir, or a subdir within 'system'.
|
||||||
|
@ -887,6 +888,56 @@ $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED := $(TARGET_O
|
||||||
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_APPS \
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_APPS \
|
||||||
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED
|
||||||
|
|
||||||
|
# Unlike other partitions, modules partition should only contain APEXes at build time.
|
||||||
|
TARGET_OUT_MODULES := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_MODULES)
|
||||||
|
.KATI_READONLY := TARGET_OUT_MODULES
|
||||||
|
|
||||||
|
TARGET_OUT_MODULES_EXECUTABLES :=
|
||||||
|
TARGET_OUT_MODULES_OPTIONAL_EXECUTABLES :=
|
||||||
|
TARGET_OUT_MODULES_SHARED_LIBRARIES :=
|
||||||
|
TARGET_OUT_MODULES_RENDERSCRIPT_BITCODE :=
|
||||||
|
TARGET_OUT_MODULES_JAVA_LIBRARIES :=
|
||||||
|
TARGET_OUT_MODULES_APPS :=
|
||||||
|
TARGET_OUT_MODULES_APPS_PRIVILEGED :=
|
||||||
|
TARGET_OUT_MODULES_ETC :=
|
||||||
|
.KATI_READONLY := \
|
||||||
|
TARGET_OUT_MODULES_EXECUTABLES \
|
||||||
|
TARGET_OUT_MODULES_OPTIONAL_EXECUTABLES \
|
||||||
|
TARGET_OUT_MODULES_SHARED_LIBRARIES \
|
||||||
|
TARGET_OUT_MODULES_RENDERSCRIPT_BITCODE \
|
||||||
|
TARGET_OUT_MODULES_JAVA_LIBRARIES \
|
||||||
|
TARGET_OUT_MODULES_APPS \
|
||||||
|
TARGET_OUT_MODULES_APPS_PRIVILEGED \
|
||||||
|
TARGET_OUT_MODULES_ETC
|
||||||
|
|
||||||
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_MODULES_EXECUTABLES :=
|
||||||
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_MODULES_SHARED_LIBRARIES :=
|
||||||
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_MODULES_RENDERSCRIPT_BITCODE :=
|
||||||
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_MODULES_APPS :=
|
||||||
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_MODULES_APPS_PRIVILEGED :=
|
||||||
|
.KATI_READONLY := \
|
||||||
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_MODULES_EXECUTABLES \
|
||||||
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_MODULES_SHARED_LIBRARIES \
|
||||||
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_MODULES_RENDERSCRIPT_BITCODE \
|
||||||
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_MODULES_APPS \
|
||||||
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_MODULES_APPS_PRIVILEGED
|
||||||
|
|
||||||
|
$(KATI_obsolete_var \
|
||||||
|
TARGET_OUT_MODULES_EXECUTABLES \
|
||||||
|
TARGET_OUT_MODULES_OPTIONAL_EXECUTABLES \
|
||||||
|
TARGET_OUT_MODULES_SHARED_LIBRARIES \
|
||||||
|
TARGET_OUT_MODULES_RENDERSCRIPT_BITCODE \
|
||||||
|
TARGET_OUT_MODULES_JAVA_LIBRARIES \
|
||||||
|
TARGET_OUT_MODULES_APPS \
|
||||||
|
TARGET_OUT_MODULES_APPS_PRIVILEGED \
|
||||||
|
TARGET_OUT_MODULES_ETC \
|
||||||
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_MODULES_EXECUTABLES \
|
||||||
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_MODULES_SHARED_LIBRARIES \
|
||||||
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_MODULES_RENDERSCRIPT_BITCODE \
|
||||||
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_MODULES_APPS \
|
||||||
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_MODULES_APPS_PRIVILEGED \
|
||||||
|
, modules partition should not contain any executables, libraries, or apps. It should only contain APEXes)
|
||||||
|
|
||||||
TARGET_OUT_BREAKPAD := $(PRODUCT_OUT)/breakpad
|
TARGET_OUT_BREAKPAD := $(PRODUCT_OUT)/breakpad
|
||||||
.KATI_READONLY := TARGET_OUT_BREAKPAD
|
.KATI_READONLY := TARGET_OUT_BREAKPAD
|
||||||
|
|
||||||
|
|
|
@ -1579,6 +1579,9 @@ vbmetasystemimage: $(INSTALLED_VBMETA_SYSTEMIMAGE_TARGET)
|
||||||
.PHONY: vbmetavendorimage
|
.PHONY: vbmetavendorimage
|
||||||
vbmetavendorimage: $(INSTALLED_VBMETA_VENDORIMAGE_TARGET)
|
vbmetavendorimage: $(INSTALLED_VBMETA_VENDORIMAGE_TARGET)
|
||||||
|
|
||||||
|
.PHONY: modulesimage
|
||||||
|
modulesimage: $(INSTALLED_MODULESIMAGE_TARGET)
|
||||||
|
|
||||||
# Build files and then package it into the rom formats
|
# Build files and then package it into the rom formats
|
||||||
.PHONY: droidcore
|
.PHONY: droidcore
|
||||||
droidcore: $(filter $(HOST_OUT_ROOT)/%,$(modules_to_install)) \
|
droidcore: $(filter $(HOST_OUT_ROOT)/%,$(modules_to_install)) \
|
||||||
|
|
2
help.sh
2
help.sh
|
@ -48,6 +48,8 @@ Common goals are:
|
||||||
Stands for "VendorDlkm, NO Dependencies"
|
Stands for "VendorDlkm, NO Dependencies"
|
||||||
odnod Quickly rebuild the odm_dlkm image from built packages
|
odnod Quickly rebuild the odm_dlkm image from built packages
|
||||||
Stands for "OdmDlkm, NO Dependencies"
|
Stands for "OdmDlkm, NO Dependencies"
|
||||||
|
mnod Quickly rebuild the modules image from built packages
|
||||||
|
Stands for "Modules, NO Dependencies"
|
||||||
|
|
||||||
|
|
||||||
So, for example, you could run:
|
So, for example, you could run:
|
||||||
|
|
|
@ -296,6 +296,7 @@ def AddVendorDlkm(output_zip):
|
||||||
block_list=block_list)
|
block_list=block_list)
|
||||||
return img.name
|
return img.name
|
||||||
|
|
||||||
|
|
||||||
def AddOdmDlkm(output_zip):
|
def AddOdmDlkm(output_zip):
|
||||||
"""Turn the contents of OdmDlkm into an odm_dlkm image and store it in output_zip."""
|
"""Turn the contents of OdmDlkm into an odm_dlkm image and store it in output_zip."""
|
||||||
|
|
||||||
|
@ -312,6 +313,22 @@ def AddOdmDlkm(output_zip):
|
||||||
return img.name
|
return img.name
|
||||||
|
|
||||||
|
|
||||||
|
def AddModules(output_zip):
|
||||||
|
"""Turn the contents of Modules into an modules image and store it in output_zip."""
|
||||||
|
|
||||||
|
img = OutputFile(output_zip, OPTIONS.input_tmp, "IMAGES", "modules.img")
|
||||||
|
if os.path.exists(img.name):
|
||||||
|
logger.info("modules.img already exists; no need to rebuild...")
|
||||||
|
return img.name
|
||||||
|
|
||||||
|
block_list = OutputFile(
|
||||||
|
output_zip, OPTIONS.input_tmp, "IMAGES", "modules.map")
|
||||||
|
CreateImage(
|
||||||
|
OPTIONS.input_tmp, OPTIONS.info_dict, "modules", img,
|
||||||
|
block_list=block_list)
|
||||||
|
return img.name
|
||||||
|
|
||||||
|
|
||||||
def AddDtbo(output_zip):
|
def AddDtbo(output_zip):
|
||||||
"""Adds the DTBO image.
|
"""Adds the DTBO image.
|
||||||
|
|
||||||
|
@ -420,7 +437,9 @@ def CreateImage(input_dir, info_dict, what, output_file, block_list=None):
|
||||||
# Use repeatable ext4 FS UUID and hash_seed UUID (based on partition name and
|
# Use repeatable ext4 FS UUID and hash_seed UUID (based on partition name and
|
||||||
# build fingerprint).
|
# build fingerprint).
|
||||||
build_info = common.BuildInfo(info_dict)
|
build_info = common.BuildInfo(info_dict)
|
||||||
uuid_seed = what + "-" + build_info.GetPartitionFingerprint(what)
|
uuid_seed = what
|
||||||
|
if what != "modules":
|
||||||
|
uuid_seed += "-" + build_info.GetPartitionFingerprint(what)
|
||||||
image_props["uuid"] = str(uuid.uuid5(uuid.NAMESPACE_URL, uuid_seed))
|
image_props["uuid"] = str(uuid.uuid5(uuid.NAMESPACE_URL, uuid_seed))
|
||||||
hash_seed = "hash_seed-" + uuid_seed
|
hash_seed = "hash_seed-" + uuid_seed
|
||||||
image_props["hash_seed"] = str(uuid.uuid5(uuid.NAMESPACE_URL, hash_seed))
|
image_props["hash_seed"] = str(uuid.uuid5(uuid.NAMESPACE_URL, hash_seed))
|
||||||
|
@ -798,6 +817,12 @@ def AddImagesToTargetFiles(filename):
|
||||||
OPTIONS.info_dict.get("building_product_image") == "true") or
|
OPTIONS.info_dict.get("building_product_image") == "true") or
|
||||||
os.path.exists(
|
os.path.exists(
|
||||||
os.path.join(OPTIONS.input_tmp, "IMAGES", "product.img")))
|
os.path.join(OPTIONS.input_tmp, "IMAGES", "product.img")))
|
||||||
|
has_modules = ((os.path.isdir(os.path.join(OPTIONS.input_tmp,
|
||||||
|
"MODULES")) and
|
||||||
|
OPTIONS.info_dict.get("building_modules_image")
|
||||||
|
== "true") or
|
||||||
|
os.path.exists(os.path.join(OPTIONS.input_tmp, "IMAGES",
|
||||||
|
"modules.img")))
|
||||||
has_system_ext = (
|
has_system_ext = (
|
||||||
(os.path.isdir(os.path.join(OPTIONS.input_tmp, "SYSTEM_EXT")) and
|
(os.path.isdir(os.path.join(OPTIONS.input_tmp, "SYSTEM_EXT")) and
|
||||||
OPTIONS.info_dict.get("building_system_ext_image") == "true") or
|
OPTIONS.info_dict.get("building_system_ext_image") == "true") or
|
||||||
|
@ -927,6 +952,10 @@ def AddImagesToTargetFiles(filename):
|
||||||
banner("odm_dlkm")
|
banner("odm_dlkm")
|
||||||
partitions['odm_dlkm'] = AddOdmDlkm(output_zip)
|
partitions['odm_dlkm'] = AddOdmDlkm(output_zip)
|
||||||
|
|
||||||
|
if has_modules:
|
||||||
|
banner("modules")
|
||||||
|
partitions['modules'] = AddModules(output_zip)
|
||||||
|
|
||||||
if has_system_other:
|
if has_system_other:
|
||||||
banner("system_other")
|
banner("system_other")
|
||||||
AddSystemOther(output_zip)
|
AddSystemOther(output_zip)
|
||||||
|
|
|
@ -754,6 +754,22 @@ def ImagePropFromGlobalDict(glob_dict, mount_point):
|
||||||
d["extfs_rsv_pct"] = "0"
|
d["extfs_rsv_pct"] = "0"
|
||||||
copy_prop("odm_dlkm_reserved_size", "partition_reserved_size")
|
copy_prop("odm_dlkm_reserved_size", "partition_reserved_size")
|
||||||
copy_prop("odm_dlkm_selinux_fc", "selinux_fc")
|
copy_prop("odm_dlkm_selinux_fc", "selinux_fc")
|
||||||
|
elif mount_point == "modules":
|
||||||
|
# modules partition has no AVB.
|
||||||
|
copy_prop("modules_fs_type", "fs_type")
|
||||||
|
copy_prop("modules_size", "partition_size")
|
||||||
|
if not copy_prop("modules_journal_size", "journal_size"):
|
||||||
|
d["journal_size"] = "0"
|
||||||
|
# not setting ext4_share_dup_blocks because modules partition is writable.
|
||||||
|
copy_prop("modules_squashfs_compressor", "squashfs_compressor")
|
||||||
|
copy_prop("modules_squashfs_compressor_opt", "squashfs_compressor_opt")
|
||||||
|
copy_prop("modules_squashfs_block_size", "squashfs_block_size")
|
||||||
|
copy_prop("modules_squashfs_disable_4k_align", "squashfs_disable_4k_align")
|
||||||
|
copy_prop("modules_extfs_inode_count", "extfs_inode_count")
|
||||||
|
if not copy_prop("modules_extfs_rsv_pct", "extfs_rsv_pct"):
|
||||||
|
d["extfs_rsv_pct"] = "0"
|
||||||
|
copy_prop("modules_reserved_size", "partition_reserved_size")
|
||||||
|
copy_prop("modules_selinux_fc", "selinux_fc")
|
||||||
elif mount_point == "oem":
|
elif mount_point == "oem":
|
||||||
copy_prop("fs_type", "fs_type")
|
copy_prop("fs_type", "fs_type")
|
||||||
copy_prop("oem_size", "partition_size")
|
copy_prop("oem_size", "partition_size")
|
||||||
|
@ -806,6 +822,8 @@ def GlobalDictFromImageProp(image_prop, mount_point):
|
||||||
copy_prop("partition_size", "product_size")
|
copy_prop("partition_size", "product_size")
|
||||||
elif mount_point == "system_ext":
|
elif mount_point == "system_ext":
|
||||||
copy_prop("partition_size", "system_ext_size")
|
copy_prop("partition_size", "system_ext_size")
|
||||||
|
elif mount_point == "modules":
|
||||||
|
copy_prop("partition_size", "modules_size")
|
||||||
return d
|
return d
|
||||||
|
|
||||||
|
|
||||||
|
@ -851,6 +869,8 @@ def main(argv):
|
||||||
mount_point = "product"
|
mount_point = "product"
|
||||||
elif image_filename == "system_ext.img":
|
elif image_filename == "system_ext.img":
|
||||||
mount_point = "system_ext"
|
mount_point = "system_ext"
|
||||||
|
elif image_filename == "modules.img":
|
||||||
|
mount_point = "modules"
|
||||||
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)
|
||||||
|
|
|
@ -46,7 +46,10 @@ DIR_SEARCH_PATHS = {
|
||||||
'/product': ('PRODUCT', 'SYSTEM/product'),
|
'/product': ('PRODUCT', 'SYSTEM/product'),
|
||||||
'/odm': ('ODM', 'VENDOR/odm', 'SYSTEM/vendor/odm'),
|
'/odm': ('ODM', 'VENDOR/odm', 'SYSTEM/vendor/odm'),
|
||||||
'/system_ext': ('SYSTEM_EXT', 'SYSTEM/system_ext'),
|
'/system_ext': ('SYSTEM_EXT', 'SYSTEM/system_ext'),
|
||||||
# vendor_dlkm and odm_dlkm does not have VINTF files.
|
# The following do not have VINTF files:
|
||||||
|
# - vendor_dlkm
|
||||||
|
# - odm_dlkm
|
||||||
|
# - modules
|
||||||
}
|
}
|
||||||
|
|
||||||
UNZIP_PATTERN = ['META/*', '*/build.prop']
|
UNZIP_PATTERN = ['META/*', '*/build.prop']
|
||||||
|
|
|
@ -272,7 +272,7 @@ RETROFIT_DAP_UNZIP_PATTERN = ['OTA/super_*.img', AB_PARTITIONS]
|
||||||
# Images to be excluded from secondary payload. We essentially only keep
|
# Images to be excluded from secondary payload. We essentially only keep
|
||||||
# 'system_other' and bootloader partitions.
|
# 'system_other' and bootloader partitions.
|
||||||
SECONDARY_PAYLOAD_SKIPPED_IMAGES = [
|
SECONDARY_PAYLOAD_SKIPPED_IMAGES = [
|
||||||
'boot', 'dtbo', 'modem', 'odm', 'odm_dlkm', 'product', 'radio', 'recovery',
|
'boot', 'dtbo', 'modules', 'modem', 'odm', 'odm_dlkm', 'product', 'radio', 'recovery',
|
||||||
'system_ext', 'vbmeta', 'vbmeta_system', 'vbmeta_vendor', 'vendor',
|
'system_ext', 'vbmeta', 'vbmeta_system', 'vbmeta_vendor', 'vendor',
|
||||||
'vendor_boot']
|
'vendor_boot']
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue