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

Commit 70fc029a authored by Yifan Hong's avatar Yifan Hong
Browse files

Infer prebuilt image size

Test: call script twice; the second time uses prebuilts
Fixes: 119769527

Change-Id: Icd98a4dbfed91538cbc07aab957c7b042c05b330
parent 9b024fe5
Loading
Loading
Loading
Loading
+15 −7
Original line number Diff line number Diff line
@@ -677,17 +677,25 @@ def AddSuperEmpty(output_zip):
def AddSuperSplit(output_zip):
  """Create split super_*.img and store it in output_zip."""

  def GetPartitionSizeFromImage(img):
    try:
      simg = sparse_img.SparseImage(img)
      return simg.blocksize * simg.total_blocks
    except ValueError:
      return os.path.getsize(img)

  def TransformPartitionArg(arg):
    lst = arg.split(':')
    # Because --auto-slot-suffixing for A/B, there is no need to remove suffix.
    name = lst[0]
    assert name + '_size' in OPTIONS.info_dict, (
        "{} is a prebuilt. Dynamic partitions with prebuilt images "
        "are not supported yet.".format(name))
    size = OPTIONS.info_dict[name + '_size']
    assert size is not None, \
        '{0}_size is not found; is {0} built?'.format(name)
    lst[2] = str(size)
    if name + '_size' in OPTIONS.info_dict:
      size = str(OPTIONS.info_dict[name + '_size'])
      logger.info("Using %s_size = %s", name, size)
    else:
      size = str(GetPartitionSizeFromImage(
          os.path.join(OPTIONS.input_tmp, "IMAGES", '{}.img'.format(name))))
      logger.info("Using size of prebuilt %s = %s", name, size)
    lst[2] = size
    return ':'.join(lst)

  def GetLpmakeArgsWithSizes():