From b48589af571ec760bf1a57aa2dcd7ec031b7427e Mon Sep 17 00:00:00 2001 From: Tianjie Xu Date: Wed, 3 Aug 2016 19:21:52 -0700 Subject: [PATCH] Don't regenerate userdata.img when signing The userdata.img and cache.img entries are not useful in signed builds; because fastboot doesn't look at these two entries in the *img.zip when flashing a device. And they aren't used elsewhere. Therefore, skip building the image files for them when signing the target files with sign_target_files_apks. Also, add an option "--is_signing" to avoid adding these two images when we call add_img_to_target_files. Change-Id: I39ba91a86d9a856d7d01771f6d1403dbf21f2011 Test: Run sign_target_files_apks on a target file and userdata/cache.img doesn't not generate. Bug: 30642470 --- tools/releasetools/add_img_to_target_files.py | 39 ++++++++++++++++--- tools/releasetools/sign_target_files_apks.py | 4 +- 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/tools/releasetools/add_img_to_target_files.py b/tools/releasetools/add_img_to_target_files.py index c9a80386b..5369c5b6b 100755 --- a/tools/releasetools/add_img_to_target_files.py +++ b/tools/releasetools/add_img_to_target_files.py @@ -19,7 +19,31 @@ Given a target-files zipfile that does not contain images (ie, does not have an IMAGES/ top-level subdirectory), produce the images and add them to the zipfile. -Usage: add_img_to_target_files target_files +Usage: add_img_to_target_files [flag] target_files + + -a (--add_missing) + Build and add missing images to "IMAGES/". If this option is + not specified, this script will simply exit when "IMAGES/" + directory exists in the target file. + + -r (--rebuild_recovery) + Rebuild the recovery patch and write it to the system image. Only + meaningful when system image needs to be rebuilt. + + --replace_verity_private_key + Replace the private key used for verity signing. (same as the option + in sign_target_files_apks) + + --replace_verity_public_key + Replace the certificate (public key) used for verity verification. (same + as the option in sign_target_files_apks) + + --is_signing + Skip building & adding the images for "userdata" and "cache" if we + are signing the target files. + + --verity_signer_path + Specify the signer path to build verity metadata. """ import sys @@ -46,6 +70,7 @@ OPTIONS.add_missing = False OPTIONS.rebuild_recovery = False OPTIONS.replace_verity_public_key = False OPTIONS.replace_verity_private_key = False +OPTIONS.is_signing = False OPTIONS.verity_signer_path = None def AddSystem(output_zip, prefix="IMAGES/", recovery_img=None, boot_img=None): @@ -386,10 +411,11 @@ def AddImagesToTargetFiles(filename): if has_vendor: banner("vendor") AddVendor(output_zip) - banner("userdata") - AddUserdata(output_zip) - banner("cache") - AddCache(output_zip) + if not OPTIONS.is_signing: + banner("userdata") + AddUserdata(output_zip) + banner("cache") + AddCache(output_zip) if OPTIONS.info_dict.get("board_bpt_enable", None) == "true": banner("partition-table") AddPartitionTable(output_zip) @@ -438,6 +464,8 @@ def main(argv): OPTIONS.replace_verity_private_key = (True, a) elif o == "--replace_verity_public_key": OPTIONS.replace_verity_public_key = (True, a) + elif o == "--is_signing": + OPTIONS.is_signing = True elif o == "--verity_signer_path": OPTIONS.verity_signer_path = a else: @@ -449,6 +477,7 @@ def main(argv): extra_long_opts=["add_missing", "rebuild_recovery", "replace_verity_public_key=", "replace_verity_private_key=", + "is_signing", "verity_signer_path="], extra_option_handler=option_handler) diff --git a/tools/releasetools/sign_target_files_apks.py b/tools/releasetools/sign_target_files_apks.py index 0f20f826a..6d68be185 100755 --- a/tools/releasetools/sign_target_files_apks.py +++ b/tools/releasetools/sign_target_files_apks.py @@ -713,7 +713,9 @@ def main(argv): common.ZipClose(input_zip) common.ZipClose(output_zip) - add_img_to_target_files.AddImagesToTargetFiles(args[1]) + # Skip building userdata.img and cache.img when signing the target files. + new_args = ["--is_signing", args[1]] + add_img_to_target_files.main(new_args) print "done."