Merge "releasetools: Clean up the use of `partition_size`."
This commit is contained in:
commit
c7aa0dbf0d
|
@ -112,12 +112,12 @@ def GetCareMap(which, imgname):
|
|||
|
||||
simg = sparse_img.SparseImage(imgname)
|
||||
care_map_ranges = simg.care_map
|
||||
key = which + "_adjusted_partition_size"
|
||||
adjusted_blocks = OPTIONS.info_dict.get(key)
|
||||
if adjusted_blocks:
|
||||
assert adjusted_blocks > 0, "blocks should be positive for " + which
|
||||
care_map_ranges = care_map_ranges.intersect(rangelib.RangeSet(
|
||||
"0-%d" % (adjusted_blocks,)))
|
||||
key = which + "_image_blocks"
|
||||
image_blocks = OPTIONS.info_dict.get(key)
|
||||
if image_blocks:
|
||||
assert image_blocks > 0, "blocks for {} must be positive".format(which)
|
||||
care_map_ranges = care_map_ranges.intersect(
|
||||
rangelib.RangeSet("0-{}".format(image_blocks)))
|
||||
|
||||
return [which, care_map_ranges.to_string_raw()]
|
||||
|
||||
|
@ -316,18 +316,18 @@ def CreateImage(input_dir, info_dict, what, output_file, block_list=None):
|
|||
if block_list:
|
||||
block_list.Write()
|
||||
|
||||
# Set the 'adjusted_partition_size' that excludes the verity blocks of the
|
||||
# given image. When avb is enabled, this size is the max image size returned
|
||||
# by the avb tool.
|
||||
# Set the '_image_blocks' that excludes the verity metadata blocks of the
|
||||
# given image. When AVB is enabled, this size is the max image size returned
|
||||
# by the AVB tool.
|
||||
is_verity_partition = "verity_block_device" in image_props
|
||||
verity_supported = (image_props.get("verity") == "true" or
|
||||
image_props.get("avb_enable") == "true")
|
||||
is_avb_enable = image_props.get("avb_hashtree_enable") == "true"
|
||||
if verity_supported and (is_verity_partition or is_avb_enable):
|
||||
adjusted_blocks_value = image_props.get("partition_size")
|
||||
if adjusted_blocks_value:
|
||||
adjusted_blocks_key = what + "_adjusted_partition_size"
|
||||
info_dict[adjusted_blocks_key] = int(adjusted_blocks_value)/4096 - 1
|
||||
image_size = image_props.get("image_size")
|
||||
if image_size:
|
||||
image_blocks_key = what + "_image_blocks"
|
||||
info_dict[image_blocks_key] = int(image_size) / 4096 - 1
|
||||
|
||||
|
||||
def AddUserdata(output_zip):
|
||||
|
|
|
@ -373,7 +373,7 @@ def MakeVerityEnabledImage(out_file, fec_supported, prop_dict):
|
|||
True on success, False otherwise.
|
||||
"""
|
||||
# get properties
|
||||
image_size = int(prop_dict["partition_size"])
|
||||
image_size = int(prop_dict["image_size"])
|
||||
block_dev = prop_dict["verity_block_device"]
|
||||
signer_key = prop_dict["verity_key"] + ".pk8"
|
||||
if OPTIONS.verity_signer_path is not None:
|
||||
|
@ -404,10 +404,10 @@ def MakeVerityEnabledImage(out_file, fec_supported, prop_dict):
|
|||
return False
|
||||
|
||||
# build the full verified image
|
||||
target_size = int(prop_dict["original_partition_size"])
|
||||
partition_size = int(prop_dict["partition_size"])
|
||||
verity_size = int(prop_dict["verity_size"])
|
||||
|
||||
padding_size = target_size - image_size - verity_size
|
||||
padding_size = partition_size - image_size - verity_size
|
||||
assert padding_size >= 0
|
||||
|
||||
if not BuildVerifiedImage(out_file,
|
||||
|
@ -564,25 +564,25 @@ def BuildImage(in_dir, prop_dict, out_file, target_out=None):
|
|||
if OPTIONS.verbose:
|
||||
print("Allocating %d MB for %s." % (size // BYTES_IN_MB, out_file))
|
||||
|
||||
# Adjust the partition size to make room for the hashes if this is to be
|
||||
# verified.
|
||||
prop_dict["image_size"] = prop_dict["partition_size"]
|
||||
|
||||
# Adjust the image size to make room for the hashes if this is to be verified.
|
||||
if verity_supported and is_verity_partition:
|
||||
partition_size = int(prop_dict.get("partition_size"))
|
||||
(adjusted_size, verity_size) = AdjustPartitionSizeForVerity(
|
||||
image_size, verity_size = AdjustPartitionSizeForVerity(
|
||||
partition_size, verity_fec_supported)
|
||||
if not adjusted_size:
|
||||
if not image_size:
|
||||
return False
|
||||
prop_dict["partition_size"] = str(adjusted_size)
|
||||
prop_dict["original_partition_size"] = str(partition_size)
|
||||
prop_dict["image_size"] = str(image_size)
|
||||
prop_dict["verity_size"] = str(verity_size)
|
||||
|
||||
# Adjust partition size for AVB hash footer or AVB hashtree footer.
|
||||
avb_footer_type = ''
|
||||
if prop_dict.get("avb_hash_enable") == "true":
|
||||
avb_footer_type = 'hash'
|
||||
elif prop_dict.get("avb_hashtree_enable") == "true":
|
||||
avb_footer_type = 'hashtree'
|
||||
|
||||
# Adjust the image size for AVB hash footer or AVB hashtree footer.
|
||||
if avb_footer_type:
|
||||
avbtool = prop_dict["avb_avbtool"]
|
||||
partition_size = prop_dict["partition_size"]
|
||||
|
@ -593,8 +593,7 @@ def BuildImage(in_dir, prop_dict, out_file, target_out=None):
|
|||
if max_image_size <= 0:
|
||||
print("AVBCalcMaxImageSize is <= 0: %d" % max_image_size)
|
||||
return False
|
||||
prop_dict["partition_size"] = str(max_image_size)
|
||||
prop_dict["original_partition_size"] = partition_size
|
||||
prop_dict["image_size"] = str(max_image_size)
|
||||
|
||||
if fs_type.startswith("ext"):
|
||||
build_command = [prop_dict["ext_mkuserimg"]]
|
||||
|
@ -603,7 +602,7 @@ def BuildImage(in_dir, prop_dict, out_file, target_out=None):
|
|||
run_e2fsck = True
|
||||
build_command.extend([in_dir, out_file, fs_type,
|
||||
prop_dict["mount_point"]])
|
||||
build_command.append(prop_dict["partition_size"])
|
||||
build_command.append(prop_dict["image_size"])
|
||||
if "journal_size" in prop_dict:
|
||||
build_command.extend(["-j", prop_dict["journal_size"]])
|
||||
if "timestamp" in prop_dict:
|
||||
|
@ -662,7 +661,7 @@ def BuildImage(in_dir, prop_dict, out_file, target_out=None):
|
|||
build_command.extend(["-a"])
|
||||
elif fs_type.startswith("f2fs"):
|
||||
build_command = ["mkf2fsuserimg.sh"]
|
||||
build_command.extend([out_file, prop_dict["partition_size"]])
|
||||
build_command.extend([out_file, prop_dict["image_size"]])
|
||||
if fs_config:
|
||||
build_command.extend(["-C", fs_config])
|
||||
build_command.extend(["-f", in_dir])
|
||||
|
@ -691,18 +690,13 @@ def BuildImage(in_dir, prop_dict, out_file, target_out=None):
|
|||
in_dir, du_str,
|
||||
int(prop_dict.get("partition_reserved_size", 0)),
|
||||
int(prop_dict.get("partition_reserved_size", 0)) // BYTES_IN_MB))
|
||||
if "original_partition_size" in prop_dict:
|
||||
print(
|
||||
"The max size for filsystem files is {} bytes ({} MB), out of a "
|
||||
"total image size of {} bytes ({} MB).".format(
|
||||
int(prop_dict["partition_size"]),
|
||||
int(prop_dict["partition_size"]) // BYTES_IN_MB,
|
||||
int(prop_dict["original_partition_size"]),
|
||||
int(prop_dict["original_partition_size"]) // BYTES_IN_MB))
|
||||
else:
|
||||
print("The max image size is {} bytes ({} MB).".format(
|
||||
int(prop_dict["partition_size"]),
|
||||
int(prop_dict["partition_size"]) // BYTES_IN_MB))
|
||||
print(
|
||||
"The max image size for filsystem files is {} bytes ({} MB), out of a "
|
||||
"total partition size of {} bytes ({} MB).".format(
|
||||
int(prop_dict["image_size"]),
|
||||
int(prop_dict["image_size"]) // BYTES_IN_MB,
|
||||
int(prop_dict["partition_size"]),
|
||||
int(prop_dict["partition_size"]) // BYTES_IN_MB))
|
||||
return False
|
||||
|
||||
# Check if there's enough headroom space available for ext4 image.
|
||||
|
@ -712,14 +706,14 @@ def BuildImage(in_dir, prop_dict, out_file, target_out=None):
|
|||
|
||||
if not fs_spans_partition:
|
||||
mount_point = prop_dict.get("mount_point")
|
||||
partition_size = int(prop_dict.get("partition_size"))
|
||||
image_size = GetSimgSize(out_file)
|
||||
if image_size > partition_size:
|
||||
image_size = int(prop_dict["image_size"])
|
||||
sparse_image_size = GetSimgSize(out_file)
|
||||
if sparse_image_size > image_size:
|
||||
print("Error: %s image size of %d is larger than partition size of "
|
||||
"%d" % (mount_point, image_size, partition_size))
|
||||
"%d" % (mount_point, sparse_image_size, image_size))
|
||||
return False
|
||||
if verity_supported and is_verity_partition:
|
||||
ZeroPadSimg(out_file, partition_size - image_size)
|
||||
ZeroPadSimg(out_file, image_size - sparse_image_size)
|
||||
|
||||
# Create the verified image if this is to be verified.
|
||||
if verity_supported and is_verity_partition:
|
||||
|
@ -729,7 +723,7 @@ def BuildImage(in_dir, prop_dict, out_file, target_out=None):
|
|||
# Add AVB HASH or HASHTREE footer (metadata).
|
||||
if avb_footer_type:
|
||||
avbtool = prop_dict["avb_avbtool"]
|
||||
original_partition_size = prop_dict["original_partition_size"]
|
||||
partition_size = prop_dict["partition_size"]
|
||||
partition_name = prop_dict["partition_name"]
|
||||
# key_path and algorithm are only available when chain partition is used.
|
||||
key_path = prop_dict.get("avb_key_path")
|
||||
|
@ -738,7 +732,7 @@ def BuildImage(in_dir, prop_dict, out_file, target_out=None):
|
|||
# avb_add_hash_footer_args or avb_add_hashtree_footer_args
|
||||
additional_args = prop_dict["avb_add_" + avb_footer_type + "_footer_args"]
|
||||
if not AVBAddFooter(out_file, avbtool, avb_footer_type,
|
||||
original_partition_size, partition_name, key_path,
|
||||
partition_size, partition_name, key_path,
|
||||
algorithm, salt, additional_args):
|
||||
return False
|
||||
|
||||
|
@ -988,23 +982,18 @@ def GlobalDictFromImageProp(image_prop, mount_point):
|
|||
return True
|
||||
return False
|
||||
|
||||
if "original_partition_size" in image_prop:
|
||||
size_property = "original_partition_size"
|
||||
else:
|
||||
size_property = "partition_size"
|
||||
|
||||
if mount_point == "system":
|
||||
copy_prop(size_property, "system_size")
|
||||
copy_prop("partition_size", "system_size")
|
||||
elif mount_point == "system_other":
|
||||
copy_prop(size_property, "system_size")
|
||||
copy_prop("partition_size", "system_size")
|
||||
elif mount_point == "vendor":
|
||||
copy_prop(size_property, "vendor_size")
|
||||
copy_prop("partition_size", "vendor_size")
|
||||
elif mount_point == "odm":
|
||||
copy_prop(size_property, "odm_size")
|
||||
copy_prop("partition_size", "odm_size")
|
||||
elif mount_point == "product":
|
||||
copy_prop(size_property, "product_size")
|
||||
copy_prop("partition_size", "product_size")
|
||||
elif mount_point == "product_services":
|
||||
copy_prop(size_property, "product_services_size")
|
||||
copy_prop("partition_size", "product_services_size")
|
||||
return d
|
||||
|
||||
|
||||
|
|
|
@ -369,7 +369,7 @@ class AddImagesToTargetFilesTest(unittest.TestCase):
|
|||
(0xCAC3, 4),
|
||||
(0xCAC1, 6)])
|
||||
OPTIONS.info_dict = {
|
||||
'system_adjusted_partition_size' : 12,
|
||||
'system_image_blocks' : 12,
|
||||
}
|
||||
name, care_map = GetCareMap('system', sparse_image)
|
||||
self.assertEqual('system', name)
|
||||
|
@ -384,6 +384,6 @@ class AddImagesToTargetFilesTest(unittest.TestCase):
|
|||
(0xCAC3, 4),
|
||||
(0xCAC1, 6)])
|
||||
OPTIONS.info_dict = {
|
||||
'system_adjusted_partition_size' : -12,
|
||||
'system_image_blocks' : -12,
|
||||
}
|
||||
self.assertRaises(AssertionError, GetCareMap, 'system', sparse_image)
|
||||
|
|
|
@ -116,13 +116,13 @@ class ValidateTargetFilesTest(unittest.TestCase):
|
|||
def _generate_system_image(self, output_file):
|
||||
verity_fec = True
|
||||
partition_size = 1024 * 1024
|
||||
adjusted_size, verity_size = build_image.AdjustPartitionSizeForVerity(
|
||||
image_size, verity_size = build_image.AdjustPartitionSizeForVerity(
|
||||
partition_size, verity_fec)
|
||||
|
||||
# Use an empty root directory.
|
||||
system_root = common.MakeTempDir()
|
||||
cmd = ['mkuserimg_mke2fs', '-s', system_root, output_file, 'ext4',
|
||||
'/system', str(adjusted_size), '-j', '0']
|
||||
'/system', str(image_size), '-j', '0']
|
||||
proc = common.Run(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
stdoutdata, _ = proc.communicate()
|
||||
self.assertEqual(
|
||||
|
@ -132,8 +132,8 @@ class ValidateTargetFilesTest(unittest.TestCase):
|
|||
|
||||
# Append the verity metadata.
|
||||
prop_dict = {
|
||||
'original_partition_size' : str(partition_size),
|
||||
'partition_size' : str(adjusted_size),
|
||||
'partition_size' : str(partition_size),
|
||||
'image_size' : str(image_size),
|
||||
'verity_block_device' : '/dev/block/system',
|
||||
'verity_key' : os.path.join(self.testdata_dir, 'testkey'),
|
||||
'verity_signer_cmd' : 'verity_signer',
|
||||
|
|
Loading…
Reference in New Issue