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

Commit ffa1d578 authored by Huang Jianan's avatar Huang Jianan
Browse files

Avoid repeated building of erofs image



The image size of erofs is only affected by the content of the input
file, so it doesn't care about the input image_size. In addition, the
build time of erofs image is longer than ext4 due to compression. Only
execute mkfs once to reduce unnecessary time consumption.

Bug: 199248596
Test: erofs image build faster than before
Signed-off-by: default avatarHuang Jianan <huangjianan@oppo.com>
Change-Id: I23a4e640d5066485de3fea0f808998045e716d1f
parent c01c341b
Loading
Loading
Loading
Loading
+10 −8
Original line number Diff line number Diff line
@@ -451,18 +451,19 @@ def BuildImage(in_dir, prop_dict, out_file, target_out=None):
  verity_image_builder = verity_utils.CreateVerityImageBuilder(prop_dict)

  disable_sparse = "disable_sparse" in prop_dict

  mkfs_output = None
  if (prop_dict.get("use_dynamic_partition_size") == "true" and
      "partition_size" not in prop_dict):
    # If partition_size is not defined, use output of `du' + reserved_size.
    # For compressed file system, it's better to use the compressed size to avoid wasting space.
    if fs_type.startswith("erofs"):
      tmp_dict = prop_dict.copy()
      if "erofs_sparse_flag" in tmp_dict:
        tmp_dict.pop("erofs_sparse_flag")
      BuildImageMkfs(in_dir, tmp_dict, out_file, target_out, fs_config)
      mkfs_output = BuildImageMkfs(in_dir, prop_dict, out_file, target_out, fs_config)
      if "erofs_sparse_flag" in prop_dict and not disable_sparse:
        image_path = UnsparseImage(out_file, replace=False)
        size = GetDiskUsage(image_path)
        os.remove(image_path)
      else:
        size = GetDiskUsage(out_file)
      os.remove(out_file)
    else:
      size = GetDiskUsage(in_dir)
    logger.info(
@@ -550,6 +551,7 @@ def BuildImage(in_dir, prop_dict, out_file, target_out=None):
    max_image_size = verity_image_builder.CalculateMaxImageSize()
    prop_dict["image_size"] = str(max_image_size)

  if not mkfs_output:
    mkfs_output = BuildImageMkfs(in_dir, prop_dict, out_file, target_out, fs_config)

  # Check if there's enough headroom space available for ext4 image.