From cd1e16a7616092e5a315b0a421a0c082da144145 Mon Sep 17 00:00:00 2001 From: Tianjie Xu Date: Thu, 7 Apr 2016 20:17:48 -0700 Subject: [PATCH] Monotonic flag sets incorrectly in rangelib After applying update_target_files_incr_ext4.sh, some files may end up occupying unsorted block fragments. In one example, an apk file has the block range [258768-259211,196604]. The monotonic flag in rangelib sets incorrectly for this example and leads to a bad input file for imgdiff. After fixing the flag, bsdiff is called instead of imgdiff and the incremental OTA package generates successfully. Bug:28053885 Change-Id: Ib841bf449ff6a29314fc4a1b8fba941a6dc532ac --- tools/releasetools/rangelib.py | 2 +- tools/releasetools/test_rangelib.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/releasetools/rangelib.py b/tools/releasetools/rangelib.py index 31ed83a67b..1638f8c948 100644 --- a/tools/releasetools/rangelib.py +++ b/tools/releasetools/rangelib.py @@ -104,7 +104,7 @@ class RangeSet(object): if last <= s: last = s+1 else: - monotonic = True + monotonic = False data.sort() self.data = tuple(self._remove_pairs(data)) self.monotonic = monotonic diff --git a/tools/releasetools/test_rangelib.py b/tools/releasetools/test_rangelib.py index 853012ea9a..1c57cbc273 100644 --- a/tools/releasetools/test_rangelib.py +++ b/tools/releasetools/test_rangelib.py @@ -117,6 +117,7 @@ class RangeSetTest(unittest.TestCase): self.assertTrue(RangeSet("").monotonic) self.assertTrue(RangeSet("0-4 5-9").monotonic) self.assertFalse(RangeSet("5-9 0-4").monotonic) + self.assertFalse(RangeSet("258768-259211 196604").monotonic) self.assertTrue(RangeSet(data=[0, 10]).monotonic) self.assertTrue(RangeSet(data=[0, 10, 15, 20]).monotonic)