releasetools: Add two new entries to metadata.

Add "ota-required-cache" into the metadata file in an OTA package,
which shows the minimum free space on /cache to apply the update.

Add "ota-type" into the metadata file, which shows the OTA type for
this package (i.e. one of FILE, BLOCK and AB).

Also add the cache free space check into updater-script when generating
block-based incremental OTAs (we only had such lines for file-based
incrementals before).

Bug: 26731903
Change-Id: Id6ff0fc4cdfb1443636b0b3800b0f8bddb5bb1d0
(cherry picked from commit d8d14bec0d)
This commit is contained in:
Tao Bao
2016-02-04 14:26:02 -08:00
parent ebadc3bd8e
commit b4cfca530c
4 changed files with 54 additions and 14 deletions

View File

@@ -542,6 +542,8 @@ def WriteFullOTAPackage(input_zip, output_zip):
has_recovery_patch = HasRecoveryPatch(input_zip)
block_based = OPTIONS.block_based and has_recovery_patch
metadata["ota-type"] = "BLOCK" if block_based else "FILE"
if not OPTIONS.omit_prereq:
ts = GetBuildProp("ro.build.date.utc", OPTIONS.info_dict)
ts_text = GetBuildProp("ro.build.date", OPTIONS.info_dict)
@@ -697,6 +699,8 @@ endif;
endif;
""" % bcb_dev)
script.AddToZip(input_zip, output_zip, input_path=OPTIONS.updater_binary)
metadata["ota-required-cache"] = str(script.required_cache)
WriteMetadata(metadata, output_zip)
@@ -773,6 +777,7 @@ def WriteBlockIncrementalOTAPackage(target_zip, source_zip, output_zip):
OPTIONS.source_info_dict),
"post-timestamp": GetBuildProp("ro.build.date.utc",
OPTIONS.target_info_dict),
"ota-type": "BLOCK",
}
device_specific = common.DeviceSpecificParams(
@@ -815,7 +820,7 @@ def WriteBlockIncrementalOTAPackage(target_zip, source_zip, output_zip):
# Check first block of system partition for remount R/W only if
# disk type is ext4
system_partition = OPTIONS.source_info_dict["fstab"]["/system"]
check_first_block = system_partition.fs_type=="ext4"
check_first_block = system_partition.fs_type == "ext4"
system_diff = common.BlockDifference("system", system_tgt, system_src,
check_first_block,
version=blockimgdiff_version)
@@ -831,7 +836,7 @@ def WriteBlockIncrementalOTAPackage(target_zip, source_zip, output_zip):
# Check first block of vendor partition for remount R/W only if
# disk type is ext4
vendor_partition = OPTIONS.source_info_dict["fstab"]["/vendor"]
check_first_block = vendor_partition.fs_type=="ext4"
check_first_block = vendor_partition.fs_type == "ext4"
vendor_diff = common.BlockDifference("vendor", vendor_tgt, vendor_src,
check_first_block,
version=blockimgdiff_version)
@@ -910,6 +915,13 @@ else if get_stage("%(bcb_dev)s") != "3/3" then
GetBuildProp("ro.build.thumbprint", OPTIONS.target_info_dict),
GetBuildProp("ro.build.thumbprint", OPTIONS.source_info_dict))
# Check the required cache size (i.e. stashed blocks).
size = []
if system_diff:
size.append(system_diff.required_cache)
if vendor_diff:
size.append(vendor_diff.required_cache)
if updating_boot:
boot_type, boot_device = common.GetTypeAndDevice(
"/boot", OPTIONS.source_info_dict)
@@ -930,6 +942,10 @@ else if get_stage("%(bcb_dev)s") != "3/3" then
(boot_type, boot_device,
source_boot.size, source_boot.sha1,
target_boot.size, target_boot.sha1))
size.append(target_boot.size)
if size:
script.CacheFreeSpaceCheck(max(size))
device_specific.IncrementalOTA_VerifyEnd()
@@ -1003,6 +1019,7 @@ endif;
script.SetProgress(1)
script.AddToZip(target_zip, output_zip, input_path=OPTIONS.updater_binary)
metadata["ota-required-cache"] = str(script.required_cache)
WriteMetadata(metadata, output_zip)
@@ -1076,6 +1093,7 @@ def WriteVerifyPackage(input_zip, output_zip):
script.SetProgress(1.0)
script.AddToZip(input_zip, output_zip, input_path=OPTIONS.updater_binary)
metadata["ota-required-cache"] = str(script.required_cache)
WriteMetadata(metadata, output_zip)
@@ -1119,6 +1137,8 @@ def WriteABOTAPackageWithBrilloScript(target_file, output_file,
"pre-device": GetOemProperty("ro.product.device", oem_props, oem_dict,
OPTIONS.info_dict),
"post-timestamp": GetBuildProp("ro.build.date.utc", OPTIONS.info_dict),
"ota-required-cache": "0",
"ota-type": "AB",
}
if source_file is not None:
@@ -1374,6 +1394,7 @@ def WriteIncrementalOTAPackage(target_zip, source_zip, output_zip):
OPTIONS.source_info_dict),
"post-timestamp": GetBuildProp("ro.build.date.utc",
OPTIONS.target_info_dict),
"ota-type": "FILE",
}
device_specific = common.DeviceSpecificParams(
@@ -1487,6 +1508,13 @@ else if get_stage("%(bcb_dev)s") != "3/3" then
if vendor_diff:
so_far += vendor_diff.EmitVerification(script)
size = []
if system_diff.patch_list:
size.append(system_diff.largest_source_size)
if vendor_diff:
if vendor_diff.patch_list:
size.append(vendor_diff.largest_source_size)
if updating_boot:
d = common.Difference(target_boot, source_boot)
_, _, d = d.ComputePatch()
@@ -1503,14 +1531,9 @@ else if get_stage("%(bcb_dev)s") != "3/3" then
source_boot.size, source_boot.sha1,
target_boot.size, target_boot.sha1))
so_far += source_boot.size
size.append(target_boot.size)
size = []
if system_diff.patch_list:
size.append(system_diff.largest_source_size)
if vendor_diff:
if vendor_diff.patch_list:
size.append(vendor_diff.largest_source_size)
if size or updating_recovery or updating_boot:
if size:
script.CacheFreeSpaceCheck(max(size))
device_specific.IncrementalOTA_VerifyEnd()
@@ -1723,6 +1746,7 @@ endif;
vendor_diff.EmitExplicitTargetVerification(script)
script.AddToZip(target_zip, output_zip, input_path=OPTIONS.updater_binary)
metadata["ota-required-cache"] = str(script.required_cache)
WriteMetadata(metadata, output_zip)