From 7c3c9ef7deda8225450a5c804b0957e3c86c4d43 Mon Sep 17 00:00:00 2001 From: Anton Hansson Date: Wed, 28 Feb 2018 17:01:51 +0000 Subject: [PATCH 1/2] Add more control to the java sdk enforcement. I plan on turning the error on for APPS in AOSP soon, and in preparation for that I'm introducing a finer granularity of warning/error control. Also add an almost-empty whitelist, which will likely need to be expanded in the future. Bug: 73535841 Test: make Exempt-From-Owner-Approval: cp from aosp and master Change-Id: I2fc6700a504b7af50aa7bde727047bc56b167937 Merged-In: I13ebe3ead2d19aa797bcc39a7bbccdb55b9c7d1c Merged-In: I87c968b2e8314300b155483bbb7ce5e169fe8f0c --- core/sdk_check.mk | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/core/sdk_check.mk b/core/sdk_check.mk index c5c2bc8b7..49ea2a8c9 100644 --- a/core/sdk_check.mk +++ b/core/sdk_check.mk @@ -2,13 +2,31 @@ # Enforcement checks that LOCAL_SDK_VERSION and LOCAL_PRIVATE_PLATFORM_APIS are # set correctly. # Should be included by java targets that allow specifying LOCAL_SDK_VERSION. +# The JAVA_SDK_ENFORCEMENT_WARNING and JAVA_SDK_ENFORCEMENT_ERROR variables may +# be set to a particular module class to enable warnings and errors for that +# subtype. + +whitelisted_modules := framework-res__auto_generated_rro ifeq ($(LOCAL_SDK_VERSION)$(LOCAL_PRIVATE_PLATFORM_APIS),) -ifneq ($(JAVA_SDK_ENFORCEMENT_WARNING),) -$(warning Java modules must specify LOCAL_SDK_VERSION or LOCAL_PRIVATE_PLATFORM_APIS, but $(LOCAL_MODULE) specifies neither.) -endif + ifeq (,$(filter $(LOCAL_MODULE),$(whitelisted_modules))) + ifneq ($(JAVA_SDK_ENFORCEMENT_WARNING)$(JAVA_SDK_ENFORCEMENT_ERROR),) + my_message := Must specify LOCAL_SDK_VERSION or LOCAL_PRIVATE_PLATFORM_APIS, + ifeq ($(LOCAL_MODULE_CLASS),$(JAVA_SDK_ENFORCEMENT_ERROR)) + $(call pretty-error,$(my_message)) + endif + ifeq ($(LOCAL_MODULE_CLASS),$(JAVA_SDK_ENFORCEMENT_WARNING)) + $(call pretty-warning,$(my_message)) + endif + my_message := + endif + endif else ifneq ($(LOCAL_SDK_VERSION),) -ifneq ($(LOCAL_PRIVATE_PLATFORM_APIS),) -$(error $(LOCAL_MODULE) specifies both LOCAL_SDK_VERSION ($(LOCAL_SDK_VERSION)) and LOCAL_PRIVATE_PLATFORM_APIS ($(LOCAL_PRIVATE_PLATFORM_APIS)), but should specify only one.) -endif + ifneq ($(LOCAL_PRIVATE_PLATFORM_APIS),) + my_message := Specifies both LOCAL_SDK_VERSION ($(LOCAL_SDK_VERSION)) and + my_message += LOCAL_PRIVATE_PLATFORM_APIS ($(LOCAL_PRIVATE_PLATFORM_APIS)) + my_message += but should specify only one + $(call pretty-error,$(my_message)) + my_message := + endif endif From b88c0e04f86caa3ff7c3d4c7d0be65d9bf84fc7c Mon Sep 17 00:00:00 2001 From: Anton Hansson Date: Wed, 7 Mar 2018 10:20:53 +0000 Subject: [PATCH 2/2] Enforce specifying sdk/private for apps. All apps in master comply with this now, but new offenders are being added daily. This will ensure compliance going forward. Test: build/soong/build_test.bash Bug: 73535841 Exempt-From-Owner-Approval: cp from master Change-Id: If28049750a9787bf455f72402e624dbddf842253 Merged-In: Id3fbb502d26d91b64480fec74e241ba77fa0faff --- core/sdk_check.mk | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/sdk_check.mk b/core/sdk_check.mk index 49ea2a8c9..c09fc7cae 100644 --- a/core/sdk_check.mk +++ b/core/sdk_check.mk @@ -8,6 +8,11 @@ whitelisted_modules := framework-res__auto_generated_rro + +ifeq (,$(JAVA_SDK_ENFORCEMENT_ERROR)) + JAVA_SDK_ENFORCEMENT_ERROR := APPS +endif + ifeq ($(LOCAL_SDK_VERSION)$(LOCAL_PRIVATE_PLATFORM_APIS),) ifeq (,$(filter $(LOCAL_MODULE),$(whitelisted_modules))) ifneq ($(JAVA_SDK_ENFORCEMENT_WARNING)$(JAVA_SDK_ENFORCEMENT_ERROR),)