diff --git a/tools/arm_pack_manager/__init__.py b/tools/arm_pack_manager/__init__.py index b2ca051e07b..6cd66399f05 100644 --- a/tools/arm_pack_manager/__init__.py +++ b/tools/arm_pack_manager/__init__.py @@ -26,7 +26,8 @@ def strip_protocol(url) : return protocol_matcher.sub("", str(url)) def largest_version(content) : - return sorted([t['version'] for t in content.package.releases('release')], reverse=True)[0] + return sorted([t['version'] for t in content.package.releases('release')], + reverse=True, key=lambda v: map(int, v.split(".")))[0] def do_queue(Class, function, interable) : q = Queue() @@ -251,8 +252,9 @@ def get_flash_algorthim_binary(self, device_name) : :return: A file-like object that, when read, is the ELF file that describes the flashing algorithm :rtype: ZipExtFile """ - pack = self.pack_from_cache(self.index[device_name]) - return pack.open(device['algorithm']['file']) + device = self.index[device_name] + pack = self.pack_from_cache(device) + return pack.open(device['algorithm'].keys()[0]) def get_svd_file(self, device_name) : """Retrieve the flash algorithm file for a particular part. @@ -264,7 +266,8 @@ def get_svd_file(self, device_name) : :return: A file-like object that, when read, is the ELF file that describes the flashing algorithm :rtype: ZipExtFile """ - pack = self.pack_from_cache(self.index[device_name]) + device = self.index[device_name] + pack = self.pack_from_cache(device) return pack.open(device['debug']) def generate_index(self) : @@ -407,7 +410,7 @@ def pdsc_from_cache(self, url) : with open(dest, "r") as fd : return BeautifulSoup(fd, "html.parser") - def pack_from_cache(self, url) : + def pack_from_cache(self, device) : """Low level inteface for extracting a PACK file from the cache. Assumes that the file specified is a PACK file and is in the cache.