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

Commit de90b030 authored by Ying Wang's avatar Ying Wang Committed by Gerrit Code Review
Browse files

Merge "A build property's value is returned empty in runtime when its length...

Merge "A build property's value is returned empty in runtime when its length exceeds 92 symbols (91 valid symbols + \0). It is better to catch that issue on earlier stage, i.e. fail the build with an appropriate message."
parents bec954d0 115c66bd
Loading
Loading
Loading
Loading
+32 −1
Original line number Diff line number Diff line
@@ -19,7 +19,27 @@ import sys
# Put the modifications that you need to make into the /system/build.prop into this
# function. The prop object has get(name) and put(name,value) methods.
def mangle_build_prop(prop):
  pass
  buildprops=prop.buildprops
  check_pass=True
  for key in buildprops:
    # Check build properties' length.
    # Terminator(\0) added into the provided value of properties
    # Total length (including terminator) will be no greater that PROP_VALUE_MAX(92).
    if len(buildprops[key]) > 91:
      # If dev build, show a warning message, otherwise fail the build with error message
      if prop.get("ro.build.version.incremental").startswith("eng"):
        sys.stderr.write("warning: " + key + " exceeds 91 symbols: ")
        sys.stderr.write(buildprops[key])
        sys.stderr.write("(" + str(len(buildprops[key])) + ") \n")
        sys.stderr.write("warning: This will cause the " + key + " ")
        sys.stderr.write("property return as empty at runtime\n")
      else:
        check_pass=False
        sys.stderr.write("error: " + key + " cannot exceed 91 symbols: ")
        sys.stderr.write(buildprops[key])
        sys.stderr.write("(" + str(len(buildprops[key])) + ") \n")
  if not check_pass:
    sys.exit(1)

# Put the modifications that you need to make into the /system/build.prop into this
# function. The prop object has get(name) and put(name,value) methods.
@@ -40,8 +60,19 @@ def mangle_default_prop(prop):
    prop.put("persist.sys.usb.config", "none");

class PropFile:

  buildprops={}

  def __init__(self, lines):
    self.lines = [s[:-1] for s in lines]
    for line in self.lines:
      line=line.strip()
      if not line.strip() or line.startswith("#"):
        continue
      index=line.find("=")
      key=line[0:index]
      value=line[index+1:]
      self.buildprops[key]=value

  def get(self, name):
    key = name + "="