Merge "releasetools: Remove RemoveBackwardEdges()."
This commit is contained in:
@@ -270,7 +270,6 @@ class ImgdiffStats(object):
|
|||||||
USED_IMGDIFF_LARGE_APK = "Large APK files split and diff'd with imgdiff"
|
USED_IMGDIFF_LARGE_APK = "Large APK files split and diff'd with imgdiff"
|
||||||
|
|
||||||
# Reasons for not applying imgdiff on APKs.
|
# Reasons for not applying imgdiff on APKs.
|
||||||
SKIPPED_TRIMMED = "Not used imgdiff due to trimmed RangeSet"
|
|
||||||
SKIPPED_NONMONOTONIC = "Not used imgdiff due to having non-monotonic ranges"
|
SKIPPED_NONMONOTONIC = "Not used imgdiff due to having non-monotonic ranges"
|
||||||
SKIPPED_SHARED_BLOCKS = "Not used imgdiff due to using shared blocks"
|
SKIPPED_SHARED_BLOCKS = "Not used imgdiff due to using shared blocks"
|
||||||
SKIPPED_INCOMPLETE = "Not used imgdiff due to incomplete RangeSet"
|
SKIPPED_INCOMPLETE = "Not used imgdiff due to incomplete RangeSet"
|
||||||
@@ -279,7 +278,6 @@ class ImgdiffStats(object):
|
|||||||
REASONS = (
|
REASONS = (
|
||||||
USED_IMGDIFF,
|
USED_IMGDIFF,
|
||||||
USED_IMGDIFF_LARGE_APK,
|
USED_IMGDIFF_LARGE_APK,
|
||||||
SKIPPED_TRIMMED,
|
|
||||||
SKIPPED_NONMONOTONIC,
|
SKIPPED_NONMONOTONIC,
|
||||||
SKIPPED_SHARED_BLOCKS,
|
SKIPPED_SHARED_BLOCKS,
|
||||||
SKIPPED_INCOMPLETE,
|
SKIPPED_INCOMPLETE,
|
||||||
@@ -449,10 +447,6 @@ class BlockImageDiff(object):
|
|||||||
self.imgdiff_stats.Log(name, ImgdiffStats.SKIPPED_INCOMPLETE)
|
self.imgdiff_stats.Log(name, ImgdiffStats.SKIPPED_INCOMPLETE)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if tgt_ranges.extra.get('trimmed') or src_ranges.extra.get('trimmed'):
|
|
||||||
self.imgdiff_stats.Log(name, ImgdiffStats.SKIPPED_TRIMMED)
|
|
||||||
return False
|
|
||||||
|
|
||||||
reason = (ImgdiffStats.USED_IMGDIFF_LARGE_APK if large_apk
|
reason = (ImgdiffStats.USED_IMGDIFF_LARGE_APK if large_apk
|
||||||
else ImgdiffStats.USED_IMGDIFF)
|
else ImgdiffStats.USED_IMGDIFF)
|
||||||
self.imgdiff_stats.Log(name, reason)
|
self.imgdiff_stats.Log(name, reason)
|
||||||
@@ -836,14 +830,10 @@ class BlockImageDiff(object):
|
|||||||
str(xf.tgt_ranges), str(xf.src_ranges)))
|
str(xf.tgt_ranges), str(xf.src_ranges)))
|
||||||
else:
|
else:
|
||||||
if xf.patch:
|
if xf.patch:
|
||||||
# We have already generated the patch with imgdiff. Check if the
|
# We have already generated the patch with imgdiff, while
|
||||||
# transfer is intact.
|
# splitting large APKs (i.e. in FindTransfers()).
|
||||||
assert not self.disable_imgdiff
|
assert not self.disable_imgdiff
|
||||||
imgdiff = True
|
imgdiff = True
|
||||||
if (xf.src_ranges.extra.get('trimmed') or
|
|
||||||
xf.tgt_ranges.extra.get('trimmed')):
|
|
||||||
imgdiff = False
|
|
||||||
xf.patch = None
|
|
||||||
else:
|
else:
|
||||||
imgdiff = self.CanUseImgdiff(
|
imgdiff = self.CanUseImgdiff(
|
||||||
xf.tgt_name, xf.tgt_ranges, xf.src_ranges)
|
xf.tgt_name, xf.tgt_ranges, xf.src_ranges)
|
||||||
@@ -1045,42 +1035,6 @@ class BlockImageDiff(object):
|
|||||||
for i, xf in enumerate(L):
|
for i, xf in enumerate(L):
|
||||||
xf.order = i
|
xf.order = i
|
||||||
|
|
||||||
def RemoveBackwardEdges(self):
|
|
||||||
print("Removing backward edges...")
|
|
||||||
in_order = 0
|
|
||||||
out_of_order = 0
|
|
||||||
lost_source = 0
|
|
||||||
|
|
||||||
for xf in self.transfers:
|
|
||||||
lost = 0
|
|
||||||
size = xf.src_ranges.size()
|
|
||||||
for u in xf.goes_before:
|
|
||||||
# xf should go before u
|
|
||||||
if xf.order < u.order:
|
|
||||||
# it does, hurray!
|
|
||||||
in_order += 1
|
|
||||||
else:
|
|
||||||
# it doesn't, boo. trim the blocks that u writes from xf's
|
|
||||||
# source, so that xf can go after u.
|
|
||||||
out_of_order += 1
|
|
||||||
assert xf.src_ranges.overlaps(u.tgt_ranges)
|
|
||||||
xf.src_ranges = xf.src_ranges.subtract(u.tgt_ranges)
|
|
||||||
xf.src_ranges.extra['trimmed'] = True
|
|
||||||
|
|
||||||
if xf.style == "diff" and not xf.src_ranges:
|
|
||||||
# nothing left to diff from; treat as new data
|
|
||||||
xf.style = "new"
|
|
||||||
|
|
||||||
lost = size - xf.src_ranges.size()
|
|
||||||
lost_source += lost
|
|
||||||
|
|
||||||
print((" %d/%d dependencies (%.2f%%) were violated; "
|
|
||||||
"%d source blocks removed.") %
|
|
||||||
(out_of_order, in_order + out_of_order,
|
|
||||||
(out_of_order * 100.0 / (in_order + out_of_order))
|
|
||||||
if (in_order + out_of_order) else 0.0,
|
|
||||||
lost_source))
|
|
||||||
|
|
||||||
def ReverseBackwardEdges(self):
|
def ReverseBackwardEdges(self):
|
||||||
"""Reverse unsatisfying edges and compute pairs of stashed blocks.
|
"""Reverse unsatisfying edges and compute pairs of stashed blocks.
|
||||||
|
|
||||||
|
@@ -203,8 +203,8 @@ class BlockImageDiffTest(unittest.TestCase):
|
|||||||
|
|
||||||
self.assertDictEqual(
|
self.assertDictEqual(
|
||||||
{
|
{
|
||||||
ImgdiffStats.USED_IMGDIFF : {"/system/app/app1.apk"},
|
ImgdiffStats.USED_IMGDIFF: {"/system/app/app1.apk"},
|
||||||
ImgdiffStats.USED_IMGDIFF_LARGE_APK : {"/vendor/app/app2.apk"},
|
ImgdiffStats.USED_IMGDIFF_LARGE_APK: {"/vendor/app/app2.apk"},
|
||||||
},
|
},
|
||||||
block_image_diff.imgdiff_stats.stats)
|
block_image_diff.imgdiff_stats.stats)
|
||||||
|
|
||||||
@@ -229,13 +229,6 @@ class BlockImageDiffTest(unittest.TestCase):
|
|||||||
"/system/app/app2.apk", RangeSet("10-15"),
|
"/system/app/app2.apk", RangeSet("10-15"),
|
||||||
RangeSet("15-20 30 10-14")))
|
RangeSet("15-20 30 10-14")))
|
||||||
|
|
||||||
# At least one of the ranges has been modified.
|
|
||||||
src_ranges = RangeSet("0-5")
|
|
||||||
src_ranges.extra['trimmed'] = True
|
|
||||||
self.assertFalse(
|
|
||||||
block_image_diff.CanUseImgdiff(
|
|
||||||
"/vendor/app/app3.apk", RangeSet("10-15"), src_ranges))
|
|
||||||
|
|
||||||
# At least one of the ranges is incomplete.
|
# At least one of the ranges is incomplete.
|
||||||
src_ranges = RangeSet("0-5")
|
src_ranges = RangeSet("0-5")
|
||||||
src_ranges.extra['incomplete'] = True
|
src_ranges.extra['incomplete'] = True
|
||||||
@@ -246,8 +239,7 @@ class BlockImageDiffTest(unittest.TestCase):
|
|||||||
# The stats are correctly logged.
|
# The stats are correctly logged.
|
||||||
self.assertDictEqual(
|
self.assertDictEqual(
|
||||||
{
|
{
|
||||||
ImgdiffStats.SKIPPED_NONMONOTONIC : {'/system/app/app2.apk'},
|
ImgdiffStats.SKIPPED_NONMONOTONIC: {'/system/app/app2.apk'},
|
||||||
ImgdiffStats.SKIPPED_TRIMMED : {'/vendor/app/app3.apk'},
|
|
||||||
ImgdiffStats.SKIPPED_INCOMPLETE: {'/vendor/app/app4.apk'},
|
ImgdiffStats.SKIPPED_INCOMPLETE: {'/vendor/app/app4.apk'},
|
||||||
},
|
},
|
||||||
block_image_diff.imgdiff_stats.stats)
|
block_image_diff.imgdiff_stats.stats)
|
||||||
|
Reference in New Issue
Block a user