Merge "Allow mix of full and incremental updates in OTA" into main am: e1e07f892e
am: 7a08b486df
Original change: https://android-review.googlesource.com/c/platform/build/+/3265835 Change-Id: If1a97898cd76b5ec9102e9ec99cefd07ec7df6bb Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -264,6 +264,10 @@ A/B OTA specific options
|
|||||||
|
|
||||||
--compression_factor
|
--compression_factor
|
||||||
Specify the maximum block size to be compressed at once during OTA. supported options: 4k, 8k, 16k, 32k, 64k, 128k, 256k
|
Specify the maximum block size to be compressed at once during OTA. supported options: 4k, 8k, 16k, 32k, 64k, 128k, 256k
|
||||||
|
|
||||||
|
--full_ota_partitions
|
||||||
|
Specify list of partitions should be updated in full OTA fashion, even if
|
||||||
|
an incremental OTA is about to be generated
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import print_function
|
from __future__ import print_function
|
||||||
@@ -283,7 +287,7 @@ import common
|
|||||||
import ota_utils
|
import ota_utils
|
||||||
import payload_signer
|
import payload_signer
|
||||||
from ota_utils import (VABC_COMPRESSION_PARAM_SUPPORT, FinalizeMetadata, GetPackageMetadata,
|
from ota_utils import (VABC_COMPRESSION_PARAM_SUPPORT, FinalizeMetadata, GetPackageMetadata,
|
||||||
PayloadGenerator, SECURITY_PATCH_LEVEL_PROP_NAME, ExtractTargetFiles, CopyTargetFilesDir)
|
PayloadGenerator, SECURITY_PATCH_LEVEL_PROP_NAME, ExtractTargetFiles, CopyTargetFilesDir, TARGET_FILES_IMAGES_SUBDIR)
|
||||||
from common import DoesInputFileContain, IsSparseImage
|
from common import DoesInputFileContain, IsSparseImage
|
||||||
import target_files_diff
|
import target_files_diff
|
||||||
from non_ab_ota import GenerateNonAbOtaPackage
|
from non_ab_ota import GenerateNonAbOtaPackage
|
||||||
@@ -337,6 +341,7 @@ 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
|
OPTIONS.compression_factor = None
|
||||||
|
OPTIONS.full_ota_partitions = None
|
||||||
|
|
||||||
|
|
||||||
POSTINSTALL_CONFIG = 'META/postinstall_config.txt'
|
POSTINSTALL_CONFIG = 'META/postinstall_config.txt'
|
||||||
@@ -892,6 +897,14 @@ def GenerateAbOtaPackage(target_file, output_file, source_file=None):
|
|||||||
|
|
||||||
if source_file is not None:
|
if source_file is not None:
|
||||||
source_file = ExtractTargetFiles(source_file)
|
source_file = ExtractTargetFiles(source_file)
|
||||||
|
if OPTIONS.full_ota_partitions:
|
||||||
|
for partition in OPTIONS.full_ota_partitions:
|
||||||
|
for subdir in TARGET_FILES_IMAGES_SUBDIR:
|
||||||
|
image_path = os.path.join(source_file, subdir, partition + ".img")
|
||||||
|
if os.path.exists(image_path):
|
||||||
|
logger.info(
|
||||||
|
"Ignoring source image %s for partition %s because it is configured to use full OTA", image_path, partition)
|
||||||
|
os.remove(image_path)
|
||||||
assert "ab_partitions" in OPTIONS.source_info_dict, \
|
assert "ab_partitions" in OPTIONS.source_info_dict, \
|
||||||
"META/ab_partitions.txt is required for ab_update."
|
"META/ab_partitions.txt is required for ab_update."
|
||||||
assert "ab_partitions" in OPTIONS.target_info_dict, \
|
assert "ab_partitions" in OPTIONS.target_info_dict, \
|
||||||
@@ -1193,7 +1206,7 @@ def GenerateAbOtaPackage(target_file, output_file, source_file=None):
|
|||||||
|
|
||||||
def main(argv):
|
def main(argv):
|
||||||
|
|
||||||
def option_handler(o, a):
|
def option_handler(o, a: str):
|
||||||
if o in ("-i", "--incremental_from"):
|
if o in ("-i", "--incremental_from"):
|
||||||
OPTIONS.incremental_source = a
|
OPTIONS.incremental_source = a
|
||||||
elif o == "--full_radio":
|
elif o == "--full_radio":
|
||||||
@@ -1320,6 +1333,9 @@ 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 == "--full_ota_partitions":
|
||||||
|
OPTIONS.full_ota_partitions = set(
|
||||||
|
a.strip().strip("\"").strip("'").split(","))
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
@@ -1370,6 +1386,7 @@ def main(argv):
|
|||||||
"max_threads=",
|
"max_threads=",
|
||||||
"vabc_cow_version=",
|
"vabc_cow_version=",
|
||||||
"compression_factor=",
|
"compression_factor=",
|
||||||
|
"full_ota_partitions=",
|
||||||
], extra_option_handler=[option_handler, payload_signer.signer_options])
|
], extra_option_handler=[option_handler, payload_signer.signer_options])
|
||||||
common.InitLogging()
|
common.InitLogging()
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user