From 96a57e737707d05333dced5b657c4ef21c44088a Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Sun, 26 Sep 2010 14:57:41 -0700 Subject: [PATCH] make info_dict and GetTypeAndDevice available to device extensions Change-Id: I3aa04cb6d7988fc1fdd7f179634b09ceab5749fb --- tools/releasetools/common.py | 17 ++++++++++++++ tools/releasetools/edify_generator.py | 10 +++----- tools/releasetools/ota_from_target_files | 29 ++++++------------------ 3 files changed, 27 insertions(+), 29 deletions(-) diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py index be8333bee4..a236a12931 100644 --- a/tools/releasetools/common.py +++ b/tools/releasetools/common.py @@ -766,3 +766,20 @@ def ComputeDifferences(diffs): th.start() while threads: threads.pop().join() + + +# map recovery.fstab's fs_types to mount/format "partition types" +PARTITION_TYPES = { "yaffs2": "MTD", "mtd": "MTD", + "ext4": "EMMC", "emmc": "EMMC" } + +def GetTypeAndDevice(mount_point, info): + fstab = info["fstab"] + if fstab: + return PARTITION_TYPES[fstab[mount_point].fs_type], fstab[mount_point].device + else: + devices = {"/boot": "boot", + "/recovery": "recovery", + "/radio": "radio", + "/data": "userdata", + "/cache": "cache"} + return info["partition_type"], info.get("partition_path", "") + devices[mount_point] diff --git a/tools/releasetools/edify_generator.py b/tools/releasetools/edify_generator.py index c7bca49eb6..756d673043 100644 --- a/tools/releasetools/edify_generator.py +++ b/tools/releasetools/edify_generator.py @@ -21,10 +21,6 @@ class EdifyGenerator(object): """Class to generate scripts in the 'edify' recovery script language used from donut onwards.""" - # map recovery.fstab's fs_types to mount/format "partition types" - PARTITION_TYPES = { "yaffs2": "MTD", "mtd": "MTD", - "ext4": "EMMC", "emmc": "EMMC" } - def __init__(self, version, info): self.script = [] self.mounts = set() @@ -141,7 +137,7 @@ class EdifyGenerator(object): if fstab: p = fstab[mount_point] self.script.append('mount("%s", "%s", "%s", "%s");' % - (p.fs_type, self.PARTITION_TYPES[p.fs_type], + (p.fs_type, common.PARTITION_TYPES[p.fs_type], p.device, p.mount_point)) self.mounts.add(p.mount_point) else: @@ -176,7 +172,7 @@ class EdifyGenerator(object): if fstab: p = fstab[partition] self.script.append('format("%s", "%s", "%s");' % - (p.fs_type, self.PARTITION_TYPES[p.fs_type], p.device)) + (p.fs_type, common.PARTITION_TYPES[p.fs_type], p.device)) else: # older target-files without per-partition types partition = self.info.get("partition_path", "") + partition @@ -223,7 +219,7 @@ class EdifyGenerator(object): fstab = self.info["fstab"] if fstab: p = fstab[mount_point] - partition_type = self.PARTITION_TYPES[p.fs_type] + partition_type = common.PARTITION_TYPES[p.fs_type] args = {'device': p.device, 'fn': fn} if partition_type == "MTD": self.script.append( diff --git a/tools/releasetools/ota_from_target_files b/tools/releasetools/ota_from_target_files index 98a4d19234..aa691b45cd 100755 --- a/tools/releasetools/ota_from_target_files +++ b/tools/releasetools/ota_from_target_files @@ -76,10 +76,6 @@ OPTIONS.omit_prereq = False OPTIONS.extra_script = None OPTIONS.worker_threads = 3 -# TODO: this is duplicated from edify_generator.py; fix. -PARTITION_TYPES = { "yaffs2": "MTD", "mtd": "MTD", - "ext4": "EMMC", "emmc": "EMMC" } - def MostPopularKey(d, default): """Given a dict, return the key corresponding to the largest value. Returns 'default' if the dict is empty.""" @@ -95,19 +91,6 @@ def IsSymlink(info): return (info.external_attr >> 16) == 0120777 -def GetTypeAndDevice(mount_point, info): - fstab = info["fstab"] - if fstab: - return PARTITION_TYPES[fstab[mount_point].fs_type], fstab[mount_point].device - else: - devices = {"/boot": "boot", - "/recovery": "recovery", - "/radio": "radio", - "/data": "userdata", - "/cache": "cache"} - return info["partition_type"], info.get("partition_path", "") + devices[mount_point] - - class Item: """Items represent the metadata (user, group, mode) of files and directories in the system image.""" @@ -328,8 +311,8 @@ def MakeRecoveryPatch(output_zip, recovery_img, boot_img): common.ZipWriteStr(output_zip, "recovery/recovery-from-boot.p", patch) Item.Get("system/recovery-from-boot.p", dir=False) - boot_type, boot_device = GetTypeAndDevice("/boot", OPTIONS.info_dict) - recovery_type, recovery_device = GetTypeAndDevice("/recovery", OPTIONS.info_dict) + boot_type, boot_device = common.GetTypeAndDevice("/boot", OPTIONS.info_dict) + recovery_type, recovery_device = common.GetTypeAndDevice("/recovery", OPTIONS.info_dict) # Images with different content will have a different first page, so # we check to see if this recovery has already been installed by @@ -375,7 +358,8 @@ def WriteFullOTAPackage(input_zip, output_zip): output_zip=output_zip, script=script, input_tmp=OPTIONS.input_tmp, - metadata=metadata) + metadata=metadata, + info_dict=OPTIONS.info_dict) if not OPTIONS.omit_prereq: ts = GetBuildProp("ro.build.date.utc", input_zip) @@ -476,7 +460,8 @@ def WriteIncrementalOTAPackage(target_zip, source_zip, output_zip): target_version=target_version, output_zip=output_zip, script=script, - metadata=metadata) + metadata=metadata, + info_dict=OPTIONS.info_dict) print "Loading target..." target_data = LoadSystemFiles(target_zip) @@ -573,7 +558,7 @@ def WriteIncrementalOTAPackage(target_zip, source_zip, output_zip): common.ZipWriteStr(output_zip, "patch/boot.img.p", d) - boot_type, boot_device = GetTypeAndDevice("/boot", OPTIONS.info_dict) + boot_type, boot_device = common.GetTypeAndDevice("/boot", OPTIONS.info_dict) script.PatchCheck("%s:%s:%d:%s:%d:%s" % (boot_type, boot_device,