Raise an error when partition setting is wrong
When setting target out path at root(/product, /system_ext), either file
system type or prebuilt image must be set. If not, we'd rather raise an
error.
Without raising an error, the artifacts in these directory are not
included in any image.
And also, extract these logics into function, and check product, odm, system_ext
For now, exempt vendor image because of some targets with prebuilt
vendor image.
Bug: 137169253
Test: set TARGET_COPY_OUT_PRODUCT := product
BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE :=
BOARD_PREBUILT_PRODUCTIMAGE :=
and then check if it causes an error.
Test: set TARGET_COPY_OUT_PRODUCT := system/product
BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE := ext4 or
BOARD_PREBUILT_PRODUCTIMAGE := someimage.img
and then check if it causes an error.
Change-Id: Ibf0f7838111075ba3649e198e5649aa7e8e29d7c
diff --git a/core/board_config.mk b/core/board_config.mk
index 0e3c52f..00ac0be 100644
--- a/core/board_config.mk
+++ b/core/board_config.mk
@@ -255,6 +255,19 @@
TARGET_CPU_ABI_LIST_32_BIT := $(subst $(space),$(comma),$(strip $(TARGET_CPU_ABI_LIST_32_BIT)))
TARGET_CPU_ABI_LIST_64_BIT := $(subst $(space),$(comma),$(strip $(TARGET_CPU_ABI_LIST_64_BIT)))
+# Check if config about image building is valid or not.
+define check_image_config
+ $(eval _uc_name := $(call to-upper,$(1))) \
+ $(eval _lc_name := $(call to-lower,$(1))) \
+ $(if $(filter $(_lc_name),$(TARGET_COPY_OUT_$(_uc_name))), \
+ $(if $(BOARD_USES_$(_uc_name)IMAGE),, \
+ $(error If TARGET_COPY_OUT_$(_uc_name) is '$(_lc_name)', either BOARD_PREBUILT_$(_uc_name)IMAGE or BOARD_$(_uc_name)IMAGE_FILE_SYSTEM_TYPE must be set)), \
+ $(if $(BOARD_USES_$(_uc_name)IMAGE), \
+ $(error TARGET_COPY_OUT_$(_uc_name) must be set to '$(_lc_name)' to use a $(_lc_name) image))) \
+ $(eval _uc_name :=) \
+ $(eval _lc_name :=)
+endef
+
###########################################
# Now we can substitute with the real value of TARGET_COPY_OUT_RAMDISK
ifeq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true)
@@ -399,6 +412,8 @@
ifdef BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE
BOARD_USES_VENDORIMAGE := true
endif
+# TODO(b/137169253): For now, some AOSP targets build with prebuilt vendor image.
+# But target's BOARD_PREBUILT_VENDORIMAGE is not filled.
ifeq ($(TARGET_COPY_OUT_VENDOR),vendor)
BOARD_USES_VENDORIMAGE := true
else ifdef BOARD_USES_VENDORIMAGE
@@ -438,11 +453,7 @@
ifdef BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE
BOARD_USES_PRODUCTIMAGE := true
endif
-ifeq ($(TARGET_COPY_OUT_PRODUCT),product)
- BOARD_USES_PRODUCTIMAGE := true
-else ifdef BOARD_USES_PRODUCTIMAGE
- $(error TARGET_COPY_OUT_PRODUCT must be set to 'product' to use a product image)
-endif
+$(call check_image_config,product)
.KATI_READONLY := BOARD_USES_PRODUCTIMAGE
BUILDING_PRODUCT_IMAGE :=
@@ -482,11 +493,7 @@
ifdef BOARD_SYSTEM_EXTIMAGE_FILE_SYSTEM_TYPE
BOARD_USES_SYSTEM_EXTIMAGE := true
endif
-ifeq ($(TARGET_COPY_OUT_SYSTEM_EXT),system_ext)
- BOARD_USES_SYSTEM_EXTIMAGE := true
-else ifdef BOARD_USES_SYSTEM_EXTIMAGE
- $(error TARGET_COPY_OUT_SYSTEM_EXT must be set to 'system_ext' to use a system_ext image)
-endif
+$(call check_image_config,system_ext)
.KATI_READONLY := BOARD_USES_SYSTEM_EXTIMAGE
BUILDING_SYSTEM_EXT_IMAGE :=
@@ -521,11 +528,7 @@
ifdef BOARD_ODMIMAGE_FILE_SYSTEM_TYPE
BOARD_USES_ODMIMAGE := true
endif
-ifeq ($(TARGET_COPY_OUT_ODM),odm)
- BOARD_USES_ODMIMAGE := true
-else ifdef BOARD_USES_ODMIMAGE
- $(error TARGET_COPY_OUT_ODM must be set to 'odm' to use an odm image)
-endif
+$(call check_image_config,odm)
BUILDING_ODM_IMAGE :=
ifeq ($(PRODUCT_BUILD_ODM_IMAGE),)