From b97746ef09420b639273553206f96585b0d0adaa Mon Sep 17 00:00:00 2001 From: Mohamad Ayyash Date: Tue, 3 Mar 2015 12:30:37 -0800 Subject: [PATCH] Allow flashing a squashfs system image Change-Id: Ic51d11274784a8d2e9d57d5f0b821ebc89680e5a Signed-off-by: Mohamad Ayyash --- core/Makefile | 6 ++++++ core/config.mk | 7 +++++++ core/product.mk | 1 + tools/releasetools/build_image.py | 10 ++++++++++ 4 files changed, 24 insertions(+) diff --git a/core/Makefile b/core/Makefile index 0de717adc..8e61f4538 100644 --- a/core/Makefile +++ b/core/Makefile @@ -673,6 +673,10 @@ INTERNAL_USERIMAGES_DEPS += $(MKF2FSUSERIMG) $(MAKE_F2FS) endif endif +ifeq ($(BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE),squashfs) +INTERNAL_USERIMAGES_DEPS += $(MAKE_SQUASHFS) $(MKSQUASHFSUSERIMG) +endif + INTERNAL_USERIMAGES_BINARY_PATHS := $(sort $(dir $(INTERNAL_USERIMAGES_DEPS))) ifeq (true,$(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SUPPORTS_VERITY)) @@ -687,6 +691,7 @@ INTERNAL_USERIMAGES_DEPS += $(SELINUX_FC) define generate-userimage-prop-dictionary $(if $(INTERNAL_USERIMAGES_EXT_VARIANT),$(hide) echo "fs_type=$(INTERNAL_USERIMAGES_EXT_VARIANT)" >> $(1)) $(if $(BOARD_SYSTEMIMAGE_PARTITION_SIZE),$(hide) echo "system_size=$(BOARD_SYSTEMIMAGE_PARTITION_SIZE)" >> $(1)) +$(if $(BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE),$(hide) echo "system_fs_type=$(BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE)" >> $(1)) $(if $(BOARD_USERDATAIMAGE_FILE_SYSTEM_TYPE),$(hide) echo "userdata_fs_type=$(BOARD_USERDATAIMAGE_FILE_SYSTEM_TYPE)" >> $(1)) $(if $(BOARD_USERDATAIMAGE_PARTITION_SIZE),$(hide) echo "userdata_size=$(BOARD_USERDATAIMAGE_PARTITION_SIZE)" >> $(1)) $(if $(BOARD_CACHEIMAGE_FILE_SYSTEM_TYPE),$(hide) echo "cache_fs_type=$(BOARD_CACHEIMAGE_FILE_SYSTEM_TYPE)" >> $(1)) @@ -891,6 +896,7 @@ INTERNAL_SYSTEMIMAGE_FILES := $(filter $(TARGET_OUT)/%, \ $(PDK_FUSION_SYSIMG_FILES) \ $(RECOVERY_RESOURCE_ZIP)) + FULL_SYSTEMIMAGE_DEPS := $(INTERNAL_SYSTEMIMAGE_FILES) $(INTERNAL_USERIMAGES_DEPS) # ----------------------------------------------------------------- # installed file list diff --git a/core/config.mk b/core/config.mk index ecc804400..e8b650421 100644 --- a/core/config.mk +++ b/core/config.mk @@ -398,6 +398,13 @@ APICHECK := $(HOST_OUT_EXECUTABLES)/apicheck$(HOST_EXECUTABLE_SUFFIX) FS_GET_STATS := $(HOST_OUT_EXECUTABLES)/fs_get_stats$(HOST_EXECUTABLE_SUFFIX) MAKE_EXT4FS := $(HOST_OUT_EXECUTABLES)/make_ext4fs$(HOST_EXECUTABLE_SUFFIX) MKEXTUSERIMG := $(HOST_OUT_EXECUTABLES)/mkuserimg.sh +ifeq ($(HOST_OS),linux) +MAKE_SQUASHFS := $(HOST_OUT_EXECUTABLES)/mksquashfs$(HOST_EXECUTABLE_SUFFIX) +MKSQUASHFSUSERIMG := $(HOST_OUT_EXECUTABLES)/mksquashfsimage.sh +else +MAKE_SQUASHFS := +MKSQUASHFSUSERIMG := +endif MAKE_F2FS := $(HOST_OUT_EXECUTABLES)/make_f2fs$(HOST_EXECUTABLE_SUFFIX) MKF2FSUSERIMG := $(HOST_OUT_EXECUTABLES)/mkf2fsuserimg.sh SIMG2IMG := $(HOST_OUT_EXECUTABLES)/simg2img$(HOST_EXECUTABLE_SUFFIX) diff --git a/core/product.mk b/core/product.mk index ff65672be..abbdb35d4 100644 --- a/core/product.mk +++ b/core/product.mk @@ -251,6 +251,7 @@ _product_stash_var_list += \ BOARD_BOOTIMAGE_PARTITION_SIZE \ BOARD_RECOVERYIMAGE_PARTITION_SIZE \ BOARD_SYSTEMIMAGE_PARTITION_SIZE \ + BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE \ BOARD_USERDATAIMAGE_FILE_SYSTEM_TYPE \ BOARD_USERDATAIMAGE_PARTITION_SIZE \ BOARD_CACHEIMAGE_FILE_SYSTEM_TYPE \ diff --git a/tools/releasetools/build_image.py b/tools/releasetools/build_image.py index 777a91a6f..18e80dbd4 100755 --- a/tools/releasetools/build_image.py +++ b/tools/releasetools/build_image.py @@ -251,6 +251,14 @@ def BuildImage(in_dir, prop_dict, out_file, build_command.append(fc_config) elif "selinux_fc" in prop_dict: build_command.append(prop_dict["selinux_fc"]) + elif fs_type.startswith("squash"): + build_command = ["mksquashfsimage.sh"] + build_command.extend([in_dir, out_file]) + build_command.extend(["-m", prop_dict["mount_point"]]) + if fc_config is not None: + build_command.extend(["-c", fc_config]) + elif "selinux_fc" in prop_dict: + build_command.extend(["-c", prop_dict["selinux_fc"]]) elif fs_type.startswith("f2fs"): build_command = ["mkf2fsuserimg.sh"] build_command.extend([out_file, prop_dict["partition_size"]]) @@ -319,6 +327,8 @@ def ImagePropFromGlobalDict(glob_dict, mount_point): d["mount_point"] = mount_point if mount_point == "system": copy_prop("fs_type", "fs_type") + # Copy the generic sysetem fs type first, override with specific one if available. + copy_prop("system_fs_type", "fs_type") copy_prop("system_size", "partition_size") copy_prop("system_verity_block_device", "verity_block_device") elif mount_point == "data": -- 2.11.0