build_image: don't call append2simg for FEC

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
This commit is contained in:
Sami Tolvanen
2015-12-18 15:50:25 +00:00
parent ff914f5dd0
commit 4a0600406e

View File

@@ -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