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

Commit b1e66600 authored by Yifan Hong's avatar Yifan Hong Committed by Gerrit Code Review
Browse files

Merge "Add modules partition."

parents a51b1b85 c0f187f5
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