diff options
Diffstat (limited to 'tools/releasetools')
-rw-r--r-- | tools/releasetools/common.py | 17 | ||||
-rwxr-xr-x | tools/releasetools/img_from_target_files | 34 |
2 files changed, 43 insertions, 8 deletions
diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py index 18ba842..4db9095 100644 --- a/tools/releasetools/common.py +++ b/tools/releasetools/common.py @@ -36,6 +36,7 @@ OPTIONS.verbose = False OPTIONS.tempfiles = [] OPTIONS.device_specific = None OPTIONS.extras = {} +OPTIONS.mkyaffs2_extra_flags = None # Values for "certificate" in apkcerts that mean special things. @@ -103,6 +104,17 @@ def LoadMaxSizes(info): raise +def LoadMkyaffs2ExtraFlags(): + """Load mkyaffs2 extra flags.""" + try: + fn = os.path.join(OPTIONS.input_tmp, "META", "mkyaffs2-extra-flags.txt"); + if os.access(fn, os.F_OK): + OPTIONS.mkyaffs2_extra_flags = open(fn).read().rstrip("\n") + except IOError, e: + if e.errno == errno.ENOENT: + pass + + def BuildAndAddBootableImage(sourcedir, targetname, output_zip): """Take a kernel, cmdline, and ramdisk directory from the input (in 'sourcedir'), and turn them into a boot image. Put the boot image @@ -155,6 +167,11 @@ def BuildBootableImage(sourcedir): cmd.append("--base") cmd.append(open(fn).read().rstrip("\n")) + fn = os.path.join(sourcedir, "pagesize") + if os.access(fn, os.F_OK): + cmd.append("--pagesize") + cmd.append(open(fn).read().rstrip("\n")) + cmd.extend(["--ramdisk", ramdisk_img.name, "--output", img.name]) diff --git a/tools/releasetools/img_from_target_files b/tools/releasetools/img_from_target_files index d180998..ebf67eb 100755 --- a/tools/releasetools/img_from_target_files +++ b/tools/releasetools/img_from_target_files @@ -77,8 +77,11 @@ def AddUserdata(output_zip): if "userdata.img" in OPTIONS.max_image_size: build_command.append(str(OPTIONS.max_image_size["userdata.img"])) else: - build_command = ["mkyaffs2image", "-f", - user_dir, img.name] + build_command = ["mkyaffs2image", "-f"] + if OPTIONS.mkyaffs2_extra_flags is not None: + build_command.append(OPTIONS.mkyaffs2_extra_flags); + build_command.append(user_dir) + build_command.append(img.name) p = common.Run(build_command); p.communicate() @@ -122,12 +125,25 @@ def AddSystem(output_zip): if "system.img" in OPTIONS.max_image_size: build_command.append(str(OPTIONS.max_image_size["system.img"])) else: - build_command = ["mkyaffs2image", "-f", - os.path.join(OPTIONS.input_tmp, "system"), img.name] - - p = common.Run(build_command) - p.communicate() - assert p.returncode == 0, "build system.img image failed" + build_command = ["mkyaffs2image", "-f"] + if OPTIONS.mkyaffs2_extra_flags is not None: + build_command.append(OPTIONS.mkyaffs2_extra_flags); + build_command.append(os.path.join(OPTIONS.input_tmp, "system")) + build_command.append(img.name) + + # p = common.Run(build_command) + # p.communicate() + # assert p.returncode == 0, "build system.img image failed" + + # TODO: Why the above common.Run() generate different system.img for crespo? + str_command = "mkyaffs2image -f "; + if OPTIONS.mkyaffs2_extra_flags is not None: + str_command = str_command + OPTIONS.mkyaffs2_extra_flags + str_command = str_command + " " + os.path.join(OPTIONS.input_tmp, "system") + " " + img.name + + print "running " + str_command + exit_code = os.system(str_command) + assert exit_code == 0, "build system.img image failed" img.seek(os.SEEK_SET, 0) data = img.read() @@ -174,6 +190,8 @@ def main(argv): print " image size limits." print + common.LoadMkyaffs2ExtraFlags() + output_zip = zipfile.ZipFile(args[1], "w", compression=zipfile.ZIP_DEFLATED) common.AddBoot(output_zip) |