ar71xx: remove hard-coded folder name from Mikrotik RB upgrade
authorAdrian Schmutzler <freifunk@adrianschmutzler.de>
Wed, 26 Feb 2020 17:24:55 +0000 (18:24 +0100)
committerAdrian Schmutzler <freifunk@adrianschmutzler.de>
Tue, 17 Mar 2020 11:02:14 +0000 (12:02 +0100)
So far, specifying "BOARD_NAME := routerboard" is required by the
upgrade code of Mikrotik NAND devices, as "sysupgrade-routerboard"
is hardcoded in platform_do_upgrade_mikrotik_rb().

This patch replaces the latter with a grep for the name like it
is already done in nand_upgrade_tar() in /lib/upgrade/nand.sh.

This should enable upgrades from ar71xx to ath79 without setting
BOARD_NAME for the latter.

Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
target/linux/ar71xx/base-files/lib/upgrade/platform.sh

index a76842b..eb81286 100755 (executable)
@@ -742,8 +742,13 @@ platform_do_upgrade_mikrotik_rb() {
        local fw_mtd=$(find_mtd_part kernel)
        fw_mtd="${fw_mtd/block/}"
        [ -n "$fw_mtd" ] || return
+
+       local board_dir=$(tar tf "$1" | grep -m 1 '^sysupgrade-.*/$')
+       board_dir=${board_dir%/}
+       [ -n "$board_dir" ] || return
+
        mtd erase kernel
-       tar xf "$1" sysupgrade-routerboard/kernel -O | nandwrite -o "$fw_mtd" -
+       tar xf "$1" ${board_dir}/kernel -O | nandwrite -o "$fw_mtd" -
 
        nand_do_upgrade "$1"
 }