ipq806x: fix ZyXEL NBG6817 sysupgrade

Use the first found directory in the tar archive instead of relying on
a directory named according to the userspace boardname.

It allows to change the boardname without adding another compatibility
layer to the zyxel sysupgrade.

Fixes: 33f09cf151 ("ipq806x: convert to dt-based board-detection")
Signed-off-by: Mathias Kresin <dev@kresin.me>
This commit is contained in:
Mathias Kresin 2018-01-17 20:40:55 +01:00
parent acafbac4b3
commit b6868e2f47

View file

@ -19,9 +19,8 @@ zyxel_get_rootfs() {
zyxel_do_flash() { zyxel_do_flash() {
local tar_file=$1 local tar_file=$1
local board=$2 local kernel=$2
local kernel=$3 local rootfs=$3
local rootfs=$4
# keep sure its unbound # keep sure its unbound
losetup --detach-all || { losetup --detach-all || {
@ -29,14 +28,18 @@ zyxel_do_flash() {
reboot -f reboot -f
} }
# use the first found directory in the tar archive
local board_dir=$(tar tf $tar_file | grep -m 1 '^sysupgrade-.*/$')
board_dir=${board_dir%/}
echo "flashing kernel to /dev/${kernel}" echo "flashing kernel to /dev/${kernel}"
tar xf $tar_file sysupgrade-$board/kernel -O >/dev/$kernel tar xf $tar_file ${board_dir}/kernel -O >/dev/$kernel
echo "flashing rootfs to ${rootfs}" echo "flashing rootfs to ${rootfs}"
tar xf $tar_file sysupgrade-$board/root -O >"${rootfs}" tar xf $tar_file ${board_dir}/root -O >"${rootfs}"
# a padded rootfs is needed for overlay fs creation # a padded rootfs is needed for overlay fs creation
local offset=$(tar xf $tar_file sysupgrade-$board/root -O | wc -c) local offset=$(tar xf $tar_file ${board_dir}/root -O | wc -c)
[ $offset -lt 65536 ] && { [ $offset -lt 65536 ] && {
echo Wrong size for rootfs: $offset echo Wrong size for rootfs: $offset
sleep 10 sleep 10
@ -92,7 +95,7 @@ zyxel_do_upgrade() {
;; ;;
esac esac
zyxel_do_flash $tar_file $board $kernel $rootfs zyxel_do_flash $tar_file $kernel $rootfs
return 0 return 0
} }