From ccc5c40523e35e9ddc4379c68024479dec9bafc5 Mon Sep 17 00:00:00 2001 From: YOUNG HO CHA Date: Thu, 13 Oct 2016 13:40:46 +0900 Subject: [PATCH] releasetools: compare size between compressed and patch while build otapackage Currently, whether contains patch or verbatim, compute with file size and patch size. But ota file must be compressed with zip, so it should be better with compressed size than uncompressed. Test: aosp_shamu-user build without proprietary blobs between MOB30P and NRD90S $ du -k ota_shamu_old.zip ota_shamu_new.zip 217252 ota_shamu_old.zip 216520 ota_shamu_new.zip Change-Id: If68cb1fbe2f7815067451915a0dcfe93ea5ba8d6 Signed-off-by: YOUNG HO CHA --- tools/releasetools/common.py | 3 ++- tools/releasetools/ota_from_target_files.py | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py index fad6a5ec2..5f81d53ef 100644 --- a/tools/releasetools/common.py +++ b/tools/releasetools/common.py @@ -1203,10 +1203,11 @@ class DeviceSpecificParams(object): return self._DoCall("VerifyOTA_Assertions") class File(object): - def __init__(self, name, data): + def __init__(self, name, data, compress_size = None): self.name = name self.data = data self.size = len(data) + self.compress_size = compress_size or self.size self.sha1 = sha1(data).hexdigest() @classmethod diff --git a/tools/releasetools/ota_from_target_files.py b/tools/releasetools/ota_from_target_files.py index f32d9d821..403a3a460 100755 --- a/tools/releasetools/ota_from_target_files.py +++ b/tools/releasetools/ota_from_target_files.py @@ -748,7 +748,7 @@ def LoadPartitionFiles(z, partition): basefilename = info.filename[len(prefix):] fn = partition + "/" + basefilename data = z.read(info.filename) - out[fn] = common.File(fn, data) + out[fn] = common.File(fn, data, info.compress_size) return out @@ -1379,7 +1379,7 @@ class FileDifference(object): for diff in diffs: tf, sf, d = diff.GetPatch() path = "/".join(tf.name.split("/")[:-1]) - if d is None or len(d) > tf.size * OPTIONS.patch_threshold or \ + if d is None or len(d) > tf.compress_size * OPTIONS.patch_threshold or \ path not in known_paths: # patch is almost as big as the file; don't bother patching # or a patch + rename cannot take place due to the target