Split PRODUCT_USE_LOGICAL_PARTITIONS into sub-flags.
Split the flag into PRODUCT_USE_DYNAMIC_PARTITION_SIZE
and PRODUCT_BUILD_SUPER_PARTITION. More sub-flags can be
added with the same way.
Also change some checks with USE_LOGICAL_PARTITIONS with
the appropriate sub-flags.
This allows easier device bring-up to fulfill the requirements
separately.
This also enables dynamic partition size without logical patition.
Originally, to enable BOARD_*_PARTITION_RESERVED_SIZE must also
enable PRODUCT_USE_LOGICAL_PARTITIONS. The patch fix the rule to
let dynamic partition size is able to be used independently.
Fixes: 111966003
Test: make superimage with PRODUCT_USE_LOGICAL_PARTITIONS
Change-Id: I45b29c87bf94356d8416bbd58a14c8982039c222
diff --git a/core/Makefile b/core/Makefile
index bd493a6..0d04f14 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -1293,7 +1293,7 @@
$(if $(filter true,$(BOARD_BUILD_SYSTEM_ROOT_IMAGE)),\
$(hide) echo "system_root_image=true" >> $(1)
$(hide) echo "root_dir=$(TARGET_ROOT_OUT)" >> $(1))
-$(if $(USE_LOGICAL_PARTITIONS),$(hide) echo "use_logical_partitions=true" >> $(1))
+$(if $(PRODUCT_USE_DYNAMIC_PARTITION_SIZE),$(hide) echo "use_dynamic_partition_size=true" >> $(1))
$(if $(3),$(hide) $(foreach kv,$(3),echo "$(kv)" >> $(1);))
endef
@@ -2584,7 +2584,7 @@
$(foreach p,$(1),$(call read-image-prop-dictionary,$($(p)image_intermediates)/generated_$(p)_image_info.txt,$(p)_size))
endef
-ifeq (true,$(USE_LOGICAL_PARTITIONS))
+ifeq (true,$(PRODUCT_BUILD_SUPER_PARTITION))
# BOARD_SUPER_PARTITION_SIZE must be defined to build super image.
ifdef BOARD_SUPER_PARTITION_SIZE
@@ -2617,7 +2617,7 @@
$(call dist-for-goals,dist_files,$(INSTALLED_SUPERIMAGE_TARGET))
endif # BOARD_SUPER_PARTITION_SIZE
-endif # USE_LOGICAL_PARTITIONS
+endif # PRODUCT_BUILD_SUPER_PARTITION
# -----------------------------------------------------------------
# Check image sizes <= size of super partition
@@ -2625,7 +2625,7 @@
ifeq (,$(TARGET_BUILD_APPS))
# Do not check for apps-only build
-ifeq (true,$(USE_LOGICAL_PARTITIONS))
+ifeq (true,$(PRODUCT_BUILD_SUPER_PARTITION))
ifdef BOARD_SUPER_PARTITION_SIZE
ifdef BOARD_SUPER_PARTITION_PARTITION_LIST
@@ -2650,7 +2650,7 @@
endif # BOARD_SUPER_PARTITION_PARTITION_LIST
endif # BOARD_SUPER_PARTITION_SIZE
-endif # USE_LOGICAL_PARTITIONS
+endif # PRODUCT_BUILD_SUPER_PARTITION
endif # TARGET_BUILD_APPS
diff --git a/core/config.mk b/core/config.mk
index 0a23ef9..b4ddf4b 100644
--- a/core/config.mk
+++ b/core/config.mk
@@ -925,13 +925,21 @@
endif
.KATI_READONLY := PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
-ifndef USE_LOGICAL_PARTITIONS
- USE_LOGICAL_PARTITIONS := $(PRODUCT_USE_LOGICAL_PARTITIONS)
-endif
-.KATI_READONLY := USE_LOGICAL_PARTITIONS
-
ifeq ($(USE_LOGICAL_PARTITIONS),true)
+ requirements := \
+ PRODUCT_USE_DYNAMIC_PARTITION_SIZE \
+ PRODUCT_BUILD_SUPER_PARTITION \
+ PRODUCT_USE_FASTBOOTD \
+
+ $(foreach req,$(requirements),$(if $(filter false,$($(req))),\
+ $(error USE_LOGICAL_PARTITIONS requires $(req) to be true)))
+
+ requirements :=
+
BOARD_KERNEL_CMDLINE += androidboot.logical_partitions=1
+endif
+
+ifeq ($(PRODUCT_USE_DYNAMIC_PARTITION_SIZE),true)
ifneq ($(BOARD_SYSTEMIMAGE_PARTITION_SIZE),)
ifneq ($(BOARD_SYSTEMIMAGE_PARTITION_RESERVED_SIZE),)
@@ -961,6 +969,9 @@
endif
endif
+endif # PRODUCT_USE_DYNAMIC_PARTITION_SIZE
+
+ifeq ($(PRODUCT_BUILD_SUPER_PARTITION),true)
ifdef BOARD_SUPER_PARTITION_PARTITION_LIST
# BOARD_SUPER_PARTITION_PARTITION_LIST: a list of the following tokens
valid_super_partition_list := system vendor product product_services
@@ -971,8 +982,7 @@
endif
valid_super_partition_list :=
endif # BOARD_SUPER_PARTITION_PARTITION_LIST
-
-endif # USE_LOGICAL_PARTITIONS
+endif # PRODUCT_BUILD_SUPER_PARTITION
# ###############################################################
# Set up final options.
diff --git a/core/main.mk b/core/main.mk
index 57d6172..86b30c8 100644
--- a/core/main.mk
+++ b/core/main.mk
@@ -240,7 +240,7 @@
ADDITIONAL_DEFAULT_PROPERTIES += ro.actionable_compatible_property.enabled=${PRODUCT_COMPATIBLE_PROPERTY}
endif
-ADDITIONAL_PRODUCT_PROPERTIES += ro.boot.logical_partitions=${USE_LOGICAL_PARTITIONS}
+ADDITIONAL_PRODUCT_PROPERTIES += ro.boot.logical_partitions=$(USE_LOGICAL_PARTITIONS)
# -----------------------------------------------------------------
###
diff --git a/core/product.mk b/core/product.mk
index ff2e7e7..ddf774f 100644
--- a/core/product.mk
+++ b/core/product.mk
@@ -203,6 +203,9 @@
PRODUCT_USE_LOGICAL_PARTITIONS \
PRODUCT_ENFORCE_ARTIFACT_PATH_REQUIREMENTS \
PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST \
+ PRODUCT_USE_DYNAMIC_PARTITION_SIZE \
+ PRODUCT_BUILD_SUPER_PARTITION \
+ PRODUCT_USE_FASTBOOTD \
define dump-product
$(info ==== $(1) ====)\
diff --git a/core/product_config.mk b/core/product_config.mk
index 325dc64..93bca41 100644
--- a/core/product_config.mk
+++ b/core/product_config.mk
@@ -519,3 +519,21 @@
PRODUCT_USE_LOGICAL_PARTITIONS := \
$(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_USE_LOGICAL_PARTITIONS))
.KATI_READONLY := PRODUCT_USE_LOGICAL_PARTITIONS
+ifndef USE_LOGICAL_PARTITIONS
+ USE_LOGICAL_PARTITIONS := $(PRODUCT_USE_LOGICAL_PARTITIONS)
+endif
+
+# All requirements of USE_LOGICAL_PARTITIONS falls back to
+# USE_LOGICAL_PARTITIONS if not defined.
+PRODUCT_USE_DYNAMIC_PARTITION_SIZE := $(or \
+ $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_USE_DYNAMIC_PARTITION_SIZE)),\
+ $(USE_LOGICAL_PARTITIONS))
+.KATI_READONLY := PRODUCT_USE_DYNAMIC_PARTITION_SIZE
+PRODUCT_BUILD_SUPER_PARTITION := $(or \
+ $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_BUILD_SUPER_PARTITION)),\
+ $(USE_LOGICAL_PARTITIONS))
+.KATI_READONLY := PRODUCT_BUILD_SUPER_PARTITION
+PRODUCT_USE_FASTBOOTD := $(or \
+ $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_USE_FASTBOOTD)),\
+ $(USE_LOGICAL_PARTITIONS))
+.KATI_READONLY := PRODUCT_USE_FASTBOOTD
diff --git a/tools/releasetools/build_image.py b/tools/releasetools/build_image.py
index 6eee583..83bf7fd 100755
--- a/tools/releasetools/build_image.py
+++ b/tools/releasetools/build_image.py
@@ -546,7 +546,7 @@
verity_supported = prop_dict.get("verity") == "true"
verity_fec_supported = prop_dict.get("verity_fec") == "true"
- if (prop_dict.get("use_logical_partitions") == "true" and
+ if (prop_dict.get("use_dynamic_partition_size") == "true" and
"partition_size" not in prop_dict):
# if partition_size is not defined, use output of `du' + reserved_size
success, size = GetDiskUsage(in_dir)
@@ -799,7 +799,7 @@
"avb_enable",
"avb_avbtool",
"avb_salt",
- "use_logical_partitions",
+ "use_dynamic_partition_size",
)
for p in common_props:
copy_prop(p, p)