summaryrefslogtreecommitdiffstats
path: root/releasetools.py
diff options
context:
space:
mode:
authorDoug Zongker <dougz@android.com>2011-02-09 09:20:07 -0800
committerDoug Zongker <dougz@android.com>2011-02-09 09:20:07 -0800
commit29711619904d9e5bed32fe119f6b69d23ff49eb6 (patch)
tree87f65c682e2d87e7b9ffb15d9e86152423d3c623 /releasetools.py
parent35cccd55785b27b83fc14faa1afa871c0e422155 (diff)
downloaddevice_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.py76
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"