From c18736b1a777c386dc3c5e3f878249770b5edd78 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Wed, 30 Sep 2009 09:20:32 -0700 Subject: [PATCH] remember device-specific releasetools extensions in target-files Store the location of the releasetools extensions in the target-files zip, and make ota_from_target_files use that stored location by default (though it can still be overridden with -s if desired). --- core/Makefile | 17 +++++++++-------- tools/releasetools/common.py | 2 +- tools/releasetools/ota_from_target_files | 18 ++++++++++++++++++ 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/core/Makefile b/core/Makefile index db70d2f08..e70474809 100644 --- a/core/Makefile +++ b/core/Makefile @@ -814,6 +814,13 @@ $(BUILT_TARGET_FILES_PACKAGE): PRIVATE_OTA_TOOLS := $(built_ota_tools) $(BUILT_TARGET_FILES_PACKAGE): PRIVATE_RECOVERY_API_VERSION := $(RECOVERY_API_VERSION) +ifeq ($(TARGET_RELEASETOOLS_EXTENSIONS),) +# default to common dir for device vendor +$(BUILT_TARGET_FILES_PACKAGE): tool_extensions := $(TARGET_DEVICE_DIR)/../common +else +$(BUILT_TARGET_FILES_PACKAGE): tool_extensions := $(TARGET_RELEASETOOLS_EXTENSIONS) +endif + # Depending on the various images guarantees that the underlying # directories are up-to-date. $(BUILT_TARGET_FILES_PACKAGE): \ @@ -887,6 +894,7 @@ endif $(hide) echo "recovery $(call image-size-from-data-size,$(BOARD_RECOVERYIMAGE_PARTITION_SIZE))" >> $(zip_root)/META/imagesizes.txt $(hide) echo "system $(call image-size-from-data-size,$(BOARD_SYSTEMIMAGE_PARTITION_SIZE))" >> $(zip_root)/META/imagesizes.txt $(hide) echo "userdata $(call image-size-from-data-size,$(BOARD_USERDATAIMAGE_PARTITION_SIZE))" >> $(zip_root)/META/imagesizes.txt + $(hide) echo "$(tool_extensions)" > $(zip_root)/META/tool-extensions.txt @# Zip everything up, preserving symlinks $(hide) (cd $(zip_root) && zip -qry ../$(notdir $@) .) @@ -909,13 +917,6 @@ INTERNAL_OTA_PACKAGE_TARGET := $(PRODUCT_OUT)/$(name).zip $(INTERNAL_OTA_PACKAGE_TARGET): KEY_CERT_PAIR := $(DEFAULT_KEY_CERT_PAIR) -ifeq ($(TARGET_RELEASETOOLS_EXTENSIONS),) -# default to common dir for device vendor -$(INTERNAL_OTA_PACKAGE_TARGET): extensions := $(TARGET_DEVICE_DIR)/../common -else -$(INTERNAL_OTA_PACKAGE_TARGET): extensions := $(TARGET_RELEASETOOLS_EXTENSIONS) -endif - ifeq ($(TARGET_OTA_SCRIPT_MODE),) # default to "auto" $(INTERNAL_OTA_PACKAGE_TARGET): scriptmode := auto @@ -926,7 +927,7 @@ endif $(INTERNAL_OTA_PACKAGE_TARGET): $(BUILT_TARGET_FILES_PACKAGE) otatools @echo "Package OTA: $@" $(hide) ./build/tools/releasetools/ota_from_target_files \ - -s $(extensions) -m $(scriptmode) \ + -m $(scriptmode) \ -p $(HOST_OUT) \ -k $(KEY_CERT_PAIR) \ $(BUILT_TARGET_FILES_PACKAGE) $@ diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py index e758debd1..27264dd79 100644 --- a/tools/releasetools/common.py +++ b/tools/releasetools/common.py @@ -440,7 +440,7 @@ class DeviceSpecificParams(object): if self.module is None: path = OPTIONS.device_specific - if path is None: return + if not path: return try: if os.path.isdir(path): info = imp.find_module("releasetools", [path]) diff --git a/tools/releasetools/ota_from_target_files b/tools/releasetools/ota_from_target_files index 299e60a88..e71969686 100755 --- a/tools/releasetools/ota_from_target_files +++ b/tools/releasetools/ota_from_target_files @@ -57,6 +57,7 @@ if sys.hexversion < 0x02040000: sys.exit(1) import copy +import errno import os import re import sha @@ -855,6 +856,23 @@ def main(argv): print "unzipping target target-files..." OPTIONS.input_tmp = common.UnzipTemp(args[0]) + if OPTIONS.device_specific is None: + # look for the device-specific tools extension location in the input + try: + f = open(os.path.join(OPTIONS.input_tmp, "META", "tool-extensions.txt")) + ds = f.read().strip() + f.close() + if ds: + ds = os.path.normpath(ds) + print "using device-specific extensions in", ds + OPTIONS.device_specific = ds + except IOError, e: + if e.errno == errno.ENOENT: + # nothing specified in the file + pass + else: + raise + common.LoadMaxSizes() if not OPTIONS.max_image_size: print