fall back to generating full OTA if incremental fails
Block incremental OTA generation can currently fail on some target-files pairs. Fall back to generating a full OTA so that the script succeeds rather than failing. Change-Id: Ide70395d1f3759aa2076bd173836f6a5e5b397c0
This commit is contained in:
@@ -118,6 +118,7 @@ OPTIONS.no_signing = False
|
|||||||
OPTIONS.block_based = False
|
OPTIONS.block_based = False
|
||||||
OPTIONS.updater_binary = None
|
OPTIONS.updater_binary = None
|
||||||
OPTIONS.oem_source = None
|
OPTIONS.oem_source = None
|
||||||
|
OPTIONS.fallback_to_full = True
|
||||||
|
|
||||||
def MostPopularKey(d, default):
|
def MostPopularKey(d, default):
|
||||||
"""Given a dict, return the key corresponding to the largest
|
"""Given a dict, return the key corresponding to the largest
|
||||||
@@ -1439,6 +1440,8 @@ def main(argv):
|
|||||||
OPTIONS.block_based = True
|
OPTIONS.block_based = True
|
||||||
elif o in ("-b", "--binary"):
|
elif o in ("-b", "--binary"):
|
||||||
OPTIONS.updater_binary = a
|
OPTIONS.updater_binary = a
|
||||||
|
elif o in ("--no_fallback_to_full",):
|
||||||
|
OPTIONS.fallback_to_full = False
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
@@ -1458,6 +1461,7 @@ def main(argv):
|
|||||||
"block",
|
"block",
|
||||||
"binary=",
|
"binary=",
|
||||||
"oem_settings=",
|
"oem_settings=",
|
||||||
|
"no_fallback_to_full",
|
||||||
],
|
],
|
||||||
extra_option_handler=option_handler)
|
extra_option_handler=option_handler)
|
||||||
|
|
||||||
@@ -1504,7 +1508,10 @@ def main(argv):
|
|||||||
if OPTIONS.device_specific is not None:
|
if OPTIONS.device_specific is not None:
|
||||||
OPTIONS.device_specific = os.path.abspath(OPTIONS.device_specific)
|
OPTIONS.device_specific = os.path.abspath(OPTIONS.device_specific)
|
||||||
|
|
||||||
|
while True:
|
||||||
|
|
||||||
if OPTIONS.no_signing:
|
if OPTIONS.no_signing:
|
||||||
|
if os.path.exists(args[1]): os.unlink(args[1])
|
||||||
output_zip = zipfile.ZipFile(args[1], "w", compression=zipfile.ZIP_DEFLATED)
|
output_zip = zipfile.ZipFile(args[1], "w", compression=zipfile.ZIP_DEFLATED)
|
||||||
else:
|
else:
|
||||||
temp_zip_file = tempfile.NamedTemporaryFile()
|
temp_zip_file = tempfile.NamedTemporaryFile()
|
||||||
@@ -1517,6 +1524,8 @@ def main(argv):
|
|||||||
OPTIONS.package_key = OPTIONS.info_dict.get(
|
OPTIONS.package_key = OPTIONS.info_dict.get(
|
||||||
"default_system_dev_certificate",
|
"default_system_dev_certificate",
|
||||||
"build/target/product/security/testkey")
|
"build/target/product/security/testkey")
|
||||||
|
break
|
||||||
|
|
||||||
else:
|
else:
|
||||||
print "unzipping source target-files..."
|
print "unzipping source target-files..."
|
||||||
OPTIONS.source_tmp, source_zip = common.UnzipTemp(OPTIONS.incremental_source)
|
OPTIONS.source_tmp, source_zip = common.UnzipTemp(OPTIONS.incremental_source)
|
||||||
@@ -1532,7 +1541,14 @@ def main(argv):
|
|||||||
if OPTIONS.verbose:
|
if OPTIONS.verbose:
|
||||||
print "--- source info ---"
|
print "--- source info ---"
|
||||||
common.DumpInfoDict(OPTIONS.source_info_dict)
|
common.DumpInfoDict(OPTIONS.source_info_dict)
|
||||||
|
try:
|
||||||
WriteIncrementalOTAPackage(input_zip, source_zip, output_zip)
|
WriteIncrementalOTAPackage(input_zip, source_zip, output_zip)
|
||||||
|
break
|
||||||
|
except ValueError:
|
||||||
|
if not OPTIONS.fallback_to_full: raise
|
||||||
|
print "--- failed to build incremental; falling back to full ---"
|
||||||
|
OPTIONS.incremental_source = None
|
||||||
|
output_zip.close()
|
||||||
|
|
||||||
output_zip.close()
|
output_zip.close()
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user