Add unified fstab support to release tools
Update the release tools to be able to handle the new unified fstab. Change-Id: Id9d1810c89aba415e83ae2fc586520f148ec73ef
This commit is contained in:
@@ -117,6 +117,9 @@ def LoadInfoDict(zip):
|
|||||||
# ok if extensions don't exist
|
# ok if extensions don't exist
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
if "fstab_version" not in d:
|
||||||
|
d["fstab_version"] = "1"
|
||||||
|
|
||||||
try:
|
try:
|
||||||
data = zip.read("META/imagesizes.txt")
|
data = zip.read("META/imagesizes.txt")
|
||||||
for line in data.split("\n"):
|
for line in data.split("\n"):
|
||||||
@@ -141,8 +144,9 @@ def LoadInfoDict(zip):
|
|||||||
makeint("cache_size")
|
makeint("cache_size")
|
||||||
makeint("recovery_size")
|
makeint("recovery_size")
|
||||||
makeint("boot_size")
|
makeint("boot_size")
|
||||||
|
makeint("fstab_version")
|
||||||
|
|
||||||
d["fstab"] = LoadRecoveryFSTab(zip)
|
d["fstab"] = LoadRecoveryFSTab(zip, d["fstab_version"])
|
||||||
d["build.prop"] = LoadBuildProp(zip)
|
d["build.prop"] = LoadBuildProp(zip)
|
||||||
return d
|
return d
|
||||||
|
|
||||||
@@ -161,7 +165,7 @@ def LoadBuildProp(zip):
|
|||||||
d[name] = value
|
d[name] = value
|
||||||
return d
|
return d
|
||||||
|
|
||||||
def LoadRecoveryFSTab(zip):
|
def LoadRecoveryFSTab(zip, fstab_version):
|
||||||
class Partition(object):
|
class Partition(object):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@@ -171,6 +175,7 @@ def LoadRecoveryFSTab(zip):
|
|||||||
print "Warning: could not find RECOVERY/RAMDISK/etc/recovery.fstab in %s." % zip
|
print "Warning: could not find RECOVERY/RAMDISK/etc/recovery.fstab in %s." % zip
|
||||||
data = ""
|
data = ""
|
||||||
|
|
||||||
|
if fstab_version == 1:
|
||||||
d = {}
|
d = {}
|
||||||
for line in data.split("\n"):
|
for line in data.split("\n"):
|
||||||
line = line.strip()
|
line = line.strip()
|
||||||
@@ -205,6 +210,41 @@ def LoadRecoveryFSTab(zip):
|
|||||||
print "%s: unknown option \"%s\"" % (p.mount_point, i)
|
print "%s: unknown option \"%s\"" % (p.mount_point, i)
|
||||||
|
|
||||||
d[p.mount_point] = p
|
d[p.mount_point] = p
|
||||||
|
|
||||||
|
elif fstab_version == 2:
|
||||||
|
d = {}
|
||||||
|
for line in data.split("\n"):
|
||||||
|
line = line.strip()
|
||||||
|
if not line or line.startswith("#"): continue
|
||||||
|
pieces = line.split()
|
||||||
|
if len(pieces) != 5:
|
||||||
|
raise ValueError("malformed recovery.fstab line: \"%s\"" % (line,))
|
||||||
|
|
||||||
|
# Ignore entries that are managed by vold
|
||||||
|
options = pieces[4]
|
||||||
|
if "voldmanaged=" in options: continue
|
||||||
|
|
||||||
|
# It's a good line, parse it
|
||||||
|
p = Partition()
|
||||||
|
p.device = pieces[0]
|
||||||
|
p.mount_point = pieces[1]
|
||||||
|
p.fs_type = pieces[2]
|
||||||
|
p.device2 = None
|
||||||
|
p.length = 0
|
||||||
|
|
||||||
|
options = options.split(",")
|
||||||
|
for i in options:
|
||||||
|
if i.startswith("length="):
|
||||||
|
p.length = int(i[7:])
|
||||||
|
else:
|
||||||
|
# Ignore all unknown options in the unified fstab
|
||||||
|
continue
|
||||||
|
|
||||||
|
d[p.mount_point] = p
|
||||||
|
|
||||||
|
else:
|
||||||
|
raise ValueError("Unknown fstab_version: \"%d\"" % (fstab_version,))
|
||||||
|
|
||||||
return d
|
return d
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user