OSDN Git Service

releasetools: Pack updatable images into IMAGES/ for A/B update.
authorTao Bao <tbao@google.com>
Tue, 17 Nov 2015 00:32:27 +0000 (16:32 -0800)
committerTao Bao <tbao@google.com>
Tue, 17 Nov 2015 06:25:27 +0000 (22:25 -0800)
Vendor-specific images (radio, bootloader and etc) used to stay in
RADIO/ in target_files zip. A/B updater expects them to be available
under IMAGES/. Make a copy for such images when calling
add_img_to_target_files.py.

We cannot move them directly from RADIO/ to IMAGES/, because we will
delete everything under IMAGES/ when signing for release.

Bug: 25674625
Change-Id: I1c260c1d9fc069c258b2c19cf3831f833d2fa1cf
(cherry picked from commit a0421cd1bd2398589f2292dfd92ba802110e98e1)

tools/releasetools/add_img_to_target_files.py

index a99d778..ec9f75b 100755 (executable)
@@ -319,6 +319,23 @@ def AddImagesToTargetFiles(filename):
   banner("cache")
   AddCache(output_zip)
 
+  # For devices using A/B update, copy over images from RADIO/ to IMAGES/ and
+  # make sure we have all the needed images ready under IMAGES/.
+  ab_partitions = os.path.join(OPTIONS.input_tmp, "META", "ab_partitions.txt")
+  if os.path.exists(ab_partitions):
+    with open(ab_partitions, 'r') as f:
+      lines = f.readlines()
+    for line in lines:
+      img_name = line.strip() + ".img"
+      img_radio_path = os.path.join(OPTIONS.input_tmp, "RADIO", img_name)
+      if os.path.exists(img_radio_path):
+        common.ZipWrite(output_zip, img_radio_path,
+                        os.path.join("IMAGES", img_name))
+
+      # Zip spec says: All slashes MUST be forward slashes.
+      img_path = 'IMAGES/' + img_name
+      assert img_path in output_zip.namelist(), "cannot find " + img_name
+
   common.ZipClose(output_zip)
 
 def main(argv):