diff options
author | Doug Zongker <dougz@android.com> | 2011-02-09 09:20:07 -0800 |
---|---|---|
committer | Doug Zongker <dougz@android.com> | 2011-02-09 09:20:07 -0800 |
commit | 29711619904d9e5bed32fe119f6b69d23ff49eb6 (patch) | |
tree | 87f65c682e2d87e7b9ffb15d9e86152423d3c623 /releasetools.py | |
parent | 35cccd55785b27b83fc14faa1afa871c0e422155 (diff) | |
download | device_samsung_crespo-29711619904d9e5bed32fe119f6b69d23ff49eb6.tar.gz device_samsung_crespo-29711619904d9e5bed32fe119f6b69d23ff49eb6.tar.bz2 device_samsung_crespo-29711619904d9e5bed32fe119f6b69d23ff49eb6.zip |
change OTA generator to know about radio.??.img files
Change-Id: I801f383d7ee9f983e03b872072a7ec60a36a6821
Diffstat (limited to 'releasetools.py')
-rw-r--r-- | releasetools.py | 76 |
1 files changed, 44 insertions, 32 deletions
diff --git a/releasetools.py b/releasetools.py index 36a6235..e13ad8e 100644 --- a/releasetools.py +++ b/releasetools.py @@ -13,9 +13,23 @@ # limitations under the License. import sha +import re import common +def FindRadio(zipfile): + matches = [] + for name in zipfile.namelist(): + if re.match(r"^RADIO/radio[.].+[.]img$", name): + matches.append(name) + if len(matches) > 1: + raise ValueError("multiple radio images in target-files zip!") + if matches: + print "using %s as radio.img" % (matches[0],) + return zipfile.read(matches[0]) + else: + return None + def FullOTA_InstallEnd(info): try: bootloader_img = info.input_zip.read("RADIO/bootloader.img") @@ -26,9 +40,8 @@ def FullOTA_InstallEnd(info): info.script.Print("Writing bootloader...") info.script.WriteRawImage("/bootloader", "bootloader.img") - try: - radio_img = info.input_zip.read("RADIO/radio.img") - except KeyError: + radio_img = FindRadio(info.input_zip) + if not radio_img: print "no radio.img in target_files; skipping install" else: common.ZipWriteStr(info.output_zip, "radio.img", radio_img) @@ -36,19 +49,16 @@ def FullOTA_InstallEnd(info): info.script.WriteRawImage("/radio", "radio.img") def IncrementalOTA_VerifyEnd(info): - try: - target_radio_img = info.target_zip.read("RADIO/radio.img") - source_radio_img = info.source_zip.read("RADIO/radio.img") - except KeyError: - pass - else: - if source_radio_img != target_radio_img: - info.script.CacheFreeSpaceCheck(len(source_radio_img)) - radio_type, radio_device = common.GetTypeAndDevice("/radio", info.info_dict) - info.script.PatchCheck("%s:%s:%d:%s:%d:%s" % ( - radio_type, radio_device, - len(source_radio_img), sha.sha(source_radio_img).hexdigest(), - len(target_radio_img), sha.sha(target_radio_img).hexdigest())) + target_radio_img = FindRadio(info.target_zip) + source_radio_img = FindRadio(info.source_zip) + if not target_radio_img or not source_radio_img: return + if source_radio_img != target_radio_img: + info.script.CacheFreeSpaceCheck(len(source_radio_img)) + radio_type, radio_device = common.GetTypeAndDevice("/radio", info.info_dict) + info.script.PatchCheck("%s:%s:%d:%s:%d:%s" % ( + radio_type, radio_device, + len(source_radio_img), sha.sha(source_radio_img).hexdigest(), + len(target_radio_img), sha.sha(target_radio_img).hexdigest())) def IncrementalOTA_InstallEnd(info): try: @@ -69,10 +79,22 @@ def IncrementalOTA_InstallEnd(info): print "no bootloader.img in target target_files; skipping install" - try: - tf = common.File("radio.img", info.target_zip.read("RADIO/radio.img")) - try: - sf = common.File("radio.img", info.source_zip.read("RADIO/radio.img")) + tf = FindRadio(info.target_zip) + if not tf: + # failed to read TARGET radio image: don't include any radio in update. + print "no radio.img in target target_files; skipping install" + else: + tf = common.File("radio.img", tf) + + sf = FindRadio(info.source_zip) + if not sf: + # failed to read SOURCE radio image: include the whole target + # radio image. + tf.AddToZip(info.output_zip) + info.script.Print("Writing radio...") + info.script.WriteRawImage("/radio", tf.name) + else: + sf = common.File("radio.img", sf) if tf.sha1 == sf.sha1: print "radio image unchanged; skipping" @@ -89,19 +111,9 @@ def IncrementalOTA_InstallEnd(info): else: common.ZipWriteStr(info.output_zip, "radio.img.p", d) info.script.Print("Patching radio...") - radio_type, radio_device = common.GetTypeAndDevice("/radio", info.info_dict) + radio_type, radio_device = common.GetTypeAndDevice( + "/radio", info.info_dict) info.script.ApplyPatch( "%s:%s:%d:%s:%d:%s" % (radio_type, radio_device, sf.size, sf.sha1, tf.size, tf.sha1), "-", tf.size, tf.sha1, sf.sha1, "radio.img.p") - - except KeyError: - # failed to read SOURCE radio image: include the whole target - # radio image. - tf.AddToZip(info.output_zip) - info.script.Print("Writing radio...") - info.script.WriteRawImage("/radio", tf.name) - - except KeyError: - # failed to read TARGET radio image: don't include any radio in update. - print "no radio.img in target target_files; skipping install" |