rauc: install the config file as a package

Co-authored-by: Miroslav Mareš <mmares@cesnet.cz>
Change-Id: I3fd894775de4d9649eab30d754b666193fb41ff1
diff --git a/configs/czechlight_clearfog_defconfig b/configs/czechlight_clearfog_defconfig
index dcd39c3..fc1efd1 100644
--- a/configs/czechlight_clearfog_defconfig
+++ b/configs/czechlight_clearfog_defconfig
@@ -70,4 +70,8 @@
 CZECHLIGHT_CFG_FS_SIZE="256M"
 CZECHLIGHT_RAUC_ROOTFS=y
 CZECHLIGHT_RAUC_COMPATIBLE="czechlight-clearfog"
+CZECHLIGHT_RAUC_SLOT_A_ROOTFS_DEV="/dev/mmcblk0p1"
+CZECHLIGHT_RAUC_SLOT_A_CFG_DEV="/dev/mmcblk0p2"
+CZECHLIGHT_RAUC_SLOT_B_ROOTFS_DEV="/dev/mmcblk0p3"
+CZECHLIGHT_RAUC_SLOT_B_CFG_DEV="/dev/mmcblk0p4"
 CZECHLIGHT_NETCONF=y
diff --git a/package/czechlight-rauc/Config.in b/package/czechlight-rauc/Config.in
index a04f412..71ef0da 100644
--- a/package/czechlight-rauc/Config.in
+++ b/package/czechlight-rauc/Config.in
@@ -2,6 +2,7 @@
 	bool "Create RAUC update bundle"
 	select BR2_PACKAGE_CZECHLIGHT_CFG_FS
 	select BR2_PACKAGE_HOST_RAUC
+	select BR2_PACKAGE_CZECHLIGHT_RAUC
 
 if CZECHLIGHT_RAUC_ROOTFS
 
@@ -10,4 +11,32 @@
 	help
 	  Unique identifier which specifies what boards accept a given SW image.
 
+config BR2_PACKAGE_CZECHLIGHT_RAUC
+	bool
+
+config CZECHLIGHT_RAUC_BOOTLOADER
+	string
+	default uboot if BR2_TARGET_UBOOT
+	default grub if BR2_TARGET_GRUB2
+
+config CZECHLIGHT_RAUC_SLOT_A_ROOTFS_DEV
+	string "device name (rootfs slot A)"
+	help
+	  Name of the device/partition where rootfs for slot A will be
+
+config CZECHLIGHT_RAUC_SLOT_A_CFG_DEV
+	string "device name (cfg slot A)"
+	help
+	  Name of the device/partition where cfg for slot A will be
+
+config CZECHLIGHT_RAUC_SLOT_B_ROOTFS_DEV
+	string "device name (rootfs slot B)"
+	help
+	  Name of the device/partition where rootfs for slot B will be
+
+config CZECHLIGHT_RAUC_SLOT_B_CFG_DEV
+	string "device name (cfg slot B)"
+	help
+	  Name of the device/partition where cfg for slot B will be
+
 endif # CZECHLIGHT_RAUC_ROOTFS
diff --git a/package/czechlight-rauc/czechlight-rauc.mk b/package/czechlight-rauc/czechlight-rauc.mk
index 436b647..e5d5bfc 100644
--- a/package/czechlight-rauc/czechlight-rauc.mk
+++ b/package/czechlight-rauc/czechlight-rauc.mk
@@ -35,3 +35,39 @@
 $(error CZECHLIGHT_RAUC_COMPATIBLE cannot be empty)
 endif
 endif
