Merge "Support configuring compression factor" into main

This commit is contained in:
Daniel Zheng 2024-01-10 21:06:42 +00:00 committed by Gerrit Code Review
commit d90afc1d98

View file

@ -259,6 +259,9 @@ A/B OTA specific options
--vabc_cow_version --vabc_cow_version
Specify the VABC cow version to be used Specify the VABC cow version to be used
--compression_factor
Specify the maximum block size to be compressed at once during OTA. supported options: 4k, 8k, 16k, 32k, 64k, 128k
""" """
from __future__ import print_function from __future__ import print_function
@ -331,6 +334,7 @@ OPTIONS.vabc_compression_param = None
OPTIONS.security_patch_level = None OPTIONS.security_patch_level = None
OPTIONS.max_threads = None OPTIONS.max_threads = None
OPTIONS.vabc_cow_version = None OPTIONS.vabc_cow_version = None
OPTIONS.compression_factor = None
POSTINSTALL_CONFIG = 'META/postinstall_config.txt' POSTINSTALL_CONFIG = 'META/postinstall_config.txt'
@ -393,17 +397,6 @@ def ModifyVABCCompressionParam(content, algo):
""" """
return ModifyKeyvalueList(content, "virtual_ab_compression_method", algo) return ModifyKeyvalueList(content, "virtual_ab_compression_method", algo)
def SetVABCCowVersion(content, cow_version):
""" Update virtual_ab_cow_version in dynamic_partitions_info.txt
Args:
content: The string content of dynamic_partitions_info.txt
algo: The cow version be used for VABC. See
https://cs.android.com/android/platform/superproject/main/+/main:system/core/fs_mgr/libsnapshot/include/libsnapshot/cow_format.h;l=36
Returns:
Updated content of dynamic_partitions_info.txt , updated cow version
"""
return ModifyKeyvalueList(content, "virtual_ab_cow_version", cow_version)
def UpdatesInfoForSpecialUpdates(content, partitions_filter, def UpdatesInfoForSpecialUpdates(content, partitions_filter,
delete_keys=None): delete_keys=None):
@ -1020,6 +1013,8 @@ def GenerateAbOtaPackage(target_file, output_file, source_file=None):
target_file, vabc_compression_param) target_file, vabc_compression_param)
if OPTIONS.vabc_cow_version: if OPTIONS.vabc_cow_version:
target_file = ModifyTargetFilesDynamicPartitionInfo(target_file, "virtual_ab_cow_version", OPTIONS.vabc_cow_version) target_file = ModifyTargetFilesDynamicPartitionInfo(target_file, "virtual_ab_cow_version", OPTIONS.vabc_cow_version)
if OPTIONS.compression_factor:
target_file = ModifyTargetFilesDynamicPartitionInfo(target_file, "virtual_ab_compression_factor", OPTIONS.compression_factor)
if OPTIONS.skip_postinstall: if OPTIONS.skip_postinstall:
target_file = GetTargetFilesZipWithoutPostinstallConfig(target_file) target_file = GetTargetFilesZipWithoutPostinstallConfig(target_file)
# Target_file may have been modified, reparse ab_partitions # Target_file may have been modified, reparse ab_partitions
@ -1280,6 +1275,13 @@ def main(argv):
else: else:
raise ValueError("Cannot parse value %r for option %r - only " raise ValueError("Cannot parse value %r for option %r - only "
"integers are allowed." % (a, o)) "integers are allowed." % (a, o))
elif o in ("--compression_factor"):
values = ["4k", "8k", "16k", "32k", "64k", "128k"]
if a[:-1].isdigit() and a in values and a.endswith("k"):
OPTIONS.compression_factor = str(int(a[:-1]) * 1024)
else:
raise ValueError("Please specify value from following options: 4k, 8k, 16k, 32k, 64k, 128k")
elif o == "--vabc_cow_version": elif o == "--vabc_cow_version":
if a.isdigit(): if a.isdigit():
OPTIONS.vabc_cow_version = a OPTIONS.vabc_cow_version = a
@ -1335,6 +1337,7 @@ def main(argv):
"security_patch_level=", "security_patch_level=",
"max_threads=", "max_threads=",
"vabc_cow_version=", "vabc_cow_version=",
"compression_factor=",
], extra_option_handler=[option_handler, payload_signer.signer_options]) ], extra_option_handler=[option_handler, payload_signer.signer_options])
common.InitLogging() common.InitLogging()