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

Commit 2c8e7d32 authored by Dan Pasanen's avatar Dan Pasanen Committed by Michael Bestas
Browse files

core: allow specifying building ramdisk(s) with lzma

* Add a flag that specifies which ramdisk(s) to compress with lzma
* If not specified, fall back to gzip
* Example: LZMA_RAMDISK_TARGETS := boot,recovery

Change-Id: I9cce4da90343fb6dfb7039863649e37d78262726

Force bsdiff for recovery_from_boot.p if not using GZIP

imgdiff expects a ramdisk to use GZIP, which is causing a chunk
size issue if recovery is using LZMA

Change-Id: I3194b4faed25a298fe23b4e24b6dea2885bafda8

commit 30da0836578d0c9814e23df7c4c0fcd7c649f555
Author: Gabriele M <moto.falcon.git@gmail.com>
Date:   Thu Feb 9 13:59:27 2017 +0100

    releasetools: Generate recovery-from-boot.p with bsdiff if necessary

    If TARGET_NOT_USE_GZIP_RECOVERY_RAMDISK is true, we want to use bsdiff
    to create recovery-from-boot.p, otherwise there are high chances that
    imgdiff will fail. Currently this is done only when running make, but
    not when we re-create the patch from releasetools, so do it.

    Also, since recovery-resource.dat is used as bonus data for imgdiff,
    don't build it if we are going to use bsdiff.

    Change-Id: I93a662a358ee79f56b8acd4329eedd166a176c66
    (cherry picked from commit 543d7376)

Change-Id: I9cce4da90343fb6dfb7039863649e37d78262726
parent bdc7704a
Loading
Loading
Loading
Loading
+28 −8
Original line number Original line Diff line number Diff line
@@ -855,6 +855,19 @@ endif
# -----------------------------------------------------------------
# -----------------------------------------------------------------
# the ramdisk
# the ramdisk
ifdef BUILDING_RAMDISK_IMAGE
ifdef BUILDING_RAMDISK_IMAGE
BOOT_RAMDISK_COMPRESSOR := $(MINIGZIP)
RECOVERY_RAMDISK_COMPRESSOR := $(MINIGZIP)
LZMA := prebuilts/tools-lineage/${HOST_OS}-x86/bin/lzma
ifneq ($(LZMA_RAMDISK_TARGETS),)
  ifneq (,$(findstring boot,$(LZMA_RAMDISK_TARGETS)))
    BOOT_RAMDISK_COMPRESSOR := $(LZMA) -f -c
  endif
  ifneq (,$(findstring recovery,$(LZMA_RAMDISK_TARGETS)))
    RECOVERY_RAMDISK_COMPRESSOR := $(LZMA) -f -c
    TARGET_NOT_USE_GZIP_RECOVERY_RAMDISK := true
  endif
endif

INTERNAL_RAMDISK_FILES := $(filter $(TARGET_RAMDISK_OUT)/%, \
INTERNAL_RAMDISK_FILES := $(filter $(TARGET_RAMDISK_OUT)/%, \
	$(ALL_GENERATED_SOURCES) \
	$(ALL_GENERATED_SOURCES) \
	$(ALL_DEFAULT_INSTALLED_MODULES))
	$(ALL_DEFAULT_INSTALLED_MODULES))
@@ -877,12 +890,12 @@ BUILT_RAMDISK_TARGET := $(PRODUCT_OUT)/ramdisk.img
INSTALLED_RAMDISK_TARGET := $(BUILT_RAMDISK_TARGET)
INSTALLED_RAMDISK_TARGET := $(BUILT_RAMDISK_TARGET)
$(INSTALLED_RAMDISK_TARGET): $(MKBOOTFS) $(INTERNAL_RAMDISK_FILES) $(INSTALLED_FILES_FILE_RAMDISK) | $(MINIGZIP)
$(INSTALLED_RAMDISK_TARGET): $(MKBOOTFS) $(INTERNAL_RAMDISK_FILES) $(INSTALLED_FILES_FILE_RAMDISK) | $(MINIGZIP)
	$(call pretty,"Target ram disk: $@")
	$(call pretty,"Target ram disk: $@")
	$(hide) $(MKBOOTFS) -d $(TARGET_OUT) $(TARGET_RAMDISK_OUT) | $(MINIGZIP) > $@
	$(hide) $(MKBOOTFS) -d $(TARGET_OUT) $(TARGET_RAMDISK_OUT) | $(BOOT_RAMDISK_COMPRESSOR) > $@