+
+CZECHLIGHT_RAUC_INSTALL_TARGET = YES
+
+ifeq ($(BR2_PACKAGE_CZECHLIGHT_RAUC),y)
+
+ifeq ($(call qstrip,$(CZECHLIGHT_RAUC_BOOTLOADER)),)
+$(error Unsupported bootloader for RAUC)
+endif
+
+ifeq ($(call qstrip,$(CZECHLIGHT_RAUC_SLOT_A_ROOTFS_DEV)),)
+$(error CZECHLIGHT_RAUC_SLOT_A_ROOTFS_DEV cannot be empty)
+endif
+ifeq ($(call qstrip,$(CZECHLIGHT_RAUC_SLOT_A_CFG_DEV)),)
+$(error CZECHLIGHT_RAUC_SLOT_A_CFG_DEV cannot be empty)
+endif
+ifeq ($(call qstrip,$(CZECHLIGHT_RAUC_SLOT_B_ROOTFS_DEV)),)
+$(error CZECHLIGHT_RAUC_SLOT_B_ROOTFS_DEV cannot be empty)
+endif
+ifeq ($(call qstrip,$(CZECHLIGHT_RAUC_SLOT_B_CFG_DEV)),)
+$(error CZECHLIGHT_RAUC_SLOT_B_CFG_DEV cannot be empty)
+endif
+
+endif # BR2_PACKAGE_CZECHLIGHT_RAUC
+
+define CZECHLIGHT_RAUC_INSTALL_TARGET_CMDS
+	$(INSTALL) -D -m 0644 $(BR2_EXTERNAL_CZECHLIGHT_PATH)/package/czechlight-rauc/system.conf.in $(TARGET_DIR)/etc/rauc/system.conf
+	sed -i -E -e "s|CZECHLIGHT_RAUC_BOOTLOADER|$(CZECHLIGHT_RAUC_BOOTLOADER)|" \
+		-e 's|CZECHLIGHT_RAUC_COMPATIBLE|$(call qstrip,$(CZECHLIGHT_RAUC_COMPATIBLE))|' \
+		-e "s|CZECHLIGHT_RAUC_SLOT_A_ROOTFS_DEV|$(call qstrip,$(CZECHLIGHT_RAUC_SLOT_A_ROOTFS_DEV))|" \
+		-e "s|CZECHLIGHT_RAUC_SLOT_A_CFG_DEV|$(call qstrip,$(CZECHLIGHT_RAUC_SLOT_A_CFG_DEV))|" \
+		-e "s|CZECHLIGHT_RAUC_SLOT_B_ROOTFS_DEV|$(call qstrip,$(CZECHLIGHT_RAUC_SLOT_B_ROOTFS_DEV))|" \
+		-e "s|CZECHLIGHT_RAUC_SLOT_B_CFG_DEV|$(call qstrip,$(CZECHLIGHT_RAUC_SLOT_B_CFG_DEV))|" \
+		$(TARGET_DIR)/etc/rauc/system.conf
+endef
+
+$(eval $(generic-package))
diff --git a/package/czechlight-rauc/system.conf.in b/package/czechlight-rauc/system.conf.in
new file mode 100644
index 0000000..b2476eb
--- /dev/null
+++ b/package/czechlight-rauc/system.conf.in
@@ -0,0 +1,28 @@
+[system]
+compatible=czechlight-epia-geode
+bootloader=CZECHLIGHT_RAUC_BOOTLOADER_NAME
+
+[keyring]
+path=/etc/rauc/keyring.pem
+
+[slot.rootfs.0]
+device=CZECHLIGHT_RAUC_SLOT_A_ROOTFS_DEV
+type=ext4
+bootname=A
+
+[slot.cfg.0]
+device=CZECHLIGHT_RAUC_SLOT_A_CFG_DEV
+type=ext4
+parent=rootfs.0
+ignore-checksum=true
+
+[slot.rootfs.1]
+device=CZECHLIGHT_RAUC_SLOT_B_ROOTFS_DEV
+type=ext4
+bootname=B
+
+[slot.cfg.1]
+device=CZECHLIGHT_RAUC_SLOT_B_CFG_DEV
+type=ext4
+parent=rootfs.1
+ignore-checksum=true