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

Commit ec4b69a7 authored by Bill Peckham's avatar Bill Peckham Committed by android-build-merger
Browse files

Merge "Add support merging system and other for the non-A/B configuration." am: 5f4186b0

am: a635376c

Change-Id: Ibdc6ec6facf44479f8ef0516988f9fc2fa1c7a53
parents 11eb0df2 a635376c
Loading
Loading
Loading
Loading
+53 −8
Original line number Diff line number Diff line
@@ -47,6 +47,9 @@ Usage: merge_target_files.py [args]
  --rebuild_recovery
      Rebuild the recovery patch used by non-A/B devices and write it to the
      system image.

  --keep-tmp
      Keep tempoary files for debugging purposes.
"""

from __future__ import print_function
@@ -296,6 +299,37 @@ def process_ab_partitions_txt(
      output.write('%s\n' % partition)


def append_recovery_to_filesystem_config(output_target_files_temp_dir):
  """Perform special processing for META/filesystem_config.txt

  This function appends recovery information to META/filesystem_config.txt
  so that recovery patch regeneration will succeed.

  Args:
    output_target_files_temp_dir: The name of a directory that will be used
    to create the output target files package after all the special cases
    are processed. We find filesystem_config.txt here.
  """

  filesystem_config_txt = os.path.join(
      output_target_files_temp_dir,
      'META',
      'filesystem_config.txt')

  with open(filesystem_config_txt, 'a') as f:
    # TODO(bpeckham) this data is hard coded. It should be generated
    # programmatically.
    f.write(
        'system/bin/install-recovery.sh 0 0 750 '
        'selabel=u:object_r:install_recovery_exec:s0 capabilities=0x0\n')
    f.write(
        'system/recovery-from-boot.p 0 0 644 '
        'selabel=u:object_r:system_file:s0 capabilities=0x0\n')
    f.write(
        'system/etc/recovery.img 0 0 440 '
        'selabel=u:object_r:install_recovery_exec:s0 capabilities=0x0\n')


def process_misc_info_txt(
    system_target_files_temp_dir,
    other_target_files_temp_dir,
@@ -454,7 +488,9 @@ def process_special_cases(
    system_target_files_temp_dir,
    other_target_files_temp_dir,
    output_target_files_temp_dir,
    system_misc_info_keys):
    system_misc_info_keys,
    rebuild_recovery
):
  """Perform special-case processing for certain target files items.

  Certain files in the output target files package require special-case
@@ -476,13 +512,21 @@ def process_special_cases(

    system_misc_info_keys: A list of keys to obtain from the system instance
    of META/misc_info.txt. The remaining keys from the other instance.

    rebuild_recovery: If true, rebuild the recovery patch used by non-A/B
    devices and write it to the system image.
  """

  if 'ab_update' in system_misc_info_keys:
    process_ab_partitions_txt(
        system_target_files_temp_dir=system_target_files_temp_dir,
        other_target_files_temp_dir=other_target_files_temp_dir,
        output_target_files_temp_dir=output_target_files_temp_dir)

  if rebuild_recovery:
    append_recovery_to_filesystem_config(
        output_target_files_temp_dir=output_target_files_temp_dir)

  process_misc_info_txt(
      system_target_files_temp_dir=system_target_files_temp_dir,
      other_target_files_temp_dir=other_target_files_temp_dir,
@@ -599,7 +643,8 @@ def merge_target_files(
      system_target_files_temp_dir=system_target_files_temp_dir,
      other_target_files_temp_dir=other_target_files_temp_dir,
      output_target_files_temp_dir=output_target_files_temp_dir,
      system_misc_info_keys=system_misc_info_keys)
      system_misc_info_keys=system_misc_info_keys,
      rebuild_recovery=rebuild_recovery)

  # Regenerate IMAGES in the temporary directory.

@@ -704,7 +749,7 @@ def main():
      OPTIONS.output_target_files = a
    elif o == '--rebuild_recovery':
      OPTIONS.rebuild_recovery = True
    elif o == '--keep_tmp':
    elif o == '--keep-tmp':
      OPTIONS.keep_tmp = True
    else:
      return False
@@ -720,7 +765,7 @@ def main():
          'other-item-list=',
          'output-target-files=',
          'rebuild_recovery',
          "keep_tmp",
          'keep-tmp',
      ],
      extra_option_handler=option_handler)