octeon: determine sysupgrade-* directory for upgrade automatically
So far, the sysupgrade-* folder used during upgrade in octeon was hardcoded to contain the board name. Therefore, changing board name or BOARD_NAME variable in image/Makefile might have broken upgrade. Improve this by adding a step to determine the folder name via a wildcard, as it is done for generic nand_upgrade_tar() in lib/upgrade/nand.sh. While this still does not remove the problem for existing devices (which still have the old script), it will entirely remove the issue on newly added devices on this platform. Signed-off-by: Donald Hoskins <grommish@gmail.com> [split into separate patch, add commit message, add return values] Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
This commit is contained in:
parent
d43b963b3d
commit
591767fc01
@ -37,6 +37,10 @@ platform_do_flash() {
|
|||||||
local kernel=$3
|
local kernel=$3
|
||||||
local rootfs=$4
|
local rootfs=$4
|
||||||
|
|
||||||
|
local board_dir=$(tar tf "$tar_file" | grep -m 1 '^sysupgrade-.*/$')
|
||||||
|
board_dir=${board_dir%/}
|
||||||
|
[ -n "$board_dir" ] || return 1
|
||||||
|
|
||||||
mkdir -p /boot
|
mkdir -p /boot
|
||||||
mount -t vfat /dev/$kernel /boot
|
mount -t vfat /dev/$kernel /boot
|
||||||
|
|
||||||
@ -46,10 +50,10 @@ platform_do_flash() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
echo "flashing kernel to /dev/$kernel"
|
echo "flashing kernel to /dev/$kernel"
|
||||||
tar xf $tar_file sysupgrade-$board/kernel -O > /boot/vmlinux.64
|
tar xf $tar_file $board_dir/kernel -O > /boot/vmlinux.64
|
||||||
md5sum /boot/vmlinux.64 | cut -f1 -d " " > /boot/vmlinux.64.md5
|
md5sum /boot/vmlinux.64 | cut -f1 -d " " > /boot/vmlinux.64.md5
|
||||||
echo "flashing rootfs to ${rootfs}"
|
echo "flashing rootfs to ${rootfs}"
|
||||||
tar xf $tar_file sysupgrade-$board/root -O | dd of="${rootfs}" bs=4096
|
tar xf $tar_file $board_dir/root -O | dd of="${rootfs}" bs=4096
|
||||||
sync
|
sync
|
||||||
umount /boot
|
umount /boot
|
||||||
}
|
}
|
||||||
@ -80,13 +84,17 @@ platform_do_upgrade() {
|
|||||||
|
|
||||||
platform_check_image() {
|
platform_check_image() {
|
||||||
local board=$(board_name)
|
local board=$(board_name)
|
||||||
|
local tar_file="$1"
|
||||||
|
|
||||||
|
local board_dir=$(tar tf "$tar_file" | grep -m 1 '^sysupgrade-.*/$')
|
||||||
|
board_dir=${board_dir%/}
|
||||||
|
[ -n "$board_dir" ] || return 1
|
||||||
|
|
||||||
case "$board" in
|
case "$board" in
|
||||||
er | \
|
er | \
|
||||||
erlite)
|
erlite)
|
||||||
local tar_file="$1"
|
local kernel_length=$(tar xf $tar_file $board_dir/kernel -O | wc -c 2> /dev/null)
|
||||||
local kernel_length=$(tar xf $tar_file sysupgrade-$board/kernel -O | wc -c 2> /dev/null)
|
local rootfs_length=$(tar xf $tar_file $board_dir/root -O | wc -c 2> /dev/null)
|
||||||
local rootfs_length=$(tar xf $tar_file sysupgrade-$board/root -O | wc -c 2> /dev/null)
|
|
||||||
[ "$kernel_length" = 0 -o "$rootfs_length" = 0 ] && {
|
[ "$kernel_length" = 0 -o "$rootfs_length" = 0 ] && {
|
||||||
echo "The upgrade image is corrupt."
|
echo "The upgrade image is corrupt."
|
||||||
return 1
|
return 1
|
||||||
|
Loading…
Reference in New Issue
Block a user