From fdd8e69c42e66fb70384bcaca1747f504f2c021c Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Mon, 3 Aug 2009 17:27:48 -0700 Subject: [PATCH] use the max image sizes from the target files zip For some time now the build system has included all the max image sizes in a file in the META directory. Use these instead of needing to parse the BoardConfig.mk file for the device at the time of building an image or OTA package. --- tools/releasetools/common.py | 22 +++++++++++----------- tools/releasetools/img_from_target_files | 17 ++++++++--------- tools/releasetools/ota_from_target_files | 20 ++++++++++---------- 3 files changed, 29 insertions(+), 30 deletions(-) diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py index a07ff7c36..42a774271 100644 --- a/tools/releasetools/common.py +++ b/tools/releasetools/common.py @@ -46,18 +46,18 @@ def Run(args, **kwargs): return subprocess.Popen(args, **kwargs) -def LoadBoardConfig(fn): - """Parse a board_config.mk file looking for lines that specify the - maximum size of various images, and parse them into the - OPTIONS.max_image_size dict.""" +def LoadMaxSizes(): + """Load the maximum allowable images sizes from the input + target_files size.""" OPTIONS.max_image_size = {} - for line in open(fn): - line = line.strip() - m = re.match(r"BOARD_(BOOT|RECOVERY|SYSTEM|USERDATA)IMAGE_MAX_SIZE" - r"\s*:=\s*(\d+)", line) - if not m: continue - - OPTIONS.max_image_size[m.group(1).lower() + ".img"] = int(m.group(2)) + try: + for line in open(os.path.join(OPTIONS.input_tmp, "META", "imagesizes.txt")): + image, size = line.split() + size = int(size) + OPTIONS.max_image_size[image + ".img"] = size + except IOError, e: + if e.errno == errno.ENOENT: + pass def BuildAndAddBootableImage(sourcedir, targetname, output_zip): diff --git a/tools/releasetools/img_from_target_files b/tools/releasetools/img_from_target_files index 1d154b9d9..00abde47d 100755 --- a/tools/releasetools/img_from_target_files +++ b/tools/releasetools/img_from_target_files @@ -21,8 +21,7 @@ use with 'fastboot update'. Usage: img_from_target_files [flags] input_target_files output_image_zip -b (--board_config) - Specifies a BoardConfig.mk file containing image max sizes - against which the generated image files are checked. + Deprecated. """ @@ -109,10 +108,10 @@ def main(argv): def option_handler(o, a): if o in ("-b", "--board_config"): - common.LoadBoardConfig(a) - return True + pass # deprecated else: return False + return True args = common.ParseOptions(argv, __doc__, extra_opts="b:", @@ -123,15 +122,15 @@ def main(argv): common.Usage(__doc__) sys.exit(1) + OPTIONS.input_tmp = common.UnzipTemp(args[0]) + + common.LoadMaxSizes() if not OPTIONS.max_image_size: print - print " WARNING: No board config specified; will not check image" - print " sizes against limits. Use -b to make sure the generated" - print " images don't exceed partition sizes." + print " WARNING: Failed to load max image sizes; will not enforce" + print " image size limits." print - OPTIONS.input_tmp = common.UnzipTemp(args[0]) - output_zip = zipfile.ZipFile(args[1], "w", compression=zipfile.ZIP_DEFLATED) common.AddBoot(output_zip) diff --git a/tools/releasetools/ota_from_target_files b/tools/releasetools/ota_from_target_files index 4cda44a80..48645420b 100755 --- a/tools/releasetools/ota_from_target_files +++ b/tools/releasetools/ota_from_target_files @@ -22,8 +22,7 @@ a full OTA is produced. Usage: ota_from_target_files [flags] input_target_files output_ota_package -b (--board_config) - Specifies a BoardConfig.mk file containing image max sizes - against which the generated image files are checked. + Deprecated. -k (--package_key) Key to use to sign the package (default is @@ -736,7 +735,7 @@ def main(argv): def option_handler(o, a): if o in ("-b", "--board_config"): - common.LoadBoardConfig(a) + pass # deprecated elif o in ("-k", "--package_key"): OPTIONS.package_key = a elif o in ("-i", "--incremental_from"): @@ -768,13 +767,6 @@ def main(argv): common.Usage(__doc__) sys.exit(1) - if not OPTIONS.max_image_size: - print - print " WARNING: No board config specified; will not check image" - print " sizes against limits. Use -b to make sure the generated" - print " images don't exceed partition sizes." - print - if OPTIONS.script_mode not in ("amend", "edify", "auto"): raise ValueError('unknown script mode "%s"' % (OPTIONS.script_mode,)) @@ -783,6 +775,14 @@ def main(argv): print "unzipping target target-files..." OPTIONS.input_tmp = common.UnzipTemp(args[0]) + + common.LoadMaxSizes() + if not OPTIONS.max_image_size: + print + print " WARNING: Failed to load max image sizes; will not enforce" + print " image size limits." + print + OPTIONS.target_tmp = OPTIONS.input_tmp input_zip = zipfile.ZipFile(args[0], "r") if OPTIONS.package_key: