* commit '5f97f2b6d6503eca8ae02ea8941fe1db7b6b399c': Run e2fsck on built sparse images.
This commit is contained in:
@@ -556,7 +556,7 @@ ifneq (true,$(TARGET_USERIMAGES_SPARSE_EXT_DISABLED))
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(INTERNAL_USERIMAGES_USE_EXT),true)
|
ifeq ($(INTERNAL_USERIMAGES_USE_EXT),true)
|
||||||
INTERNAL_USERIMAGES_DEPS := $(MKEXTUSERIMG) $(MAKE_EXT4FS)
|
INTERNAL_USERIMAGES_DEPS := $(MKEXTUSERIMG) $(MAKE_EXT4FS) $(SIMG2IMG) $(E2FSCK)
|
||||||
else
|
else
|
||||||
INTERNAL_USERIMAGES_DEPS := $(MKYAFFS2)
|
INTERNAL_USERIMAGES_DEPS := $(MKYAFFS2)
|
||||||
endif
|
endif
|
||||||
|
@@ -293,6 +293,8 @@ MKEXT2IMG := $(HOST_OUT_EXECUTABLES)/genext2fs$(HOST_EXECUTABLE_SUFFIX)
|
|||||||
MAKE_EXT4FS := $(HOST_OUT_EXECUTABLES)/make_ext4fs$(HOST_EXECUTABLE_SUFFIX)
|
MAKE_EXT4FS := $(HOST_OUT_EXECUTABLES)/make_ext4fs$(HOST_EXECUTABLE_SUFFIX)
|
||||||
MKEXTUSERIMG := $(HOST_OUT_EXECUTABLES)/mkuserimg.sh
|
MKEXTUSERIMG := $(HOST_OUT_EXECUTABLES)/mkuserimg.sh
|
||||||
MKEXT2BOOTIMG := external/genext2fs/mkbootimg_ext2.sh
|
MKEXT2BOOTIMG := external/genext2fs/mkbootimg_ext2.sh
|
||||||
|
SIMG2IMG := $(HOST_OUT_EXECUTABLES)/simg2img$(HOST_EXECUTABLE_SUFFIX)
|
||||||
|
E2FSCK := $(HOST_OUT_EXECUTABLES)/e2fsck$(HOST_EXECUTABLE_SUFFIX)
|
||||||
MKTARBALL := build/tools/mktarball.sh
|
MKTARBALL := build/tools/mktarball.sh
|
||||||
TUNE2FS := $(HOST_OUT_EXECUTABLES)/tune2fs$(HOST_EXECUTABLE_SUFFIX)
|
TUNE2FS := $(HOST_OUT_EXECUTABLES)/tune2fs$(HOST_EXECUTABLE_SUFFIX)
|
||||||
E2FSCK := $(HOST_OUT_EXECUTABLES)/e2fsck$(HOST_EXECUTABLE_SUFFIX)
|
E2FSCK := $(HOST_OUT_EXECUTABLES)/e2fsck$(HOST_EXECUTABLE_SUFFIX)
|
||||||
|
@@ -21,9 +21,22 @@ Usage: build_image input_directory properties_file output_image_file
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
import os
|
import os
|
||||||
|
import os.path
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
def RunCommand(cmd):
|
||||||
|
""" Echo and run the given command
|
||||||
|
|
||||||
|
Args:
|
||||||
|
cmd: the command represented as a list of strings.
|
||||||
|
Returns:
|
||||||
|
The exit code.
|
||||||
|
"""
|
||||||
|
print "Running: ", " ".join(cmd)
|
||||||
|
p = subprocess.Popen(cmd)
|
||||||
|
p.communicate()
|
||||||
|
return p.returncode
|
||||||
|
|
||||||
def BuildImage(in_dir, prop_dict, out_file):
|
def BuildImage(in_dir, prop_dict, out_file):
|
||||||
"""Build an image to out_file from in_dir with property prop_dict.
|
"""Build an image to out_file from in_dir with property prop_dict.
|
||||||
@@ -38,10 +51,12 @@ def BuildImage(in_dir, prop_dict, out_file):
|
|||||||
"""
|
"""
|
||||||
build_command = []
|
build_command = []
|
||||||
fs_type = prop_dict.get("fs_type", "")
|
fs_type = prop_dict.get("fs_type", "")
|
||||||
|
run_fsck = False
|
||||||
if fs_type.startswith("ext"):
|
if fs_type.startswith("ext"):
|
||||||
build_command = ["mkuserimg.sh"]
|
build_command = ["mkuserimg.sh"]
|
||||||
if "extfs_sparse_flag" in prop_dict:
|
if "extfs_sparse_flag" in prop_dict:
|
||||||
build_command.append(prop_dict["extfs_sparse_flag"])
|
build_command.append(prop_dict["extfs_sparse_flag"])
|
||||||
|
run_fsck = True
|
||||||
build_command.extend([in_dir, out_file, fs_type,
|
build_command.extend([in_dir, out_file, fs_type,
|
||||||
prop_dict["mount_point"]])
|
prop_dict["mount_point"]])
|
||||||
if "partition_size" in prop_dict:
|
if "partition_size" in prop_dict:
|
||||||
@@ -58,10 +73,27 @@ def BuildImage(in_dir, prop_dict, out_file):
|
|||||||
build_command.append(prop_dict["selinux_fc"])
|
build_command.append(prop_dict["selinux_fc"])
|
||||||
build_command.append(prop_dict["mount_point"])
|
build_command.append(prop_dict["mount_point"])
|
||||||
|
|
||||||
print "Running: ", " ".join(build_command)
|
exit_code = RunCommand(build_command)
|
||||||
p = subprocess.Popen(build_command);
|
if exit_code != 0:
|
||||||
p.communicate()
|
return False
|
||||||
return p.returncode == 0
|
|
||||||
|
if run_fsck:
|
||||||
|
# Inflate the sparse image
|
||||||
|
unsparse_image = os.path.join(
|
||||||
|
os.path.dirname(out_file), "unsparse_" + os.path.basename(out_file))
|
||||||
|
inflate_command = ["simg2img", out_file, unsparse_image]
|
||||||
|
exit_code = RunCommand(inflate_command)
|
||||||
|
if exit_code != 0:
|
||||||
|
os.remove(unsparse_image)
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Run e2fsck on the inflated image file
|
||||||
|
e2fsck_command = ["e2fsck", "-f", "-n", unsparse_image]
|
||||||
|
exit_code = RunCommand(e2fsck_command)
|
||||||
|
|
||||||
|
os.remove(unsparse_image)
|
||||||
|
|
||||||
|
return exit_code == 0
|
||||||
|
|
||||||
|
|
||||||
def ImagePropFromGlobalDict(glob_dict, mount_point):
|
def ImagePropFromGlobalDict(glob_dict, mount_point):
|
||||||
|
Reference in New Issue
Block a user