Merge "Fall back to normal split if imgdiff fails when splitting large apks"
diff --git a/core/Makefile b/core/Makefile
index 4ef0d89..a9bd1c2 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -517,6 +517,20 @@
$(call dist-for-goals,droidcore,$(SOONG_TO_CONVERT))
# -----------------------------------------------------------------
+# Modules use -Wno-error, or added default -Wall -Werror
+WALL_WERROR := $(PRODUCT_OUT)/wall_werror.txt
+$(WALL_WERROR):
+ @rm -f $@
+ echo "# Modules using -Wno-error" >> $@
+ for m in $(sort $(SOONG_MODULES_USING_WNO_ERROR) $(MODULES_USING_WNO_ERROR)); do echo $$m >> $@; done
+ echo "# Modules added default -Wall -Werror" >> $@
+ for m in $(sort $(SOONG_MODULES_ADDED_WERROR) $(MODULES_ADDED_WERROR)); do echo $$m >> $@; done
+ echo "# Modules added default -Wall" >> $@
+ for m in $(sort $(SOONG_MODULES_ADDED_WALL) $(MODULES_ADDED_WALL)); do echo $$m >> $@; done
+
+$(call dist-for-goals,droidcore,$(WALL_WERROR))
+
+# -----------------------------------------------------------------
# The dev key is used to sign this package, and as the key required
# for future OTA packages installed by this system. Actual product
# deliverables will be re-signed by hand. We expect this file to
@@ -1176,14 +1190,6 @@
RECOVERY_RESOURCE_ZIP :=
endif
-ifeq ($(TARGET_PRIVATE_RES_DIRS),)
- $(info No private recovery resources for TARGET_DEVICE $(TARGET_DEVICE))
-endif
-
-ifeq ($(recovery_fstab),)
- $(info No recovery.fstab for TARGET_DEVICE $(TARGET_DEVICE))
-endif
-
INTERNAL_RECOVERYIMAGE_ARGS := \
$(addprefix --second ,$(INSTALLED_2NDBOOTLOADER_TARGET)) \
--kernel $(recovery_kernel) \
@@ -2179,7 +2185,7 @@
$(shell find system/update_engine/scripts -name \*.pyc -prune -o -type f -print | sort) \
$(shell find build/target/product/security -type f -name \*.x509.pem -o -name \*.pk8 -o \
-name verity_key | sort) \
- $(shell find device vendor -type f -name \*.pk8 -o -name verifiedboot\* -o \
+ $(shell find device $(wildcard vendor) -type f -name \*.pk8 -o -name verifiedboot\* -o \
-name \*.x509.pem -o -name oem\*.prop | sort)
OTATOOLS_RELEASETOOLS := \
diff --git a/core/binary.mk b/core/binary.mk
index bd1e601..e54edbe 100644
--- a/core/binary.mk
+++ b/core/binary.mk
@@ -1330,6 +1330,22 @@
asm_objects += $(asm_objects_asm)
endif
+###################################################################
+## When compiling a CFI enabled target, use the .cfi variant of any
+## static dependencies (where they exist).
+##################################################################
+define use_soong_cfi_static_libraries
+ $(foreach l,$(1),$(if $(filter $(l),$(SOONG_CFI_STATIC_LIBRARIES)),\
+ $(l).cfi,$(l)))
+endef
+
+ifneq ($(filter cfi,$(my_sanitize)),)
+ my_whole_static_libraries := $(call use_soong_cfi_static_libraries,\
+ $(my_whole_static_libraries))
+ my_static_libraries := $(call use_soong_cfi_static_libraries,\
+ $(my_static_libraries))
+endif
+
###########################################################
## When compiling against the VNDK, use LL-NDK libraries
###########################################################
@@ -1664,13 +1680,31 @@
my_cflags += -DANDROID_STRICT
endif
-# Add -Werror if LOCAL_PATH is in the WARNING_DISALLOWED project list,
-# or not in the WARNING_ALLOWED project list.
-ifneq (,$(strip $(call find_warning_disallowed_projects,$(LOCAL_PATH))))
- my_cflags_no_override += -Werror
-else
- ifeq (,$(strip $(call find_warning_allowed_projects,$(LOCAL_PATH))))
- my_cflags_no_override += -Werror
+# Check if -Werror or -Wno-error is used in C compiler flags.
+# Modules defined in $(SOONG_ANDROID_MK) are checked in soong's cc.go.
+ifneq ($(LOCAL_MODULE_MAKEFILE),$(SOONG_ANDROID_MK))
+ # Header libraries do not need cflags.
+ ifneq (HEADER_LIBRARIES,$(LOCAL_MODULE_CLASS))
+ # Prebuilt modules do not need cflags.
+ ifeq (,$(LOCAL_PREBUILT_MODULE_FILE))
+ my_all_cflags := $(my_cflags) $(my_cppflags) $(my_cflags_no_override)
+ # Issue warning if -Wno-error is used.
+ ifneq (,$(filter -Wno-error,$(my_all_cflags)))
+ $(eval MODULES_USING_WNO_ERROR := $(MODULES_USING_WNO_ERROR) $(LOCAL_MODULE_MAKEFILE):$(LOCAL_MODULE))
+ else
+ # Issue warning if -Werror is not used. Add it.
+ ifeq (,$(filter -Werror,$(my_all_cflags)))
+ # Add -Wall -Werror unless the project is in the WARNING_ALLOWED project list.
+ ifeq (,$(strip $(call find_warning_allowed_projects,$(LOCAL_PATH))))
+ $(eval MODULES_ADDED_WERROR := $(MODULES_ADDED_WERROR) $(LOCAL_MODULE_MAKEFILE):$(LOCAL_MODULE))
+ my_cflags := -Wall -Werror $(my_cflags)
+ else
+ $(eval MODULES_ADDED_WALL := $(MODULES_ADDED_WALL) $(LOCAL_MODULE_MAKEFILE):$(LOCAL_MODULE))
+ my_cflags := -Wall $(my_cflags)
+ endif
+ endif
+ endif
+ endif
endif
endif
diff --git a/core/config.mk b/core/config.mk
index bebc186..1994899 100644
--- a/core/config.mk
+++ b/core/config.mk
@@ -898,38 +898,7 @@
APPS_DEFAULT_VERSION_NAME := $(PLATFORM_VERSION)
endif
-# Projects clean of compiler warnings should be compiled with -Werror.
-# If most modules in a directory such as external/ have warnings,
-# the directory should be in ANDROID_WARNING_ALLOWED_PROJECTS list.
-# When some of its subdirectories are cleaned up, the subdirectories
-# can be added into ANDROID_WARNING_DISALLOWED_PROJECTS list, e.g.
-# external/fio/.
-ANDROID_WARNING_DISALLOWED_PROJECTS := \
- art/% \
- bionic/% \
- external/fio/% \
- hardware/interfaces/% \
-
-define find_warning_disallowed_projects
- $(filter $(ANDROID_WARNING_DISALLOWED_PROJECTS),$(1)/)
-endef
-
-# Projects with compiler warnings are compiled without -Werror.
-ANDROID_WARNING_ALLOWED_PROJECTS := \
- bootable/% \
- cts/% \
- dalvik/% \
- development/% \
- device/% \
- external/% \
- frameworks/% \
- hardware/% \
- packages/% \
- system/% \
- test/vts/% \
- tools/adt/idea/android/ultimate/get_modification_time/jni/% \
- vendor/% \
-
+# ANDROID_WARNING_ALLOWED_PROJECTS is generated by build/soong.
define find_warning_allowed_projects
$(filter $(ANDROID_WARNING_ALLOWED_PROJECTS),$(1)/)
endef
diff --git a/core/config_sanitizers.mk b/core/config_sanitizers.mk
index 8bd9248..9415143 100644
--- a/core/config_sanitizers.mk
+++ b/core/config_sanitizers.mk
@@ -132,6 +132,12 @@
my_sanitize_diag := $(filter-out cfi,$(my_sanitize_diag))
endif
+# Disable CFI for host targets
+ifdef LOCAL_IS_HOST_MODULE
+ my_sanitize := $(filter-out cfi,$(my_sanitize))
+ my_sanitize_diag := $(filter-out cfi,$(my_sanitize_diag))
+endif
+
# Support for local sanitize blacklist paths.
ifneq ($(my_sanitize)$(my_global_sanitize),)
ifneq ($(LOCAL_SANITIZE_BLACKLIST),)
diff --git a/core/definitions.mk b/core/definitions.mk
index 13bd47c..8232cc0 100644
--- a/core/definitions.mk
+++ b/core/definitions.mk
@@ -2569,9 +2569,9 @@
define uncompress-dexs
$(hide) if (zipinfo $@ '*.dex' 2>/dev/null | grep -v ' stor ' >/dev/null) ; then \
rm -rf $(dir $@)uncompresseddexs && mkdir $(dir $@)uncompresseddexs; \
- unzip $@ '*.dex' -d $(dir $@)uncompresseddexs && \
- zip -d $@ '*.dex' && \
- ( cd $(dir $@)uncompresseddexs && find . -type f | sort | zip -D -X -0 ../$(notdir $@) -@ ) && \
+ unzip -q $@ '*.dex' -d $(dir $@)uncompresseddexs && \
+ zip -qd $@ '*.dex' && \
+ ( cd $(dir $@)uncompresseddexs && find . -type f | sort | zip -qD -X -0 ../$(notdir $@) -@ ) && \
rm -rf $(dir $@)uncompresseddexs; \
fi
endef
@@ -2581,9 +2581,9 @@
define uncompress-shared-libs
$(hide) if (zipinfo $@ $(PRIVATE_EMBEDDED_JNI_LIBS) 2>/dev/null | grep -v ' stor ' >/dev/null) ; then \
rm -rf $(dir $@)uncompressedlibs && mkdir $(dir $@)uncompressedlibs; \
- unzip $@ $(PRIVATE_EMBEDDED_JNI_LIBS) -d $(dir $@)uncompressedlibs && \
- zip -d $@ 'lib/*.so' && \
- ( cd $(dir $@)uncompressedlibs && find lib -type f | sort | zip -D -X -0 ../$(notdir $@) -@ ) && \
+ unzip -q $@ $(PRIVATE_EMBEDDED_JNI_LIBS) -d $(dir $@)uncompressedlibs && \
+ zip -qd $@ 'lib/*.so' && \
+ ( cd $(dir $@)uncompressedlibs && find lib -type f | sort | zip -qD -X -0 ../$(notdir $@) -@ ) && \
rm -rf $(dir $@)uncompressedlibs; \
fi
endef
diff --git a/target/product/core_minimal.mk b/target/product/core_minimal.mk
index b2ee7bb..05e3b45 100644
--- a/target/product/core_minimal.mk
+++ b/target/product/core_minimal.mk
@@ -159,5 +159,9 @@
tombstoned.max_tombstone_count=50
endif
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += \
+ ro.logd.size.stats=64K \
+ log.tag.stats_log=I
+
$(call inherit-product, $(SRC_TARGET_DIR)/product/runtime_libart.mk)
$(call inherit-product, $(SRC_TARGET_DIR)/product/base.mk)
diff --git a/tools/releasetools/check_ota_package_signature.py b/tools/releasetools/check_ota_package_signature.py
index 1f8b7bb..8106d06 100755
--- a/tools/releasetools/check_ota_package_signature.py
+++ b/tools/releasetools/check_ota_package_signature.py
@@ -22,7 +22,10 @@
import argparse
import common
+import os
+import os.path
import re
+import site
import subprocess
import sys
import tempfile
@@ -32,7 +35,12 @@
from hashlib import sha256
# 'update_payload' package is under 'system/update_engine/scripts/', which
-# should to be included in PYTHONPATH.
+# should be included in PYTHONPATH. Try to set it up automatically if
+# if ANDROID_BUILD_TOP is available.
+top = os.getenv('ANDROID_BUILD_TOP')
+if top:
+ site.addsitedir(os.path.join(top, 'system', 'update_engine', 'scripts'))
+
from update_payload.payload import Payload
from update_payload.update_metadata_pb2 import Signatures