.PHONY: ramdisk-nodeps
.PHONY: ramdisk-nodeps
ramdisk-nodeps: $(MKBOOTFS) | $(MINIGZIP)
ramdisk-nodeps: $(MKBOOTFS) | $(MINIGZIP)
	@echo "make $@: ignoring dependencies"
	@echo "make $@: ignoring dependencies"
	$(hide) $(MKBOOTFS) -d $(TARGET_OUT) $(TARGET_RAMDISK_OUT) | $(MINIGZIP) > $(INSTALLED_RAMDISK_TARGET)
	$(hide) $(MKBOOTFS) -d $(TARGET_OUT) $(TARGET_RAMDISK_OUT) | $(BOOT_RAMDISK_COMPRESSOR) > $(INSTALLED_RAMDISK_TARGET)


endif # BUILDING_RAMDISK_IMAGE
endif # BUILDING_RAMDISK_IMAGE


@@ -1747,7 +1760,8 @@ endif
#      (BOARD_INCLUDE_RECOVERY_ACPIO = true).
#      (BOARD_INCLUDE_RECOVERY_ACPIO = true).


ifeq (,$(filter true, $(BOARD_USES_FULL_RECOVERY_IMAGE) $(BOARD_USES_RECOVERY_AS_BOOT) \
ifeq (,$(filter true, $(BOARD_USES_FULL_RECOVERY_IMAGE) $(BOARD_USES_RECOVERY_AS_BOOT) \
  $(BOARD_BUILD_SYSTEM_ROOT_IMAGE) $(BOARD_INCLUDE_RECOVERY_DTBO) $(BOARD_INCLUDE_RECOVERY_ACPIO)))
  $(BOARD_BUILD_SYSTEM_ROOT_IMAGE) $(BOARD_INCLUDE_RECOVERY_DTBO) $(BOARD_INCLUDE_RECOVERY_ACPIO) \
  $(TARGET_NOT_USE_GZIP_RECOVERY_RAMDISK)))
# Named '.dat' so we don't attempt to use imgdiff for patching it.
# Named '.dat' so we don't attempt to use imgdiff for patching it.
RECOVERY_RESOURCE_ZIP := $(TARGET_OUT)/etc/recovery-resource.dat
RECOVERY_RESOURCE_ZIP := $(TARGET_OUT)/etc/recovery-resource.dat
else
else
@@ -1952,7 +1966,7 @@ $(INSTALLED_BOOTIMAGE_TARGET): $(MKBOOTFS) $(MKBOOTIMG) $(MINIGZIP) \
	    $(DEPMOD)
	    $(DEPMOD)
	$(call pretty,"Target boot image from recovery: $@")
	$(call pretty,"Target boot image from recovery: $@")
	$(call build-recoveryramdisk)
	$(call build-recoveryramdisk)
	$(hide) $(MKBOOTFS) -d $(TARGET_OUT) $(TARGET_RECOVERY_ROOT_OUT) | $(MINIGZIP) > $(recovery_ramdisk)
	$(hide) $(MKBOOTFS) -d $(TARGET_OUT) $(TARGET_RECOVERY_ROOT_OUT) | $(RECOVERY_RAMDISK_COMPRESSOR) > $(recovery_ramdisk)
	$(call build-recoveryimage-target, $@)
	$(call build-recoveryimage-target, $@)
endif # BOARD_USES_RECOVERY_AS_BOOT
endif # BOARD_USES_RECOVERY_AS_BOOT


@@ -1990,7 +2004,7 @@ $(recovery_uncompressed_ramdisk): $(MKBOOTFS) $(ADBD) \
$(recovery_ramdisk): $(MINIGZIP) \
$(recovery_ramdisk): $(MINIGZIP) \
	$(recovery_uncompressed_ramdisk)
	$(recovery_uncompressed_ramdisk)
	@echo ----- Making compressed recovery ramdisk ------
	@echo ----- Making compressed recovery ramdisk ------
	$(hide) $(MINIGZIP) < $(recovery_uncompressed_ramdisk) > $@
	$(hide) $(RECOVERY_RAMDISK_COMPRESSOR) < $(recovery_uncompressed_ramdisk) > $@


