diff options
30 files changed, 464 insertions, 60 deletions
diff --git a/core/Makefile b/core/Makefile index 4a8ec5845b..0bbaf12177 100644 --- a/core/Makefile +++ b/core/Makefile @@ -1423,6 +1423,12 @@ $(if $(BOARD_AVB_ENABLE),\ $(hide) echo "avb_system_key_path=$(BOARD_AVB_SYSTEM_KEY_PATH)" >> $(1) $(hide) echo "avb_system_algorithm=$(BOARD_AVB_SYSTEM_ALGORITHM)" >> $(1) $(hide) echo "avb_system_rollback_index_location=$(BOARD_AVB_SYSTEM_ROLLBACK_INDEX_LOCATION)" >> $(1))) +$(if $(BOARD_AVB_ENABLE),$(hide) echo "avb_system_other_hashtree_enable=$(BOARD_AVB_ENABLE)" >> $(1)) +$(if $(BOARD_AVB_ENABLE),$(hide) echo "avb_system_other_add_hashtree_footer_args=$(BOARD_AVB_SYSTEM_OTHER_ADD_HASHTREE_FOOTER_ARGS)" >> $(1)) +$(if $(BOARD_AVB_ENABLE),\ + $(if $(BOARD_AVB_SYSTEM_OTHER_KEY_PATH),\ + $(hide) echo "avb_system_other_key_path=$(BOARD_AVB_SYSTEM_OTHER_KEY_PATH)" >> $(1) + $(hide) echo "avb_system_other_algorithm=$(BOARD_AVB_SYSTEM_OTHER_ALGORITHM)" >> $(1))) $(if $(BOARD_AVB_ENABLE),$(hide) echo "avb_vendor_hashtree_enable=$(BOARD_AVB_ENABLE)" >> $(1)) $(if $(BOARD_AVB_ENABLE),$(hide) echo "avb_vendor_add_hashtree_footer_args=$(BOARD_AVB_VENDOR_ADD_HASHTREE_FOOTER_ARGS)" >> $(1)) $(if $(BOARD_AVB_ENABLE),\ @@ -2834,6 +2840,23 @@ BOARD_AVB_ALGORITHM := SHA256_RSA4096 BOARD_AVB_KEY_PATH := external/avb/test/data/testkey_rsa4096.pem endif +# AVB signing for system_other.img. +ifdef BUILDING_SYSTEM_OTHER_IMAGE +ifdef BOARD_AVB_SYSTEM_OTHER_KEY_PATH +$(if $(BOARD_AVB_SYSTEM_OTHER_ALGORITHM),,$(error BOARD_AVB_SYSTEM_OTHER_ALGORITHM is not defined)) +else +# If key path isn't specified, use the same key as BOARD_AVB_KEY_PATH. +BOARD_AVB_SYSTEM_OTHER_KEY_PATH := $(BOARD_AVB_KEY_PATH) +BOARD_AVB_SYSTEM_OTHER_ALGORITHM := $(BOARD_AVB_ALGORITHM) +endif + +ifndef BOARD_AVB_SYSTEM_OTHER_ROLLBACK_INDEX +BOARD_AVB_SYSTEM_OTHER_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP) +endif + +BOARD_AVB_SYSTEM_OTHER_ADD_HASHTREE_FOOTER_ARGS += --rollback_index $(BOARD_AVB_SYSTEM_OTHER_ROLLBACK_INDEX) +endif # end of AVB for BUILDING_SYSTEM_OTHER_IMAGE + INTERNAL_AVB_PARTITIONS_IN_CHAINED_VBMETA_IMAGES := \ $(BOARD_AVB_VBMETA_SYSTEM) \ $(BOARD_AVB_VBMETA_VENDOR) @@ -2953,6 +2976,8 @@ BOARD_AVB_MAKE_VBMETA_IMAGE_ARGS += --padding_size 4096 BOARD_AVB_MAKE_VBMETA_SYSTEM_IMAGE_ARGS += --padding_size 4096 BOARD_AVB_MAKE_VBMETA_VENDOR_IMAGE_ARGS += --padding_size 4096 +BOARD_AVB_SYSTEM_ADD_HASHTREE_FOOTER_ARGS += --prop system_security_patch:$(PLATFORM_SECURITY_PATCH) + ifeq (eng,$(filter eng, $(TARGET_BUILD_VARIANT))) # We only need the flag in top-level vbmeta.img. BOARD_AVB_MAKE_VBMETA_IMAGE_ARGS += --set_hashtree_disabled_flag diff --git a/core/combo/arch/arm/armv7-a.mk b/core/combo/arch/arm/armv7-a.mk deleted file mode 100644 index 0c2f04d24a..0000000000 --- a/core/combo/arch/arm/armv7-a.mk +++ /dev/null @@ -1,5 +0,0 @@ -# Configuration for Linux on ARM. -# Generating binaries for the ARMv7-a architecture and higher -# -ARCH_ARM_HAVE_ARMV7A := true -ARCH_ARM_HAVE_VFP := true diff --git a/core/config.mk b/core/config.mk index 486193d0b6..ab0ec6d6d0 100644 --- a/core/config.mk +++ b/core/config.mk @@ -212,11 +212,6 @@ endif HIDDENAPI_EXTRA_APP_USAGE_JARS := \ core-oj-hiddenapi \ -# Default to remove the org.apache.http.legacy from bootclasspath -ifeq ($(REMOVE_OAHL_FROM_BCP),) -REMOVE_OAHL_FROM_BCP := true -endif - # ############################################################### # Broken build defaults # ############################################################### diff --git a/core/dex_preopt.mk b/core/dex_preopt.mk index 7e38ae8fd7..60fd8dbbe6 100644 --- a/core/dex_preopt.mk +++ b/core/dex_preopt.mk @@ -92,7 +92,7 @@ $(INTERNAL_PLATFORM_HIDDENAPI_GREYLIST_METADATA): PRIVATE_METADATA_INPUTS := $(S ifeq ($(PRODUCT_DIST_BOOT_AND_SYSTEM_JARS),true) boot_profile_jars_zip := $(PRODUCT_OUT)/boot_profile_jars.zip all_boot_jars := \ - $(foreach m,$(PRODUCT_BOOT_JARS),$(PRODUCT_OUT)/system/framework/$(m).jar) \ + $(foreach m,$(DEXPREOPT_BOOT_JARS_MODULES),$(PRODUCT_OUT)/system/framework/$(m).jar) \ $(foreach m,$(PRODUCT_SYSTEM_SERVER_JARS),$(PRODUCT_OUT)/system/framework/$(m).jar) $(boot_profile_jars_zip): PRIVATE_JARS := $(all_boot_jars) diff --git a/core/dex_preopt_config.mk b/core/dex_preopt_config.mk index d1236f563d..2dc187d18f 100644 --- a/core/dex_preopt_config.mk +++ b/core/dex_preopt_config.mk @@ -1,7 +1,11 @@ DEX_PREOPT_CONFIG := $(PRODUCT_OUT)/dexpreopt.config -NON_UPDATABLE_BOOT_MODULES := $(filter-out $(PRODUCT_UPDATABLE_BOOT_MODULES), $(PRODUCT_BOOT_JARS)) -NON_UPDATABLE_BOOT_LOCATIONS := $(foreach m,$(NON_UPDATABLE_BOOT_MODULES),/system/framework/$(m).jar) +RUNTIME_MODULES := $(filter-out $(PRODUCT_UPDATABLE_BOOT_MODULES), $(TARGET_CORE_JARS)) +FRAMEWORK_MODULES := $(filter-out $(PRODUCT_UPDATABLE_BOOT_MODULES) $(RUNTIME_MODULES), $(PRODUCT_BOOT_JARS)) + +NON_UPDATABLE_BOOT_MODULES := $(RUNTIME_MODULES) $(FRAMEWORK_MODULES) +NON_UPDATABLE_BOOT_LOCATIONS := $(foreach m,$(RUNTIME_MODULES),/apex/com.android.runtime/javalib/$(m).jar) +NON_UPDATABLE_BOOT_LOCATIONS += $(foreach m,$(FRAMEWORK_MODULES),/system/framework/$(m).jar) ALL_BOOT_LOCATIONS := $(NON_UPDATABLE_BOOT_LOCATIONS) $(PRODUCT_UPDATABLE_BOOT_LOCATIONS) ALL_BOOT_MODULES := $(NON_UPDATABLE_BOOT_MODULES) $(PRODUCT_UPDATABLE_BOOT_MODULES) @@ -9,7 +13,8 @@ PRODUCT_BOOTCLASSPATH := $(subst $(space),:,$(ALL_BOOT_LOCATIONS)) DEXPREOPT_BOOT_JARS_MODULES := $(NON_UPDATABLE_BOOT_MODULES) DEXPREOPT_BOOTCLASSPATH_DEX_LOCATIONS := $(NON_UPDATABLE_BOOT_LOCATIONS) -DEXPREOPT_BOOTCLASSPATH_DEX_FILES := $(foreach jar,$(DEXPREOPT_BOOTCLASSPATH_DEX_LOCATIONS),$(PRODUCT_OUT)$(jar)) +DEXPREOPT_BOOT_JARS_INPUT_PATH := $(PRODUCT_OUT)/dex_bootjars_input +DEXPREOPT_BOOTCLASSPATH_DEX_FILES := $(foreach m,$(NON_UPDATABLE_BOOT_MODULES),$(DEXPREOPT_BOOT_JARS_INPUT_PATH)/$(m).jar) # Create paths for boot image. DEXPREOPT_BUILD_DIR := $(OUT_DIR) @@ -115,10 +120,10 @@ ifeq ($(WRITE_SOONG_VARIABLES),true) $(call add_json_bool, OnlyPreoptBootImageAndSystemServer, $(filter true,$(WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY))) $(call add_json_bool, DontUncompressPrivAppsDex, $(filter true,$(DONT_UNCOMPRESS_PRIV_APPS_DEXS))) $(call add_json_list, ModulesLoadedByPrivilegedModules, $(PRODUCT_LOADED_BY_PRIVILEGED_MODULES)) + $(call add_json_list, PreoptBootClassPathDexFiles, $(DEXPREOPT_BOOTCLASSPATH_DEX_FILES)) $(call add_json_bool, HasSystemOther, $(BOARD_USES_SYSTEM_OTHER_ODEX)) $(call add_json_list, PatternsOnSystemOther, $(SYSTEM_OTHER_ODEX_FILTER)) $(call add_json_bool, DisableGenerateProfile, $(filter false,$(WITH_DEX_PREOPT_GENERATE_PROFILE))) - $(call add_json_list, PreoptBootClassPathDexFiles, $(DEXPREOPT_BOOTCLASSPATH_DEX_FILES)) $(call add_json_list, PreoptBootClassPathDexLocations, $(DEXPREOPT_BOOTCLASSPATH_DEX_LOCATIONS)) $(call add_json_list, BootJars, $(PRODUCT_BOOT_JARS)) $(call add_json_list, PreoptBootJars, $(DEXPREOPT_BOOT_JARS_MODULES)) diff --git a/core/dex_preopt_libart.mk b/core/dex_preopt_libart.mk index 9d320b99c6..de7dcdd5b4 100644 --- a/core/dex_preopt_libart.mk +++ b/core/dex_preopt_libart.mk @@ -10,6 +10,9 @@ LIBART_TARGET_BOOT_JARS := $(DEXPREOPT_BOOT_JARS_MODULES) LIBART_TARGET_BOOT_DEX_LOCATIONS := $(DEXPREOPT_BOOTCLASSPATH_DEX_LOCATIONS) LIBART_TARGET_BOOT_DEX_FILES := $(foreach mod,$(NON_UPDATABLE_BOOT_MODULES),$(call intermediates-dir-for,JAVA_LIBRARIES,$(mod),,COMMON)/javalib.jar) +# Copy the files to a location Soong dex preopt will look at. +$(foreach mod,$(LIBART_TARGET_BOOT_JARS),$(eval $(call copy-one-file,$(call intermediates-dir-for,JAVA_LIBRARIES,$(mod),,COMMON)/javalib.jar,$(DEXPREOPT_BOOT_JARS_INPUT_PATH)/$(mod).jar))) + # dex preopt on the bootclasspath produces multiple files. The first dex file # is converted into to boot.art (to match the legacy assumption that boot.art # exists), and the rest are converted to boot-<name>.art. diff --git a/core/envsetup.mk b/core/envsetup.mk index 390a182f30..bd632bf137 100644 --- a/core/envsetup.mk +++ b/core/envsetup.mk @@ -465,7 +465,7 @@ else ifdef BOARD_USES_PRODUCT_SERVICESIMAGE endif BUILDING_PRODUCT_SERVICES_IMAGE := -ifeq ($(PRODUCT_SERVICES_BUILD_PRODUCT_SERVICES_IMAGE),) +ifeq ($(PRODUCT_BUILD_PRODUCT_SERVICES_IMAGE),) ifdef BOARD_PRODUCT_SERVICESIMAGE_FILE_SYSTEM_TYPE BUILDING_PRODUCT_SERVICES_IMAGE := true endif diff --git a/core/java_common.mk b/core/java_common.mk index 4e331d0589..f5da120703 100644 --- a/core/java_common.mk +++ b/core/java_common.mk @@ -386,6 +386,7 @@ else # LOCAL_IS_HOST_MODULE endif # USE_CORE_LIB_BOOTCLASSPATH endif # !LOCAL_IS_HOST_MODULE +ALL_DEPS.$(LOCAL_MODULE).ALL_DEPS := $(ALL_DEPS.$(LOCAL_MODULE).ALL_DEPS) $(full_java_bootclasspath_libs) # Export the SDK libs. The sdk library names listed in LOCAL_SDK_LIBRARIES are first exported. # Then sdk library names exported from dependencies are all re-exported. diff --git a/target/board/generic/BoardConfig.mk b/target/board/generic/BoardConfig.mk index cdb1d298c9..b61a7fddce 100644 --- a/target/board/generic/BoardConfig.mk +++ b/target/board/generic/BoardConfig.mk @@ -18,30 +18,13 @@ TARGET_ARCH := arm # Note: Before P, we built the platform images for ARMv7-A _without_ NEON. # Note: Before Q, we built the CTS and SDK images for ARMv7-A _without_ NEON. +# Note: Before Q, we built unbundled apps for ARMv7-A _without_ NEON. # -ifneq ($(TARGET_BUILD_APPS),) -# DO NOT USE -# -# This architecture variant should NOT be used for 32 bit arm platform -# builds. It is the lowest common denominator required to build -# an unbundled application for all supported 32 platforms. -# cts for 32 bit arm is built using aosp_arm64 product. -# -# If you are building a 32 bit platform (and not an application), -# you should set the following as 2nd arch variant: -# -# TARGET_ARCH_VARIANT := armv7-a-neon -# -# DO NOT USE -TARGET_ARCH_VARIANT := armv7-a -# DO NOT USE -else # Starting from Pi, System image of aosp_arm products is the new GSI # for real devices newly launched for Pi. These devices are usualy not # as performant as the mainstream 64-bit devices and the performance # provided by NEON is important for them to pass related CTS tests. TARGET_ARCH_VARIANT := armv7-a-neon -endif TARGET_CPU_VARIANT := generic TARGET_CPU_ABI := armeabi-v7a TARGET_CPU_ABI2 := armeabi diff --git a/target/board/generic_arm64/BoardConfig.mk b/target/board/generic_arm64/BoardConfig.mk index 3331d1827e..3f83edbd0e 100644 --- a/target/board/generic_arm64/BoardConfig.mk +++ b/target/board/generic_arm64/BoardConfig.mk @@ -41,11 +41,7 @@ ifneq ($(TARGET_BUILD_APPS)$(filter cts sdk vts,$(MAKECMDGOALS)),) # # DO NOT USE # DO NOT USE -ifneq ($(filter cts sdk vts,$(MAKECMDGOALS)),) TARGET_2ND_ARCH_VARIANT := armv7-a-neon -else -TARGET_2ND_ARCH_VARIANT := armv7-a -endif # DO NOT USE # DO NOT USE TARGET_2ND_CPU_VARIANT := generic diff --git a/target/board/generic_x86_arm/BoardConfig.mk b/target/board/generic_x86_arm/BoardConfig.mk index 8e70b25898..ab2089d114 100644 --- a/target/board/generic_x86_arm/BoardConfig.mk +++ b/target/board/generic_x86_arm/BoardConfig.mk @@ -21,7 +21,7 @@ TARGET_ARCH_VARIANT := x86 TARGET_2ND_ARCH := arm TARGET_2ND_CPU_ABI := armeabi-v7a TARGET_2ND_CPU_ABI2 := armeabi -TARGET_2ND_ARCH_VARIANT := armv7-a +TARGET_2ND_ARCH_VARIANT := armv7-a-neon TARGET_2ND_CPU_VARIANT := generic TARGET_CPU_ABI_LIST := x86 armeabi-v7a armeabi diff --git a/target/product/base_system.mk b/target/product/base_system.mk index 4a3ae4d85a..d6c842125a 100644 --- a/target/product/base_system.mk +++ b/target/product/base_system.mk @@ -290,15 +290,6 @@ PRODUCT_UPDATABLE_BOOT_LOCATIONS := \ /apex/com.android.conscrypt/javalib/conscrypt.jar -# Add the compatibility library that is needed when org.apache.http.legacy -# is removed from the bootclasspath. -ifeq ($(REMOVE_OAHL_FROM_BCP),true) -PRODUCT_PACKAGES += framework-oahl-backward-compatibility -PRODUCT_BOOT_JARS += framework-oahl-backward-compatibility -else -PRODUCT_BOOT_JARS += org.apache.http.legacy -endif - PRODUCT_COPY_FILES += \ system/core/rootdir/init.usb.rc:root/init.usb.rc \ system/core/rootdir/init.usb.configfs.rc:root/init.usb.configfs.rc \ diff --git a/target/product/handheld_product.mk b/target/product/handheld_product.mk index 063b951d9c..758fa9b805 100644 --- a/target/product/handheld_product.mk +++ b/target/product/handheld_product.mk @@ -33,7 +33,6 @@ PRODUCT_PACKAGES += \ Launcher3QuickStep \ Music \ OneTimeInitializer \ - PrintRecommendationService \ Provision \ QuickSearchBox \ Settings \ diff --git a/target/product/handheld_system.mk b/target/product/handheld_system.mk index 0a763fb2ad..a4dd6d7a50 100644 --- a/target/product/handheld_system.mk +++ b/target/product/handheld_system.mk @@ -57,6 +57,7 @@ PRODUCT_PACKAGES += \ MusicFX \ NfcNci \ PacProcessor \ + PrintRecommendationService \ PrintSpooler \ ProxyHandler \ screenrecord \ diff --git a/target/product/mainline_arm64.mk b/target/product/mainline_arm64.mk index c876636633..904bd2677d 100644 --- a/target/product/mainline_arm64.mk +++ b/target/product/mainline_arm64.mk @@ -45,7 +45,6 @@ PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST += \ system/app/LatinIME/oat/arm64/LatinIME.odex \ system/app/LatinIME/oat/arm64/LatinIME.vdex \ system/app/Music/Music.apk \ - system/app/PrintRecommendationService/PrintRecommendationService.apk \ system/app/QuickSearchBox/QuickSearchBox.apk \ system/app/webview/webview.apk \ system/bin/healthd \ diff --git a/target/product/security/com.android.conscrypt.pk8 b/target/product/security/com.android.conscrypt.pk8 Binary files differnew file mode 100644 index 0000000000..4c04debf72 --- /dev/null +++ b/target/product/security/com.android.conscrypt.pk8 diff --git a/target/product/security/com.android.conscrypt.x509.pem b/target/product/security/com.android.conscrypt.x509.pem new file mode 100644 index 0000000000..ba914fab40 --- /dev/null +++ b/target/product/security/com.android.conscrypt.x509.pem @@ -0,0 +1,34 @@ +-----BEGIN CERTIFICATE----- +MIIF1DCCA7ygAwIBAgIJAN0lMAb+9i0JMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNV +BAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBW +aWV3MRAwDgYDVQQKDAdBbmRyb2lkMRAwDgYDVQQLDAdBbmRyb2lkMR4wHAYDVQQD +DBVjb20uYW5kcm9pZC5jb25zY3J5cHQwIBcNMTkwMTI1MTcxNjM3WhgPNDc1NjEy +MjExNzE2MzdaMH4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYw +FAYDVQQHDA1Nb3VudGFpbiBWaWV3MRAwDgYDVQQKDAdBbmRyb2lkMRAwDgYDVQQL +DAdBbmRyb2lkMR4wHAYDVQQDDBVjb20uYW5kcm9pZC5jb25zY3J5cHQwggIiMA0G +CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCcfdThwuWhAk0362p7+s/8xL0Hi6Fe +orQL30Kat8iK4ZPWM5HxOY1zmktBzjgKQ0qM4fuvHzrQJr2+SLl+l2miX4XTruAL +w7MBS1EGzh0YC4cOBq9z8IsAW/lB6MDeAJ6TuflTk5BRun+bDB70IkWd0ylYSiTi +AWEs4LM03rBbTcxpNuoLMj1PDNkNOmWiu0rtRbO2Y5+GI9Kw2lyPsWKkU0ixifq2 +o3gHAepmwD7bt5tDFSuOW+uCeF7TzyqsE/CFvqWYUn+5rlOlcyFARAgCh1NZXqxq +mkcyI9vmtneIUimYw0dzgNoG0dijYAvpuQgSr0HSa2JBiQOgMrJug2PtmWpH2PNk +UubVZYSfPiO4wTB9Jus63Y27KRdo4Bz4R4n/u0FjIi/cu0Zms07MTo60NPaGHNM/ +nMJSEDDjQ7ppoPXsamn0DID8HlZMivmcQgzokWswxw4b/i1O2fUotKEDf3wvJhUB +4U7bAgF55FNWWfcaHYqhytWc0qO4zdMUyVqFF+/Db3hz4IkhJyzjCYxBovSSx4yN +atHa93SwM+uH1s2iI3gOJbn/SrsfKbkrU85S5zVRDEOQg9lm2d99PMnXqXED7bRw +G9pKmUfOzMANm8yhvL/urlSXVDHxtdw+IJGSVUlzYT3OAx2eFdnpiymiQyWotr8W +IXfOyr/lB6IkvQIDAQABo1MwUTAdBgNVHQ4EFgQU/vXb6Hy1AxgAxhDuwnO457cD +3+owHwYDVR0jBBgwFoAU/vXb6Hy1AxgAxhDuwnO457cD3+owDwYDVR0TAQH/BAUw +AwEB/zANBgkqhkiG9w0BAQsFAAOCAgEARVpJBLitmnJXL/suxt+IsszEBz/pj5g1 +uwor1L3Zvb8j614BhqrKFlPia3PKlHJHotNugjs35CrQ6S4zC3Dx3R2Wb/hBOhtk +bfpjKZuWaPvqHx1nlBsRa6H7tOKOW/6DHkkb/L5oJo7FPZT0Y0XNandFAmveBL69 +CLZS5dFnhkbVHi7PuvSwcFEXSr/fozcIMnCsQAds42cWqlWlDDVq90vYzOM+jQxS +cctJ3cZiL0heWEyiZmG0J95Z6kB28gEmaDw8LNUwaUsyaO7U6GwXIe/KQvI2cT/F +yjpkBmKqDr89Xvyd9DYtZv8GbndTQLwyrPhlKLNOoly3jqjbxqAZGBpyxwVDU+Mo +/NwkCheQeEYLrGXBgv9fLfyOLSZA7yihPTc0IQcm27DnpkZmJ/lWJ5jDG0VEkNp+ +60O5GYCs2/r3tO+YoiDSFNjsFgCoTcnOQwYhbBZC7YJLOKV0lYDjfsohE6tcCUuS +H8Ln6Em9HhFAXZBVQU0N+OyC0bAuDTD72ClvbMQikyeWwhdvY3F0x5dDima0liqe +0jMTJxlizLoa2YKOiLqLomLt6+sJawF0+bGSKSHpcy0NoopXTb3UBlkFpxRp9UnN +vrnN6KyRzj7OssDEHfXSZgSR0ZAVrAsgP3vc+lBpze9jtNbITDV1gOxUBX771hdU +UIxewtyODcY= +-----END CERTIFICATE----- diff --git a/target/product/security/com.android.media.pk8 b/target/product/security/com.android.media.pk8 Binary files differnew file mode 100644 index 0000000000..6df741e917 --- /dev/null +++ b/target/product/security/com.android.media.pk8 diff --git a/target/product/security/com.android.media.x509.pem b/target/product/security/com.android.media.x509.pem new file mode 100644 index 0000000000..e7908fa69a --- /dev/null +++ b/target/product/security/com.android.media.x509.pem @@ -0,0 +1,33 @@ +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- diff --git a/target/product/security/com.android.resolv.pk8 b/target/product/security/com.android.resolv.pk8 Binary files differnew file mode 100644 index 0000000000..3481a697ca --- /dev/null +++ b/target/product/security/com.android.resolv.pk8 diff --git a/target/product/security/com.android.resolv.x509.pem b/target/product/security/com.android.resolv.x509.pem new file mode 100644 index 0000000000..77650f0f32 --- /dev/null +++ b/target/product/security/com.android.resolv.x509.pem @@ -0,0 +1,34 @@ +-----BEGIN CERTIFICATE----- +MIIFzjCCA7agAwIBAgIJAJuYkMMWaDUCMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNV +BAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBW +aWV3MRAwDgYDVQQKDAdBbmRyb2lkMRAwDgYDVQQLDAdBbmRyb2lkMRswGQYDVQQD +DBJjb20uYW5kcm9pZC5yZXNvbHYwIBcNMTkwMTI1MTcxODEwWhgPNDc1NjEyMjEx +NzE4MTBaMHsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYD +VQQHDA1Nb3VudGFpbiBWaWV3MRAwDgYDVQQKDAdBbmRyb2lkMRAwDgYDVQQLDAdB +bmRyb2lkMRswGQYDVQQDDBJjb20uYW5kcm9pZC5yZXNvbHYwggIiMA0GCSqGSIb3 +DQEBAQUAA4ICDwAwggIKAoICAQDHKz23/+Ji2wjvzYMMjvIm8jE6ghgqDrUfadQz +UkfN0FnkDkBMQE3Qh41SYFxd7wn4q22HKn3OtO/TR8f9X15+HF9vCN6LMtHWRO+w +wHNOuCYRLqNyKx3XlYOyokiF0NLMkUrmHyflqZQ6xwJIcYj6J13cp11sAc61snRR +wwczxDiSiIExeKIC6LtEzbAxp09a3BgRVQrlQllr1MPBmXjQxkJ9nAglM3HFq7oQ +xYGafwabjkpvC8x7hHEmi7XEOssHaT66C1adwFNc3trGK+1ZNOHmkmM+fRO1hffF +wQ5yhbAt1zKaqj7TXYdJ2NaJYfCZSnJ8bH9Q5u28wBMoUYUh1b4zwWPUyszJ61h2 +nb8oZp8P1tZzD4R9LsQ7iW31D6i3wVAazhLnbXnH0BREWamKvkbA3/PTCSC+/AMc +4wh/aN/SU/TzCvvI6i6CG5un38OSvsNLTBmLj4Y8ECD7nxUwfeMKKSba37Twh/YG +PlslsbVBZK0iHtG+hCJuyy7ttGpGydE93m8Rqm1CJnm+/HaKa8UKCHd5GqiDhKtT +EvdfLJwQPsf49IVrNWQp+1Q15WNVhSA9nLiMYVQYtBVbTYtYghXbRcSD2IjUdfA4 +lIcubkPxWD+jthBFZhlyGoJ9OapNrbRf0isHCsTUMnCy02MQNnMTaLGfseBFAFqj ++95SJQIDAQABo1MwUTAdBgNVHQ4EFgQUny0NZgR8PJCPSYJ6BQ721hhB2DkwHwYD +VR0jBBgwFoAUny0NZgR8PJCPSYJ6BQ721hhB2DkwDwYDVR0TAQH/BAUwAwEB/zAN +BgkqhkiG9w0BAQsFAAOCAgEAWabMCkP4kcG7DwAwpyGCehh5rg0FTSkRRKTY4S0P +gSEmgPUNV1uqFUECGGr1HeOf6PUYCdAQ6K2tnhnknBLqfcQX+h652D+0Md/KldJt +7HwC16S0MEfR35w/VgUfxe2oO0OYDJdkUXeEjou2+VrAYT6pe9TRB5+F5KQetgZa +3H9KW7RVc1oeK3kZtSNA5zDsJNcvgdfWoSJkewlHZ8KNLQBaZoDYV/mfF8d06ydE +L7SnTkHrJZF9MZ0V58y06sIX9XwlKhypY8sZi3bq+H0t5mzsVAaBHVOC8NHCy351 +XLArkCFdDMb50FaxN8F9eY6A997n08msfeMlMjBrem8r14tf5UEjYyykuLfhW19R +W+Kli67PZ2VR1I7reEjab2hKt6nwBfw9/Pnb2lugIh48GG5kQ6sgROyAu14q/rnL +Mof+athhTSD+ttU3YyBOq6hA7Vbft9xAnFqr50bBRbbO21OBJuN8PTWQm82FwXKB +hNwMy7HSggJqZSJt8HiA2rmoZ79/gNIic6GddoYnASQqjxaCv6vhg8/FQ+r/FJ+x +gy89yQ6WFLau4/YjVjTyBqGeUPorRuysK7XPH6vDZZKJawwNV3jaYzG8BQAIBqqp +dNEx97jin7bJQ6ObGF5pmvjzo1XYAiKuj/sjzCC2EN2BjjimTVlsoB+Gv/CFUTbr +8vw= +-----END CERTIFICATE----- diff --git a/target/product/security/com.android.runtime.debug.pk8 b/target/product/security/com.android.runtime.debug.pk8 Binary files differnew file mode 100644 index 0000000000..5eec5d8560 --- /dev/null +++ b/target/product/security/com.android.runtime.debug.pk8 diff --git a/target/product/security/com.android.runtime.debug.x509.pem b/target/product/security/com.android.runtime.debug.x509.pem new file mode 100644 index 0000000000..73402f51e4 --- /dev/null +++ b/target/product/security/com.android.runtime.debug.x509.pem @@ -0,0 +1,34 @@ +-----BEGIN CERTIFICATE----- +MIIF0DCCA7igAwIBAgIJALbaJLNNAiRDMA0GCSqGSIb3DQEBCwUAMHwxCzAJBgNV +BAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBW +aWV3MRAwDgYDVQQKDAdBbmRyb2lkMRAwDgYDVQQLDAdBbmRyb2lkMRwwGgYDVQQD +DBNjb20uYW5kcm9pZC5ydW50aW1lMCAXDTE5MDEyNTE3MTQ1NloYDzQ3NTYxMjIx +MTcxNDU2WjB8MQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQG +A1UEBwwNTW91bnRhaW4gVmlldzEQMA4GA1UECgwHQW5kcm9pZDEQMA4GA1UECwwH +QW5kcm9pZDEcMBoGA1UEAwwTY29tLmFuZHJvaWQucnVudGltZTCCAiIwDQYJKoZI +hvcNAQEBBQADggIPADCCAgoCggIBAN1Ns75c0ZdLKnUvEuEotzJ0xyOLzOHYP3y6 +RzcwFyPf84aADc7rQDtjbmEuf9g9QpJhZAxe7G2Jg/wxqaxMW6wCfkpuElW5CAcj +XQ0i12hRVtqePs5Z5bjzJ/8C7luWh82Vb/s2YoRPoKNXVWFT16CB4RMnw2nW5Uyo +RHZ98N4MgFSGilafIc6Z0DImreTTwlEvcyKihVUSuzeyPG8CRjshw0C1Hqxt4a8J +rxAgfPpd84Xo4etYePpVr2K5+vNAVwLpUdD48Y7q9peOJ0tbL8DSohudkzvZsQUo +CfEfrVBfZv7aPnt6ZJYhcFo1WRBMYczKP4jWb0KgmF963ee3zliU1pXtIYsNBNth +Mdvy3ml301tI7CKE5A3Yevm40VVqo+IDt7FNxoV3rKPhnO9vi/YqzX/1xMvAto8E +9A5NvMTqHmS2P0wt1pt9KSuXXjoIAWaHZOATDkVI+jLjDrYFNdhqXVgbAaVtI60j +lRaSWxzBr4o+g2W8ks/JgM2mwJ6qaTNoDMzg823MKzy/t3935sxm5GhFs9AY9Qz/ +4B3exqYUEFJLN6dJLCVppCmFCdCONSxN7bXPo+3b9LlZuKAOP17N04+eKcwXVeYz +Z3a7SfyMzq+DtLhAn/TSliSbbCAVUxiOZnVX1nM0Gs3/BYCs0TUh2tSqO48pwDrx +Pw7z9+m5AgMBAAGjUzBRMB0GA1UdDgQWBBRT9s/tu4uqtrglUFjQbwY5p+17DjAf +BgNVHSMEGDAWgBRT9s/tu4uqtrglUFjQbwY5p+17DjAPBgNVHRMBAf8EBTADAQH/ +MA0GCSqGSIb3DQEBCwUAA4ICAQBNY5giwZCM0sE93Dj2zEe8qCRwIaV4bvSe744X +Y1+405vdrNEHKPUfFn1xLSnhiGU3loZrP15lexmWvxycLNEy0UxZgq3eR7HuW6xp +GIm9ttYDZEP+pL9hwew3jiR38NRRR1Ur1MsBNkZnCELC1W8RFWIi77Fsb4fj2mGn +2R+2voBvVS5kjkytW079CEIsZN9RVYfERiKPCfJDa87kk0xduqyh7sDegQl0B2Ot +R9KnD1dJZjbii2GRkhpJ/Ig17CQH3J8PY/SIt9L+QAchnIEF051sjbBRUJuPK9gL +eBEkZkwD1JLqGO6fxkcjNx7MIevTnIBjX2Epr8luyRy7eR3TdBT3aRQcCUqBCi3i +WxAVR5sOZ90INTXftFbztoklitpQ9mxKXgFr+xggL6u3BdJk1Nt9BsYmRzh5Bg+6 +1eMDBumy3JEA7whE8p75X9cSnKTNrDQU3DA5XzpIhmI91XJArBhBfxgqGxaTf0uq +SfZRDfnaO456ZsZdKUy62mry6Vg/hvzX52x/HxDlSQWbpYp5t03hshaWxtNE376q +GdqOoGRRWCvyWi/UOYzabp6czTjwV1JH9IU379CsqIO5UNJ2MM2re4TDXofefU1C +6eiYihy28xDfIiCdretLRlvFYFF/5X5xby/XWsDA9sGlL5OOiXC6o0Pl9vbek2+T +Ibx3Nw== +-----END CERTIFICATE----- diff --git a/target/product/security/com.android.runtime.release.pk8 b/target/product/security/com.android.runtime.release.pk8 Binary files differnew file mode 100644 index 0000000000..c63efb8853 --- /dev/null +++ b/target/product/security/com.android.runtime.release.pk8 diff --git a/target/product/security/com.android.runtime.release.x509.pem b/target/product/security/com.android.runtime.release.x509.pem new file mode 100644 index 0000000000..4a7607ab5c --- /dev/null +++ b/target/product/security/com.android.runtime.release.x509.pem @@ -0,0 +1,34 @@ +-----BEGIN CERTIFICATE----- +MIIF0DCCA7igAwIBAgIJAMtsu/wrkZurMA0GCSqGSIb3DQEBCwUAMHwxCzAJBgNV +BAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBW +aWV3MRAwDgYDVQQKDAdBbmRyb2lkMRAwDgYDVQQLDAdBbmRyb2lkMRwwGgYDVQQD +DBNjb20uYW5kcm9pZC5ydW50aW1lMCAXDTE5MDEyNTE3MTU0MFoYDzQ3NTYxMjIx +MTcxNTQwWjB8MQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQG +A1UEBwwNTW91bnRhaW4gVmlldzEQMA4GA1UECgwHQW5kcm9pZDEQMA4GA1UECwwH +QW5kcm9pZDEcMBoGA1UEAwwTY29tLmFuZHJvaWQucnVudGltZTCCAiIwDQYJKoZI +hvcNAQEBBQADggIPADCCAgoCggIBAL+aGSc+HU69vV1VbZb6WjXMDrE2Jo+JjXLU +yVS3o8qlQeqN0RFbsbwnihnwg2xBnM6JiskAcuocz87dDuEt1zUEInC3Hpt/C2eg +GUZepbq8po+v+b04YlX3aTaYTFqMjU0aQkjOqhnmVxg+KHpvudlvKB3VhH3D61al +RReQzgM/Q6aUxcr4Z8XwvzV3i0K5NjiSuSt14K2yIaheh2OTbbwtvm3d+0sQDco6 +1gl0l4rM4e+GjxgWVqx8mfKhd4HTS3YIBDWXR6DFPBARzVBIpZu2QK4U6Jdsy2wI +xg8+d5KWAoNQb7IQK6LQy7Fbw3PNJDo4Ph39G2wNgeMemz8uSQ9FZujc0AgxBom6 +J+ad7zlJBhYFC4UIKBYrRfJCHTN3GLuLvhu0p0jNMfdQXF6Tv/iG9g8JdZ0QjeWm +/K+h1p6LUAIUV0UP7j8nIdp0j6NqMywkoeRDYlVQV/XdI7BiQe9Z8yNbF5Y3CxWT +hMfN9iby11ImPilzpgv39ORVjDQdxxcwhJg2Xuu1752cBxcHu3ZcR8AiB7PCksXu +EpUrjjOH8eVxoG1JJ/na5elUg/H35Or+JYYd8I8Ad1/GRkPrnIBAGzuyntOsNs4t +2CEnhmV6EkEH8KP8miTdaa5NdPIwFRIHVBHcrqsqdmrINvoJhaVRH7YwmFjv48ak +N4OyW3oLAgMBAAGjUzBRMB0GA1UdDgQWBBRqVJ0tsEOyqhKiZOrOfRD1+jQFMDAf +BgNVHSMEGDAWgBRqVJ0tsEOyqhKiZOrOfRD1+jQFMDAPBgNVHRMBAf8EBTADAQH/ +MA0GCSqGSIb3DQEBCwUAA4ICAQAs+I1tRWRPmhA+FqcRdlAcY2Vy7NO12hjWXCT9 +hqenGk1/VnhH8aZT5lXZNaWeKonT5W7XydyrjiF09ndZBGew0rEZh6sMXH+G/drT +9JxvfHsCQGrmX32V1XgAoRjV1VpUYIb2747fFWHHbl5frowNj955pkfseeKilSnF +orUl5uGNxr6iNaVEUDfXBWkHwipYVyejAqdHkCQDhLtDBWsiskKpLWmmNKuy2QXQ +uoyUyfeSR1Y+pT83qgmGb1LFLiOqL9ZKPrsIP+tG4lYB8L4SrYJf4MgfoJaKQ8ed +2jsd42MegvOB2vdMyLgkf7EM/9DpE4BLpAy2mNd1AccL9YQ+0ezruxh6sYklJWGe +2bHEbZk0duoNPsA87ZNKfFVV2cNVwSg/22HHjGieMUyPIwyGIzsHId8XiwXpZhLX +VyacOVRd0SjTWK5Pxj6g21NrrcMXvFeCbveucf2ljKVxBVSbQKt67YlXxd9nLZjN +zHnJWzDwlWXbyvxheLVVGEo0cqRbhxYMxXd9dM01EXJmIWqS8t0+aw90KKPFITNv +qpxXnF5JJm1CzeBDtpmfepDupUR1bWansOd0sUuiDF/H1UcDiuBUC643RET1vjhv +MllsShSeC6KGm3WwE0bhcvA9IdZC8CA3Btzw2J9aJO1gbVZ6vRkH+21cfR07so4N +yXgprQ== +-----END CERTIFICATE----- diff --git a/target/product/security/com.android.tzdata.pk8 b/target/product/security/com.android.tzdata.pk8 Binary files differnew file mode 100644 index 0000000000..f786710485 --- /dev/null +++ b/target/product/security/com.android.tzdata.pk8 diff --git a/target/product/security/com.android.tzdata.x509.pem b/target/product/security/com.android.tzdata.x509.pem new file mode 100644 index 0000000000..bf78beefc4 --- /dev/null +++ b/target/product/security/com.android.tzdata.x509.pem @@ -0,0 +1,34 @@ +-----BEGIN CERTIFICATE----- +MIIFzjCCA7agAwIBAgIJAIyjs8l5WRp5MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNV +BAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBW +aWV3MRAwDgYDVQQKDAdBbmRyb2lkMRAwDgYDVQQLDAdBbmRyb2lkMRswGQYDVQQD +DBJjb20uYW5kcm9pZC50emRhdGEwIBcNMTkwMTI1MTY0ODE0WhgPNDc1NjEyMjEx +NjQ4MTRaMHsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYD +VQQHDA1Nb3VudGFpbiBWaWV3MRAwDgYDVQQKDAdBbmRyb2lkMRAwDgYDVQQLDAdB +bmRyb2lkMRswGQYDVQQDDBJjb20uYW5kcm9pZC50emRhdGEwggIiMA0GCSqGSIb3 +DQEBAQUAA4ICDwAwggIKAoICAQC3PzY5waM71QpWUVQPfTrtCf9Mx9097DjM6RlD +jaOd2FtN7gUN/d+z19h0WRkBcBMDWH3z4aHIDp4YXABIdqIzXehhdCFLro4W6H4I +TNcbH6/M4rmtGs2v0zCkrr8z/mEasCdsw9iz8LOiyouGxgt0Q2qPSQ3OcbZSGX0C +T8VNxDIP1RpQdRUKhZt/hsmcuPHGq64yil/i7FHX4dLgjnik4sUkHPsQTam/H/J/ +brl9OToTCyRuTgaq6EfxCZVXPfxQE6KTDchFr4wYSbxIgSN9zk2wPLXCsyvSb2lV +fDSbkRmS89cCaCArF3SP3FAKoZdxdNtT1Q/KayMs7c/jrhFloiIpkstNCzMrPT9i +j5QwRqcBscSijqaEJOyK458EhaO7m3GHc9e+1afsxTIn//vbrpJU7ewOiwcAsJAT +KGFMotbK1fV4jGCzKxDVBd1OP5yN/iPYS8INH4tt1W1Q5jaQn/Uy+RuS1tPZTtrL +ldj/QJ/K9XNSg4v12hXlLDwUlwEMu2Akbe6BYItfhdAEITRr332l6e466cQDp3V2 +mOWANPEX35s5/CaxeqJOi3Y+DSx4iwjOKiormnnEalRFAZrSDU2UNxIqrmidl03Y +/0p13ugbPmJbpXFPZFDPsUuvPuGLSAU2luUuFSgT0FVyWj5BfzFmcuLxQom03+ds +cX8GxQIDAQABo1MwUTAdBgNVHQ4EFgQUVCZf+AGkP1wMi7C0l6FFefk9kVAwHwYD +VR0jBBgwFoAUVCZf+AGkP1wMi7C0l6FFefk9kVAwDwYDVR0TAQH/BAUwAwEB/zAN +BgkqhkiG9w0BAQsFAAOCAgEAc0NA+Ya/L5Vs+8CZ/5rP6dIbzbgL7tm1nmjU65jY +8znsSrB0JDTEHCLc+9u35YU77Z3sW9lFE9el1i693gYQnYSy1lducHHKzbnss2/f ++DJ4QExrPR+PfnkSxdjL8+MXVAtVZDCeEBTcUgLES6m4WLS9hKL4+Oe+igXkAJA+ +d8w1/5ASuood3cTNy3nxssdueAKl4Tyj0y0zejoVlznaYw4zMTmlnrz1l0ZbaKiM +tr52U2kASEVQW6EhiielsLMzDngqAQ49FQriv7oUhrlbmP3+CkhhPWbM3keSHm/a +vIQGD3+mbJpekuRgC5w1nCborCxpnHoZUXMyb6/3PnY9u4O8VT5rY5NipVfL/Cvu +12w0kvcuXTP58gvOJANB5t8Jo4tctG99hO0ECr7/439YM4NMkL5nYEcJe3DemquB +pB7xVBAD7WKEcB5KV/oDXoLjxMlassKSAvBVbx+fvbGIW6k1pe3uiHl8p/zvxoNb +9FFRoElCyuzzVP5r/kN5uNbPVIexbVET4elOcUhKigHWZHYv/PQ9ncpA8tbDeAIr +vzoofKWv4r4tyQZLR4YnEYTGBORO6rX//Mcg8zKE6vXb0zKLW5vW1zxv31q1p2lC +0R5e4ix7UjR8OJcBCnyKuqSRdCIpMitam2V+BXwh/7mLZBA4LuV4koNofVaBFxlt +BCo= +-----END CERTIFICATE----- diff --git a/tools/releasetools/build_image.py b/tools/releasetools/build_image.py index 8712d8582a..ba1d60ea97 100755 --- a/tools/releasetools/build_image.py +++ b/tools/releasetools/build_image.py @@ -569,11 +569,11 @@ def ImagePropFromGlobalDict(glob_dict, mount_point): elif mount_point == "system_other": # We inherit the selinux policies of /system since we contain some of its # files. - copy_prop("avb_system_hashtree_enable", "avb_hashtree_enable") - copy_prop("avb_system_add_hashtree_footer_args", + copy_prop("avb_system_other_hashtree_enable", "avb_hashtree_enable") + copy_prop("avb_system_other_add_hashtree_footer_args", "avb_add_hashtree_footer_args") - copy_prop("avb_system_key_path", "avb_key_path") - copy_prop("avb_system_algorithm", "avb_algorithm") + copy_prop("avb_system_other_key_path", "avb_key_path") + copy_prop("avb_system_other_algorithm", "avb_algorithm") copy_prop("fs_type", "fs_type") copy_prop("system_fs_type", "fs_type") copy_prop("system_size", "partition_size") diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py index 3334ce839a..de3e3b8b4a 100644 --- a/tools/releasetools/common.py +++ b/tools/releasetools/common.py @@ -2226,12 +2226,6 @@ class DynamicPartitionsDifference(object): collections.Counter(e.partition for e in block_diffs).items() if count > 1]) - dynamic_partitions = set(shlex.split(info_dict.get( - "dynamic_partition_list", "").strip())) - assert set(block_diff_dict.keys()) == dynamic_partitions, \ - "Dynamic partitions: {}, BlockDifference objects: {}".format( - list(dynamic_partitions), list(block_diff_dict.keys())) - self._partition_updates = dict() for p, block_diff in block_diff_dict.items(): @@ -2263,6 +2257,22 @@ class DynamicPartitionsDifference(object): "object is provided.".format(p, g) self._partition_updates[p].src_group = g + target_dynamic_partitions = set(shlex.split(info_dict.get( + "dynamic_partition_list", "").strip())) + block_diffs_with_target = set(p for p, u in self._partition_updates.items() + if u.tgt_size) + assert block_diffs_with_target == target_dynamic_partitions, \ + "Target Dynamic partitions: {}, BlockDifference with target: {}".format( + list(target_dynamic_partitions), list(block_diffs_with_target)) + + source_dynamic_partitions = set(shlex.split(source_info_dict.get( + "dynamic_partition_list", "").strip())) + block_diffs_with_source = set(p for p, u in self._partition_updates.items() + if u.src_size) + assert block_diffs_with_source == source_dynamic_partitions, \ + "Source Dynamic partitions: {}, BlockDifference with source: {}".format( + list(source_dynamic_partitions), list(block_diffs_with_source)) + if self._partition_updates: logger.info("Updating dynamic partitions %s", self._partition_updates.keys()) diff --git a/tools/releasetools/test_common.py b/tools/releasetools/test_common.py index c99049adef..361963316b 100644 --- a/tools/releasetools/test_common.py +++ b/tools/releasetools/test_common.py @@ -988,3 +988,201 @@ class InstallRecoveryScriptFormatTest(test_utils.ReleaseToolsTestCase): recovery_image, boot_image, self._info) validate_target_files.ValidateInstallRecoveryScript(self._tempdir, self._info) + + +class MockScriptWriter(object): + """A class that mocks edify_generator.EdifyGenerator. + """ + def __init__(self, enable_comments=False): + self.lines = [] + self.enable_comments = enable_comments + def Comment(self, comment): + if self.enable_comments: + self.lines.append("# {}".format(comment)) + def AppendExtra(self, extra): + self.lines.append(extra) + def __str__(self): + return "\n".join(self.lines) + + +class MockBlockDifference(object): + def __init__(self, partition, tgt, src=None): + self.partition = partition + self.tgt = tgt + self.src = src + def WriteScript(self, script, _, progress=None, + write_verify_script=False): + if progress: + script.AppendExtra("progress({})".format(progress)) + script.AppendExtra("patch({});".format(self.partition)) + if write_verify_script: + self.WritePostInstallVerifyScript(script) + def WritePostInstallVerifyScript(self, script): + script.AppendExtra("verify({});".format(self.partition)) + + +class FakeSparseImage(object): + def __init__(self, size): + self.blocksize = 4096 + self.total_blocks = size // 4096 + assert size % 4096 == 0, "{} is not a multiple of 4096".format(size) + + +class DynamicPartitionsDifferenceTest(test_utils.ReleaseToolsTestCase): + @staticmethod + def get_op_list(output_path): + with zipfile.ZipFile(output_path, 'r') as output_zip: + with output_zip.open("dynamic_partitions_op_list") as op_list: + return [line.strip() for line in op_list.readlines() + if not line.startswith("#")] + + def setUp(self): + self.script = MockScriptWriter() + self.output_path = common.MakeTempFile(suffix='.zip') + + def test_full(self): + target_info = common.LoadDictionaryFromLines(""" +dynamic_partition_list=system vendor +super_partition_groups=group_foo +super_group_foo_group_size={group_size} +super_group_foo_partition_list=system vendor +""".format(group_size=4 * GiB).split("\n")) + block_diffs = [MockBlockDifference("system", FakeSparseImage(3 * GiB)), + MockBlockDifference("vendor", FakeSparseImage(1 * GiB))] + + dp_diff = common.DynamicPartitionsDifference(target_info, block_diffs) + with zipfile.ZipFile(self.output_path, 'w') as output_zip: + dp_diff.WriteScript(self.script, output_zip, write_verify_script=True) + + self.assertEqual(str(self.script).strip(), """ +assert(update_dynamic_partitions(package_extract_file("dynamic_partitions_op_list"))); +patch(vendor); +verify(vendor); +unmap_partition("vendor"); +patch(system); +verify(system); +unmap_partition("system"); +""".strip()) + + lines = self.get_op_list(self.output_path) + + remove_all_groups = lines.index("remove_all_groups") + add_group = lines.index("add_group group_foo 4294967296") + add_vendor = lines.index("add vendor group_foo") + add_system = lines.index("add system group_foo") + resize_vendor = lines.index("resize vendor 1073741824") + resize_system = lines.index("resize system 3221225472") + + self.assertLess(remove_all_groups, add_group, + "Should add groups after removing all groups") + self.assertLess(add_group, min(add_vendor, add_system), + "Should add partitions after adding group") + self.assertLess(add_system, resize_system, + "Should resize system after adding it") + self.assertLess(add_vendor, resize_vendor, + "Should resize vendor after adding it") + + def test_inc_groups(self): + source_info = common.LoadDictionaryFromLines(""" +super_partition_groups=group_foo group_bar group_baz +super_group_foo_group_size={group_foo_size} +super_group_bar_group_size={group_bar_size} +""".format(group_foo_size=4 * GiB, group_bar_size=3 * GiB).split("\n")) + target_info = common.LoadDictionaryFromLines(""" +super_partition_groups=group_foo group_baz group_qux +super_group_foo_group_size={group_foo_size} +super_group_baz_group_size={group_baz_size} +super_group_qux_group_size={group_qux_size} +""".format(group_foo_size=3 * GiB, group_baz_size=4 * GiB, + group_qux_size=1 * GiB).split("\n")) + + dp_diff = common.DynamicPartitionsDifference(target_info, + block_diffs=[], + source_info_dict=source_info) + with zipfile.ZipFile(self.output_path, 'w') as output_zip: + dp_diff.WriteScript(self.script, output_zip, write_verify_script=True) + + lines = self.get_op_list(self.output_path) + + removed = lines.index("remove_group group_bar") + shrunk = lines.index("resize_group group_foo 3221225472") + grown = lines.index("resize_group group_baz 4294967296") + added = lines.index("add_group group_qux 1073741824") + + self.assertLess(max(removed, shrunk) < min(grown, added), + "ops that remove / shrink partitions must precede ops that " + "grow / add partitions") + + def test_inc_partitions(self): + source_info = common.LoadDictionaryFromLines(""" +dynamic_partition_list=system vendor product product_services +super_partition_groups=group_foo +super_group_foo_group_size={group_foo_size} +super_group_foo_partition_list=system vendor product product_services +""".format(group_foo_size=4 * GiB).split("\n")) + target_info = common.LoadDictionaryFromLines(""" +dynamic_partition_list=system vendor product odm +super_partition_groups=group_foo group_bar +super_group_foo_group_size={group_foo_size} +super_group_foo_partition_list=system vendor odm +super_group_bar_group_size={group_bar_size} +super_group_bar_partition_list=product +""".format(group_foo_size=3 * GiB, group_bar_size=1 * GiB).split("\n")) + + block_diffs = [MockBlockDifference("system", FakeSparseImage(1536 * MiB), + src=FakeSparseImage(1024 * MiB)), + MockBlockDifference("vendor", FakeSparseImage(512 * MiB), + src=FakeSparseImage(1024 * MiB)), + MockBlockDifference("product", FakeSparseImage(1024 * MiB), + src=FakeSparseImage(1024 * MiB)), + MockBlockDifference("product_services", None, + src=FakeSparseImage(1024 * MiB)), + MockBlockDifference("odm", FakeSparseImage(1024 * MiB), + src=None)] + + dp_diff = common.DynamicPartitionsDifference(target_info, block_diffs, + source_info_dict=source_info) + with zipfile.ZipFile(self.output_path, 'w') as output_zip: + dp_diff.WriteScript(self.script, output_zip, write_verify_script=True) + + metadata_idx = self.script.lines.index( + 'assert(update_dynamic_partitions(package_extract_file(' + '"dynamic_partitions_op_list")));') + self.assertLess(self.script.lines.index('patch(vendor);'), metadata_idx) + self.assertLess(metadata_idx, self.script.lines.index('verify(vendor);')) + for p in ("product", "system", "odm"): + patch_idx = self.script.lines.index("patch({});".format(p)) + verify_idx = self.script.lines.index("verify({});".format(p)) + self.assertLess(metadata_idx, patch_idx, + "Should patch {} after updating metadata".format(p)) + self.assertLess(patch_idx, verify_idx, + "Should verify {} after patching".format(p)) + + self.assertNotIn("patch(product_services);", self.script.lines) + + lines = self.get_op_list(self.output_path) + + remove = lines.index("remove product_services") + move_product_out = lines.index("move product default") + shrink = lines.index("resize vendor 536870912") + shrink_group = lines.index("resize_group group_foo 3221225472") + add_group_bar = lines.index("add_group group_bar 1073741824") + add_odm = lines.index("add odm group_foo") + grow_existing = lines.index("resize system 1610612736") + grow_added = lines.index("resize odm 1073741824") + move_product_in = lines.index("move product group_bar") + + max_idx_move_partition_out_foo = max(remove, move_product_out, shrink) + min_idx_move_partition_in_foo = min(add_odm, grow_existing, grow_added) + + self.assertLess(max_idx_move_partition_out_foo, shrink_group, + "Must shrink group after partitions inside group are shrunk" + " / removed") + + self.assertLess(add_group_bar, move_product_in, + "Must add partitions to group after group is added") + + self.assertLess(max_idx_move_partition_out_foo, + min_idx_move_partition_in_foo, + "Must shrink partitions / remove partitions from group" + "before adding / moving partitions into group") |