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

Commit 75f1f6f0 authored by Ken Sumrall's avatar Ken Sumrall Committed by Android (Google) Code Review
Browse files

Merge "Add unified fstab support to release tools"

parents e51e3691 3b07cf12
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