Merge "Sort the split transfers to generate a determinate package"
am: c56071b21b
Change-Id: Iecaa85736ff9cb46fdbccbc20aa4ffbdf1024bb6
This commit is contained in:
commit
4c17a597d2
|
@ -1385,8 +1385,8 @@ class BlockImageDiff(object):
|
||||||
assert patch_start == patch_size
|
assert patch_start == patch_size
|
||||||
return split_info_list
|
return split_info_list
|
||||||
|
|
||||||
def AddSplitTransferForLargeApks():
|
def SplitLargeApks():
|
||||||
"""Create split transfers for large apk files.
|
"""Split the large apks files.
|
||||||
|
|
||||||
Example: Chrome.apk will be split into
|
Example: Chrome.apk will be split into
|
||||||
src-0: Chrome.apk-0, tgt-0: Chrome.apk-0
|
src-0: Chrome.apk-0, tgt-0: Chrome.apk-0
|
||||||
|
@ -1452,16 +1452,16 @@ class BlockImageDiff(object):
|
||||||
|
|
||||||
split_src_name = "{}-{}".format(src_name, index)
|
split_src_name = "{}-{}".format(src_name, index)
|
||||||
split_tgt_name = "{}-{}".format(tgt_name, index)
|
split_tgt_name = "{}-{}".format(tgt_name, index)
|
||||||
transfer_split = Transfer(split_tgt_name, split_src_name,
|
split_large_apks.append((split_tgt_name,
|
||||||
split_tgt_ranges, split_src_ranges,
|
split_src_name,
|
||||||
self.tgt.RangeSha1(split_tgt_ranges),
|
split_tgt_ranges,
|
||||||
self.src.RangeSha1(split_src_ranges),
|
split_src_ranges,
|
||||||
"diff", self.transfers)
|
patch_content))
|
||||||
transfer_split.patch = patch_content
|
|
||||||
|
|
||||||
print("Finding transfers...")
|
print("Finding transfers...")
|
||||||
|
|
||||||
large_apks = []
|
large_apks = []
|
||||||
|
split_large_apks = []
|
||||||
cache_size = common.OPTIONS.cache_size
|
cache_size = common.OPTIONS.cache_size
|
||||||
split_threshold = 0.125
|
split_threshold = 0.125
|
||||||
max_blocks_per_transfer = int(cache_size * split_threshold /
|
max_blocks_per_transfer = int(cache_size * split_threshold /
|
||||||
|
@ -1511,13 +1511,23 @@ class BlockImageDiff(object):
|
||||||
AddTransfer(tgt_fn, None, tgt_ranges, empty, "new", self.transfers)
|
AddTransfer(tgt_fn, None, tgt_ranges, empty, "new", self.transfers)
|
||||||
|
|
||||||
transfer_lock = threading.Lock()
|
transfer_lock = threading.Lock()
|
||||||
threads = [threading.Thread(target=AddSplitTransferForLargeApks)
|
threads = [threading.Thread(target=SplitLargeApks)
|
||||||
for _ in range(self.threads)]
|
for _ in range(self.threads)]
|
||||||
for th in threads:
|
for th in threads:
|
||||||
th.start()
|
th.start()
|
||||||
while threads:
|
while threads:
|
||||||
threads.pop().join()
|
threads.pop().join()
|
||||||
|
|
||||||
|
# Sort the split transfers for large apks to generate a determinate package.
|
||||||
|
split_large_apks.sort()
|
||||||
|
for (tgt_name, src_name, tgt_ranges, src_ranges,
|
||||||
|
patch) in split_large_apks:
|
||||||
|
transfer_split = Transfer(tgt_name, src_name, tgt_ranges, src_ranges,
|
||||||
|
self.tgt.RangeSha1(tgt_ranges),
|
||||||
|
self.src.RangeSha1(src_ranges),
|
||||||
|
"diff", self.transfers)
|
||||||
|
transfer_split.patch = patch
|
||||||
|
|
||||||
def AbbreviateSourceNames(self):
|
def AbbreviateSourceNames(self):
|
||||||
for k in self.src.file_map.keys():
|
for k in self.src.file_map.keys():
|
||||||
b = os.path.basename(k)
|
b = os.path.basename(k)
|
||||||
|
|
Loading…
Reference in New Issue