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

Commit 62d4f18a authored by Doug Zongker's avatar Doug Zongker
Browse files

fall back to generating full OTA if incremental fails

Block incremental OTA generation can currently fail on some
target-files pairs.  Fall back to generating a full OTA so that the
script succeeds rather than failing.

Change-Id: Ide70395d1f3759aa2076bd173836f6a5e5b397c0
parent 4dfb5580
Loading
Loading
Loading
Loading
+45 −29
Original line number Diff line number Diff line
@@ -118,6 +118,7 @@ OPTIONS.no_signing = False
OPTIONS.block_based = False
OPTIONS.updater_binary = None
OPTIONS.oem_source = None
OPTIONS.fallback_to_full = True

def MostPopularKey(d, default):
  """Given a dict, return the key corresponding to the largest
@@ -1439,6 +1440,8 @@ def main(argv):
      OPTIONS.block_based = True
    elif o in ("-b", "--binary"):
      OPTIONS.updater_binary = a
    elif o in ("--no_fallback_to_full",):
      OPTIONS.fallback_to_full = False
    else:
      return False
    return True
@@ -1458,6 +1461,7 @@ def main(argv):
                                              "block",
                                              "binary=",
                                              "oem_settings=",
                                              "no_fallback_to_full",
                                              ],
                             extra_option_handler=option_handler)

@@ -1504,7 +1508,10 @@ def main(argv):
  if OPTIONS.device_specific is not None:
    OPTIONS.device_specific = os.path.abspath(OPTIONS.device_specific)

  while True:

    if OPTIONS.no_signing:
      if os.path.exists(args[1]): os.unlink(args[1])
      output_zip = zipfile.ZipFile(args[1], "w", compression=zipfile.ZIP_DEFLATED)
    else:
      temp_zip_file = tempfile.NamedTemporaryFile()
@@ -1517,6 +1524,8 @@ def main(argv):
        OPTIONS.package_key = OPTIONS.info_dict.get(
            "default_system_dev_certificate",
            "build/target/product/security/testkey")
      break

    else:
      print "unzipping source target-files..."
      OPTIONS.source_tmp, source_zip = common.UnzipTemp(OPTIONS.incremental_source)
@@ -1532,7 +1541,14 @@ def main(argv):
      if OPTIONS.verbose:
        print "--- source info ---"
        common.DumpInfoDict(OPTIONS.source_info_dict)
      try:
        WriteIncrementalOTAPackage(input_zip, source_zip, output_zip)
        break
      except ValueError:
        if not OPTIONS.fallback_to_full: raise
        print "--- failed to build incremental; falling back to full ---"
        OPTIONS.incremental_source = None
        output_zip.close()

  output_zip.close()