build: add support code for appending metadata to images
authorFelix Fietkau <nbd@nbd.name>
Mon, 14 Nov 2016 16:31:53 +0000 (17:31 +0100)
committerFelix Fietkau <nbd@nbd.name>
Sat, 19 Nov 2016 10:24:10 +0000 (11:24 +0100)
Signed-off-by: Felix Fietkau <nbd@nbd.name>
include/image-commands.mk
include/image.mk

index 6386e55b7958b36945385e84a519f0cb1a59c764..083a3890316c633e9a1ffaab6bd7790ebb29ea34 100644 (file)
@@ -172,3 +172,21 @@ define Build/sysupgrade-tar
                --rootfs $(call param_get_default,rootfs,$(1),$(IMAGE_ROOTFS)) \
                $@
 endef
+
+json_quote=$(subst ','\'',$(subst ",\",$(1)))
+#")')
+metadata_devices=$(if $(1),$(subst "$(space)","$(comma)",$(strip $(foreach v,$(1),"$(call json_quote,$(v))"))))
+metadata_json = \
+       '{ $(if $(IMAGE_METADATA),$(IMAGE_METADATA)$(comma)) \
+               "supported_devices":[$(call metadata_devices,$(1))], \
+               "version": { \
+                       "dist": "$(call json_quote,$(VERSION_DIST))", \
+                       "version": "$(call json_quote,$(VERSION_NUMBER))", \
+                       "revision": "$(call json_quote,$(REVISION))", \
+                       "board": "$(call json_quote,$(BOARD))" \
+               } \
+       }'
+
+define Build/append-metadata
+       $(if $(SUPPORTED_DEVICES),echo $(call metadata_json,$(SUPPORTED_DEVICES)) | fwtool -I - $@)
+endef
index 8b183ab58a839bbf936526411f9aafcdc1366ba6..d1dcdd6bad225e95ffc79f330f5b7f35722a680e 100644 (file)
@@ -346,6 +346,8 @@ define Device/Init
 
   BOARD_NAME :=
   UIMAGE_NAME :=
+  SUPPORTED_DEVICES :=
+  IMAGE_METADATA :=
 
   FILESYSTEMS := $(TARGET_FILESYSTEMS)
 endef
@@ -355,7 +357,8 @@ DEFAULT_DEVICE_VARS := \
   DEVICE_DTS DEVICE_DTS_DIR BOARD_NAME CMDLINE \
   UBOOTENV_IN_UBI KERNEL_IN_UBI \
   BLOCKSIZE PAGESIZE SUBPAGESIZE VID_HDR_OFFSET \
-  UBINIZE_OPTS UIMAGE_NAME UBINIZE_PARTS
+  UBINIZE_OPTS UIMAGE_NAME UBINIZE_PARTS \
+  SUPPORTED_DEVICES IMAGE_METADATA
 
 define Device/ExportVar
   $(1) : $(2):=$$($(2))