Enable Dynamic partition [1/2]

* Disable system as root when dynamic partition is enabled
* Set the partition sizes
* Make the various partitions logical ones
* Label the physical partitions as system_block_device
* Introduce a binary to check post OTA status
* Use single fstab file for both system and recovery partitions.

Issue: FP3-A11#146
Change-Id: Iff73712dde841d014c19700f0f9a89ad049f3905
Co-authored-by: Jarl-Penguin <jarlpenguin@outlook.com>
diff --git a/BoardConfig.mk b/BoardConfig.mk
index ae598f9..6346035 100644
--- a/BoardConfig.mk
+++ b/BoardConfig.mk
@@ -121,7 +121,6 @@
 
 
 # File systems and Partitions
-BOARD_BUILD_SYSTEM_ROOT_IMAGE := true
 BOARD_PERSISTIMAGE_FILE_SYSTEM_TYPE := ext4
 BOARD_USES_RECOVERY_AS_BOOT := true
 BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE := ext4
@@ -138,9 +137,43 @@
 BOARD_FLASH_BLOCK_SIZE := 131072
 BOARD_OEMIMAGE_PARTITION_SIZE := 268435456
 BOARD_PERSISTIMAGE_PARTITION_SIZE := 33554432
-BOARD_SYSTEMIMAGE_PARTITION_SIZE := 3221225472
 BOARD_USERDATAIMAGE_PARTITION_SIZE := 51808043008
+
+# Dynamic Partitions
+ifeq ($(PRODUCT_USE_DYNAMIC_PARTITIONS), true)
+BOARD_SUPER_PARTITION_GROUPS := fairphone_dynamic_partitions
+BOARD_FAIRPHONE_DYNAMIC_PARTITIONS_PARTITION_LIST := \
+    system \
+    vendor \
+    odm \
+    product \
+    system_ext
+
+ifeq ($(PRODUCT_RETROFIT_DYNAMIC_PARTITIONS), true)
+BOARD_SUPER_PARTITION_SIZE := 4429185024 # system + vendor + product
+BOARD_SUPER_PARTITION_METADATA_DEVICE := system
+BOARD_SUPER_PARTITION_BLOCK_DEVICES := system vendor product
+BOARD_SUPER_PARTITION_SYSTEM_DEVICE_SIZE := 3221225472
+BOARD_SUPER_PARTITION_VENDOR_DEVICE_SIZE := 1073741824
+BOARD_SUPER_PARTITION_PRODUCT_DEVICE_SIZE := 134217728
+BOARD_FAIRPHONE_DYNAMIC_PARTITIONS_SIZE := 4412407808 # system + vendor + product - 16 MiB overhead
+
+# Introduce new file systems
+BOARD_ODMIMAGE_FILE_SYSTEM_TYPE := ext4
+BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE := ext4
+BOARD_SYSTEM_EXTIMAGE_FILE_SYSTEM_TYPE := ext4
+
+# Explicitely fix partition path
+TARGET_COPY_OUT_ODM := odm
+TARGET_COPY_OUT_PRODUCT := product
+TARGET_COPY_OUT_SYSTEM_EXT := system_ext
+
+endif # PRODUCT_RETROFIT_DYNAMIC_PARTITIONS
+else
+BOARD_BUILD_SYSTEM_ROOT_IMAGE := true
+BOARD_SYSTEMIMAGE_PARTITION_SIZE := 3221225472
 BOARD_VENDORIMAGE_PARTITION_SIZE := 1073741824
+endif # PRODUCT_USE_DYNAMIC_PARTITIONS
 
 
 # Filesystem
@@ -199,6 +232,7 @@
 BOARD_KERNEL_CMDLINE += earlycon=msm_serial_dm,0x78af000
 BOARD_KERNEL_CMDLINE += androidboot.usbconfigfs=true
 BOARD_KERNEL_CMDLINE += loop.max_part=7
+BOARD_KERNEL_CMDLINE += androidboot.boot_devices=soc/7824900.sdhci
 ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))
 BOARD_KERNEL_CMDLINE += console=ttyMSM0,115200,n8
 BOARD_KERNEL_CMDLINE += androidboot.selinux=permissive
@@ -261,7 +295,14 @@
 
 
 # Recovery
+ifneq ($(PRODUCT_USE_DYNAMIC_PARTITIONS), true)
 TARGET_RECOVERY_FSTAB := $(FP_PATH)/fstabs-4.9/recovery_AB_split_variant.fstab
+else
+# Use single fstab file for both
+# system and recovery partitions
+# when dynamic partition is enabled.
+TARGET_RECOVERY_FSTAB := $(FP_PATH)/fstabs-4.9/fstab_AB_dynamic_partition_variant.qti
+endif
 
 
 # SELinux