rauc: install the config file as a package
Co-authored-by: Miroslav Mareš <mmares@cesnet.cz>
Change-Id: I3fd894775de4d9649eab30d754b666193fb41ff1
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