ifndef BOARD_CUSTOM_BOOTIMG_MK
ifndef BOARD_CUSTOM_BOOTIMG_MK
$(INSTALLED_RECOVERYIMAGE_TARGET): $(MKBOOTIMG) $(recovery_ramdisk) $(recovery_kernel) \
$(INSTALLED_RECOVERYIMAGE_TARGET): $(MKBOOTIMG) $(recovery_ramdisk) $(recovery_kernel) \
@@ -2010,7 +2024,7 @@ endif
recoveryimage-nodeps:
recoveryimage-nodeps:
	@echo "make $@: ignoring dependencies"
	@echo "make $@: ignoring dependencies"
	$(call build-recoveryramdisk)
	$(call build-recoveryramdisk)
	$(hide) $(MKBOOTFS) -d $(TARGET_OUT) $(TARGET_RECOVERY_ROOT_OUT) | $(MINIGZIP) > $(recovery_ramdisk)
	$(hide) $(MKBOOTFS) -d $(TARGET_OUT) $(TARGET_RECOVERY_ROOT_OUT) | $(RECOVERY_RAMDISK_COMPRESSOR) > $(recovery_ramdisk)
	$(call build-recoveryimage-target, $(INSTALLED_RECOVERYIMAGE_TARGET))
	$(call build-recoveryimage-target, $(INSTALLED_RECOVERYIMAGE_TARGET))


else # INSTALLED_RECOVERYIMAGE_TARGET not defined
else # INSTALLED_RECOVERYIMAGE_TARGET not defined
@@ -2091,7 +2105,7 @@ $(INSTALLED_DEBUG_RAMDISK_TARGET): $(MKBOOTFS) $(INTERNAL_DEBUG_RAMDISK_FILES) |
	mkdir -p $(TARGET_DEBUG_RAMDISK_OUT)
	mkdir -p $(TARGET_DEBUG_RAMDISK_OUT)
	touch $(TARGET_DEBUG_RAMDISK_OUT)/force_debuggable
	touch $(TARGET_DEBUG_RAMDISK_OUT)/force_debuggable
	rsync -a $(DEBUG_RAMDISK_SYNC_DIR)/ $(DEBUG_RAMDISK_ROOT_DIR)
	rsync -a $(DEBUG_RAMDISK_SYNC_DIR)/ $(DEBUG_RAMDISK_ROOT_DIR)
	$(MKBOOTFS) -d $(TARGET_OUT) $(DEBUG_RAMDISK_ROOT_DIR) | $(MINIGZIP) > $@
	$(MKBOOTFS) -d $(TARGET_OUT) $(DEBUG_RAMDISK_ROOT_DIR) | $(BOOT_RAMDISK_COMPRESSOR) > $@


.PHONY: ramdisk_debug-nodeps
.PHONY: ramdisk_debug-nodeps
ramdisk_debug-nodeps: DEBUG_RAMDISK_SYNC_DIR := $(my_debug_ramdisk_sync_dir)
ramdisk_debug-nodeps: DEBUG_RAMDISK_SYNC_DIR := $(my_debug_ramdisk_sync_dir)
@@ -2101,7 +2115,7 @@ ramdisk_debug-nodeps: $(MKBOOTFS) | $(MINIGZIP)
	mkdir -p $(TARGET_DEBUG_RAMDISK_OUT)
	mkdir -p $(TARGET_DEBUG_RAMDISK_OUT)
	touch $(TARGET_DEBUG_RAMDISK_OUT)/force_debuggable
	touch $(TARGET_DEBUG_RAMDISK_OUT)/force_debuggable
	rsync -a $(DEBUG_RAMDISK_SYNC_DIR)/ $(DEBUG_RAMDISK_ROOT_DIR)
	rsync -a $(DEBUG_RAMDISK_SYNC_DIR)/ $(DEBUG_RAMDISK_ROOT_DIR)
	$(MKBOOTFS) -d $(TARGET_OUT) $(DEBUG_RAMDISK_ROOT_DIR) | $(MINIGZIP) > $(INSTALLED_DEBUG_RAMDISK_TARGET)
	$(MKBOOTFS) -d $(TARGET_OUT) $(DEBUG_RAMDISK_ROOT_DIR) | $(BOOT_RAMDISK_COMPRESSOR) > $(INSTALLED_DEBUG_RAMDISK_TARGET)


