From 7522f04a4b0327cf493dfe6c501634b2b1e1367a Mon Sep 17 00:00:00 2001 From: Ying Wang Date: Mon, 11 Oct 2010 16:31:49 -0700 Subject: [PATCH] Verify PRODUCT_* are not modified by Android.mks, but allow them to be read only. Bug: 3076955 Change-Id: I7ddcc5b9d6325d3a3c63f952f97034ddf223630a --- core/main.mk | 9 ++++----- core/product.mk | 21 +++------------------ 2 files changed, 7 insertions(+), 23 deletions(-) diff --git a/core/main.mk b/core/main.mk index 8172b2257c..1c7706ade2 100644 --- a/core/main.mk +++ b/core/main.mk @@ -473,10 +473,10 @@ endif # !BUILD_TINY_ANDROID endif # !SDK_ONLY # Before we go and include all of the module makefiles, stash away -# the PRODUCT_* values so you can't get to them. -stash_product_vars:=#true +# the PRODUCT_* values so that later we can verify they are not modified. +stash_product_vars:=true ifeq ($(stash_product_vars),true) - $(call stash-product-vars, __STASHED, DO_NOT_USE_IN_ANDROID_MK_) + $(call stash-product-vars, __STASHED) endif ifneq ($(ONE_SHOT_MAKEFILE),) @@ -510,8 +510,7 @@ include $(subdir_makefiles) endif # ONE_SHOT_MAKEFILE ifeq ($(stash_product_vars),true) - $(call assert-product-vars, __STASHED, DO_NOT_USE_IN_ANDROID_MK_) - $(call restore-product-vars, __STASHED) + $(call assert-product-vars, __STASHED) endif include $(BUILD_SYSTEM)/legacy_prebuilts.mk diff --git a/core/product.mk b/core/product.mk index 67413f7a2e..cea3d1cece 100644 --- a/core/product.mk +++ b/core/product.mk @@ -190,44 +190,29 @@ endef # -# Rename the variables in _product_var_list. +# Stash vaues of the variables in _product_var_list. # $(1): Renamed prefix -# $(2): New value prefix. The new value will be $(2)$(VARNAME) # define stash-product-vars $(foreach v,$(_product_var_list), \ $(eval $(strip $(1))_$(call rot13,$(v)):=$$($$(v))) \ - $(eval $(v):=$(2)$$(v)) \ ) endef # # Assert that the the variable stashed by stash-product-vars remains untouched. # $(1): The prefix as supplied to stash-product-vars -# $(2): The expected value prefix. The value should be $(2)$(VARNAME) # define assert-product-vars $(strip \ $(eval changed_variables:=) $(foreach v,$(_product_var_list), \ - $(if $(call streq,$($(v)),$(2)$(v)),, \ + $(if $(call streq,$($(v)),$($(strip $(1))_$(call rot13,$(v)))),, \ $(eval $(warning $(v) has been modified: $($(v)))) \ + $(eval $(warning previous value: $($(strip $(1))_$(call rot13,$(v))))) \ $(eval changed_variables := $(changed_variables) $(v))) \ ) \ $(if $(changed_variables),\ $(eval $(error The following variables have been changed: $(changed_variables))),) ) endef -# ... $(eval $(warning $(v) $($(v)),$(2)$(v) streq-->$(call streq,$($(v)),$(2)$(v)))) \ - -# -# Restore the product variables as stashed by stash-product-vars -# $(1): The prefix as supplied to stash-product-vars -# -define restore-product-vars -$(foreach v,$(_product_var_list), \ - $(eval $(v):=$($(strip $(1))_$(call rot13,$(v)))) \ - $(eval $(strip $(1))_$(v):=) \ - ) -endef -