Add an option to use Starlark-based configuration by default.
In order to use Starlark-based product and board configuration for
a product, add its name to the STARLARK_OPT_IN_PRODUCTS list in
the AndroidProducts.mk file where this product is defined.
Fixes: 220379303
Test: Temporarily added STARLARK_OPT_IN_PRODUCTS to build/make/target/product/AndroidProducts.mk
Change-Id: Iacd23cec00a7a1958701873bce0fc9d5f79b1f17
diff --git a/core/product_config.mk b/core/product_config.mk
index 34e393e..be4aded 100644
--- a/core/product_config.mk
+++ b/core/product_config.mk
@@ -157,6 +157,8 @@
# is either a <product>:path/to/file.mk, or just path/to/<product.mk>
# COMMON_LUNCH_CHOICES specifies <product>-<variant> values to be shown
# in the `lunch` menu
+# STARLARK_OPT_IN_PRODUCTS specifies products to use Starlark-based
+# product configuration by default
# Builds a list of first/second elements of each pair:
# $(call _first,a:A b:B,:) returns 'a b'
@@ -173,29 +175,36 @@
# Reads given AndroidProduct.mk file and sets the following variables:
# ap_product_paths -- the list of <product>:<path> pairs
# ap_common_lunch_choices -- the list of <product>-<build variant> items
-# In addition, validates COMMON_LUNCH_CHOICES values
+# ap_products_using_starlark_config -- the list of products using starlark config
+# In addition, validates COMMON_LUNCH_CHOICES and STARLARK_OPT_IN_PRODUCTS values
define _read-ap-file
$(eval PRODUCT_MAKEFILES :=) \
$(eval COMMON_LUNCH_CHOICES :=) \
+ $(eval STARLARK_OPT_IN_PRODUCTS := ) \
$(eval ap_product_paths :=) \
$(eval LOCAL_DIR := $(patsubst %/,%,$(dir $(f)))) \
$(eval include $(f)) \
$(foreach p, $(PRODUCT_MAKEFILES),$(eval ap_product_paths += $(call _product-spec,$(p)))) \
$(eval ap_common_lunch_choices := $(COMMON_LUNCH_CHOICES)) \
+ $(eval ap_products_using_starlark_config := $(STARLARK_OPT_IN_PRODUCTS)) \
$(eval _products := $(call _first,$(ap_product_paths),:)) \
$(eval _bad := $(filter-out $(_products),$(call _first,$(ap_common_lunch_choices),-))) \
$(if $(_bad),$(error COMMON_LUNCH_CHOICES contains products(s) not defined in this file: $(_bad))) \
$(eval _bad := $(filter-out %-eng %-userdebug %-user,$(ap_common_lunch_choices))) \
$(if $(_bad),$(error invalid variant in COMMON_LUNCH_CHOICES: $(_bad)))
+ $(eval _bad := $(filter-out $(_products),$(ap_products_using_starlark_config))) \
+ $(if $(_bad),$(error STARLARK_OPT_IN_PRODUCTS contains product(s) not defined in this file: $(_bad)))
endef
-# Build cumulative lists of all product specs/lunch choices
+# Build cumulative lists of all product specs/lunch choices/Starlark-based products.
product_paths :=
common_lunch_choices :=
+products_using_starlark_config :=
$(foreach f,$(android_products_makefiles), \
$(call _read-ap-file,$(f)) \
$(eval product_paths += $(ap_product_paths)) \
$(eval common_lunch_choices += $(ap_common_lunch_choices)) \
+ $(eval products_using_starlark_config += $(ap_products_using_starlark_config)) \
)
# Dedup, extract product names, etc.
@@ -228,6 +237,11 @@
else
# Import just the current product.
$(if $(current_product_makefile),,$(error Can not locate config makefile for product "$(TARGET_PRODUCT)"))
+ifneq (,$(filter $(TARGET_PRODUCT),$(products_using_starlark_config)))
+ RBC_PRODUCT_CONFIG := true
+ RBC_BOARD_CONFIG := true
+endif
+
ifndef RBC_PRODUCT_CONFIG
$(call import-products, $(current_product_makefile))
else