Merge "Enable dyanmic image size for GSI" into stage-aosp-master
diff --git a/core/Makefile b/core/Makefile
index 04cc1fa..b74f878 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -1359,16 +1359,6 @@
recovery_kernel := $(INSTALLED_KERNEL_TARGET) # same as a non-recovery system
recovery_ramdisk := $(PRODUCT_OUT)/ramdisk-recovery.img
-recovery_build_props := $(intermediate_system_build_prop)
-ifdef property_overrides_split_enabled
-recovery_build_props += $(INSTALLED_VENDOR_BUILD_PROP_TARGET)
-endif
-ifdef BOARD_USES_PRODUCTIMAGE
-recovery_build_props += $(INSTALLED_PRODUCT_BUILD_PROP_TARGET)
-endif
-ifdef BOARD_USES_PRODUCT_SERVICESIMAGE
-recovery_build_props += $(INSTALLED_PRODUCT_SERVICES_BUILD_PROP_TARGET)
-endif
recovery_resources_common := $(call include-path-for, recovery)/res
# Set recovery_density to the density bucket of the device.
@@ -1441,6 +1431,56 @@
RECOVERY_RESOURCE_ZIP :=
endif
+INSTALLED_RECOVERY_BUILD_PROP_TARGET := $(TARGET_RECOVERY_ROOT_OUT)/prop.default
+
+$(INSTALLED_RECOVERY_BUILD_PROP_TARGET): PRIVATE_RECOVERY_UI_PROPERTIES := \
+ TARGET_RECOVERY_DEFAULT_ROTATION:default_rotation \
+ TARGET_RECOVERY_OVERSCAN_PERCENT:overscan_percent \
+ TARGET_RECOVERY_PIXEL_FORMAT:pixel_format \
+ TARGET_RECOVERY_UI_ANIMATION_FPS:animation_fps \
+ TARGET_RECOVERY_UI_MARGIN_HEIGHT:margin_height \
+ TARGET_RECOVERY_UI_MARGIN_WIDTH:margin_width \
+ TARGET_RECOVERY_UI_MENU_UNUSABLE_ROWS:menu_unusable_rows \
+ TARGET_RECOVERY_UI_PROGRESS_BAR_BASELINE:progress_bar_baseline \
+ TARGET_RECOVERY_UI_TOUCH_LOW_THRESHOLD:touch_low_threshold \
+ TARGET_RECOVERY_UI_TOUCH_HIGH_THRESHOLD:touch_high_threshold \
+ TARGET_RECOVERY_UI_VR_STEREO_OFFSET:vr_stereo_offset
+
+# Parses the given list of build variables and writes their values as build properties if defined.
+# For example, if a target defines `TARGET_RECOVERY_UI_MARGIN_HEIGHT := 100`,
+# `ro.recovery.ui.margin_height=100` will be appended to the given output file.
+# $(1): Map from the build variable names to property names
+# $(2): Output file
+define append-recovery-ui-properties
+echo "#" >> $(2)
+echo "# RECOVERY UI BUILD PROPERTIES" >> $(2)
+echo "#" >> $(2)
+$(foreach prop,$(1), \
+ $(eval _varname := $(call word-colon,1,$(prop))) \
+ $(eval _propname := $(call word-colon,2,$(prop))) \
+ $(eval _value := $($(_varname))) \
+ $(if $(_value), \
+ echo ro.recovery.ui.$(_propname)=$(_value) >> $(2) &&)) true
+endef
+
+$(INSTALLED_RECOVERY_BUILD_PROP_TARGET): \
+ $(INSTALLED_DEFAULT_PROP_TARGET) \
+ $(INSTALLED_VENDOR_DEFAULT_PROP_TARGET) \
+ $(intermediate_system_build_prop) \
+ $(INSTALLED_VENDOR_BUILD_PROP_TARGET) \
+ $(INSTALLED_PRODUCT_BUILD_PROP_TARGET) \
+ $(INSTALLED_PRODUCT_SERVICES_BUILD_PROP_TARGET)
+ @echo "Target recovery buildinfo: $@
+ $(hide) mkdir -p $(dir $@)
+ $(hide) rm -f $@
+ $(hide) cat $(INSTALLED_DEFAULT_PROP_TARGET) > $@
+ $(hide) cat $(INSTALLED_VENDOR_DEFAULT_PROP_TARGET) >> $@
+ $(hide) cat $(intermediate_system_build_prop) >> $@
+ $(hide) cat $(INSTALLED_VENDOR_BUILD_PROP_TARGET) >> $@
+ $(hide) cat $(INSTALLED_PRODUCT_BUILD_PROP_TARGET) >> $@
+ $(hide) cat $(INSTALLED_PRODUCT_SERVICES_BUILD_PROP_TARGET) >> $@
+ $(call append-recovery-ui-properties,$(PRIVATE_RECOVERY_UI_PROPERTIES),$@)
+
INTERNAL_RECOVERYIMAGE_ARGS := \
$(addprefix --second ,$(INSTALLED_2NDBOOTLOADER_TARGET)) \
--kernel $(recovery_kernel) \
@@ -1506,13 +1546,6 @@
$(if $(strip $(recovery_wipe)), \
$(hide) cp -f $(recovery_wipe) $(TARGET_RECOVERY_ROOT_OUT)/etc/recovery.wipe)
$(hide) cp $(RECOVERY_INSTALL_OTA_KEYS) $(TARGET_RECOVERY_ROOT_OUT)/res/keys
- $(hide) cat $(INSTALLED_DEFAULT_PROP_TARGET) \
- > $(TARGET_RECOVERY_ROOT_OUT)/prop.default
- $(if $(INSTALLED_VENDOR_DEFAULT_PROP_TARGET), \
- $(hide) cat $(INSTALLED_VENDOR_DEFAULT_PROP_TARGET) \
- >> $(TARGET_RECOVERY_ROOT_OUT)/prop.default)
- $(hide) cat $(recovery_build_props) \
- >> $(TARGET_RECOVERY_ROOT_OUT)/prop.default
$(hide) ln -sf prop.default $(TARGET_RECOVERY_ROOT_OUT)/default.prop
$(BOARD_RECOVERY_IMAGE_PREPARE)
$(hide) $(MKBOOTFS) -d $(TARGET_OUT) $(TARGET_RECOVERY_ROOT_OUT) | $(MINIGZIP) > $(recovery_ramdisk)
@@ -1551,10 +1584,10 @@
$(INTERNAL_RECOVERYIMAGE_FILES) \
$(recovery_initrc) $(recovery_sepolicy) $(recovery_kernel) \
$(INSTALLED_2NDBOOTLOADER_TARGET) \
- $(recovery_build_props) $(recovery_resource_deps) \
+ $(INSTALLED_RECOVERY_BUILD_PROP_TARGET) \
+ $(recovery_resource_deps) \
$(recovery_fstab) \
$(RECOVERY_INSTALL_OTA_KEYS) \
- $(INSTALLED_VENDOR_DEFAULT_PROP_TARGET) \
$(BOARD_RECOVERY_KERNEL_MODULES) \
$(DEPMOD)
$(call pretty,"Target boot image from recovery: $@")
@@ -1567,10 +1600,10 @@
$(INTERNAL_RECOVERYIMAGE_FILES) \
$(recovery_initrc) $(recovery_sepolicy) $(recovery_kernel) \
$(INSTALLED_2NDBOOTLOADER_TARGET) \
- $(recovery_build_props) $(recovery_resource_deps) \
+ $(INSTALLED_RECOVERY_BUILD_PROP_TARGET) \
+ $(recovery_resource_deps) \
$(recovery_fstab) \
$(RECOVERY_INSTALL_OTA_KEYS) \
- $(INSTALLED_VENDOR_DEFAULT_PROP_TARGET) \
$(BOARD_RECOVERY_KERNEL_MODULES) \
$(DEPMOD)
$(call build-recoveryimage-target, $@)
@@ -3451,35 +3484,35 @@
INSTALLED_QEMU_SYSTEMIMAGE := $(PRODUCT_OUT)/system-qemu.img
MK_QEMU_IMAGE_SH := device/generic/goldfish/tools/mk_qemu_image.sh
SGDISK_HOST := $(HOST_OUT_EXECUTABLES)/sgdisk
-$(INSTALLED_QEMU_SYSTEMIMAGE): $(INSTALLED_SYSTEMIMAGE) $(MK_QEMU_IMAGE_SH) $(SGDISK_HOST)
+$(INSTALLED_QEMU_SYSTEMIMAGE): $(INSTALLED_SYSTEMIMAGE) $(MK_QEMU_IMAGE_SH) $(SGDISK_HOST) $(SIMG2IMG)
@echo Create system-qemu.img
- (export SGDISK=$(SGDISK_HOST); $(MK_QEMU_IMAGE_SH) ${PRODUCT_OUT}/system.img)
+ (export SGDISK=$(SGDISK_HOST) SIMG2IMG=$(SIMG2IMG); $(MK_QEMU_IMAGE_SH) ${PRODUCT_OUT}/system.img)
systemimage: $(INSTALLED_QEMU_SYSTEMIMAGE)
droidcore: $(INSTALLED_QEMU_SYSTEMIMAGE)
ifeq ($(BOARD_USES_VENDORIMAGE),true)
INSTALLED_QEMU_VENDORIMAGE := $(PRODUCT_OUT)/vendor-qemu.img
-$(INSTALLED_QEMU_VENDORIMAGE): $(INSTALLED_VENDORIMAGE_TARGET) $(MK_QEMU_IMAGE_SH) $(SGDISK_HOST)
+$(INSTALLED_QEMU_VENDORIMAGE): $(INSTALLED_VENDORIMAGE_TARGET) $(MK_QEMU_IMAGE_SH) $(SGDISK_HOST) $(SIMG2IMG)
@echo Create vendor-qemu.img
- (export SGDISK=$(SGDISK_HOST); $(MK_QEMU_IMAGE_SH) ${PRODUCT_OUT}/vendor.img)
+ (export SGDISK=$(SGDISK_HOST) SIMG2IMG=$(SIMG2IMG); $(MK_QEMU_IMAGE_SH) ${PRODUCT_OUT}/vendor.img)
vendorimage: $(INSTALLED_QEMU_VENDORIMAGE)
droidcore: $(INSTALLED_QEMU_VENDORIMAGE)
endif
ifeq ($(BOARD_USES_PRODUCTIMAGE),true)
INSTALLED_QEMU_PRODUCTIMAGE := $(PRODUCT_OUT)/product-qemu.img
-$(INSTALLED_QEMU_PRODUCTIMAGE): $(INSTALLED_PRODUCTIMAGE_TARGET) $(MK_QEMU_IMAGE_SH) $(SGDISK_HOST)
+$(INSTALLED_QEMU_PRODUCTIMAGE): $(INSTALLED_PRODUCTIMAGE_TARGET) $(MK_QEMU_IMAGE_SH) $(SGDISK_HOST) $(SIMG2IMG)
@echo Create product-qemu.img
- (export SGDISK=$(SGDISK_HOST); $(MK_QEMU_IMAGE_SH) ${PRODUCT_OUT}/product.img)
+ (export SGDISK=$(SGDISK_HOST) SIMG2IMG=$(SIMG2IMG); $(MK_QEMU_IMAGE_SH) ${PRODUCT_OUT}/product.img)
productimage: $(INSTALLED_QEMU_PRODUCTIMAGE)
droidcore: $(INSTALLED_QEMU_PRODUCTIMAGE)
endif
ifeq ($(BOARD_USES_PRODUCT_SERVICESIMAGE),true)
INSTALLED_QEMU_PRODUCT_SERVICESIMAGE := $(PRODUCT_OUT)/product-services-qemu.img
-$(INSTALLED_QEMU_PRODUCT_SERVICESIMAGE): $(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET) $(MK_QEMU_IMAGE_SH) $(SGDISK_HOST)
+$(INSTALLED_QEMU_PRODUCT_SERVICESIMAGE): $(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET) $(MK_QEMU_IMAGE_SH) $(SGDISK_HOST) $(SIMG2IMG)
@echo Create product-services-qemu.img
- (export SGDISK=$(SGDISK_HOST); $(MK_QEMU_IMAGE_SH) ${PRODUCT_OUT}/product-services.img)
+ (export SGDISK=$(SGDISK_HOST) SIMG2IMG=$(SIMG2IMG); $(MK_QEMU_IMAGE_SH) ${PRODUCT_OUT}/product-services.img)
productservicesimage: $(INSTALLED_QEMU_PRODUCT_SERVICESIMAGE)
droidcore: $(INSTALLED_QEMU_PRODUCT_SERVICESIMAGE)
diff --git a/core/OWNERS b/core/OWNERS
new file mode 100644
index 0000000..4045061
--- /dev/null
+++ b/core/OWNERS
@@ -0,0 +1,8 @@
+per-file * = ccross@android.com
+per-file * = dwillemsen@google.com
+per-file * = nanzhang@google.com
+
+per-file dex_preopt*.mk = ngeoffray@google.com
+per-file dex_preopt*.mk = calin@google.com
+per-file dex_preopt*.mk = mathewi@google.com
+per-file dex_preopt*.mk = dbrazdil@google.com
diff --git a/core/base_rules.mk b/core/base_rules.mk
index 770a16c..037b2cb 100644
--- a/core/base_rules.mk
+++ b/core/base_rules.mk
@@ -583,8 +583,11 @@
$(eval n := $(or $(word 2,$(p)),$(notdir $(word 1, $(p))))) \
$(foreach dir, $(call compatibility_suite_dirs,$(suite)), \
$(s):$(dir)/$(n)))))
-
- test_config := $(wildcard $(LOCAL_PATH)/AndroidTest.xml)
+ ifeq (,$(LOCAL_TEST_CONFIG))
+ test_config := $(wildcard $(LOCAL_PATH)/AndroidTest.xml)
+ else
+ test_config := $(LOCAL_PATH)/$(LOCAL_TEST_CONFIG)
+ endif
ifeq (,$(test_config))
ifneq (true,$(is_native))
is_instrumentation_test := true
diff --git a/core/clear_vars.mk b/core/clear_vars.mk
index e90dd4a..a4c47d5 100644
--- a/core/clear_vars.mk
+++ b/core/clear_vars.mk
@@ -270,6 +270,7 @@
LOCAL_STRIP_MODULE:=
LOCAL_SYSTEM_SHARED_LIBRARIES:=none
LOCAL_TARGET_REQUIRED_MODULES:=
+LOCAL_TEST_CONFIG:=
LOCAL_TEST_CONFIG_OPTIONS:=
LOCAL_TEST_DATA:=
LOCAL_TEST_MODULE_TO_PROGUARD_WITH:=
diff --git a/core/dex_preopt.mk b/core/dex_preopt.mk
index 55ef779..6c0a4b4 100644
--- a/core/dex_preopt.mk
+++ b/core/dex_preopt.mk
@@ -100,24 +100,28 @@
$(call hiddenapi_stubs_jar,android.test.base.stubs)
# System API stubs
-HIDDENAPI_STUBS += \
+HIDDENAPI_STUBS_SYSTEM := \
$(call hiddenapi_stubs_jar,android_system_stubs_current)
# Test API stubs
-HIDDENAPI_STUBS += \
+HIDDENAPI_STUBS_TEST := \
$(call hiddenapi_stubs_jar,android_test_stubs_current)
# Singleton rule which applies $(HIDDENAPI) on all boot class path dex files.
# Inputs are filled with `hiddenapi-copy-dex-files` rules.
-$(INTERNAL_PLATFORM_HIDDENAPI_PRIVATE_LIST): \
- PRIVATE_HIDDENAPI_STUBS := $(HIDDENAPI_STUBS)
+$(INTERNAL_PLATFORM_HIDDENAPI_PRIVATE_LIST): PRIVATE_HIDDENAPI_STUBS := $(HIDDENAPI_STUBS)
+$(INTERNAL_PLATFORM_HIDDENAPI_PRIVATE_LIST): PRIVATE_HIDDENAPI_STUBS_SYSTEM := $(HIDDENAPI_STUBS_SYSTEM)
+$(INTERNAL_PLATFORM_HIDDENAPI_PRIVATE_LIST): PRIVATE_HIDDENAPI_STUBS_TEST := $(HIDDENAPI_STUBS_TEST)
$(INTERNAL_PLATFORM_HIDDENAPI_PRIVATE_LIST): \
.KATI_IMPLICIT_OUTPUTS := $(INTERNAL_PLATFORM_HIDDENAPI_PUBLIC_LIST)
-$(INTERNAL_PLATFORM_HIDDENAPI_PRIVATE_LIST): $(HIDDENAPI) $(HIDDENAPI_STUBS)
+$(INTERNAL_PLATFORM_HIDDENAPI_PRIVATE_LIST): $(HIDDENAPI) $(HIDDENAPI_STUBS) \
+ $(HIDDENAPI_STUBS_SYSTEM) $(HIDDENAPI_STUBS_TEST)
for INPUT_DEX in $(PRIVATE_DEX_INPUTS); do \
find `dirname $${INPUT_DEX}` -maxdepth 1 -name "classes*.dex"; \
done | sort | sed 's/^/--boot-dex=/' | xargs $(HIDDENAPI) list \
- $(addprefix --stub-dex=,$(PRIVATE_HIDDENAPI_STUBS)) \
+ --stub-classpath=$(call normalize-path-list, $(PRIVATE_HIDDENAPI_STUBS)) \
+ --stub-classpath=$(call normalize-path-list, $(PRIVATE_HIDDENAPI_STUBS_SYSTEM)) \
+ --stub-classpath=$(call normalize-path-list, $(PRIVATE_HIDDENAPI_STUBS_TEST)) \
--out-public=$(INTERNAL_PLATFORM_HIDDENAPI_PUBLIC_LIST) \
--out-private=$(INTERNAL_PLATFORM_HIDDENAPI_PRIVATE_LIST)
diff --git a/target/board/BoardConfigGsiCommon.mk b/target/board/BoardConfigGsiCommon.mk
index e910514..47107a0 100644
--- a/target/board/BoardConfigGsiCommon.mk
+++ b/target/board/BoardConfigGsiCommon.mk
@@ -3,11 +3,12 @@
# Common compile-time definitions for GSI
#
-# system.img is always ext4 with sparse option
+# GSIs always use ext4.
TARGET_USERIMAGES_USE_EXT4 := true
-# TODO(b/63790380): emulator doesn't support sparse yet
-#TARGET_USERIMAGES_SPARSE_EXT_DISABLED := false
-TARGET_USERIMAGES_SPARSE_EXT_DISABLED := true
+# GSIs are historically released in sparse format.
+# Some vendors' bootloaders don't work properly with raw format images. So
+# we explicit specify this need below (even though it's the current default).
+TARGET_USERIMAGES_SPARSE_EXT_DISABLED := false
TARGET_USES_MKE2FS := true
# Enable dyanmic system image size and reserved 64MB in it.
diff --git a/target/product/base_system.mk b/target/product/base_system.mk
index 9c22bed..2cfefc5 100644
--- a/target/product/base_system.mk
+++ b/target/product/base_system.mk
@@ -246,6 +246,7 @@
voip-common \
vold \
WallpaperBackup \
+ watchdogd \
wificond \
wifi-service \
wm \
diff --git a/target/product/base_vendor.mk b/target/product/base_vendor.mk
index 27f5441..8aa5b8b 100644
--- a/target/product/base_vendor.mk
+++ b/target/product/base_vendor.mk
@@ -21,6 +21,7 @@
linker.recovery \
recovery \
shell_and_utilities_recovery \
+ watchdogd.recovery \
# Base modules and settings for the vendor partition.
PRODUCT_PACKAGES += \
diff --git a/tools/releasetools/build_image.py b/tools/releasetools/build_image.py
index 83bf7fd..5b46ab0 100755
--- a/tools/releasetools/build_image.py
+++ b/tools/releasetools/build_image.py
@@ -745,7 +745,9 @@
# Run e2fsck on the inflated image file
e2fsck_command = ["e2fsck", "-f", "-n", unsparse_image]
- (e2fsck_output, exit_code) = RunCommand(e2fsck_command)
+ # TODO(b/112062612): work around e2fsck failure with SANITIZE_HOST=address
+ env4e2fsck = {"ASAN_OPTIONS": "detect_odr_violation=0"}
+ (e2fsck_output, exit_code) = RunCommand(e2fsck_command, env=env4e2fsck)
os.remove(unsparse_image)
diff --git a/tools/signapk/Android.bp b/tools/signapk/Android.bp
index 4954cf5..ee4cfab 100644
--- a/tools/signapk/Android.bp
+++ b/tools/signapk/Android.bp
@@ -22,8 +22,8 @@
manifest: "SignApk.mf",
static_libs: [
"apksig",
- "bouncycastle",
- "bouncycastle-bcpkix",
+ "bouncycastle-unbundled",
+ "bouncycastle-bcpkix-unbundled",
"conscrypt",
],
diff --git a/tools/signtos/Android.bp b/tools/signtos/Android.bp
index b26631f..688e7b8 100644
--- a/tools/signtos/Android.bp
+++ b/tools/signtos/Android.bp
@@ -21,7 +21,7 @@
srcs: ["SignTos.java"],
manifest: "SignTos.mf",
static_libs: [
- "bouncycastle",
- "bouncycastle-bcpkix",
+ "bouncycastle-unbundled",
+ "bouncycastle-bcpkix-unbundled",
],
}