diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py index 8884fe8fca..f3b9ed5859 100644 --- a/tools/releasetools/common.py +++ b/tools/releasetools/common.py @@ -765,3 +765,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 a61ecf506d..a1eea1fbdc 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 2f650581c4..9aeee2759c 100755 --- a/tools/releasetools/ota_from_target_files +++ b/tools/releasetools/ota_from_target_files @@ -79,10 +79,6 @@ OPTIONS.extra_script = None OPTIONS.aslr_mode = True 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.""" @@ -102,19 +98,6 @@ def IsRegular(info): symlink.""" return (info.external_attr >> 28) == 010 -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.""" @@ -341,8 +324,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 @@ -388,7 +371,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) @@ -498,7 +482,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, target_retouch_files) = LoadSystemFiles(target_zip) @@ -595,7 +580,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,