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

Commit 9793cf6c authored by Steve Muckle's avatar Steve Muckle
Browse files

support multiple boot.img files in release tools

Support for generating multiple boot.img files is required in the
release tools to enable GKI distribution/signing.

Bug: 151094943
Change-Id: I536a286d3123f35918106a52c49b1148d746370f
parent 10346271
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -4167,6 +4167,8 @@ ifdef BOARD_BOOTIMAGE_PARTITION_SIZE
endif
ifeq ($(INSTALLED_BOOTIMAGE_TARGET),)
	$(hide) echo "no_boot=true" >> $@
else
	echo "boot_images=$(foreach b,$(INSTALLED_BOOTIMAGE_TARGET),$(notdir $(b)))" >> $@
endif
ifneq ($(INSTALLED_VENDOR_BOOTIMAGE_TARGET),)
	echo "vendor_boot=true" >> $@
+18 −10
Original line number Diff line number Diff line
@@ -731,13 +731,21 @@ def AddImagesToTargetFiles(filename):
  boot_image = None
  if has_boot:
    banner("boot")
    boot_images = OPTIONS.info_dict.get("boot_images")
    if boot_images is None:
      boot_images = "boot.img"
    for b in boot_images.split():
      # common.GetBootableImage() returns the image directly if present.
      boot_image = common.GetBootableImage(
        "IMAGES/boot.img", "boot.img", OPTIONS.input_tmp, "BOOT")
          "IMAGES/" + b, b, OPTIONS.input_tmp, "BOOT")
      # boot.img may be unavailable in some targets (e.g. aosp_arm64).
      if boot_image:
      partitions['boot'] = os.path.join(OPTIONS.input_tmp, "IMAGES", "boot.img")
      if not os.path.exists(partitions['boot']):
        boot_image_path = os.path.join(OPTIONS.input_tmp, "IMAGES", b)
        # vbmeta does not need to include boot.img with multiple boot.img files,
        # which is only used for aosp_arm64 for GKI
        if len(boot_images.split()) == 1:
          partitions['boot'] = boot_image_path
        if not os.path.exists(boot_image_path):
          boot_image.WriteToDir(OPTIONS.input_tmp)
          if output_zip:
            boot_image.AddToZip(output_zip)
+12 −7
Original line number Diff line number Diff line
@@ -1047,7 +1047,7 @@ def _MakeRamdisk(sourcedir, fs_config_file=None):
  return ramdisk_img


def _BuildBootableImage(sourcedir, fs_config_file, info_dict=None,
def _BuildBootableImage(image_name, sourcedir, fs_config_file, info_dict=None,
                        has_ramdisk=False, two_step_image=False):
  """Build a bootable image from the specified sourcedir.

@@ -1060,7 +1060,15 @@ def _BuildBootableImage(sourcedir, fs_config_file, info_dict=None,
  for building the requested image.
  """

  if not os.access(os.path.join(sourcedir, "kernel"), os.F_OK):
  # "boot" or "recovery", without extension.
  partition_name = os.path.basename(sourcedir).lower()

  if partition_name == "recovery":
    kernel = "kernel"
  else:
    kernel = image_name.replace("boot", "kernel")
    kernel = kernel.replace(".img","")
  if not os.access(os.path.join(sourcedir, kernel), os.F_OK):
    return None

  if has_ramdisk and not os.access(os.path.join(sourcedir, "RAMDISK"), os.F_OK):
@@ -1077,7 +1085,7 @@ def _BuildBootableImage(sourcedir, fs_config_file, info_dict=None,
  # use MKBOOTIMG from environ, or "mkbootimg" if empty or not set
  mkbootimg = os.getenv('MKBOOTIMG') or "mkbootimg"

  cmd = [mkbootimg, "--kernel", os.path.join(sourcedir, "kernel")]
  cmd = [mkbootimg, "--kernel", os.path.join(sourcedir, kernel)]

  fn = os.path.join(sourcedir, "second")
  if os.access(fn, os.F_OK):
@@ -1104,9 +1112,6 @@ def _BuildBootableImage(sourcedir, fs_config_file, info_dict=None,
    cmd.append("--pagesize")
    cmd.append(open(fn).read().rstrip("\n"))

  # "boot" or "recovery", without extension.
  partition_name = os.path.basename(sourcedir).lower()

  if partition_name == "recovery":
    args = info_dict.get("recovery_mkbootimg_args")
  else:
@@ -1229,7 +1234,7 @@ def GetBootableImage(name, prebuilt_name, unpack_dir, tree_subdir,
                 info_dict.get("recovery_as_boot") == "true")

  fs_config = "META/" + tree_subdir.lower() + "_filesystem_config.txt"
  data = _BuildBootableImage(os.path.join(unpack_dir, tree_subdir),
  data = _BuildBootableImage(prebuilt_name, os.path.join(unpack_dir, tree_subdir),
                             os.path.join(unpack_dir, fs_config),
                             info_dict, has_ramdisk, two_step_image)
  if data: