Use fwtool to extract it, only require metadata to be present if the platform sysupgrade script sets REQUIRE_IMAGE_METADATA=1 Image metadata is in JSON format and contains a list of supported devices, along with version information that could be displayed by a UI later before the actual upgrade happens. Signed-off-by: Felix Fietkau <nbd@nbd.name>master
parent
929641fa1f
commit
cc853810a4
@ -0,0 +1,40 @@ |
||||
fwtool_pre_upgrade() { |
||||
fwtool -q -i /dev/null "$1" |
||||
} |
||||
|
||||
fwtool_check_image() { |
||||
[ $# -gt 1 ] && return 1 |
||||
|
||||
. /usr/share/libubox/jshn.sh |
||||
|
||||
if ! fwtool -q -i /tmp/sysupgrade.meta "$1"; then |
||||
echo "Image metadata not found" |
||||
[ "$REQUIRE_IMAGE_METADATA" = 1 ] && return 1 |
||||
return 0 |
||||
fi |
||||
|
||||
json_load "$(cat /tmp/sysupgrade.meta)" || { |
||||
echo "Invalid image metadata" |
||||
return 1 |
||||
} |
||||
|
||||
device="$(cat /tmp/sysinfo/board_name)" |
||||
|
||||
json_select supported_devices || return 1 |
||||
|
||||
json_get_keys dev_keys |
||||
for k in $dev_keys; do |
||||
json_get_var dev "$k" |
||||
[ "$dev" = "$device" ] && return 0 |
||||
done |
||||
|
||||
echo "Device $device not supported by this image" |
||||
echo -n "Supported devices:" |
||||
for k in $dev_keys; do |
||||
json_get_var dev "$k" |
||||
echo -n " $dev" |
||||
done |
||||
echo |
||||
|
||||
return 1 |
||||
} |
Loading…
Reference in new issue