[openwrt/openwrt] base-files: clean up nand tar sysupgrade code
LEDE Commits
lede-commits at lists.infradead.org
Tue Apr 19 09:08:25 PDT 2022
dangole pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/264d9483025c9604709879094810f25e6c9fac38
commit 264d9483025c9604709879094810f25e6c9fac38
Author: Rodrigo Balerdi <lanchon at gmail.com>
AuthorDate: Fri Apr 15 06:31:24 2022 -0300
base-files: clean up nand tar sysupgrade code
Prepares code for ubirename-based safe sysupgrade implementation.
Fixes several issues:
- the special CI_KERNPART value "none" is ignored if an MTD partition
named "none" exists
- misleading variable names (such as has_kernel to mean "tar has kernel
and it should not be written to an MTD partition but a UBI volume")
- inconsistent treatment of zero-length tar member files
- inconsistent meaning of "0" and "" variable values
- redundant operations (unneeded untaring, repeated untaring, unneeded
partition lookups)
- inconsistent variable quoting
Signed-off-by: Rodrigo Balerdi <lanchon at gmail.com>
---
package/base-files/files/lib/upgrade/nand.sh | 68 ++++++++++++++--------------
1 file changed, 34 insertions(+), 34 deletions(-)
diff --git a/package/base-files/files/lib/upgrade/nand.sh b/package/base-files/files/lib/upgrade/nand.sh
index a93c9acccd..67c6a620b1 100644
--- a/package/base-files/files/lib/upgrade/nand.sh
+++ b/package/base-files/files/lib/upgrade/nand.sh
@@ -283,49 +283,49 @@ nand_upgrade_fit() {
nand_upgrade_tar() {
local tar_file="$1"
- local kernel_mtd="$(find_mtd_index $CI_KERNPART)"
- local board_dir=$(tar tf "$tar_file" | grep -m 1 '^sysupgrade-.*/$')
- board_dir=${board_dir%/}
+ local board_dir="$(tar tf "$tar_file" | grep -m 1 '^sysupgrade-.*/$')"
+ board_dir="${board_dir%/}"
- local kernel_length=$( (tar xf "$tar_file" ${board_dir}/kernel -O | wc -c) 2> /dev/null)
- local has_rootfs=0
- local rootfs_length
+ local kernel_mtd kernel_length
+ if [ "$CI_KERNPART" != "none" ]; then
+ kernel_mtd="$(find_mtd_index "$CI_KERNPART")"
+ kernel_length=$( (tar xf "$tar_file" "$board_dir/kernel" -O | wc -c) 2> /dev/null)
+ [ "$kernel_length" = 0 ] && kernel_length=
+ fi
+ local rootfs_length=$( (tar xf "$tar_file" "$board_dir/root" -O | wc -c) 2> /dev/null)
+ [ "$rootfs_length" = 0 ] && rootfs_length=
local rootfs_type
+ [ "$rootfs_length" ] && rootfs_type="$(identify_tar "$tar_file" "$board_dir/root")"
- tar tf "$tar_file" ${board_dir}/root 1>/dev/null 2>/dev/null && has_rootfs=1
- [ "$has_rootfs" = "1" ] && {
- rootfs_length=$( (tar xf "$tar_file" ${board_dir}/root -O | wc -c) 2> /dev/null)
- rootfs_type="$(identify_tar "$tar_file" ${board_dir}/root)"
- }
-
- local has_kernel=1
+ local ubi_kernel_length
+ if [ "$kernel_length" ]; then
+ if [ "$kernel_mtd" ]; then
+ mtd erase "$CI_KERNPART"
+ else
+ ubi_kernel_length="$kernel_length"
+ fi
+ fi
local has_env=0
-
- [ "$kernel_length" != 0 -a -n "$kernel_mtd" ] && {
- mtd erase $CI_KERNPART
- }
- [ "$kernel_length" = 0 -o ! -z "$kernel_mtd" ] && has_kernel=
- [ "$CI_KERNPART" = "none" ] && has_kernel=
-
- nand_upgrade_prepare_ubi "$rootfs_length" "$rootfs_type" "${has_kernel:+$kernel_length}" "$has_env"
+ nand_upgrade_prepare_ubi "$rootfs_length" "$rootfs_type" "$ubi_kernel_length" "$has_env"
local ubidev="$( nand_find_ubi "$CI_UBIPART" )"
- [ "$has_rootfs" = "1" ] && {
- local root_ubivol="$( nand_find_volume $ubidev $CI_ROOTPART )"
- tar xf "$tar_file" ${board_dir}/root -O | \
+ if [ "$rootfs_length" ]; then
+ local root_ubivol="$( nand_find_volume $ubidev "$CI_ROOTPART" )"
+ tar xf "$tar_file" "$board_dir/root" -O | \
ubiupdatevol /dev/$root_ubivol -s $rootfs_length -
- }
+ fi
+ if [ "$kernel_length" ]; then
+ if [ "$kernel_mtd" ]; then
+ tar xf "$tar_file" "$board_dir/kernel" -O | \
+ mtd -n write - "$CI_KERNPART"
+ else
+ local kern_ubivol="$( nand_find_volume $ubidev "$CI_KERNPART" )"
+ tar xf "$tar_file" "$board_dir/kernel" -O | \
+ ubiupdatevol /dev/$kern_ubivol -s $kernel_length -
+ fi
+ fi
- [ "$kernel_length" != 0 -a -n "$kernel_mtd" ] && {
- tar xf "$tar_file" ${board_dir}/kernel -O | \
- mtd -n write - $CI_KERNPART
- }
- [ "$has_kernel" = "1" ] && {
- local kern_ubivol="$( nand_find_volume $ubidev $CI_KERNPART )"
- tar xf "$tar_file" ${board_dir}/kernel -O | \
- ubiupdatevol /dev/$kern_ubivol -s $kernel_length -
- }
nand_do_upgrade_success
}
More information about the lede-commits
mailing list