ath79: add support for ZyXEL NBG6616
[openwrt/openwrt.git] / include / image-commands.mk
index 37cb083bbfbca2c6c62305f20d3840ddc476eb1f..9516801c8dfd596e5f2c251b15c013c2a26e0642 100644 (file)
@@ -269,15 +269,10 @@ define Build/xor-image
 endef
 
 define Build/check-size
-       @[ $$(($(subst k,* 1024,$(subst m, * 1024k,$(1))))) -ge "$$(stat -c%s $@)" ] || { \
-               echo "WARNING: Image file $@ is too big" >&2; \
-               rm -f $@; \
-       }
-endef
-
-define Build/check-kernel-size
-       @[ $$(($(subst k,* 1024,$(subst m, * 1024k,$(1))))) -ge "$$(stat -c%s $(IMAGE_KERNEL))" ] || { \
-               echo "WARNING: Kernel for $@ is too big > $(1)" >&2; \
+       @imagesize="$$(stat -c%s $@)"; \
+       limitsize="$$(($(subst k,* 1024,$(subst m, * 1024k,$(if $(1),$(1),$(IMAGE_SIZE))))))"; \
+       [ $$limitsize -ge $$imagesize ] || { \
+               echo "WARNING: Image file $@ is too big: $$imagesize > $$limitsize" >&2; \
                rm -f $@; \
        }
 endef
@@ -384,13 +379,24 @@ define Build/tplink-v2-image
        rm -rf $@.new
 endef
 
+compat_version=$(if $(DEVICE_COMPAT_VERSION),$(DEVICE_COMPAT_VERSION),1.0)
 json_quote=$(subst ','\'',$(subst ",\",$(1)))
 #")')
+
+legacy_supported_message=$(SUPPORTED_DEVICES) - Image version mismatch: image $(compat_version), \
+       device 1.0. Please wipe config during upgrade (force required) or reinstall. \
+       $(if $(DEVICE_COMPAT_MESSAGE),Reason: $(DEVICE_COMPAT_MESSAGE),Please check documentation ...)
+
 metadata_devices=$(if $(1),$(subst "$(space)","$(comma)",$(strip $(foreach v,$(1),"$(call json_quote,$(v))"))))
 metadata_json = \
        '{ $(if $(IMAGE_METADATA),$(IMAGE_METADATA)$(comma)) \
-               "metadata_version": "1.0", \
-               "supported_devices":[$(call metadata_devices,$(1))], \
+               "metadata_version": "1.1", \
+               "compat_version": "$(call json_quote,$(compat_version))", \
+               $(if $(DEVICE_COMPAT_MESSAGE),"compat_message": "$(call json_quote,$(DEVICE_COMPAT_MESSAGE))"$(comma)) \
+               $(if $(filter-out 1.0,$(compat_version)),"new_supported_devices": \
+                       [$(call metadata_devices,$(SUPPORTED_DEVICES))]$(comma) \
+                       "supported_devices": ["$(call json_quote,$(legacy_supported_message))"]$(comma)) \
+               $(if $(filter 1.0,$(compat_version)),"supported_devices":[$(call metadata_devices,$(SUPPORTED_DEVICES))]$(comma)) \
                "version": { \
                        "dist": "$(call json_quote,$(VERSION_DIST))", \
                        "version": "$(call json_quote,$(VERSION_NUMBER))", \
@@ -401,7 +407,7 @@ metadata_json = \
        }'
 
 define Build/append-metadata
-       $(if $(SUPPORTED_DEVICES),-echo $(call metadata_json,$(SUPPORTED_DEVICES)) | fwtool -I - $@)
+       $(if $(SUPPORTED_DEVICES),-echo $(call metadata_json) | fwtool -I - $@)
        [ ! -s "$(BUILD_KEY)" -o ! -s "$(BUILD_KEY).ucert" -o ! -s "$@" ] || { \
                cp "$(BUILD_KEY).ucert" "$@.ucert" ;\
                usign -S -m "$@" -s "$(BUILD_KEY)" -x "$@.sig" ;\
@@ -414,3 +420,10 @@ define Build/kernel2minor
        kernel2minor -k $@ -r $@.new $(1)
        mv $@.new $@
 endef
+
+# Convert a raw image into a $1 type image.
+# E.g. | qemu-image vdi
+define Build/qemu-image
+       qemu-img convert -f raw -O $1 $@ $@.new
+       @mv $@.new $@
+endef