Make releasetools pylint clean.
This caught a few bugs/syntax errors (a few character classes were not escaped properly in regex patterns, some indentation was illegal, etc). Change-Id: I50637607524e68c4fb9cad7167f58a46b8d26b2c
This commit is contained in:
@@ -12,7 +12,6 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
import os
|
||||
import re
|
||||
|
||||
import common
|
||||
@@ -36,7 +35,7 @@ class EdifyGenerator(object):
|
||||
return x
|
||||
|
||||
@staticmethod
|
||||
def _WordWrap(cmd, linelen=80):
|
||||
def WordWrap(cmd, linelen=80):
|
||||
"""'cmd' should be a function call with null characters after each
|
||||
parameter (eg, "somefun(foo,\0bar,\0baz)"). This function wraps cmd
|
||||
to a given line length, replacing nulls with spaces and/or newlines
|
||||
@@ -77,32 +76,30 @@ class EdifyGenerator(object):
|
||||
cmd = ('file_getprop("/oem/oem.prop", "{name}") == "{value}" || '
|
||||
'abort("This package expects the value \\"{value}\\" for '
|
||||
'\\"{name}\\" on the OEM partition; this has value \\"" + '
|
||||
'file_getprop("/oem/oem.prop", "{name}") + "\\".");'
|
||||
).format(name=name, value=value)
|
||||
'file_getprop("/oem/oem.prop", "{name}") + "\\".");').format(
|
||||
name=name, value=value)
|
||||
self.script.append(cmd)
|
||||
|
||||
def AssertSomeFingerprint(self, *fp):
|
||||
"""Assert that the current recovery build fingerprint is one of *fp."""
|
||||
if not fp:
|
||||
raise ValueError("must specify some fingerprints")
|
||||
cmd = (
|
||||
' ||\n '.join([('getprop("ro.build.fingerprint") == "%s"')
|
||||
% i for i in fp]) +
|
||||
cmd = (' ||\n '.join([('getprop("ro.build.fingerprint") == "%s"') % i
|
||||
for i in fp]) +
|
||||
' ||\n abort("Package expects build fingerprint of %s; this '
|
||||
'device has " + getprop("ro.build.fingerprint") + ".");'
|
||||
) % (" or ".join(fp),)
|
||||
'device has " + getprop("ro.build.fingerprint") + ".");') % (
|
||||
" or ".join(fp))
|
||||
self.script.append(cmd)
|
||||
|
||||
def AssertSomeThumbprint(self, *fp):
|
||||
"""Assert that the current recovery build thumbprint is one of *fp."""
|
||||
if not fp:
|
||||
raise ValueError("must specify some thumbprints")
|
||||
cmd = (
|
||||
' ||\n '.join([('getprop("ro.build.thumbprint") == "%s"')
|
||||
% i for i in fp]) +
|
||||
cmd = (' ||\n '.join([('getprop("ro.build.thumbprint") == "%s"') % i
|
||||
for i in fp]) +
|
||||
' ||\n abort("Package expects build thumbprint of %s; this '
|
||||
'device has " + getprop("ro.build.thumbprint") + ".");'
|
||||
) % (" or ".join(fp),)
|
||||
'device has " + getprop("ro.build.thumbprint") + ".");') % (
|
||||
" or ".join(fp))
|
||||
self.script.append(cmd)
|
||||
|
||||
def AssertOlderBuild(self, timestamp, timestamp_text):
|
||||
@@ -111,15 +108,15 @@ class EdifyGenerator(object):
|
||||
self.script.append(
|
||||
('(!less_than_int(%s, getprop("ro.build.date.utc"))) || '
|
||||
'abort("Can\'t install this package (%s) over newer '
|
||||
'build (" + getprop("ro.build.date") + ").");'
|
||||
) % (timestamp, timestamp_text))
|
||||
'build (" + getprop("ro.build.date") + ").");') % (timestamp,
|
||||
timestamp_text))
|
||||
|
||||
def AssertDevice(self, device):
|
||||
"""Assert that the device identifier is the given string."""
|
||||
cmd = ('getprop("ro.product.device") == "%s" || '
|
||||
'abort("This package is for \\"%s\\" devices; '
|
||||
'this is a \\"" + getprop("ro.product.device") + "\\".");'
|
||||
) % (device, device)
|
||||
'this is a \\"" + getprop("ro.product.device") + "\\".");') % (
|
||||
device, device)
|
||||
self.script.append(cmd)
|
||||
|
||||
def AssertSomeBootloader(self, *bootloaders):
|
||||
@@ -128,7 +125,7 @@ class EdifyGenerator(object):
|
||||
" ||\0".join(['getprop("ro.bootloader") == "%s"' % (b,)
|
||||
for b in bootloaders]) +
|
||||
");")
|
||||
self.script.append(self._WordWrap(cmd))
|
||||
self.script.append(self.WordWrap(cmd))
|
||||
|
||||
def ShowProgress(self, frac, dur):
|
||||
"""Update the progress bar, advancing it over 'frac' over the next
|
||||
@@ -180,9 +177,9 @@ class EdifyGenerator(object):
|
||||
if "=" in option:
|
||||
key, value = option.split("=", 1)
|
||||
mount_dict[key] = value
|
||||
self.script.append('mount("%s", "%s", "%s", "%s", "%s");' %
|
||||
(p.fs_type, common.PARTITION_TYPES[p.fs_type],
|
||||
p.device, p.mount_point, mount_dict.get(p.fs_type, "")))
|
||||
self.script.append('mount("%s", "%s", "%s", "%s", "%s");' % (
|
||||
p.fs_type, common.PARTITION_TYPES[p.fs_type], p.device,
|
||||
p.mount_point, mount_dict.get(p.fs_type, "")))
|
||||
self.mounts.add(p.mount_point)
|
||||
|
||||
def UnpackPackageDir(self, src, dst):
|
||||
@@ -205,18 +202,17 @@ class EdifyGenerator(object):
|
||||
fstab = self.info.get("fstab", None)
|
||||
if fstab:
|
||||
p = fstab[partition]
|
||||
if (p.fs_type not in ( "ext2", "ext3", "ext4")):
|
||||
if p.fs_type not in ("ext2", "ext3", "ext4"):
|
||||
raise ValueError("Partition %s cannot be tuned\n" % (partition,))
|
||||
self.script.append('tune2fs(' +
|
||||
"".join(['"%s", ' % (i,) for i in options]) +
|
||||
'"%s") || abort("Failed to tune partition %s");'
|
||||
% ( p.device,partition));
|
||||
self.script.append(
|
||||
'tune2fs(' + "".join(['"%s", ' % (i,) for i in options]) +
|
||||
'"%s") || abort("Failed to tune partition %s");' % (
|
||||
p.device, partition))
|
||||
|
||||
def FormatPartition(self, partition):
|
||||
"""Format the given partition, specified by its mount point (eg,
|
||||
"/system")."""
|
||||
|
||||
reserve_size = 0
|
||||
fstab = self.info.get("fstab", None)
|
||||
if fstab:
|
||||
p = fstab[partition]
|
||||
@@ -235,9 +231,10 @@ class EdifyGenerator(object):
|
||||
|
||||
def DeleteFiles(self, file_list):
|
||||
"""Delete all files in file_list."""
|
||||
if not file_list: return
|
||||
if not file_list:
|
||||
return
|
||||
cmd = "delete(" + ",\0".join(['"%s"' % (i,) for i in file_list]) + ");"
|
||||
self.script.append(self._WordWrap(cmd))
|
||||
self.script.append(self.WordWrap(cmd))
|
||||
|
||||
def RenameFile(self, srcfile, tgtfile):
|
||||
"""Moves a file from one location to another."""
|
||||
@@ -251,7 +248,7 @@ class EdifyGenerator(object):
|
||||
skip the action if the file exists. Used when a patch
|
||||
is later renamed."""
|
||||
cmd = ('sha1_check(read_file("%s"), %s) || ' % (tgtfile, tgtsha1))
|
||||
self.script.append(self._WordWrap(cmd))
|
||||
self.script.append(self.WordWrap(cmd))
|
||||
|
||||
def ApplyPatch(self, srcfile, tgtfile, tgtsize, tgtsha1, *patchpairs):
|
||||
"""Apply binary patches (in *patchpairs) to the given srcfile to
|
||||
@@ -265,7 +262,7 @@ class EdifyGenerator(object):
|
||||
cmd.append(',\0%s, package_extract_file("%s")' % patchpairs[i:i+2])
|
||||
cmd.append(');')
|
||||
cmd = "".join(cmd)
|
||||
self.script.append(self._WordWrap(cmd))
|
||||
self.script.append(self.WordWrap(cmd))
|
||||
|
||||
def WriteRawImage(self, mount_point, fn, mapfn=None):
|
||||
"""Write the given package file into the partition for the given
|
||||
@@ -289,33 +286,37 @@ class EdifyGenerator(object):
|
||||
self.script.append(
|
||||
'package_extract_file("%(fn)s", "%(device)s");' % args)
|
||||
else:
|
||||
raise ValueError("don't know how to write \"%s\" partitions" % (p.fs_type,))
|
||||
raise ValueError(
|
||||
"don't know how to write \"%s\" partitions" % p.fs_type)
|
||||
|
||||
def SetPermissions(self, fn, uid, gid, mode, selabel, capabilities):
|
||||
"""Set file ownership and permissions."""
|
||||
if not self.info.get("use_set_metadata", False):
|
||||
self.script.append('set_perm(%d, %d, 0%o, "%s");' % (uid, gid, mode, fn))
|
||||
else:
|
||||
if capabilities is None: capabilities = "0x0"
|
||||
if capabilities is None:
|
||||
capabilities = "0x0"
|
||||
cmd = 'set_metadata("%s", "uid", %d, "gid", %d, "mode", 0%o, ' \
|
||||
'"capabilities", %s' % (fn, uid, gid, mode, capabilities)
|
||||
if selabel is not None:
|
||||
cmd += ', "selabel", "%s"' % ( selabel )
|
||||
cmd += ', "selabel", "%s"' % selabel
|
||||
cmd += ');'
|
||||
self.script.append(cmd)
|
||||
|
||||
def SetPermissionsRecursive(self, fn, uid, gid, dmode, fmode, selabel, capabilities):
|
||||
def SetPermissionsRecursive(self, fn, uid, gid, dmode, fmode, selabel,
|
||||
capabilities):
|
||||
"""Recursively set path ownership and permissions."""
|
||||
if not self.info.get("use_set_metadata", False):
|
||||
self.script.append('set_perm_recursive(%d, %d, 0%o, 0%o, "%s");'
|
||||
% (uid, gid, dmode, fmode, fn))
|
||||
else:
|
||||
if capabilities is None: capabilities = "0x0"
|
||||
if capabilities is None:
|
||||
capabilities = "0x0"
|
||||
cmd = 'set_metadata_recursive("%s", "uid", %d, "gid", %d, ' \
|
||||
'"dmode", 0%o, "fmode", 0%o, "capabilities", %s' \
|
||||
% (fn, uid, gid, dmode, fmode, capabilities)
|
||||
if selabel is not None:
|
||||
cmd += ', "selabel", "%s"' % ( selabel )
|
||||
cmd += ', "selabel", "%s"' % selabel
|
||||
cmd += ');'
|
||||
self.script.append(cmd)
|
||||
|
||||
@@ -328,15 +329,15 @@ class EdifyGenerator(object):
|
||||
for dest, links in sorted(by_dest.iteritems()):
|
||||
cmd = ('symlink("%s", ' % (dest,) +
|
||||
",\0".join(['"' + i + '"' for i in sorted(links)]) + ");")
|
||||
self.script.append(self._WordWrap(cmd))
|
||||
self.script.append(self.WordWrap(cmd))
|
||||
|
||||
def AppendExtra(self, extra):
|
||||
"""Append text verbatim to the output script."""
|
||||
self.script.append(extra)
|
||||
|
||||
def Unmount(self, mount_point):
|
||||
self.script.append('unmount("%s");' % (mount_point,))
|
||||
self.mounts.remove(mount_point);
|
||||
self.script.append('unmount("%s");' % mount_point)
|
||||
self.mounts.remove(mount_point)
|
||||
|
||||
def UnmountAll(self):
|
||||
for p in sorted(self.mounts):
|
||||
@@ -359,4 +360,4 @@ class EdifyGenerator(object):
|
||||
else:
|
||||
data = open(input_path, "rb").read()
|
||||
common.ZipWriteStr(output_zip, "META-INF/com/google/android/update-binary",
|
||||
data, perms=0755)
|
||||
data, perms=0o755)
|
||||
|
Reference in New Issue
Block a user