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

Commit d5ad93ed authored by Yifan Hong's avatar Yifan Hong Committed by Automerger Merge Worker
Browse files

Merge "Add modules partition." am: b1e66600 am: 6fa28a9e am: 5c0a97da

Original change: https://android-review.googlesource.com/c/platform/build/+/1395849

Change-Id: I8b5f11b0e856b6b98e4fce11747d6cda6f6deab1
parents ecdd7bc3 5c0a97da
Loading
Loading
Loading
Loading
+88 −1
Original line number Diff line number Diff line
@@ -1411,6 +1411,20 @@ $(if $(filter $(2),odm_dlkm),\
    $(hide) echo "odm_dlkm_selinux_fc=$(SELINUX_FC)" >> $(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 $(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))
@@ -1546,6 +1560,9 @@ endif
ifdef BUILDING_ODM_DLKM_IMAGE
  PROP_DICTIONARY_IMAGES += odm_dlkm
endif
ifdef BUILDING_MODULES_IMAGE
  PROP_DICTIONARY_IMAGES += modules
endif
define generate-userimage-prop-dictionary
  $(call generate-image-prop-dictionary,$(1),$(PROP_DICTIONARY_IMAGES),$(2))
endef
@@ -3002,6 +3019,54 @@ INSTALLED_ODM_DLKMIMAGE_TARGET := $(PRODUCT_OUT)/odm_dlkm.img
$(eval $(call copy-one-file,$(BOARD_PREBUILT_ODM_DLKMIMAGE),$(INSTALLED_ODM_DLKMIMAGE_TARGET)))
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
@@ -3501,7 +3566,10 @@ endif # BOARD_AVB_ENABLE
# -----------------------------------------------------------------
# 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))

intermediates := $(call intermediates-dir-for,PACKAGING,check_vintf_all)
@@ -4523,6 +4591,11 @@ ifdef BUILDING_SYSTEM_OTHER_IMAGE
	@# Contents of the system_other image
	$(hide) $(call package_files-copy-root, \
	    $(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
	@# Extra contents of the OTA package
	$(hide) mkdir -p $(zip_root)/OTA
@@ -4572,6 +4645,7 @@ ifneq ($(PRODUCT_ODM_DLKM_BASE_FS_PATH),)
	$(hide) cp $(PRODUCT_ODM_DLKM_BASE_FS_PATH) \
	  $(zip_root)/META/$(notdir $(PRODUCT_ODM_DLKM_BASE_FS_PATH))
endif
# No PRODUCT_MODULES_BASE_FS_PATH for modules partition
ifeq ($(TARGET_OTA_ALLOW_NON_AB),true)
ifneq ($(INSTALLED_RECOVERYIMAGE_TARGET),)
	$(hide) PATH=$(INTERNAL_USERIMAGES_BINARY_PATHS):$$PATH MKBOOTIMG=$(MKBOOTIMG) \
@@ -4665,6 +4739,9 @@ ifdef BUILDING_VENDOR_DLKM_IMAGE
endif
ifdef BUILDING_ODM_DLKM_IMAGE
	$(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
	@# 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
@@ -5209,6 +5286,16 @@ odm_dlkmimage: $(INSTALLED_QEMU_ODM_DLKMIMAGE)
droidcore: $(INSTALLED_QEMU_ODM_DLKMIMAGE)
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): $(INSTALLED_VBMETAIMAGE_TARGET) $(INSTALLED_SYSTEMIMAGE_TARGET) \
    $(MK_VBMETA_BOOT_KERNEL_CMDLINE_SH) $(AVBTOOL)
+25 −0
Original line number Diff line number Diff line
@@ -627,6 +627,31 @@ ifdef BOARD_PREBUILT_ODM_DLKMIMAGE
endif
.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.
TARGET_RECOVERY_UPDATER_LIBS ?=
+1 −1
Original line number Diff line number Diff line
@@ -898,7 +898,7 @@ $(foreach group,$(call to-upper,$(BOARD_SUPER_PARTITION_GROUPS)), \
)

# 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)), \
    $(if $(filter-out $(valid_super_partition_list),$(BOARD_$(group)_PARTITION_LIST)), \
        $(error BOARD_$(group)_PARTITION_LIST contains invalid partition name \
+51 −0
Original line number Diff line number Diff line
@@ -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_ROOT := root
TARGET_COPY_OUT_RECOVERY := recovery
TARGET_COPY_OUT_MODULES := modules
# The directory used for optional partitions depend on the BoardConfig, so
# they're defined to placeholder values here and swapped after reading the
# 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_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
.KATI_READONLY := TARGET_OUT_BREAKPAD

+3 −0
Original line number Diff line number Diff line
@@ -1581,6 +1581,9 @@ vbmetasystemimage: $(INSTALLED_VBMETA_SYSTEMIMAGE_TARGET)
.PHONY: vbmetavendorimage
vbmetavendorimage: $(INSTALLED_VBMETA_VENDORIMAGE_TARGET)

.PHONY: modulesimage
modulesimage: $(INSTALLED_MODULESIMAGE_TARGET)

# Build files and then package it into the rom formats
.PHONY: droidcore
droidcore: $(filter $(HOST_OUT_ROOT)/%,$(modules_to_install)) \
Loading