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

Commit 16d6fe09 authored by Dennis Song's avatar Dennis Song
Browse files

Allow rebuild sepolicy even though the image does not exist.

The `--rebuild-sepolicy` option should work when the target
files folder `ODM/` or `VENDOR/` exists. We should not
assume that there is always an image to remove.

Bug: 270529723
Test: m otatools; Create merged builds with rebuild_sepolicy.
Change-Id: I93aeea2cd084fdc7f8179732d77a78bb1d144616
parent 40be8db0
Loading
Loading
Loading
Loading
+14 −4
Original line number Diff line number Diff line
@@ -156,6 +156,15 @@ def move_only_exists(source, destination):
    shutil.move(source, destination)


def remove_file_if_exists(file_name):
  """Remove the file if it exists and skip otherwise."""

  try:
    os.remove(file_name)
  except FileNotFoundError:
    pass


def create_merged_package(temp_dir):
  """Merges two target files packages into one target files structure.

@@ -210,8 +219,7 @@ def rebuild_image_with_sepolicy(target_files_dir):
  If odm is present then odm is preferred -- otherwise vendor is used.
  """
  partition = 'vendor'
  if os.path.exists(os.path.join(target_files_dir, 'ODM')) or os.path.exists(
      os.path.join(target_files_dir, 'IMAGES/odm.img')):
  if os.path.exists(os.path.join(target_files_dir, 'ODM')):
    partition = 'odm'
  partition_img = '{}.img'.format(partition)
  partition_map = '{}.map'.format(partition)
@@ -245,7 +253,8 @@ def rebuild_image_with_sepolicy(target_files_dir):
  if not OPTIONS.vendor_otatools:
    # Remove the partition from the merged target-files archive. It will be
    # rebuilt later automatically by generate_missing_images().
    os.remove(os.path.join(target_files_dir, 'IMAGES', partition_img))
    remove_file_if_exists(
        os.path.join(target_files_dir, 'IMAGES', partition_img))
    return

  # TODO(b/192253131): Remove the need for vendor_otatools by fixing
@@ -274,7 +283,8 @@ def rebuild_image_with_sepolicy(target_files_dir):
      symlinks=True)

  # Delete then rebuild the partition.
  os.remove(os.path.join(vendor_target_files_dir, 'IMAGES', partition_img))
  remove_file_if_exists(
      os.path.join(vendor_target_files_dir, 'IMAGES', partition_img))
  rebuild_partition_command = [
      os.path.join(vendor_otatools_dir, 'bin', 'add_img_to_target_files'),
      '--verbose',