diff --git a/general/overlay/usr/sbin/sysupgrade b/general/overlay/usr/sbin/sysupgrade index afef8a0e..7cb88914 100755 --- a/general/overlay/usr/sbin/sysupgrade +++ b/general/overlay/usr/sbin/sysupgrade @@ -1,8 +1,12 @@ #!/bin/sh # -# OpenIPC.org | v.20220722 +# OpenIPC.org | v.20220726 # +scr_version=1.0.0 + +args="$@" + set -e echo_c() { @@ -106,6 +110,24 @@ free_resources() { sync; echo 3 > /proc/sys/vm/drop_caches } +self_update() { + if echo ${args} | grep "rootfs" || echo ${args} | grep "kernel" > /dev/null 2>&1; then + echo "Offline upgrade, skip sysupgrade version check." + else + echo "Online upgrade, checking sysupgrade version..." + curl -s -k -L -o /tmp/sysupgrade "https://raw.githubusercontent.com/cronyx/firmware/master/general/overlay/usr/sbin/sysupgrade" + dstv=`grep scr_version /tmp/sysupgrade | cut -f 2 -d '='` + if ! [ "${scr_version}" = "${dstv}" ]; then + echo "A new version is available, trying to update..." + mv /tmp/sysupgrade /usr/sbin/ ; chmod +x /usr/sbin/sysupgrade + echo "Done. Try running sysupgrade again." + exit 0 + else + echo "Ok, version match." + fi + fi +} + create_lock() { [ -f /tmp/sysupgrade.lock ] && echo -e "\e[1;31m\nAnother sysupgrade process is already running!\e[0m\n" && exit 1 touch /tmp/sysupgrade.lock @@ -249,8 +271,8 @@ print_sysinfo echo_c 97 "\nTry '$(basename "$0") --help' for options." && \ exit 0 +self_update create_lock - free_resources [ "$remote_update" -eq 1 ] && download_firmware [ "$update_kernel" -eq 1 ] && do_update_kernel "$kernel_file"