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

Commit 7934f148 authored by Tianjie Xu's avatar Tianjie Xu Committed by android-build-merger
Browse files

Merge "OTA: Add an option to dump the metadata in ota package" am: 65cd6be6

am: f95abe47

Change-Id: Id54d08210242dc9c6d5fccd7b6ed8d310564129b
parents fbc06615 f95abe47
Loading
Loading
Loading
Loading
+28 −3
Original line number Original line Diff line number Diff line
@@ -74,6 +74,10 @@ Common options that apply to both of non-A/B and A/B OTAs
  --skip_compatibility_check
  --skip_compatibility_check
      Skip adding the compatibility package to the generated OTA package.
      Skip adding the compatibility package to the generated OTA package.


  --output_metadata_path
      Write a copy of the metadata to a separate file. Therefore, users can
      read the post build fingerprint without extracting the OTA package.

Non-A/B OTA specific options
Non-A/B OTA specific options


  -b  (--binary) <file>
  -b  (--binary) <file>
@@ -225,6 +229,7 @@ OPTIONS.key_passwords = []
OPTIONS.skip_postinstall = False
OPTIONS.skip_postinstall = False
OPTIONS.retrofit_dynamic_partitions = False
OPTIONS.retrofit_dynamic_partitions = False
OPTIONS.skip_compatibility_check = False
OPTIONS.skip_compatibility_check = False
OPTIONS.output_metadata_path = None




METADATA_NAME = 'META-INF/com/android/metadata'
METADATA_NAME = 'META-INF/com/android/metadata'
@@ -978,10 +983,22 @@ endif;
  FinalizeMetadata(metadata, staging_file, output_file, needed_property_files)
  FinalizeMetadata(metadata, staging_file, output_file, needed_property_files)




def WriteMetadata(metadata, output_zip):
def WriteMetadata(metadata, output):
  """Writes the metadata to the zip archive or a file.

  Args:
    metadata: The metadata dict for the package.
    output: A ZipFile object or a string of the output file path.
  """

  value = "".join(["%s=%s\n" % kv for kv in sorted(metadata.iteritems())])
  value = "".join(["%s=%s\n" % kv for kv in sorted(metadata.iteritems())])
  common.ZipWriteStr(output_zip, METADATA_NAME, value,
  if isinstance(output, zipfile.ZipFile):
    common.ZipWriteStr(output, METADATA_NAME, value,
                       compress_type=zipfile.ZIP_STORED)
                       compress_type=zipfile.ZIP_STORED)
    return

  with open(output, 'w') as f:
    f.write(value)




def HandleDowngradeMetadata(metadata, target_info, source_info):
def HandleDowngradeMetadata(metadata, target_info, source_info):
@@ -1425,6 +1442,11 @@ def FinalizeMetadata(metadata, input_file, output_file, needed_property_files):
    for property_files in needed_property_files:
    for property_files in needed_property_files:
      property_files.Verify(output_zip, metadata[property_files.name].strip())
      property_files.Verify(output_zip, metadata[property_files.name].strip())


  # If requested, dump the metadata to a separate file.
  output_metadata_path = OPTIONS.output_metadata_path
  if output_metadata_path:
    WriteMetadata(metadata, output_metadata_path)



def WriteBlockIncrementalOTAPackage(target_zip, source_zip, output_file):
def WriteBlockIncrementalOTAPackage(target_zip, source_zip, output_file):
  target_info = BuildInfo(OPTIONS.target_info_dict, OPTIONS.oem_dicts)
  target_info = BuildInfo(OPTIONS.target_info_dict, OPTIONS.oem_dicts)
@@ -2043,6 +2065,8 @@ def main(argv):
      OPTIONS.retrofit_dynamic_partitions = True
      OPTIONS.retrofit_dynamic_partitions = True
    elif o == "--skip_compatibility_check":
    elif o == "--skip_compatibility_check":
      OPTIONS.skip_compatibility_check = True
      OPTIONS.skip_compatibility_check = True
    elif o == "--output_metadata_path":
      OPTIONS.output_metadata_path = a
    else:
    else:
      return False
      return False
    return True
    return True
@@ -2075,6 +2099,7 @@ def main(argv):
                                 "skip_postinstall",
                                 "skip_postinstall",
                                 "retrofit_dynamic_partitions",
                                 "retrofit_dynamic_partitions",
                                 "skip_compatibility_check",
                                 "skip_compatibility_check",
                                 "output_metadata_path=",
                             ], extra_option_handler=option_handler)
                             ], extra_option_handler=option_handler)


  if len(args) != 2:
  if len(args) != 2: