pandora-scripts: improve op_osupgrade
authorGrazvydas Ignotas <notasas@gmail.com>
Mon, 17 Nov 2014 23:45:19 +0000 (01:45 +0200)
committerGrazvydas Ignotas <notasas@gmail.com>
Mon, 17 Nov 2014 23:47:28 +0000 (01:47 +0200)
recipes/pandora-system/pandora-scripts.bb
recipes/pandora-system/pandora-scripts/op_osupgrade.sh [changed mode: 0644->0755]
recipes/pandora-system/pandora-scripts/op_osupgrade_work.sh [new file with mode: 0755]

index 9732249..eccd198 100644 (file)
@@ -5,7 +5,7 @@ COMPATIBLE_MACHINE = "omap3-pandora"
 
 RDEPENDS = "bash sed gawk grep zenity"
 
 
 RDEPENDS = "bash sed gawk grep zenity"
 
-PR = "r163"
+PR = "r164"
 
 SRC_URI = " \
           file://op_bright.sh \
 
 SRC_URI = " \
           file://op_bright.sh \
@@ -16,6 +16,7 @@ SRC_URI = " \
          file://op_usbhost.sh \
           file://op_usbhost.pnd \
           file://op_osupgrade.sh \
          file://op_usbhost.sh \
           file://op_usbhost.pnd \
           file://op_osupgrade.sh \
+          file://op_osupgrade_work.sh \
           file://op_osupgrade.pnd \
           file://op_sysspeed.sh \
          file://op_createsd.sh \
           file://op_osupgrade.pnd \
           file://op_sysspeed.sh \
          file://op_createsd.sh \
@@ -96,7 +97,8 @@ do_install() {
           install -d ${D}${prefix}/pandora/scripts/
           install -m 0755 ${WORKDIR}/op_common.sh ${D}${prefix}/pandora/scripts/
           install -m 0755 ${WORKDIR}/op_getpndmg.sh ${D}${prefix}/pandora/scripts/
           install -d ${D}${prefix}/pandora/scripts/
           install -m 0755 ${WORKDIR}/op_common.sh ${D}${prefix}/pandora/scripts/
           install -m 0755 ${WORKDIR}/op_getpndmg.sh ${D}${prefix}/pandora/scripts/
-         install -m 0755 ${WORKDIR}/op_osupgrade.sh ${D}${prefix}/pandora/scripts/
+          install -m 0755 ${WORKDIR}/op_osupgrade.sh ${D}${prefix}/pandora/scripts/
+          install -m 0755 ${WORKDIR}/op_osupgrade_work.sh ${D}${prefix}/pandora/scripts/
           install -m 0755 ${WORKDIR}/op_bright.sh ${D}${prefix}/pandora/scripts/
           install -m 0755 ${WORKDIR}/op_cpuspeed.sh ${D}${prefix}/pandora/scripts/
           install -m 0755 ${WORKDIR}/op_dspspeed.sh ${D}${prefix}/pandora/scripts/
           install -m 0755 ${WORKDIR}/op_bright.sh ${D}${prefix}/pandora/scripts/
           install -m 0755 ${WORKDIR}/op_cpuspeed.sh ${D}${prefix}/pandora/scripts/
           install -m 0755 ${WORKDIR}/op_dspspeed.sh ${D}${prefix}/pandora/scripts/
old mode 100644 (file)
new mode 100755 (executable)
index 9968fe9..973518a
@@ -1,4 +1,5 @@
 #!/bin/sh
 #!/bin/sh
+work_script_path="/usr/pandora/scripts/op_osupgrade_work.sh"
 kernel_path="/boot/uImage-3"
 
 zenity --question --title="Update Firmware OS" --text="This little tool helps you to keep your firmware OS up-to-date with the latest tweaks.\n\nPlease note that this is in TESTING state and\nmight break parts of your system with unstable packages!\n\nMake sure your Pandora is connected to the internet and click the Upgrade-Button.\n\n" --ok-label="Upgrade OS" --cancel-label="Quit" || exit 0
 kernel_path="/boot/uImage-3"
 
 zenity --question --title="Update Firmware OS" --text="This little tool helps you to keep your firmware OS up-to-date with the latest tweaks.\n\nPlease note that this is in TESTING state and\nmight break parts of your system with unstable packages!\n\nMake sure your Pandora is connected to the internet and click the Upgrade-Button.\n\n" --ok-label="Upgrade OS" --cancel-label="Quit" || exit 0
@@ -22,24 +23,14 @@ Aborting."
   exit 1
 fi
 
   exit 1
 fi
 
-rm -f /tmp/upgrade_ok
+rm -f /tmp/upgrade_ok /tmp/upgrade_script_updated
 kernelmd5_old=`md5sum $kernel_path`
 
 # reminder: don't use '&&' '||' ... after tee, it breaks set -e, no idea why
 terminal -x bash -c \
 kernelmd5_old=`md5sum $kernel_path`
 
 # reminder: don't use '&&' '||' ... after tee, it breaks set -e, no idea why
 terminal -x bash -c \
-  '( set -e; \
-     cd /tmp/; \
-     echo "Updating package lists..."; \
-     opkg update 2>&1; \
-     echo "Checking for updated packages..."; \
-     opkg upgrade 2>&1; \
-     touch /tmp/upgrade_ok; \
-     sync; \
-     echo "Finished, press Ctrl-C to exit" ) \
+  "( $work_script_path || ( echo && echo "Retrying.." && $work_script_path ) ) 2>&1 \
        | tee /tmp/upgrade.log; \
        | tee /tmp/upgrade.log; \
-   test -e /tmp/upgrade_ok || sleep 3'
-
-sync
+   test -e /tmp/upgrade_ok || sleep 3"
 
 kernelmd5_new=`md5sum $kernel_path`
 
 
 kernelmd5_new=`md5sum $kernel_path`
 
diff --git a/recipes/pandora-system/pandora-scripts/op_osupgrade_work.sh b/recipes/pandora-system/pandora-scripts/op_osupgrade_work.sh
new file mode 100755 (executable)
index 0000000..2f4241e
--- /dev/null
@@ -0,0 +1,49 @@
+#!/bin/sh
+
+set -e
+export HOME=/home/root
+cd /tmp/
+
+script_path="/usr/pandora/scripts/op_osupgrade_work.sh"
+script_pkg="pandora-scripts"
+script_updated_f="/tmp/upgrade_script_updated"
+
+echo "Updating package lists..."
+opkg update
+
+echo "Checking for updated packages..."; \
+
+# check if this script was updated. If it was, update and restart it
+if opkg list-upgradable | grep -q "$script_pkg"; then
+  mtime_pre=`stat -c '%Y' $script_path`
+  opkg install $script_pkg
+  mtime_post=`stat -c '%Y' $script_path`
+  if [ "$mtime_pre" != "$mtime_post" -a ! -e "$script_updated_f" ]; then
+    # just in case..
+    touch "$script_updated_f"
+    echo "Update script was updated, restarting.."
+    exec $script_path
+  fi
+fi
+
+# check if opkg was updated.. Maybe we can fix it's breakages someday..
+for o in `opkg list-upgradable | grep opkg | awk '{print $1}'`; do
+  opkg install $o
+  opkg_updated=1
+done
+
+if [ "$opkg_updated" = "1" ]; then
+  opkg update
+fi
+
+# finally run the upgrade itself
+opkg upgrade
+
+# done
+touch /tmp/upgrade_ok
+sync
+
+# do we still need this?
+echo "Finished, press Ctrl-C to exit"
+
+exit 0