forked from openkylin/platform_build
am 4b7dd3e3: Merge change 26017 into eclair
Merge commit '4b7dd3e36c949729464029480ca41753c122d7f0' into eclair-plus-aosp * commit '4b7dd3e36c949729464029480ca41753c122d7f0': improve the OTA progress bar
This commit is contained in:
commit
27495d857c
|
@ -87,6 +87,10 @@ class AmendGenerator(object):
|
||||||
'dur' seconds."""
|
'dur' seconds."""
|
||||||
self.script.append("show_progress %f %d" % (frac, int(dur)))
|
self.script.append("show_progress %f %d" % (frac, int(dur)))
|
||||||
|
|
||||||
|
def SetProgress(self, frac):
|
||||||
|
"""Not implemented in amend."""
|
||||||
|
pass
|
||||||
|
|
||||||
def PatchCheck(self, filename, *sha1):
|
def PatchCheck(self, filename, *sha1):
|
||||||
"""Check that the given file (or MTD reference) has one of the
|
"""Check that the given file (or MTD reference) has one of the
|
||||||
given *sha1 hashes."""
|
given *sha1 hashes."""
|
||||||
|
|
|
@ -100,9 +100,16 @@ class EdifyGenerator(object):
|
||||||
|
|
||||||
def ShowProgress(self, frac, dur):
|
def ShowProgress(self, frac, dur):
|
||||||
"""Update the progress bar, advancing it over 'frac' over the next
|
"""Update the progress bar, advancing it over 'frac' over the next
|
||||||
'dur' seconds."""
|
'dur' seconds. 'dur' may be zero to advance it via SetProgress
|
||||||
|
commands instead of by time."""
|
||||||
self.script.append("show_progress(%f, %d);" % (frac, int(dur)))
|
self.script.append("show_progress(%f, %d);" % (frac, int(dur)))
|
||||||
|
|
||||||
|
def SetProgress(self, frac):
|
||||||
|
"""Set the position of the progress bar within the chunk defined
|
||||||
|
by the most recent ShowProgress call. 'frac' should be in
|
||||||
|
[0,1]."""
|
||||||
|
self.script.append("set_progress(%f);" % (frac,))
|
||||||
|
|
||||||
def PatchCheck(self, filename, *sha1):
|
def PatchCheck(self, filename, *sha1):
|
||||||
"""Check that the given file (or MTD reference) has one of the
|
"""Check that the given file (or MTD reference) has one of the
|
||||||
given *sha1 hashes."""
|
given *sha1 hashes."""
|
||||||
|
|
|
@ -577,28 +577,27 @@ def WriteIncrementalOTAPackage(target_zip, source_zip, output_zip):
|
||||||
os.path.join(OPTIONS.target_tmp, "RECOVERY")))
|
os.path.join(OPTIONS.target_tmp, "RECOVERY")))
|
||||||
updating_recovery = (source_recovery.data != target_recovery.data)
|
updating_recovery = (source_recovery.data != target_recovery.data)
|
||||||
|
|
||||||
# We reserve the last 0.3 of the progress bar for the
|
# Here's how we divide up the progress bar:
|
||||||
# device-specific IncrementalOTA_InstallEnd() call at the end, which
|
# 0.1 for verifying the start state (PatchCheck calls)
|
||||||
# will typically install a radio image.
|
# 0.8 for applying patches (ApplyPatch calls)
|
||||||
progress_bar_total = 0.7
|
# 0.1 for unpacking verbatim files, symlinking, and doing the
|
||||||
if updating_boot:
|
# device-specific commands.
|
||||||
progress_bar_total -= 0.1
|
|
||||||
|
|
||||||
AppendAssertions(script, target_zip)
|
AppendAssertions(script, target_zip)
|
||||||
device_specific.IncrementalOTA_Assertions()
|
device_specific.IncrementalOTA_Assertions()
|
||||||
|
|
||||||
script.Print("Verifying current system...")
|
script.Print("Verifying current system...")
|
||||||
|
|
||||||
pb_verify = progress_bar_total * 0.3 * \
|
script.ShowProgress(0.1, 0)
|
||||||
(total_patched_size /
|
total_verify_size = float(sum([i[2].size for i in patch_list]) + 1)
|
||||||
float(total_patched_size+total_verbatim_size+1))
|
if updating_boot:
|
||||||
|
total_verify_size += source_boot.size
|
||||||
for i, (fn, tf, sf, size) in enumerate(patch_list):
|
so_far = 0
|
||||||
if i % 5 == 0:
|
|
||||||
next_sizes = sum([i[3] for i in patch_list[i:i+5]])
|
|
||||||
script.ShowProgress(next_sizes * pb_verify / (total_patched_size+1), 1)
|
|
||||||
|
|
||||||
|
for fn, tf, sf, size in patch_list:
|
||||||
script.PatchCheck("/"+fn, tf.sha1, sf.sha1)
|
script.PatchCheck("/"+fn, tf.sha1, sf.sha1)
|
||||||
|
so_far += sf.size
|
||||||
|
script.SetProgress(so_far / total_verify_size)
|
||||||
|
|
||||||
if updating_boot:
|
if updating_boot:
|
||||||
d = Difference(target_boot, source_boot, "imgdiff")
|
d = Difference(target_boot, source_boot, "imgdiff")
|
||||||
|
@ -610,6 +609,8 @@ def WriteIncrementalOTAPackage(target_zip, source_zip, output_zip):
|
||||||
script.PatchCheck("MTD:boot:%d:%s:%d:%s" %
|
script.PatchCheck("MTD:boot:%d:%s:%d:%s" %
|
||||||
(source_boot.size, source_boot.sha1,
|
(source_boot.size, source_boot.sha1,
|
||||||
target_boot.size, target_boot.sha1))
|
target_boot.size, target_boot.sha1))
|
||||||
|
so_far += source_boot.size
|
||||||
|
script.SetProgress(so_far / total_verify_size)
|
||||||
|
|
||||||
if patch_list or updating_recovery or updating_boot:
|
if patch_list or updating_recovery or updating_boot:
|
||||||
script.CacheFreeSpaceCheck(largest_source_size)
|
script.CacheFreeSpaceCheck(largest_source_size)
|
||||||
|
@ -630,6 +631,19 @@ def WriteIncrementalOTAPackage(target_zip, source_zip, output_zip):
|
||||||
if i not in target_data] +
|
if i not in target_data] +
|
||||||
["/system/recovery.img"])
|
["/system/recovery.img"])
|
||||||
|
|
||||||
|
script.ShowProgress(0.8, 0)
|
||||||
|
total_patch_size = float(sum([i[1].size for i in patch_list]) + 1)
|
||||||
|
if updating_boot:
|
||||||
|
total_patch_size += target_boot.size
|
||||||
|
so_far = 0
|
||||||
|
|
||||||
|
script.Print("Patching system files...")
|
||||||
|
for fn, tf, sf, size in patch_list:
|
||||||
|
script.ApplyPatch("/"+fn, "-", tf.size, tf.sha1,
|
||||||
|
sf.sha1, "/tmp/patchtmp/"+fn+".p")
|
||||||
|
so_far += tf.size
|
||||||
|
script.SetProgress(so_far / total_patch_size)
|
||||||
|
|
||||||
if updating_boot:
|
if updating_boot:
|
||||||
# Produce the boot image by applying a patch to the current
|
# Produce the boot image by applying a patch to the current
|
||||||
# contents of the boot partition, and write it back to the
|
# contents of the boot partition, and write it back to the
|
||||||
|
@ -641,6 +655,8 @@ def WriteIncrementalOTAPackage(target_zip, source_zip, output_zip):
|
||||||
"-",
|
"-",
|
||||||
target_boot.size, target_boot.sha1,
|
target_boot.size, target_boot.sha1,
|
||||||
source_boot.sha1, "/tmp/patchtmp/boot.img.p")
|
source_boot.sha1, "/tmp/patchtmp/boot.img.p")
|
||||||
|
so_far += target_boot.size
|
||||||
|
script.SetProgress(so_far / total_patch_size)
|
||||||
print "boot image changed; including."
|
print "boot image changed; including."
|
||||||
else:
|
else:
|
||||||
print "boot image unchanged; skipping."
|
print "boot image unchanged; skipping."
|
||||||
|
@ -663,16 +679,7 @@ def WriteIncrementalOTAPackage(target_zip, source_zip, output_zip):
|
||||||
else:
|
else:
|
||||||
print "recovery image unchanged; skipping."
|
print "recovery image unchanged; skipping."
|
||||||
|
|
||||||
script.Print("Patching system files...")
|
script.ShowProgress(0.1, 10)
|
||||||
pb_apply = progress_bar_total * 0.7 * \
|
|
||||||
(total_patched_size /
|
|
||||||
float(total_patched_size+total_verbatim_size+1))
|
|
||||||
for i, (fn, tf, sf, size) in enumerate(patch_list):
|
|
||||||
if i % 5 == 0:
|
|
||||||
next_sizes = sum([i[3] for i in patch_list[i:i+5]])
|
|
||||||
script.ShowProgress(next_sizes * pb_apply / (total_patched_size+1), 1)
|
|
||||||
script.ApplyPatch("/"+fn, "-", tf.size, tf.sha1,
|
|
||||||
sf.sha1, "/tmp/patchtmp/"+fn+".p")
|
|
||||||
|
|
||||||
target_symlinks = CopySystemFiles(target_zip, None)
|
target_symlinks = CopySystemFiles(target_zip, None)
|
||||||
|
|
||||||
|
@ -700,10 +707,6 @@ def WriteIncrementalOTAPackage(target_zip, source_zip, output_zip):
|
||||||
script.DeleteFiles(to_delete)
|
script.DeleteFiles(to_delete)
|
||||||
|
|
||||||
if verbatim_targets:
|
if verbatim_targets:
|
||||||
pb_verbatim = progress_bar_total * \
|
|
||||||
(total_verbatim_size /
|
|
||||||
float(total_patched_size+total_verbatim_size+1))
|
|
||||||
script.ShowProgress(pb_verbatim, 5)
|
|
||||||
script.Print("Unpacking new files...")
|
script.Print("Unpacking new files...")
|
||||||
script.UnpackPackageDir("system", "/system")
|
script.UnpackPackageDir("system", "/system")
|
||||||
|
|
||||||
|
@ -726,8 +729,7 @@ def WriteIncrementalOTAPackage(target_zip, source_zip, output_zip):
|
||||||
# permissions.
|
# permissions.
|
||||||
script.AppendScript(temp_script)
|
script.AppendScript(temp_script)
|
||||||
|
|
||||||
# Write the radio image, if necessary.
|
# Do device-specific installation (eg, write radio image).
|
||||||
script.ShowProgress(0.3, 10)
|
|
||||||
device_specific.IncrementalOTA_InstallEnd()
|
device_specific.IncrementalOTA_InstallEnd()
|
||||||
|
|
||||||
if OPTIONS.extra_script is not None:
|
if OPTIONS.extra_script is not None:
|
||||||
|
|
Loading…
Reference in New Issue