my_debug_ramdisk_sync_dir :=
my_debug_ramdisk_sync_dir :=
my_debug_ramdisk_root_dir :=
my_debug_ramdisk_root_dir :=
@@ -2315,6 +2329,9 @@ diff_tool := $(HOST_OUT_EXECUTABLES)/bsdiff
else
else
diff_tool := $(HOST_OUT_EXECUTABLES)/imgdiff
diff_tool := $(HOST_OUT_EXECUTABLES)/imgdiff
endif
endif
ifeq ($(TARGET_NOT_USE_GZIP_RECOVERY_RAMDISK),true)
diff_tool := $(HOST_OUT_EXECUTABLES)/bsdiff
endif
intermediates := $(call intermediates-dir-for,PACKAGING,recovery_patch)
intermediates := $(call intermediates-dir-for,PACKAGING,recovery_patch)
RECOVERY_FROM_BOOT_PATCH := $(intermediates)/recovery_from_boot.p
RECOVERY_FROM_BOOT_PATCH := $(intermediates)/recovery_from_boot.p
$(RECOVERY_FROM_BOOT_PATCH): PRIVATE_DIFF_TOOL := $(diff_tool)
$(RECOVERY_FROM_BOOT_PATCH): PRIVATE_DIFF_TOOL := $(diff_tool)
@@ -4015,6 +4032,9 @@ endif
ifeq ($(BOARD_USES_FULL_RECOVERY_IMAGE),true)
ifeq ($(BOARD_USES_FULL_RECOVERY_IMAGE),true)
	$(hide) echo "full_recovery_image=true" >> $(zip_root)/META/misc_info.txt
	$(hide) echo "full_recovery_image=true" >> $(zip_root)/META/misc_info.txt
endif
endif
ifeq ($(TARGET_NOT_USE_GZIP_RECOVERY_RAMDISK),true)
	$(hide) echo "no_gzip_recovery_ramdisk=true" >> $(zip_root)/META/misc_info.txt
endif
ifeq ($(BOARD_AVB_ENABLE),true)
ifeq ($(BOARD_AVB_ENABLE),true)
	$(hide) echo "avb_enable=true" >> $(zip_root)/META/misc_info.txt
	$(hide) echo "avb_enable=true" >> $(zip_root)/META/misc_info.txt
	$(hide) echo "avb_vbmeta_key_path=$(BOARD_AVB_KEY_PATH)" >> $(zip_root)/META/misc_info.txt
	$(hide) echo "avb_vbmeta_key_path=$(BOARD_AVB_KEY_PATH)" >> $(zip_root)/META/misc_info.txt
+2 −1
Original line number Original line Diff line number Diff line
@@ -2286,6 +2286,7 @@ def MakeRecoveryPatch(input_dir, output_sink, recovery_img, boot_img,
    info_dict = OPTIONS.info_dict
    info_dict = OPTIONS.info_dict


  full_recovery_image = info_dict.get("full_recovery_image") == "true"
  full_recovery_image = info_dict.get("full_recovery_image") == "true"
  use_bsdiff = info_dict.get("no_gzip_recovery_ramdisk") == "true"


  if full_recovery_image:
  if full_recovery_image:
    output_sink("etc/recovery.img", recovery_img.data)
    output_sink("etc/recovery.img", recovery_img.data)
@@ -2296,7 +2297,7 @@ def MakeRecoveryPatch(input_dir, output_sink, recovery_img, boot_img,
    # With system-root-image, boot and recovery images will have mismatching
    # With system-root-image, boot and recovery images will have mismatching
    # entries (only recovery has the ramdisk entry) (Bug: 72731506). Use bsdiff
    # entries (only recovery has the ramdisk entry) (Bug: 72731506). Use bsdiff
    # to handle such a case.
    # to handle such a case.
    if system_root_image:
    if system_root_image or use_bsdiff:
      diff_program = ["bsdiff"]
      diff_program = ["bsdiff"]
      bonus_args = ""
      bonus_args = ""
      assert not os.path.exists(path)
      assert not os.path.exists(path)