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).
diff --git a/core/Makefile b/core/Makefile
index db70d2f..e704748 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -814,6 +814,13 @@
$(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 @@
$(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): 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 @@
$(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 e758deb..27264dd 100644
--- a/tools/releasetools/common.py
+++ b/tools/releasetools/common.py
@@ -440,7 +440,7 @@
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 299e60a..e719696 100755
--- a/tools/releasetools/ota_from_target_files
+++ b/tools/releasetools/ota_from_target_files
@@ -57,6 +57,7 @@
sys.exit(1)
import copy
+import errno
import os
import re
import sha
@@ -855,6 +856,23 @@
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