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