Loading core/Makefile +13 −7 Original line number Diff line number Diff line Loading @@ -3350,10 +3350,10 @@ endif # When building a standalone recovery image for non-A/B devices, recovery image must be self-signed # to be verified independently, and cannot be chained into vbmeta.img. See the link below for # details. ifneq ($(AB_OTA_UPDATER),true) ifeq ($(TARGET_OTA_ALLOW_NON_AB),true) ifneq ($(INSTALLED_RECOVERYIMAGE_TARGET),) $(if $(BOARD_AVB_RECOVERY_KEY_PATH),,\ $(error BOARD_AVB_RECOVERY_KEY_PATH must be defined for non-A/B devices. \ $(error BOARD_AVB_RECOVERY_KEY_PATH must be defined for if non-A/B is supported. \ See https://android.googlesource.com/platform/external/avb/+/master/README.md#booting-into-recovery)) endif endif Loading Loading @@ -3444,7 +3444,7 @@ $(eval $(_signing_args) := \ # The recovery partition in non-A/B devices should be verified separately. Skip adding the chain # partition descriptor for recovery partition into vbmeta.img. $(if $(or $(filter true,$(AB_OTA_UPDATER)),$(filter-out recovery,$(part))),\ $(if $(or $(filter-out true,$(TARGET_OTA_ALLOW_NON_AB)),$(filter-out recovery,$(part))),\ $(eval INTERNAL_AVB_MAKE_VBMETA_IMAGE_ARGS += \ --chain_partition $(part):$($(_rollback_index_location)):$(AVB_CHAIN_KEY_DIR)/$(part).avbpubkey)) Loading Loading @@ -4236,6 +4236,9 @@ ifeq ($(AB_OTA_UPDATER),true) $(hide) echo "build_type=$(TARGET_BUILD_VARIANT)" >> $@ $(hide) echo "ab_update=true" >> $@ endif ifeq ($(TARGET_OTA_ALLOW_NON_AB),true) $(hide) echo "allow_non_ab=true" >> $@ endif ifdef BOARD_PREBUILT_DTBOIMAGE $(hide) echo "has_dtbo=true" >> $@ ifeq ($(BOARD_AVB_ENABLE),true) Loading Loading @@ -4313,10 +4316,13 @@ $(BUILT_TARGET_FILES_PACKAGE): PRIVATE_TOOL_EXTENSION := $(tool_extension) ifeq ($(AB_OTA_UPDATER),true) updater_dep := system/update_engine/update_engine.conf else # Build OTA tools if not using the AB Updater. endif # Build OTA tools if non-A/B is allowed ifeq ($(TARGET_OTA_ALLOW_NON_AB),true) updater_dep := $(built_ota_tools) endif $(BUILT_TARGET_FILES_PACKAGE): $(updater_dep) # If we are using recovery as boot, output recovery files to BOOT/. Loading Loading @@ -4592,7 +4598,7 @@ endif @# Extra contents of the OTA package $(hide) mkdir -p $(zip_root)/OTA $(hide) cp $(INSTALLED_ANDROID_INFO_TXT_TARGET) $(zip_root)/OTA/ ifneq ($(AB_OTA_UPDATER),true) ifeq ($(TARGET_OTA_ALLOW_NON_AB),true) ifneq ($(built_ota_tools),) $(hide) mkdir -p $(zip_root)/OTA/bin $(hide) cp $(PRIVATE_OTA_TOOLS) $(zip_root)/OTA/bin/ Loading Loading @@ -4629,7 +4635,7 @@ ifneq ($(PRODUCT_ODM_BASE_FS_PATH),) $(hide) cp $(PRODUCT_ODM_BASE_FS_PATH) \ $(zip_root)/META/$(notdir $(PRODUCT_ODM_BASE_FS_PATH)) endif ifneq ($(AB_OTA_UPDATER),true) ifeq ($(TARGET_OTA_ALLOW_NON_AB),true) ifneq ($(INSTALLED_RECOVERYIMAGE_TARGET),) $(hide) PATH=$(INTERNAL_USERIMAGES_BINARY_PATHS):$$PATH MKBOOTIMG=$(MKBOOTIMG) \ $(MAKE_RECOVERY_PATCH) $(zip_root) $(zip_root) Loading core/board_config.mk +21 −3 Original line number Diff line number Diff line Loading @@ -549,13 +549,31 @@ endif .KATI_READONLY := BUILDING_ODM_IMAGE ########################################### # Ensure that only TARGET_RECOVERY_UPDATER_LIBS *or* AB_OTA_UPDATER is set. # Ensure consistency among TARGET_RECOVERY_UPDATER_LIBS, AB_OTA_UPDATER, and PRODUCT_OTA_FORCE_NON_AB_PACKAGE. TARGET_RECOVERY_UPDATER_LIBS ?= AB_OTA_UPDATER ?= .KATI_READONLY := TARGET_RECOVERY_UPDATER_LIBS AB_OTA_UPDATER ifeq ($(AB_OTA_UPDATER),true) # Ensure that if PRODUCT_OTA_FORCE_NON_AB_PACKAGE == true, then AB_OTA_UPDATER must be true ifeq ($(PRODUCT_OTA_FORCE_NON_AB_PACKAGE),true) ifneq ($(AB_OTA_UPDATER),true) $(error AB_OTA_UPDATER must be set to true when PRODUCT_OTA_FORCE_NON_AB_PACKAGE is true) endif endif # In some configurations, A/B and non-A/B may coexist. Check TARGET_OTA_ALLOW_NON_AB # to see if non-A/B is supported. TARGET_OTA_ALLOW_NON_AB := false ifneq ($(AB_OTA_UPDATER),true) TARGET_OTA_ALLOW_NON_AB := true else ifeq ($(PRODUCT_OTA_FORCE_NON_AB_PACKAGE),true) TARGET_OTA_ALLOW_NON_AB := true endif .KATI_READONLY := TARGET_OTA_ALLOW_NON_AB ifneq ($(TARGET_OTA_ALLOW_NON_AB),true) ifneq ($(strip $(TARGET_RECOVERY_UPDATER_LIBS)),) $(error Do not use TARGET_RECOVERY_UPDATER_LIBS when using AB_OTA_UPDATER) $(error Do not use TARGET_RECOVERY_UPDATER_LIBS when using TARGET_OTA_ALLOW_NON_AB) endif endif Loading core/product.mk +7 −0 Original line number Diff line number Diff line Loading @@ -393,6 +393,13 @@ _product_single_value_vars += PRODUCT_VIRTUAL_AB_OTA # If set, device retrofits virtual A/B. _product_single_value_vars += PRODUCT_VIRTUAL_AB_OTA_RETROFIT # If set, forcefully generate a non-A/B update package. # Note: A device configuration should inherit from virtual_ab_ota_plus_non_ab.mk # instead of setting this variable directly. # Note: Use TARGET_OTA_ALLOW_NON_AB in the build system because # TARGET_OTA_ALLOW_NON_AB takes the value of AB_OTA_UPDATER into account. _product_single_value_vars += PRODUCT_OTA_FORCE_NON_AB_PACKAGE # If set, Java module in product partition cannot use hidden APIs. _product_single_value_vars += PRODUCT_ENFORCE_PRODUCT_PARTITION_INTERFACE Loading target/product/virtual_ab_ota_plus_non_ab.mk 0 → 100644 +21 −0 Original line number Diff line number Diff line # # Copyright (C) 2020 The Android Open-Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # $(call inherit-product, $(SRC_TARGET_DIR)/product/virtual_ab_ota.mk) PRODUCT_OTA_FORCE_NON_AB_PACKAGE := true PRODUCT_PROPERTY_OVERRIDES += ro.virtual_ab.allow_non_ab=true tools/releasetools/blockimgdiff.py +1 −0 Original line number Diff line number Diff line Loading @@ -1558,6 +1558,7 @@ class BlockImageDiff(object): split_large_apks = [] cache_size = common.OPTIONS.cache_size split_threshold = 0.125 assert cache_size is not None max_blocks_per_transfer = int(cache_size * split_threshold / self.tgt.blocksize) empty = RangeSet() Loading Loading
core/Makefile +13 −7 Original line number Diff line number Diff line Loading @@ -3350,10 +3350,10 @@ endif # When building a standalone recovery image for non-A/B devices, recovery image must be self-signed # to be verified independently, and cannot be chained into vbmeta.img. See the link below for # details. ifneq ($(AB_OTA_UPDATER),true) ifeq ($(TARGET_OTA_ALLOW_NON_AB),true) ifneq ($(INSTALLED_RECOVERYIMAGE_TARGET),) $(if $(BOARD_AVB_RECOVERY_KEY_PATH),,\ $(error BOARD_AVB_RECOVERY_KEY_PATH must be defined for non-A/B devices. \ $(error BOARD_AVB_RECOVERY_KEY_PATH must be defined for if non-A/B is supported. \ See https://android.googlesource.com/platform/external/avb/+/master/README.md#booting-into-recovery)) endif endif Loading Loading @@ -3444,7 +3444,7 @@ $(eval $(_signing_args) := \ # The recovery partition in non-A/B devices should be verified separately. Skip adding the chain # partition descriptor for recovery partition into vbmeta.img. $(if $(or $(filter true,$(AB_OTA_UPDATER)),$(filter-out recovery,$(part))),\ $(if $(or $(filter-out true,$(TARGET_OTA_ALLOW_NON_AB)),$(filter-out recovery,$(part))),\ $(eval INTERNAL_AVB_MAKE_VBMETA_IMAGE_ARGS += \ --chain_partition $(part):$($(_rollback_index_location)):$(AVB_CHAIN_KEY_DIR)/$(part).avbpubkey)) Loading Loading @@ -4236,6 +4236,9 @@ ifeq ($(AB_OTA_UPDATER),true) $(hide) echo "build_type=$(TARGET_BUILD_VARIANT)" >> $@ $(hide) echo "ab_update=true" >> $@ endif ifeq ($(TARGET_OTA_ALLOW_NON_AB),true) $(hide) echo "allow_non_ab=true" >> $@ endif ifdef BOARD_PREBUILT_DTBOIMAGE $(hide) echo "has_dtbo=true" >> $@ ifeq ($(BOARD_AVB_ENABLE),true) Loading Loading @@ -4313,10 +4316,13 @@ $(BUILT_TARGET_FILES_PACKAGE): PRIVATE_TOOL_EXTENSION := $(tool_extension) ifeq ($(AB_OTA_UPDATER),true) updater_dep := system/update_engine/update_engine.conf else # Build OTA tools if not using the AB Updater. endif # Build OTA tools if non-A/B is allowed ifeq ($(TARGET_OTA_ALLOW_NON_AB),true) updater_dep := $(built_ota_tools) endif $(BUILT_TARGET_FILES_PACKAGE): $(updater_dep) # If we are using recovery as boot, output recovery files to BOOT/. Loading Loading @@ -4592,7 +4598,7 @@ endif @# Extra contents of the OTA package $(hide) mkdir -p $(zip_root)/OTA $(hide) cp $(INSTALLED_ANDROID_INFO_TXT_TARGET) $(zip_root)/OTA/ ifneq ($(AB_OTA_UPDATER),true) ifeq ($(TARGET_OTA_ALLOW_NON_AB),true) ifneq ($(built_ota_tools),) $(hide) mkdir -p $(zip_root)/OTA/bin $(hide) cp $(PRIVATE_OTA_TOOLS) $(zip_root)/OTA/bin/ Loading Loading @@ -4629,7 +4635,7 @@ ifneq ($(PRODUCT_ODM_BASE_FS_PATH),) $(hide) cp $(PRODUCT_ODM_BASE_FS_PATH) \ $(zip_root)/META/$(notdir $(PRODUCT_ODM_BASE_FS_PATH)) endif ifneq ($(AB_OTA_UPDATER),true) ifeq ($(TARGET_OTA_ALLOW_NON_AB),true) ifneq ($(INSTALLED_RECOVERYIMAGE_TARGET),) $(hide) PATH=$(INTERNAL_USERIMAGES_BINARY_PATHS):$$PATH MKBOOTIMG=$(MKBOOTIMG) \ $(MAKE_RECOVERY_PATCH) $(zip_root) $(zip_root) Loading
core/board_config.mk +21 −3 Original line number Diff line number Diff line Loading @@ -549,13 +549,31 @@ endif .KATI_READONLY := BUILDING_ODM_IMAGE ########################################### # Ensure that only TARGET_RECOVERY_UPDATER_LIBS *or* AB_OTA_UPDATER is set. # Ensure consistency among TARGET_RECOVERY_UPDATER_LIBS, AB_OTA_UPDATER, and PRODUCT_OTA_FORCE_NON_AB_PACKAGE. TARGET_RECOVERY_UPDATER_LIBS ?= AB_OTA_UPDATER ?= .KATI_READONLY := TARGET_RECOVERY_UPDATER_LIBS AB_OTA_UPDATER ifeq ($(AB_OTA_UPDATER),true) # Ensure that if PRODUCT_OTA_FORCE_NON_AB_PACKAGE == true, then AB_OTA_UPDATER must be true ifeq ($(PRODUCT_OTA_FORCE_NON_AB_PACKAGE),true) ifneq ($(AB_OTA_UPDATER),true) $(error AB_OTA_UPDATER must be set to true when PRODUCT_OTA_FORCE_NON_AB_PACKAGE is true) endif endif # In some configurations, A/B and non-A/B may coexist. Check TARGET_OTA_ALLOW_NON_AB # to see if non-A/B is supported. TARGET_OTA_ALLOW_NON_AB := false ifneq ($(AB_OTA_UPDATER),true) TARGET_OTA_ALLOW_NON_AB := true else ifeq ($(PRODUCT_OTA_FORCE_NON_AB_PACKAGE),true) TARGET_OTA_ALLOW_NON_AB := true endif .KATI_READONLY := TARGET_OTA_ALLOW_NON_AB ifneq ($(TARGET_OTA_ALLOW_NON_AB),true) ifneq ($(strip $(TARGET_RECOVERY_UPDATER_LIBS)),) $(error Do not use TARGET_RECOVERY_UPDATER_LIBS when using AB_OTA_UPDATER) $(error Do not use TARGET_RECOVERY_UPDATER_LIBS when using TARGET_OTA_ALLOW_NON_AB) endif endif Loading
core/product.mk +7 −0 Original line number Diff line number Diff line Loading @@ -393,6 +393,13 @@ _product_single_value_vars += PRODUCT_VIRTUAL_AB_OTA # If set, device retrofits virtual A/B. _product_single_value_vars += PRODUCT_VIRTUAL_AB_OTA_RETROFIT # If set, forcefully generate a non-A/B update package. # Note: A device configuration should inherit from virtual_ab_ota_plus_non_ab.mk # instead of setting this variable directly. # Note: Use TARGET_OTA_ALLOW_NON_AB in the build system because # TARGET_OTA_ALLOW_NON_AB takes the value of AB_OTA_UPDATER into account. _product_single_value_vars += PRODUCT_OTA_FORCE_NON_AB_PACKAGE # If set, Java module in product partition cannot use hidden APIs. _product_single_value_vars += PRODUCT_ENFORCE_PRODUCT_PARTITION_INTERFACE Loading
target/product/virtual_ab_ota_plus_non_ab.mk 0 → 100644 +21 −0 Original line number Diff line number Diff line # # Copyright (C) 2020 The Android Open-Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # $(call inherit-product, $(SRC_TARGET_DIR)/product/virtual_ab_ota.mk) PRODUCT_OTA_FORCE_NON_AB_PACKAGE := true PRODUCT_PROPERTY_OVERRIDES += ro.virtual_ab.allow_non_ab=true
tools/releasetools/blockimgdiff.py +1 −0 Original line number Diff line number Diff line Loading @@ -1558,6 +1558,7 @@ class BlockImageDiff(object): split_large_apks = [] cache_size = common.OPTIONS.cache_size split_threshold = 0.125 assert cache_size is not None max_blocks_per_transfer = int(cache_size * split_threshold / self.tgt.blocksize) empty = RangeSet() Loading