Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cd1e16a7 authored by Tianjie Xu's avatar Tianjie Xu
Browse files

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
parent a0341291
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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
+1 −0
Original line number Diff line number Diff line
@@ -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)