Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 44281a1f authored by Ken Sumrall's avatar Ken Sumrall
Browse files

Add unified fstab support to release tools

Update the release tools to be able to handle the new unified fstab.

Change-Id: Id9d1810c89aba415e83ae2fc586520f148ec73ef
parent d6cb8fac
Loading
Loading
Loading
Loading
+66 −26
Original line number Diff line number Diff line
@@ -117,6 +117,9 @@ def LoadInfoDict(zip):
      # ok if extensions don't exist
      pass

  if "fstab_version" not in d:
    d["fstab_version"] = "1"

  try:
    data = zip.read("META/imagesizes.txt")
    for line in data.split("\n"):
@@ -141,8 +144,9 @@ def LoadInfoDict(zip):
  makeint("cache_size")
  makeint("recovery_size")
  makeint("boot_size")
  makeint("fstab_version")

  d["fstab"] = LoadRecoveryFSTab(zip)
  d["fstab"] = LoadRecoveryFSTab(zip, d["fstab_version"])
  d["build.prop"] = LoadBuildProp(zip)
  return d

@@ -161,7 +165,7 @@ def LoadBuildProp(zip):
    d[name] = value
  return d

def LoadRecoveryFSTab(zip):
def LoadRecoveryFSTab(zip, fstab_version):
  class Partition(object):
    pass

@@ -171,6 +175,7 @@ def LoadRecoveryFSTab(zip):
    print "Warning: could not find RECOVERY/RAMDISK/etc/recovery.fstab in %s." % zip
    data = ""

  if fstab_version == 1:
    d = {}
    for line in data.split("\n"):
      line = line.strip()
@@ -205,6 +210,41 @@ def LoadRecoveryFSTab(zip):
              print "%s: unknown option \"%s\"" % (p.mount_point, i)

      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