# apply all the -e options, overriding anything in the file
for apk, cert in OPTIONS.extra_apks.iteritems():
+ if not cert:
+ cert = "PRESIGNED"
certmap[apk] = OPTIONS.key_map.get(cert, cert)
return certmap
output_tf_zip.writestr(out_info, data)
+def EditTags(tags):
+ """Given a string containing comma-separated tags, apply the edits
+ specified in OPTIONS.tag_changes and return the updated string."""
+ tags = set(tags.split(","))
+ for ch in OPTIONS.tag_changes:
+ if ch[0] == "-":
+ tags.discard(ch[1:])
+ elif ch[0] == "+":
+ tags.add(ch[1:])
+ return ",".join(sorted(tags))
+
+
def RewriteProps(data):
output = []
for line in data.split("\n"):
if line and line[0] != '#':
key, value = line.split("=", 1)
if key == "ro.build.fingerprint":
- pieces = line.split("/")
- tags = set(pieces[-1].split(","))
- for ch in OPTIONS.tag_changes:
- if ch[0] == "-":
- tags.discard(ch[1:])
- elif ch[0] == "+":
- tags.add(ch[1:])
- line = "/".join(pieces[:-1] + [",".join(sorted(tags))])
+ pieces = value.split("/")
+ pieces[-1] = EditTags(pieces[-1])
+ value = "/".join(pieces)
elif key == "ro.build.description":
- pieces = line.split(" ")
+ pieces = value.split(" ")
assert len(pieces) == 5
- tags = set(pieces[-1].split(","))
- for ch in OPTIONS.tag_changes:
- if ch[0] == "-":
- tags.discard(ch[1:])
- elif ch[0] == "+":
- tags.add(ch[1:])
- line = " ".join(pieces[:-1] + [",".join(sorted(tags))])
+ pieces[-1] = EditTags(pieces[-1])
+ value = " ".join(pieces)
+ elif key == "ro.build.tags":
+ value = EditTags(value)
+ line = key + "=" + value
if line != original_line:
print " replace: ", original_line
print " with: ", line