Support a first stage ramdisk via TARGET_RAMDISK_OUT
Support a first stage ramdisk which will include the targets placed into TARGET_RAMDISK_OUT. This replaces the existing ramdisk on existing devices. All system images are now built to be mounted as the root dir. Devices with a first stage ramdisk will switch root to the system partition. BOARD_BUILD_SYSTEM_ROOT_IMAGE remains and is used to specify if the system partition is going to be directly used as rootfs without the ramdisk. Bug: 79173823 Bug: 79758715 Test: hikey boots, sailfish boots Test: OTA walleye from P to master Change-Id: Idbb2dccc6340b0235a4bef03e11e420a9ed154b6
This commit is contained in:
@@ -754,15 +754,15 @@ else
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
# -----------------------------------------------------------------
|
# -----------------------------------------------------------------
|
||||||
# the ramdisk
|
# the root dir
|
||||||
INTERNAL_RAMDISK_FILES := $(filter $(TARGET_ROOT_OUT)/%, \
|
INTERNAL_ROOT_FILES := $(filter $(TARGET_ROOT_OUT)/%, \
|
||||||
$(ALL_GENERATED_SOURCES) \
|
$(ALL_GENERATED_SOURCES) \
|
||||||
$(ALL_DEFAULT_INSTALLED_MODULES))
|
$(ALL_DEFAULT_INSTALLED_MODULES))
|
||||||
|
|
||||||
INSTALLED_FILES_FILE_ROOT := $(PRODUCT_OUT)/installed-files-root.txt
|
INSTALLED_FILES_FILE_ROOT := $(PRODUCT_OUT)/installed-files-root.txt
|
||||||
INSTALLED_FILES_JSON_ROOT := $(INSTALLED_FILES_FILE_ROOT:.txt=.json)
|
INSTALLED_FILES_JSON_ROOT := $(INSTALLED_FILES_FILE_ROOT:.txt=.json)
|
||||||
$(INSTALLED_FILES_FILE_ROOT): .KATI_IMPLICIT_OUTPUTS := $(INSTALLED_FILES_JSON_ROOT)
|
$(INSTALLED_FILES_FILE_ROOT): .KATI_IMPLICIT_OUTPUTS := $(INSTALLED_FILES_JSON_ROOT)
|
||||||
$(INSTALLED_FILES_FILE_ROOT) : $(INTERNAL_RAMDISK_FILES) $(FILESLIST)
|
$(INSTALLED_FILES_FILE_ROOT) : $(INTERNAL_ROOT_FILES) $(FILESLIST)
|
||||||
@echo Installed file list: $@
|
@echo Installed file list: $@
|
||||||
@mkdir -p $(dir $@)
|
@mkdir -p $(dir $@)
|
||||||
@rm -f $@
|
@rm -f $@
|
||||||
@@ -771,18 +771,35 @@ $(INSTALLED_FILES_FILE_ROOT) : $(INTERNAL_RAMDISK_FILES) $(FILESLIST)
|
|||||||
|
|
||||||
$(call dist-for-goals, sdk win_sdk sdk_addon, $(INSTALLED_FILES_FILE_ROOT))
|
$(call dist-for-goals, sdk win_sdk sdk_addon, $(INSTALLED_FILES_FILE_ROOT))
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------
|
||||||
|
# the ramdisk
|
||||||
|
INTERNAL_RAMDISK_FILES := $(filter $(TARGET_RAMDISK_OUT)/%, \
|
||||||
|
$(ALL_GENERATED_SOURCES) \
|
||||||
|
$(ALL_DEFAULT_INSTALLED_MODULES))
|
||||||
|
|
||||||
|
INSTALLED_FILES_FILE_RAMDISK := $(PRODUCT_OUT)/installed-files-ramdisk.txt
|
||||||
|
INSTALLED_FILES_JSON_RAMDISK := $(INSTALLED_FILES_FILE_RAMDISK:.txt=.json)
|
||||||
|
$(INSTALLED_FILES_FILE_RAMDISK): .KATI_IMPLICIT_OUTPUTS := $(INSTALLED_FILES_JSON_RAMDISK)
|
||||||
|
$(INSTALLED_FILES_FILE_RAMDISK) : $(INTERNAL_RAMDISK_FILES) $(FILESLIST)
|
||||||
|
@echo Installed file list: $@
|
||||||
|
@mkdir -p $(dir $@)
|
||||||
|
@rm -f $@
|
||||||
|
$(hide) $(FILESLIST) $(TARGET_RAMDISK_OUT) > $(@:.txt=.json)
|
||||||
|
$(hide) build/make/tools/fileslist_util.py -c $(@:.txt=.json) > $@
|
||||||
|
|
||||||
|
$(call dist-for-goals, sdk win_sdk sdk_addon, $(INSTALLED_FILES_FILE_RAMDISK))
|
||||||
BUILT_RAMDISK_TARGET := $(PRODUCT_OUT)/ramdisk.img
|
BUILT_RAMDISK_TARGET := $(PRODUCT_OUT)/ramdisk.img
|
||||||
|
|
||||||
# We just build this directly to the install location.
|
# We just build this directly to the install location.
|
||||||
INSTALLED_RAMDISK_TARGET := $(BUILT_RAMDISK_TARGET)
|
INSTALLED_RAMDISK_TARGET := $(BUILT_RAMDISK_TARGET)
|
||||||
$(INSTALLED_RAMDISK_TARGET): $(MKBOOTFS) $(INTERNAL_RAMDISK_FILES) $(INSTALLED_FILES_FILE_ROOT) | $(MINIGZIP)
|
$(INSTALLED_RAMDISK_TARGET): $(MKBOOTFS) $(INTERNAL_RAMDISK_FILES) $(INSTALLED_FILES_FILE_RAMDISK) | $(MINIGZIP)
|
||||||
$(call pretty,"Target ram disk: $@")
|
$(call pretty,"Target ram disk: $@")
|
||||||
$(hide) $(MKBOOTFS) -d $(TARGET_OUT) $(TARGET_ROOT_OUT) | $(MINIGZIP) > $@
|
$(hide) $(MKBOOTFS) -d $(TARGET_OUT) $(TARGET_RAMDISK_OUT) | $(MINIGZIP) > $@
|
||||||
|
|
||||||
.PHONY: ramdisk-nodeps
|
.PHONY: ramdisk-nodeps
|
||||||
ramdisk-nodeps: $(MKBOOTFS) | $(MINIGZIP)
|
ramdisk-nodeps: $(MKBOOTFS) | $(MINIGZIP)
|
||||||
@echo "make $@: ignoring dependencies"
|
@echo "make $@: ignoring dependencies"
|
||||||
$(hide) $(MKBOOTFS) -d $(TARGET_OUT) $(TARGET_ROOT_OUT) | $(MINIGZIP) > $(INSTALLED_RAMDISK_TARGET)
|
$(hide) $(MKBOOTFS) -d $(TARGET_OUT) $(TARGET_RAMDISK_OUT) | $(MINIGZIP) > $(INSTALLED_RAMDISK_TARGET)
|
||||||
|
|
||||||
INSTALLED_BOOTIMAGE_TARGET := $(PRODUCT_OUT)/boot.img
|
INSTALLED_BOOTIMAGE_TARGET := $(PRODUCT_OUT)/boot.img
|
||||||
|
|
||||||
@@ -1355,8 +1372,8 @@ $(if $(BOARD_AVB_ENABLE),\
|
|||||||
$(if $(filter true,$(BOARD_USES_RECOVERY_AS_BOOT)),\
|
$(if $(filter true,$(BOARD_USES_RECOVERY_AS_BOOT)),\
|
||||||
$(hide) echo "recovery_as_boot=true" >> $(1))
|
$(hide) echo "recovery_as_boot=true" >> $(1))
|
||||||
$(if $(filter true,$(BOARD_BUILD_SYSTEM_ROOT_IMAGE)),\
|
$(if $(filter true,$(BOARD_BUILD_SYSTEM_ROOT_IMAGE)),\
|
||||||
$(hide) echo "system_root_image=true" >> $(1)
|
$(hide) echo "system_root_image=true" >> $(1))
|
||||||
$(hide) echo "root_dir=$(TARGET_ROOT_OUT)" >> $(1))
|
$(hide) echo "root_dir=$(TARGET_ROOT_OUT)" >> $(1)
|
||||||
$(if $(PRODUCT_USE_DYNAMIC_PARTITION_SIZE),$(hide) echo "use_dynamic_partition_size=true" >> $(1))
|
$(if $(PRODUCT_USE_DYNAMIC_PARTITION_SIZE),$(hide) echo "use_dynamic_partition_size=true" >> $(1))
|
||||||
$(if $(3),$(hide) $(foreach kv,$(3),echo "$(kv)" >> $(1);))
|
$(if $(3),$(hide) $(foreach kv,$(3),echo "$(kv)" >> $(1);))
|
||||||
endef
|
endef
|
||||||
@@ -1611,6 +1628,8 @@ define build-recoveryimage-target
|
|||||||
# Copying baseline ramdisk...
|
# Copying baseline ramdisk...
|
||||||
# Use rsync because "cp -Rf" fails to overwrite broken symlinks on Mac.
|
# Use rsync because "cp -Rf" fails to overwrite broken symlinks on Mac.
|
||||||
$(hide) rsync -a --exclude=sdcard $(IGNORE_RECOVERY_SEPOLICY) $(IGNORE_CACHE_LINK) $(TARGET_ROOT_OUT) $(TARGET_RECOVERY_OUT)
|
$(hide) rsync -a --exclude=sdcard $(IGNORE_RECOVERY_SEPOLICY) $(IGNORE_CACHE_LINK) $(TARGET_ROOT_OUT) $(TARGET_RECOVERY_OUT)
|
||||||
|
$(if $(filter true,$(BOARD_BUILD_SYSTEM_ROOT_IMAGE)),, \
|
||||||
|
$(hide) rsync -a $(TARGET_RAMDISK_OUT)/* $(TARGET_RECOVERY_ROOT_OUT)/)
|
||||||
# Modifying ramdisk contents...
|
# Modifying ramdisk contents...
|
||||||
$(if $(BOARD_RECOVERY_KERNEL_MODULES), \
|
$(if $(BOARD_RECOVERY_KERNEL_MODULES), \
|
||||||
$(call build-image-kernel-modules,$(BOARD_RECOVERY_KERNEL_MODULES),$(TARGET_RECOVERY_ROOT_OUT),,$(call intermediates-dir-for,PACKAGING,depmod_recovery)))
|
$(call build-image-kernel-modules,$(BOARD_RECOVERY_KERNEL_MODULES),$(TARGET_RECOVERY_ROOT_OUT),,$(call intermediates-dir-for,PACKAGING,depmod_recovery)))
|
||||||
@@ -1667,6 +1686,7 @@ $(INSTALLED_BOOTIMAGE_TARGET): $(BOARD_PREBUILT_DTBOIMAGE)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
$(INSTALLED_BOOTIMAGE_TARGET): $(MKBOOTFS) $(MKBOOTIMG) $(MINIGZIP) \
|
$(INSTALLED_BOOTIMAGE_TARGET): $(MKBOOTFS) $(MKBOOTIMG) $(MINIGZIP) \
|
||||||
|
$(INTERNAL_ROOT_FILES) \
|
||||||
$(INSTALLED_RAMDISK_TARGET) \
|
$(INSTALLED_RAMDISK_TARGET) \
|
||||||
$(INTERNAL_RECOVERYIMAGE_FILES) \
|
$(INTERNAL_RECOVERYIMAGE_FILES) \
|
||||||
$(recovery_initrc) $(recovery_sepolicy) $(recovery_kernel) \
|
$(recovery_initrc) $(recovery_sepolicy) $(recovery_kernel) \
|
||||||
@@ -1686,6 +1706,7 @@ $(INSTALLED_RECOVERYIMAGE_TARGET): $(BOARD_PREBUILT_DTBOIMAGE)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
$(INSTALLED_RECOVERYIMAGE_TARGET): $(MKBOOTFS) $(MKBOOTIMG) $(MINIGZIP) \
|
$(INSTALLED_RECOVERYIMAGE_TARGET): $(MKBOOTFS) $(MKBOOTIMG) $(MINIGZIP) \
|
||||||
|
$(INTERNAL_ROOT_FILES) \
|
||||||
$(INSTALLED_RAMDISK_TARGET) \
|
$(INSTALLED_RAMDISK_TARGET) \
|
||||||
$(INSTALLED_BOOTIMAGE_TARGET) \
|
$(INSTALLED_BOOTIMAGE_TARGET) \
|
||||||
$(INTERNAL_RECOVERYIMAGE_FILES) \
|
$(INTERNAL_RECOVERYIMAGE_FILES) \
|
||||||
@@ -1751,11 +1772,7 @@ ifneq (,$(filter address, $(SANITIZE_TARGET)))
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# When building a system root image, also add the ramdisk image as a dependency
|
FULL_SYSTEMIMAGE_DEPS += $(INTERNAL_ROOT_FILES) $(INSTALLED_FILES_FILE_ROOT)
|
||||||
# to ensure all files in it are built before it is created.
|
|
||||||
ifeq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true)
|
|
||||||
FULL_SYSTEMIMAGE_DEPS += $(INTERNAL_RAMDISK_FILES) $(INSTALLED_FILES_FILE_ROOT)
|
|
||||||
endif
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------
|
# -----------------------------------------------------------------
|
||||||
# Final System VINTF manifest including fragments. This is not assembled
|
# Final System VINTF manifest including fragments. This is not assembled
|
||||||
@@ -3203,13 +3220,12 @@ endif
|
|||||||
endif # INSTALLED_RECOVERYIMAGE_TARGET defined or BOARD_USES_RECOVERY_AS_BOOT is true
|
endif # INSTALLED_RECOVERYIMAGE_TARGET defined or BOARD_USES_RECOVERY_AS_BOOT is true
|
||||||
@# Components of the boot image
|
@# Components of the boot image
|
||||||
$(hide) mkdir -p $(zip_root)/BOOT
|
$(hide) mkdir -p $(zip_root)/BOOT
|
||||||
ifeq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true)
|
|
||||||
$(hide) mkdir -p $(zip_root)/ROOT
|
$(hide) mkdir -p $(zip_root)/ROOT
|
||||||
$(hide) $(call package_files-copy-root, \
|
$(hide) $(call package_files-copy-root, \
|
||||||
$(TARGET_ROOT_OUT),$(zip_root)/ROOT)
|
$(TARGET_ROOT_OUT),$(zip_root)/ROOT)
|
||||||
else
|
ifneq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true)
|
||||||
$(hide) $(call package_files-copy-root, \
|
$(hide) $(call package_files-copy-root, \
|
||||||
$(TARGET_ROOT_OUT),$(zip_root)/BOOT/RAMDISK)
|
$(TARGET_RAMDISK_OUT),$(zip_root)/BOOT/RAMDISK)
|
||||||
endif
|
endif
|
||||||
@# If we are using recovery as boot, this is already done when processing recovery.
|
@# If we are using recovery as boot, this is already done when processing recovery.
|
||||||
ifneq ($(BOARD_USES_RECOVERY_AS_BOOT),true)
|
ifneq ($(BOARD_USES_RECOVERY_AS_BOOT),true)
|
||||||
@@ -3460,10 +3476,10 @@ endif
|
|||||||
ifdef BOARD_ODMIMAGE_FILE_SYSTEM_TYPE
|
ifdef BOARD_ODMIMAGE_FILE_SYSTEM_TYPE
|
||||||
$(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
|
||||||
endif
|
endif
|
||||||
ifeq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true)
|
@# ROOT always contains the files for the root under normal boot.
|
||||||
@# When using BOARD_BUILD_SYSTEM_ROOT_IMAGE, ROOT always contains the files for the root under
|
|
||||||
@# normal boot. BOOT/RAMDISK exists only if additionally using BOARD_USES_RECOVERY_AS_BOOT.
|
|
||||||
$(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
|
||||||
|
ifeq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true)
|
||||||
|
@# BOOT/RAMDISK exists only if additionally using BOARD_USES_RECOVERY_AS_BOOT.
|
||||||
ifeq ($(BOARD_USES_RECOVERY_AS_BOOT),true)
|
ifeq ($(BOARD_USES_RECOVERY_AS_BOOT),true)
|
||||||
$(hide) $(call fs_config,$(zip_root)/BOOT/RAMDISK,) > $(zip_root)/META/boot_filesystem_config.txt
|
$(hide) $(call fs_config,$(zip_root)/BOOT/RAMDISK,) > $(zip_root)/META/boot_filesystem_config.txt
|
||||||
endif
|
endif
|
||||||
|
@@ -855,11 +855,6 @@ ifdef PRODUCT_SHIPPING_API_LEVEL
|
|||||||
$(error When PRODUCT_SHIPPING_API_LEVEL >= 28, TARGET_USES_64_BIT_BINDER must be true)
|
$(error When PRODUCT_SHIPPING_API_LEVEL >= 28, TARGET_USES_64_BIT_BINDER must be true)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
ifeq ($(PRODUCT_FULL_TREBLE),true)
|
|
||||||
ifneq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE), true)
|
|
||||||
$(error When PRODUCT_SHIPPING_API_LEVEL >= 28, BOARD_BUILD_SYSTEM_ROOT_IMAGE must be true)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endif
|
endif
|
||||||
ifneq ($(call math_gt_or_eq,$(PRODUCT_SHIPPING_API_LEVEL),29),)
|
ifneq ($(call math_gt_or_eq,$(PRODUCT_SHIPPING_API_LEVEL),29),)
|
||||||
ifneq ($(BOARD_OTA_FRAMEWORK_VBMETA_VERSION_OVERRIDE),)
|
ifneq ($(BOARD_OTA_FRAMEWORK_VBMETA_VERSION_OVERRIDE),)
|
||||||
|
@@ -181,6 +181,7 @@ TARGET_COPY_OUT_OEM := oem
|
|||||||
TARGET_COPY_OUT_ODM := odm
|
TARGET_COPY_OUT_ODM := odm
|
||||||
TARGET_COPY_OUT_PRODUCT := product
|
TARGET_COPY_OUT_PRODUCT := product
|
||||||
TARGET_COPY_OUT_PRODUCT_SERVICES := product_services
|
TARGET_COPY_OUT_PRODUCT_SERVICES := product_services
|
||||||
|
TARGET_COPY_OUT_RAMDISK := ramdisk
|
||||||
TARGET_COPY_OUT_ROOT := root
|
TARGET_COPY_OUT_ROOT := root
|
||||||
TARGET_COPY_OUT_RECOVERY := recovery
|
TARGET_COPY_OUT_RECOVERY := recovery
|
||||||
|
|
||||||
@@ -319,6 +320,12 @@ endif
|
|||||||
|
|
||||||
CHANGES_URL :=
|
CHANGES_URL :=
|
||||||
|
|
||||||
|
###########################################
|
||||||
|
# Now we can substitute with the real value of TARGET_COPY_OUT_RAMDISK
|
||||||
|
ifeq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true)
|
||||||
|
TARGET_COPY_OUT_RAMDISK := $(TARGET_COPY_OUT_ROOT)
|
||||||
|
endif
|
||||||
|
|
||||||
###########################################
|
###########################################
|
||||||
# Now we can substitute with the real value of TARGET_COPY_OUT_VENDOR
|
# Now we can substitute with the real value of TARGET_COPY_OUT_VENDOR
|
||||||
ifeq ($(TARGET_COPY_OUT_VENDOR),$(_vendor_path_placeholder))
|
ifeq ($(TARGET_COPY_OUT_VENDOR),$(_vendor_path_placeholder))
|
||||||
@@ -1026,6 +1033,9 @@ TARGET_OUT_COVERAGE := $(PRODUCT_OUT)/coverage
|
|||||||
TARGET_ROOT_OUT_BIN_UNSTRIPPED \
|
TARGET_ROOT_OUT_BIN_UNSTRIPPED \
|
||||||
TARGET_OUT_COVERAGE
|
TARGET_OUT_COVERAGE
|
||||||
|
|
||||||
|
TARGET_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_RAMDISK)
|
||||||
|
TARGET_RAMDISK_OUT_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)
|
||||||
|
|
||||||
TARGET_ROOT_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ROOT)
|
TARGET_ROOT_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ROOT)
|
||||||
TARGET_ROOT_OUT_BIN := $(TARGET_ROOT_OUT)/bin
|
TARGET_ROOT_OUT_BIN := $(TARGET_ROOT_OUT)/bin
|
||||||
TARGET_ROOT_OUT_SBIN := $(TARGET_ROOT_OUT)/sbin
|
TARGET_ROOT_OUT_SBIN := $(TARGET_ROOT_OUT)/sbin
|
||||||
|
15
core/main.mk
15
core/main.mk
@@ -1251,6 +1251,10 @@ droidcore: files \
|
|||||||
$(INSTALLED_FILES_JSON_PRODUCT_SERVICES) \
|
$(INSTALLED_FILES_JSON_PRODUCT_SERVICES) \
|
||||||
$(INSTALLED_FILES_FILE_SYSTEMOTHER) \
|
$(INSTALLED_FILES_FILE_SYSTEMOTHER) \
|
||||||
$(INSTALLED_FILES_JSON_SYSTEMOTHER) \
|
$(INSTALLED_FILES_JSON_SYSTEMOTHER) \
|
||||||
|
$(INSTALLED_FILES_FILE_RAMDISK) \
|
||||||
|
$(INSTALLED_FILES_JSON_RAMDISK) \
|
||||||
|
$(INSTALLED_FILES_FILE_ROOT) \
|
||||||
|
$(INSTALLED_FILES_JSON_ROOT) \
|
||||||
$(INSTALLED_FILES_FILE_RECOVERY) \
|
$(INSTALLED_FILES_FILE_RECOVERY) \
|
||||||
$(INSTALLED_FILES_JSON_RECOVERY) \
|
$(INSTALLED_FILES_JSON_RECOVERY) \
|
||||||
soong_docs
|
soong_docs
|
||||||
@@ -1350,10 +1354,15 @@ else # TARGET_BUILD_APPS
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true)
|
$(call dist-for-goals, droidcore, \
|
||||||
|
$(INSTALLED_FILES_FILE_ROOT) \
|
||||||
|
$(INSTALLED_FILES_JSON_ROOT) \
|
||||||
|
)
|
||||||
|
|
||||||
|
ifneq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true)
|
||||||
$(call dist-for-goals, droidcore, \
|
$(call dist-for-goals, droidcore, \
|
||||||
$(INSTALLED_FILES_FILE_ROOT) \
|
$(INSTALLED_FILES_FILE_RAMDISK) \
|
||||||
$(INSTALLED_FILES_JSON_ROOT) \
|
$(INSTALLED_FILES_JSON_RAMDISK) \
|
||||||
)
|
)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@@ -428,9 +428,8 @@ def ConvertBlockMapToBaseFs(block_map_file):
|
|||||||
def SetUpInDirAndFsConfig(origin_in, prop_dict):
|
def SetUpInDirAndFsConfig(origin_in, prop_dict):
|
||||||
"""Returns the in_dir and fs_config that should be used for image building.
|
"""Returns the in_dir and fs_config that should be used for image building.
|
||||||
|
|
||||||
If the target uses system_root_image and it's building system.img, it creates
|
When building system.img for all targets, it creates and returns a staged dir
|
||||||
and returns a staged dir that combines the contents of /system (i.e. in the
|
that combines the contents of /system (i.e. in the given in_dir) and root.
|
||||||
given in_dir) and root.
|
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
origin_in: Path to the input directory.
|
origin_in: Path to the input directory.
|
||||||
@@ -441,8 +440,12 @@ def SetUpInDirAndFsConfig(origin_in, prop_dict):
|
|||||||
A tuple of in_dir and fs_config that should be used to build the image.
|
A tuple of in_dir and fs_config that should be used to build the image.
|
||||||
"""
|
"""
|
||||||
fs_config = prop_dict.get("fs_config")
|
fs_config = prop_dict.get("fs_config")
|
||||||
if (prop_dict.get("system_root_image") != "true" or
|
|
||||||
prop_dict["mount_point"] != "system"):
|
if prop_dict["mount_point"] == "system_other":
|
||||||
|
prop_dict["mount_point"] = "system"
|
||||||
|
return origin_in, fs_config
|
||||||
|
|
||||||
|
if prop_dict["mount_point"] != "system":
|
||||||
return origin_in, fs_config
|
return origin_in, fs_config
|
||||||
|
|
||||||
# Construct a staging directory of the root file system.
|
# Construct a staging directory of the root file system.
|
||||||
@@ -516,9 +519,6 @@ def CheckHeadroom(ext4fs_output, prop_dict):
|
|||||||
def BuildImage(in_dir, prop_dict, out_file, target_out=None):
|
def BuildImage(in_dir, prop_dict, out_file, target_out=None):
|
||||||
"""Builds an image for the files under in_dir and writes it to out_file.
|
"""Builds an image for the files under in_dir and writes it to out_file.
|
||||||
|
|
||||||
When using system_root_image, it will additionally look for the files under
|
|
||||||
root (specified by 'root_dir') and builds an image that contains both sources.
|
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
in_dir: Path to input directory.
|
in_dir: Path to input directory.
|
||||||
prop_dict: A property dict that contains info like partition size. Values
|
prop_dict: A property dict that contains info like partition size. Values
|
||||||
@@ -838,7 +838,6 @@ def ImagePropFromGlobalDict(glob_dict, mount_point):
|
|||||||
elif mount_point == "system_other":
|
elif mount_point == "system_other":
|
||||||
# We inherit the selinux policies of /system since we contain some of its
|
# We inherit the selinux policies of /system since we contain some of its
|
||||||
# files.
|
# files.
|
||||||
d["mount_point"] = "system"
|
|
||||||
copy_prop("avb_system_hashtree_enable", "avb_hashtree_enable")
|
copy_prop("avb_system_hashtree_enable", "avb_hashtree_enable")
|
||||||
copy_prop("avb_system_add_hashtree_footer_args",
|
copy_prop("avb_system_add_hashtree_footer_args",
|
||||||
"avb_add_hashtree_footer_args")
|
"avb_add_hashtree_footer_args")
|
||||||
|
@@ -181,26 +181,18 @@ def LoadInfoDict(input_file, input_dir=None):
|
|||||||
if input_dir is not None:
|
if input_dir is not None:
|
||||||
# We carry a copy of file_contexts.bin under META/. If not available,
|
# We carry a copy of file_contexts.bin under META/. If not available,
|
||||||
# search BOOT/RAMDISK/. Note that sometimes we may need a different file
|
# search BOOT/RAMDISK/. Note that sometimes we may need a different file
|
||||||
# to build images than the one running on device, such as when enabling
|
# to build images than the one running on device, in that case, we must
|
||||||
# system_root_image. In that case, we must have the one for image
|
# have the one for image generation copied to META/.
|
||||||
# generation copied to META/.
|
|
||||||
fc_basename = os.path.basename(d.get("selinux_fc", "file_contexts"))
|
fc_basename = os.path.basename(d.get("selinux_fc", "file_contexts"))
|
||||||
fc_config = os.path.join(input_dir, "META", fc_basename)
|
fc_config = os.path.join(input_dir, "META", fc_basename)
|
||||||
if d.get("system_root_image") == "true":
|
assert os.path.exists(fc_config)
|
||||||
assert os.path.exists(fc_config)
|
|
||||||
if not os.path.exists(fc_config):
|
|
||||||
fc_config = os.path.join(input_dir, "BOOT", "RAMDISK", fc_basename)
|
|
||||||
if not os.path.exists(fc_config):
|
|
||||||
fc_config = None
|
|
||||||
|
|
||||||
if fc_config:
|
d["selinux_fc"] = fc_config
|
||||||
d["selinux_fc"] = fc_config
|
|
||||||
|
|
||||||
# Similarly we need to redirect "root_dir" and "root_fs_config".
|
# Similarly we need to redirect "root_dir", and "root_fs_config".
|
||||||
if d.get("system_root_image") == "true":
|
d["root_dir"] = os.path.join(input_dir, "ROOT")
|
||||||
d["root_dir"] = os.path.join(input_dir, "ROOT")
|
d["root_fs_config"] = os.path.join(
|
||||||
d["root_fs_config"] = os.path.join(
|
input_dir, "META", "root_filesystem_config.txt")
|
||||||
input_dir, "META", "root_filesystem_config.txt")
|
|
||||||
|
|
||||||
# Redirect {system,vendor}_base_fs_file.
|
# Redirect {system,vendor}_base_fs_file.
|
||||||
if "system_base_fs_file" in d:
|
if "system_base_fs_file" in d:
|
||||||
@@ -709,15 +701,14 @@ def GetSparseImage(which, tmpdir, input_zip, allow_shared_blocks):
|
|||||||
if not entry.startswith('/'):
|
if not entry.startswith('/'):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# "/system/framework/am.jar" => "SYSTEM/framework/am.jar". Note that when
|
# "/system/framework/am.jar" => "SYSTEM/framework/am.jar". Note that the
|
||||||
# using system_root_image, the filename listed in system.map may contain an
|
# filename listed in system.map may contain an additional leading slash
|
||||||
# additional leading slash (i.e. "//system/framework/am.jar"). Using lstrip
|
# (i.e. "//system/framework/am.jar"). Using lstrip to get consistent
|
||||||
# to get consistent results.
|
# results.
|
||||||
arcname = string.replace(entry, which, which.upper(), 1).lstrip('/')
|
arcname = string.replace(entry, which, which.upper(), 1).lstrip('/')
|
||||||
|
|
||||||
# Special handling another case with system_root_image, where files not
|
# Special handling another case, where files not under /system
|
||||||
# under /system (e.g. "/sbin/charger") are packed under ROOT/ in a
|
# (e.g. "/sbin/charger") are packed under ROOT/ in a target_files.zip.
|
||||||
# target_files.zip.
|
|
||||||
if which == 'system' and not arcname.startswith('SYSTEM'):
|
if which == 'system' and not arcname.startswith('SYSTEM'):
|
||||||
arcname = 'ROOT/' + arcname
|
arcname = 'ROOT/' + arcname
|
||||||
|
|
||||||
|
@@ -96,16 +96,6 @@ class BuildImageTest(unittest.TestCase):
|
|||||||
}
|
}
|
||||||
self.assertFalse(CheckHeadroom(ext4fs_output, prop_dict))
|
self.assertFalse(CheckHeadroom(ext4fs_output, prop_dict))
|
||||||
|
|
||||||
def test_SetUpInDirAndFsConfig_SystemRootImageFalse(self):
|
|
||||||
prop_dict = {
|
|
||||||
'fs_config': 'fs-config',
|
|
||||||
'mount_point': 'system',
|
|
||||||
}
|
|
||||||
in_dir, fs_config = SetUpInDirAndFsConfig('/path/to/in_dir', prop_dict)
|
|
||||||
self.assertEqual('/path/to/in_dir', in_dir)
|
|
||||||
self.assertEqual('fs-config', fs_config)
|
|
||||||
self.assertEqual('system', prop_dict['mount_point'])
|
|
||||||
|
|
||||||
def test_SetUpInDirAndFsConfig_SystemRootImageTrue_NonSystem(self):
|
def test_SetUpInDirAndFsConfig_SystemRootImageTrue_NonSystem(self):
|
||||||
prop_dict = {
|
prop_dict = {
|
||||||
'fs_config': 'fs-config',
|
'fs_config': 'fs-config',
|
||||||
@@ -124,7 +114,7 @@ class BuildImageTest(unittest.TestCase):
|
|||||||
fs_config_fp.write('fs-config-{}\n'.format(partition))
|
fs_config_fp.write('fs-config-{}\n'.format(partition))
|
||||||
return fs_config
|
return fs_config
|
||||||
|
|
||||||
def test_SetUpInDirAndFsConfig_SystemRootImageTrue(self):
|
def test_SetUpInDirAndFsConfig(self):
|
||||||
root_dir = common.MakeTempDir()
|
root_dir = common.MakeTempDir()
|
||||||
with open(os.path.join(root_dir, 'init'), 'w') as init_fp:
|
with open(os.path.join(root_dir, 'init'), 'w') as init_fp:
|
||||||
init_fp.write('init')
|
init_fp.write('init')
|
||||||
@@ -140,7 +130,6 @@ class BuildImageTest(unittest.TestCase):
|
|||||||
'fs_config': fs_config_system,
|
'fs_config': fs_config_system,
|
||||||
'mount_point': 'system',
|
'mount_point': 'system',
|
||||||
'root_dir': root_dir,
|
'root_dir': root_dir,
|
||||||
'system_root_image': 'true',
|
|
||||||
}
|
}
|
||||||
in_dir, fs_config = SetUpInDirAndFsConfig(origin_in, prop_dict)
|
in_dir, fs_config = SetUpInDirAndFsConfig(origin_in, prop_dict)
|
||||||
|
|
||||||
@@ -154,7 +143,7 @@ class BuildImageTest(unittest.TestCase):
|
|||||||
self.assertTrue(filecmp.cmp(fs_config_system, fs_config))
|
self.assertTrue(filecmp.cmp(fs_config_system, fs_config))
|
||||||
self.assertEqual('/', prop_dict['mount_point'])
|
self.assertEqual('/', prop_dict['mount_point'])
|
||||||
|
|
||||||
def test_SetUpInDirAndFsConfig_SystemRootImageTrue_WithRootFsConfig(self):
|
def test_SetUpInDirAndFsConfig_WithRootFsConfig(self):
|
||||||
root_dir = common.MakeTempDir()
|
root_dir = common.MakeTempDir()
|
||||||
with open(os.path.join(root_dir, 'init'), 'w') as init_fp:
|
with open(os.path.join(root_dir, 'init'), 'w') as init_fp:
|
||||||
init_fp.write('init')
|
init_fp.write('init')
|
||||||
@@ -172,7 +161,6 @@ class BuildImageTest(unittest.TestCase):
|
|||||||
'mount_point': 'system',
|
'mount_point': 'system',
|
||||||
'root_dir': root_dir,
|
'root_dir': root_dir,
|
||||||
'root_fs_config': fs_config_root,
|
'root_fs_config': fs_config_root,
|
||||||
'system_root_image': 'true',
|
|
||||||
}
|
}
|
||||||
in_dir, fs_config = SetUpInDirAndFsConfig(origin_in, prop_dict)
|
in_dir, fs_config = SetUpInDirAndFsConfig(origin_in, prop_dict)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user