RAUC: turn this into a configurable target

I am not using the generic rootfs target because it is optimized for
using fakeroot, and because it extracts that tarball from rootfs-common.
Rather than fighting the hooks (ROOTFS_XXX_POST_GEN_HOOKS is the only
thing which runs outside of fakeroot) and doing extra work by unpacking,
let's go all the way down to raw Makefile.

Change-Id: I075204291fbeac8d1af97a0a7c1254054ef1f594
diff --git a/package/Config.in b/package/Config.in
index 64d8537..17cd498 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1,4 +1,5 @@
 source "$BR2_EXTERNAL_CZECHLIGHT_PATH/package/cla-sysrepo/Config.in"
 source "$BR2_EXTERNAL_CZECHLIGHT_PATH/package/czechlight-cfg-fs/Config.in"
+source "$BR2_EXTERNAL_CZECHLIGHT_PATH/package/czechlight-rauc/Config.in"
 source "$BR2_EXTERNAL_CZECHLIGHT_PATH/package/czechlight-separate-boot/Config.in"
 source "$BR2_EXTERNAL_CZECHLIGHT_PATH/package/grub2-tools/Config.in"
diff --git a/package/czechlight-rauc/Config.in b/package/czechlight-rauc/Config.in
new file mode 100644
index 0000000..a04f412
--- /dev/null
+++ b/package/czechlight-rauc/Config.in
@@ -0,0 +1,13 @@
+config CZECHLIGHT_RAUC_ROOTFS
+	bool "Create RAUC update bundle"
+	select BR2_PACKAGE_CZECHLIGHT_CFG_FS
+	select BR2_PACKAGE_HOST_RAUC
+
+if CZECHLIGHT_RAUC_ROOTFS
+
+config CZECHLIGHT_RAUC_COMPATIBLE
+	string "HW compatibility string"
+	help
+	  Unique identifier which specifies what boards accept a given SW image.
+
+endif # CZECHLIGHT_RAUC_ROOTFS
diff --git a/package/czechlight-rauc/czechlight-rauc.mk b/package/czechlight-rauc/czechlight-rauc.mk
new file mode 100644
index 0000000..436b647
--- /dev/null
+++ b/package/czechlight-rauc/czechlight-rauc.mk
@@ -0,0 +1,37 @@
+CZECHLIGHT_RAUC_TMP_TARGET_DIR = $(FS_DIR)/rootfs.czechlight-rauc.tmp
+
+CZECHLIGHT_RAUC_IMAGE_VERSION = dev
+
+$(BINARIES_DIR)/update.raucb: host-rauc rootfs-tar
+	@$(call MESSAGE,"Generating RAUC update bundle")
+	$(RM) -rf $(CZECHLIGHT_RAUC_TMP_TARGET_DIR)
+	mkdir -p $(CZECHLIGHT_RAUC_TMP_TARGET_DIR)
+	sed \
+		-e 's|CZECHLIGHT_RAUC_IMAGE_VERSION|$(call qstrip,$(CZECHLIGHT_RAUC_IMAGE_VERSION))|' \
+		-e 's|CZECHLIGHT_RAUC_COMPATIBLE|$(call qstrip,$(CZECHLIGHT_RAUC_COMPATIBLE))|' \
+		$(BR2_EXTERNAL_CZECHLIGHT_PATH)/board/czechlight/common/rauc-manifest.raucm.in \
+		> $(CZECHLIGHT_RAUC_TMP_TARGET_DIR)/manifest.raucm
+
+	$(RM) -f $(BINARIES_DIR)/update.raucb
+	ln $(BINARIES_DIR)/rootfs.tar.xz $(CZECHLIGHT_RAUC_TMP_TARGET_DIR)
+	tar -cJf $(CZECHLIGHT_RAUC_TMP_TARGET_DIR)/cfg.tar.xz -T /dev/null
+	cp $(BR2_EXTERNAL_CZECHLIGHT_PATH)/board/czechlight/common/rauc-hook.sh $(CZECHLIGHT_RAUC_TMP_TARGET_DIR)/hook.sh
+
+	$(HOST_DIR)/usr/bin/rauc \
+		--cert $(BR2_EXTERNAL_CZECHLIGHT_PATH)/crypto/rauc-cert.pem \
+		--key $(BR2_EXTERNAL_CZECHLIGHT_PATH)/crypto/rauc-key.pem \
+		bundle $(CZECHLIGHT_RAUC_TMP_TARGET_DIR) $(BINARIES_DIR)/update.raucb
+
+rootfs-czechlight-rauc: $(BINARIES_DIR)/update.raucb
+
+rootfs-czechlight-rauc-show-depends:
+	@echo host-rauc rootfs-tar
+
+.PHONY: rootfs-czechlight-rauc rootfs-czechlight-rauc-show-depends
+
+ifeq ($(CZECHLIGHT_RAUC_ROOTFS),y)
+TARGETS_ROOTFS += rootfs-czechlight-rauc
+ifeq ($(call qstrip,$(CZECHLIGHT_RAUC_COMPATIBLE)),)
+$(error CZECHLIGHT_RAUC_COMPATIBLE cannot be empty)
+endif
+endif