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

Commit 7187b548 authored by Daniel Zheng's avatar Daniel Zheng Committed by Gerrit Code Review
Browse files

Merge "Full ota v3 compatibilty check" into main

parents 7167ed9a 2826b1a2
Loading
Loading
Loading
Loading
+15 −1
Original line number Diff line number Diff line
@@ -872,6 +872,7 @@ def GenerateAbOtaPackage(target_file, output_file, source_file=None):
  target_info = common.BuildInfo(OPTIONS.info_dict, OPTIONS.oem_dicts)
  if OPTIONS.disable_vabc and target_info.is_release_key:
    raise ValueError("Disabling VABC on release-key builds is not supported.")

  ValidateCompressionParam(target_info)
  vabc_compression_param = target_info.vabc_compression_param

@@ -907,7 +908,6 @@ def GenerateAbOtaPackage(target_file, output_file, source_file=None):
      logger.info("Source build and target build use different compression methods {} vs {}, default to source builds parameter {}".format(
          source_info.vabc_compression_param, target_info.vabc_compression_param, source_info.vabc_compression_param))
      vabc_compression_param = source_info.vabc_compression_param

    # Virtual AB Cow version 3 is introduced in Android U with improved memory
    # and install time performance. All OTA's with
    # both the source build and target build with VIRTUAL_AB_COW_VERSION = 3
@@ -918,6 +918,7 @@ def GenerateAbOtaPackage(target_file, output_file, source_file=None):
    elif source_info.vabc_cow_version != target_info.vabc_cow_version:
      logger.info("Source and Target have different cow VABC_COW_VERSION specified, default to minimum version")
      OPTIONS.vabc_cow_version = min(source_info.vabc_cow_version, target_info.vabc_cow_version)

    # Virtual AB Compression was introduced in Androd S.
    # Later, we backported VABC to Android R. But verity support was not
    # backported, so if VABC is used and we are on Android R, disable
@@ -930,6 +931,19 @@ def GenerateAbOtaPackage(target_file, output_file, source_file=None):
    assert "ab_partitions" in OPTIONS.info_dict, \
        "META/ab_partitions.txt is required for ab_update."
    source_info = None
    if not target_info.vabc_cow_version:
        OPTIONS.vabc_cow_version = 2
    elif target_info.vabc_cow_version >= "3" and target_info.vendor_api_level < 35:
      logger.warning(
            "This full OTA is configured to use VABC cow version"
            " 3 which is supported since"
            " Android API level 35, but device is "
            "launched with {} . If this full OTA is"
            " served to a device running old build, OTA might fail due to "
            "unsupported vabc cow version. For safety, version 2 is used because "
            "it's supported since day 1.".format(
                target_info.vendor_api_level))
      OPTIONS.vabc_cow_version = 2
    if OPTIONS.vabc_compression_param is None and vabc_compression_param:
      minimum_api_level_required = VABC_COMPRESSION_PARAM_SUPPORT[
          vabc_compression_param]