OSDN Git Service

releasetools: Make BBOTA incremental generation repeatable.
authorTao Bao <tbao@google.com>
Mon, 24 Oct 2016 23:49:08 +0000 (16:49 -0700)
committerTao Bao <tbao@google.com>
Wed, 26 Oct 2016 16:40:50 +0000 (09:40 -0700)
commit334822842353669df47cec08500d4497b4b353ea
treeae82da479a3f9fc73c6e5565aacafe881b9add2d
parent02d2d68aecba66c285a654bd5b674ba922802421
releasetools: Make BBOTA incremental generation repeatable.

set() doesn't keep elements according to the order of insertion. So
Transfers managed with set() in intermediate steps may not appear in the
same order across runs. This leads to slightly different output packages
when generating the same incremental OTA.

This CL fixes the issue by replacing set() with OrderedDict() in
blockimgdiff.GenerateDigraph() and blockimgdiff.FindVertexSequence().

It also adds a testcase that ensures blockimgdiff.GenerateDigraph()
preserves the insertion order for Transfer.goes_after set.

Bug: 32220816
Test: ota_from_target_files.py gives identical package when running
multiple times.

Change-Id: I56d551e5ca926993ab46896e33c80e0ce42e506a
tools/releasetools/blockimgdiff.py
tools/releasetools/test_blockimgdiff.py [new file with mode: 0644]