diff --git a/core/Makefile b/core/Makefile index 1a3627741..6b4645107 100644 --- a/core/Makefile +++ b/core/Makefile @@ -403,7 +403,7 @@ else # TARGET_BOOTIMAGE_USE_EXT2 != true $(INSTALLED_BOOTIMAGE_TARGET): $(MKBOOTIMG) $(INTERNAL_BOOTIMAGE_FILES) $(call pretty,"Target boot image: $@") - $(hide) $(MKBOOTIMG) $(INTERNAL_BOOTIMAGE_ARGS) --output $@ + $(hide) $(MKBOOTIMG) $(INTERNAL_BOOTIMAGE_ARGS) $(BOARD_MKBOOTIMG_ARGS) --output $@ $(hide) $(call assert-max-image-size,$@,$(BOARD_BOOTIMAGE_PARTITION_SIZE),raw) endif # TARGET_BOOTIMAGE_USE_EXT2 @@ -664,7 +664,7 @@ $(INSTALLED_RECOVERYIMAGE_TARGET): $(MKBOOTFS) $(MKBOOTIMG) $(MINIGZIP) \ cat $(INSTALLED_DEFAULT_PROP_TARGET) $(recovery_build_prop) \ > $(TARGET_RECOVERY_ROOT_OUT)/default.prop $(MKBOOTFS) $(TARGET_RECOVERY_ROOT_OUT) | $(MINIGZIP) > $(recovery_ramdisk) - $(MKBOOTIMG) $(INTERNAL_RECOVERYIMAGE_ARGS) --output $@ + $(MKBOOTIMG) $(INTERNAL_RECOVERYIMAGE_ARGS) $(BOARD_MKBOOTIMG_ARGS) --output $@ @echo ----- Made recovery image -------- $@ $(hide) $(call assert-max-image-size,$@,$(BOARD_RECOVERYIMAGE_PARTITION_SIZE),raw) @@ -1126,6 +1126,7 @@ endif ifdef PRODUCT_EXTRA_RECOVERY_KEYS $(hide) echo "extra_recovery_keys=$(PRODUCT_EXTRA_RECOVERY_KEYS)" >> $(zip_root)/META/misc_info.txt endif + $(hide) echo "mkbootimg_args=$(BOARD_MKBOOTIMG_ARGS)" >> $(zip_root)/META/misc_info.txt $(call generate-userimage-prop-dictionary, $(zip_root)/META/misc_info.txt) @# Zip everything up, preserving symlinks $(hide) (cd $(zip_root) && zip -qry ../$(notdir $@) .) diff --git a/core/tasks/factory_ramdisk.mk b/core/tasks/factory_ramdisk.mk index 576a159a1..05d89b0eb 100644 --- a/core/tasks/factory_ramdisk.mk +++ b/core/tasks/factory_ramdisk.mk @@ -83,7 +83,7 @@ endif $(INSTALLED_FACTORY_RAMDISK_TARGET) : $(MKBOOTIMG) $(TARGET_RAMDISK_KERNEL) $(INSTALLED_FACTORY_RAMDISK_FS) $(call pretty,"Target factory ram disk img format: $@") $(MKBOOTIMG) --kernel $(TARGET_RAMDISK_KERNEL) --ramdisk $(INSTALLED_FACTORY_RAMDISK_FS) \ - --base $(BOARD_KERNEL_BASE) $(RAMDISK_CMDLINE) --output $@ + --base $(BOARD_KERNEL_BASE) $(BOARD_MKBOOTIMG_ARGS) $(RAMDISK_CMDLINE) --output $@ endif diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py index 5e4055a21..5037ac576 100644 --- a/tools/releasetools/common.py +++ b/tools/releasetools/common.py @@ -196,7 +196,7 @@ def DumpInfoDict(d): for k, v in sorted(d.items()): print "%-25s = (%s) %s" % (k, type(v).__name__, v) -def BuildBootableImage(sourcedir, fs_config_file): +def BuildBootableImage(sourcedir, fs_config_file, info_dict=None): """Take a kernel, cmdline, and ramdisk directory from the input (in 'sourcedir'), and turn them into a boot image. Return the image data, or None if sourcedir does not appear to contains files for @@ -206,6 +206,9 @@ def BuildBootableImage(sourcedir, fs_config_file): not os.access(os.path.join(sourcedir, "kernel"), os.F_OK)): return None + if info_dict is None: + info_dict = OPTIONS.info_dict + ramdisk_img = tempfile.NamedTemporaryFile() img = tempfile.NamedTemporaryFile() @@ -239,6 +242,10 @@ def BuildBootableImage(sourcedir, fs_config_file): cmd.append("--pagesize") cmd.append(open(fn).read().rstrip("\n")) + args = info_dict.get("mkbootimg_args", None) + if args and args.strip(): + cmd.extend(args.split()) + cmd.extend(["--ramdisk", ramdisk_img.name, "--output", img.name]) @@ -256,7 +263,8 @@ def BuildBootableImage(sourcedir, fs_config_file): return data -def GetBootableImage(name, prebuilt_name, unpack_dir, tree_subdir): +def GetBootableImage(name, prebuilt_name, unpack_dir, tree_subdir, + info_dict=None): """Return a File object (with name 'name') with the desired bootable image. Look for it in 'unpack_dir'/BOOTABLE_IMAGES under the name 'prebuilt_name', otherwise construct it from the source files in @@ -270,7 +278,8 @@ def GetBootableImage(name, prebuilt_name, unpack_dir, tree_subdir): print "building image from target_files %s..." % (tree_subdir,) fs_config = "META/" + tree_subdir.lower() + "_filesystem_config.txt" return File(name, BuildBootableImage(os.path.join(unpack_dir, tree_subdir), - os.path.join(unpack_dir, fs_config))) + os.path.join(unpack_dir, fs_config), + info_dict)) def UnzipTemp(filename, pattern=None): diff --git a/tools/releasetools/ota_from_target_files b/tools/releasetools/ota_from_target_files index 3dcfbee40..b8fe68c0e 100755 --- a/tools/releasetools/ota_from_target_files +++ b/tools/releasetools/ota_from_target_files @@ -531,13 +531,15 @@ def WriteIncrementalOTAPackage(target_zip, source_zip, output_zip): script.AssertSomeFingerprint(source_fp, target_fp) source_boot = common.GetBootableImage( - "/tmp/boot.img", "boot.img", OPTIONS.source_tmp, "BOOT") + "/tmp/boot.img", "boot.img", OPTIONS.source_tmp, "BOOT", + OPTIONS.source_info_dict) target_boot = common.GetBootableImage( "/tmp/boot.img", "boot.img", OPTIONS.target_tmp, "BOOT") updating_boot = (source_boot.data != target_boot.data) source_recovery = common.GetBootableImage( - "/tmp/recovery.img", "recovery.img", OPTIONS.source_tmp, "RECOVERY") + "/tmp/recovery.img", "recovery.img", OPTIONS.source_tmp, "RECOVERY", + OPTIONS.source_info_dict) target_recovery = common.GetBootableImage( "/tmp/recovery.img", "recovery.img", OPTIONS.target_tmp, "RECOVERY") updating_recovery = (source_recovery.data != target_recovery.data)