From eb0a78afc00265479c002364fa62c9e09c3f613d Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Mon, 27 Jan 2014 10:01:06 -0800 Subject: [PATCH] prefer releasetools.py from target_files zip If the target_files zip for the target build contains a META/releasetools.py (which it has since Nov 2013), prefer that over using a releasetools.py from the local client. Explicitly specifying the device-specific extensions path via command-line options takes priority over both of the above mechanisms. Change-Id: Ia068b0e2e06ede7da89ebe4315cdec592eb8995e --- tools/releasetools/common.py | 1 + tools/releasetools/ota_from_target_files | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py index f17971777..d0d57a994 100644 --- a/tools/releasetools/common.py +++ b/tools/releasetools/common.py @@ -756,6 +756,7 @@ class DeviceSpecificParams(object): if x == ".py": f = b info = imp.find_module(f, [d]) + print "loaded device-specific extensions from", path self.module = imp.load_module("device_specific", *info) except ImportError: print "unable to load device-specific module; assuming none" diff --git a/tools/releasetools/ota_from_target_files b/tools/releasetools/ota_from_target_files index a31d70aaf..9908a25eb 100755 --- a/tools/releasetools/ota_from_target_files +++ b/tools/releasetools/ota_from_target_files @@ -1011,11 +1011,23 @@ def main(argv): print "--- target info ---" common.DumpInfoDict(OPTIONS.info_dict) + # If the caller explicitly specified the device-specific extensions + # path via -s/--device_specific, use that. Otherwise, use + # META/releasetools.py if it is present in the target target_files. + # Otherwise, take the path of the file from 'tool_extensions' in the + # info dict and look for that in the local filesystem, relative to + # the current directory. + if OPTIONS.device_specific is None: - OPTIONS.device_specific = OPTIONS.info_dict.get("tool_extensions", None) + from_input = os.path.join(OPTIONS.input_tmp, "META", "releasetools.py") + if os.path.exists(from_input): + print "(using device-specific extensions from target_files)" + OPTIONS.device_specific = from_input + else: + OPTIONS.device_specific = OPTIONS.info_dict.get("tool_extensions", None) + if OPTIONS.device_specific is not None: - OPTIONS.device_specific = os.path.normpath(OPTIONS.device_specific) - print "using device-specific extensions in", OPTIONS.device_specific + OPTIONS.device_specific = os.path.abspath(OPTIONS.device_specific) temp_zip_file = tempfile.NamedTemporaryFile() output_zip = zipfile.ZipFile(temp_zip_file, "w", -- 2.11.0