diff --git a/core/Makefile b/core/Makefile index 1bbcbbdaa..a71355e9d 100644 --- a/core/Makefile +++ b/core/Makefile @@ -566,8 +566,12 @@ endif endif endif +ifneq (true,$(TARGET_USERIMAGES_SPARSE_EXT_DISABLED)) + INTERNAL_USERIMAGES_SPARSE_EXT_FLAG := -s +endif + ifeq ($(INTERNAL_USERIMAGES_USE_EXT),true) -INTERNAL_USERIMAGES_DEPS := $(MKEXT2USERIMG) $(MAKE_EXT4FS) +INTERNAL_USERIMAGES_DEPS := $(MKEXTUSERIMG) $(MAKE_EXT4FS) INTERNAL_USERIMAGES_BINARY_PATHS := $(sort $(dir $(INTERNAL_USERIMAGES_DEPS))) # $(1): src directory @@ -577,8 +581,8 @@ INTERNAL_USERIMAGES_BINARY_PATHS := $(sort $(dir $(INTERNAL_USERIMAGES_DEPS))) # $(5): size of the partition define build-userimage-ext-target @mkdir -p $(dir $(2)) - $(hide) PATH=$(foreach p,$(INTERNAL_USERIMAGES_BINARY_PATHS),$(p):)$(PATH) \ - $(MKEXT2USERIMG) $(1) $(2) $(4) $(3) $(5) + $(hide) PATH=$(foreach p,$(INTERNAL_USERIMAGES_BINARY_PATHS),$(p):)$(PATH) \ + $(MKEXTUSERIMG) $(INTERNAL_USERIMAGES_SPARSE_EXT_FLAG) $(1) $(2) $(4) $(3) $(5) endef else INTERNAL_USERIMAGES_DEPS := $(MKYAFFS2) @@ -1045,6 +1049,9 @@ endif $(hide) echo "tool_extensions=$(tool_extensions)" >> $(zip_root)/META/misc_info.txt ifdef mkyaffs2_extra_flags $(hide) echo "mkyaffs2_extra_flags=$(mkyaffs2_extra_flags)" >> $(zip_root)/META/misc_info.txt +endif +ifdef INTERNAL_USERIMAGES_SPARSE_EXT_FLAG + $(hide) echo "extfs_sparse_flag=$(INTERNAL_USERIMAGES_SPARSE_EXT_FLAG)" >> $(zip_root)/META/misc_info.txt endif @# Zip everything up, preserving symlinks $(hide) (cd $(zip_root) && zip -qry ../$(notdir $@) .) diff --git a/core/config.mk b/core/config.mk index 0dec4bec7..1282ad640 100644 --- a/core/config.mk +++ b/core/config.mk @@ -210,7 +210,7 @@ APICHECK := $(HOST_OUT_EXECUTABLES)/apicheck$(HOST_EXECUTABLE_SUFFIX) FS_GET_STATS := $(HOST_OUT_EXECUTABLES)/fs_get_stats$(HOST_EXECUTABLE_SUFFIX) MKEXT2IMG := $(HOST_OUT_EXECUTABLES)/genext2fs$(HOST_EXECUTABLE_SUFFIX) MAKE_EXT4FS := $(HOST_OUT_EXECUTABLES)/make_ext4fs$(HOST_EXECUTABLE_SUFFIX) -MKEXT2USERIMG := $(HOST_OUT_EXECUTABLES)/mkuserimg.sh +MKEXTUSERIMG := $(HOST_OUT_EXECUTABLES)/mkuserimg.sh MKEXT2BOOTIMG := external/genext2fs/mkbootimg_ext2.sh MKTARBALL := build/tools/mktarball.sh TUNE2FS := tune2fs diff --git a/tools/releasetools/img_from_target_files b/tools/releasetools/img_from_target_files index f10af492e..0139916b0 100755 --- a/tools/releasetools/img_from_target_files +++ b/tools/releasetools/img_from_target_files @@ -61,10 +61,13 @@ def AddUserdata(output_zip): img = tempfile.NamedTemporaryFile() build_command = [] - if OPTIONS.info_dict["fstab"]["/data"].fs_type.startswith("ext"): - build_command = ["mkuserimg.sh", - user_dir, img.name, - OPTIONS.info_dict["fstab"]["/data"].fs_type, "data"] + fstab = OPTIONS.info_dict["fstab"] + if fstab and fstab["/data"].fs_type.startswith("ext"): + build_command = ["mkuserimg.sh"] + if "extfs_sparse_flag" in OPTIONS.info_dict: + build_command.append(OPTIONS.info_dict["extfs_sparse_flag"]) + build_command.extend([user_dir, img.name, + fstab["/data"].fs_type, "data"]) if "userdata_size" in OPTIONS.info_dict: build_command.append(str(OPTIONS.info_dict["userdata_size"])) else: @@ -109,10 +112,14 @@ def AddSystem(output_zip): pass build_command = [] - if OPTIONS.info_dict["fstab"]["/system"].fs_type.startswith("ext"): - build_command = ["mkuserimg.sh", - os.path.join(OPTIONS.input_tmp, "system"), img.name, - OPTIONS.info_dict["fstab"]["/system"].fs_type, "system"] + fstab = OPTIONS.info_dict["fstab"] + if fstab and fstab["/system"].fs_type.startswith("ext"): + + build_command = ["mkuserimg.sh"] + if "extfs_sparse_flag" in OPTIONS.info_dict: + build_command.append(OPTIONS.info_dict["extfs_sparse_flag"]) + build_command.extend([os.path.join(OPTIONS.input_tmp, "system"), img.name, + fstab["/system"].fs_type, "system"]) if "system_size" in OPTIONS.info_dict: build_command.append(str(OPTIONS.info_dict["system_size"])) else: