OSDN Git Service

build_image: don't call append2simg for FEC
authorSami Tolvanen <samitolvanen@google.com>
Fri, 18 Dec 2015 15:50:25 +0000 (15:50 +0000)
committerSami Tolvanen <samitolvanen@google.com>
Fri, 18 Dec 2015 15:50:25 +0000 (15:50 +0000)
append2simg can be slow, so generate error correction data before verity
data is appended, and append all metadata to the image at the same time.

Needs matching changes from
  I09349368925e5e2f2a7961a712a1e933eb0b9ec8

Bug: 26251929
Change-Id: Iea8cee0aee353b4d029d9581e8fbd68ec7b7dd4b

tools/releasetools/build_image.py

index afb1c2f..e6ad18b 100755 (executable)
@@ -129,8 +129,8 @@ def AdjustPartitionSizeForVerity(partition_size, fec_supported):
 
 AdjustPartitionSizeForVerity.results = {}
 
-def BuildVerityFEC(sparse_image_path, verity_fec_path, prop_dict):
-  cmd = "fec -e %s %s" % (sparse_image_path, verity_fec_path)
+def BuildVerityFEC(sparse_image_path, verity_path, verity_fec_path):
+  cmd = "fec -e %s %s %s" % (sparse_image_path, verity_path, verity_fec_path)
   print cmd
   status, output = commands.getstatusoutput(cmd)
   if status:
@@ -192,10 +192,21 @@ def Append(target, file_to_append, error_message):
   return True
 
 def BuildVerifiedImage(data_image_path, verity_image_path,
-                       verity_metadata_path):
+                       verity_metadata_path, verity_fec_path,
+                       fec_supported):
   if not Append(verity_image_path, verity_metadata_path,
                 "Could not append verity metadata!"):
     return False
+
+  if fec_supported:
+    # build FEC for the entire partition, including metadata
+    if not BuildVerityFEC(data_image_path, verity_image_path,
+                          verity_fec_path):
+      return False
+
+    if not Append(verity_image_path, verity_fec_path, "Could not append FEC!"):
+      return False
+
   if not Append2Simg(data_image_path, verity_image_path,
                      "Could not append verity data!"):
     return False
@@ -261,20 +272,12 @@ def MakeVerityEnabledImage(out_file, fec_supported, prop_dict):
   # build the full verified image
   if not BuildVerifiedImage(out_file,
                             verity_image_path,
-                            verity_metadata_path):
+                            verity_metadata_path,
+                            verity_fec_path,
+                            fec_supported):
     shutil.rmtree(tempdir_name, ignore_errors=True)
     return False
 
-  if fec_supported:
-    # build FEC for the entire partition, including metadata
-    if not BuildVerityFEC(out_file, verity_fec_path, prop_dict):
-      shutil.rmtree(tempdir_name, ignore_errors=True)
-      return False
-
-    if not Append2Simg(out_file, verity_fec_path, "Could not append FEC!"):
-      shutil.rmtree(tempdir_name, ignore_errors=True)
-      return False
-
   shutil.rmtree(tempdir_name, ignore_errors=True)
   return True