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

Commit b8a2f9df authored by Daniel Norman's avatar Daniel Norman
Browse files

Adds support to create img from target files directory instead of zip.

This is used by merge_target_files to prevent an unnecessary unzip and
copy.

Test: Ran merge_target_files.py and booted using the img.zip.
Change-Id: I6fe0dd025b30b3f4965c9b22fb6943019bf5899b
parent ff14c471
Loading
Loading
Loading
Loading
+19 −3
Original line number Original line Diff line number Diff line
@@ -15,11 +15,18 @@
# limitations under the License.
# limitations under the License.


"""
"""
Given a target-files zipfile, produces an image zipfile suitable for
Given target-files, produces an image zipfile suitable for use
use with 'fastboot update'.
with 'fastboot update'.


Usage:  img_from_target_files [flags] input_target_files output_image_zip
Usage:  img_from_target_files [flags] input_target_files output_image_zip


input_target_files: one of the following:
  - directory containing extracted target files. It will load info from
    OTA/android-info.txt and build the image zipfile using images from IMAGES/.
  - target files package. Same as above, but extracts the archive before
    building the image zipfile.

Flags:
  -z  (--bootable_zip)
  -z  (--bootable_zip)
      Include only the bootable images (eg 'boot' and 'recovery') in
      Include only the bootable images (eg 'boot' and 'recovery') in
      the output.
      the output.
@@ -76,7 +83,16 @@ def main(argv):


  common.InitLogging()
  common.InitLogging()


  target_files = args[0]
  if os.path.isdir(target_files):
    logger.info("Building image zip from extracted target files.")
    OPTIONS.input_tmp = target_files
  elif zipfile.is_zipfile(target_files):
    logger.info("Building image zip from target files zip.")
    OPTIONS.input_tmp = common.UnzipTemp(args[0], ["IMAGES/*", "OTA/*"])
    OPTIONS.input_tmp = common.UnzipTemp(args[0], ["IMAGES/*", "OTA/*"])
  else:
    raise ValueError("%s is not a valid path." % target_files)

  output_zip = zipfile.ZipFile(args[1], "w", compression=zipfile.ZIP_DEFLATED)
  output_zip = zipfile.ZipFile(args[1], "w", compression=zipfile.ZIP_DEFLATED)
  CopyInfo(output_zip)
  CopyInfo(output_zip)


+10 −8
Original line number Original line Diff line number Diff line
@@ -698,6 +698,16 @@ def merge_target_files(temp_dir, system_target_files, system_item_list,
    if output_super_empty:
    if output_super_empty:
      shutil.copyfile(super_empty_img, output_super_empty)
      shutil.copyfile(super_empty_img, output_super_empty)


  # Create the IMG package from the merged target files (before zipping, in
  # order to avoid an unnecessary unzip and copy).

  if output_img:
    img_from_target_files_args = [
        output_target_files_temp_dir,
        output_img,
    ]
    img_from_target_files.main(img_from_target_files_args)

  # Finally, create the output target files zip archive and/or copy the
  # Finally, create the output target files zip archive and/or copy the
  # output items to the output target files directory.
  # output items to the output target files directory.


@@ -751,14 +761,6 @@ def merge_target_files(temp_dir, system_target_files, system_item_list,
    ]
    ]
    ota_from_target_files.main(ota_from_target_files_args)
    ota_from_target_files.main(ota_from_target_files_args)


  # Create the IMG package from the merged target files package.

  if output_img:
    img_from_target_files_args = [
        output_zip,
        output_img,
    ]
    img_from_target_files.main(img_from_target_files_args)




def call_func_with_temp_dir(func, keep_tmp):
def call_func_with_temp_dir(func, keep_tmp):