summaryrefslogtreecommitdiffstats
path: root/tools/releasetools
diff options
context:
space:
mode:
Diffstat (limited to 'tools/releasetools')
-rw-r--r--tools/releasetools/common.py17
-rwxr-xr-xtools/releasetools/img_from_target_files34
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)