From bfaf145df41279f7173b45b7921b51be361253f0 Mon Sep 17 00:00:00 2001
From: Anish Mangal <anish@sugarlabs.org>
Date: Mon, 20 Dec 2010 16:05:13 -0300
Subject: [PATCH 1/3] Add yum-updater setup scripts to dx xo-1 builds
Organization: Sugar Labs Foundation


Signed-off-by: Anish Mangal <anish@sugarlabs.org>
---
 examples/dextrose2-xo1-nognome.ini          |    1 +
 modules/custom_scripts/yum_updater_setup.sh |   55 +++++++++++++++++++++++++++
 2 files changed, 56 insertions(+), 0 deletions(-)
 create mode 100755 modules/custom_scripts/yum_updater_setup.sh

diff --git a/examples/dextrose2-xo1-nognome.ini b/examples/dextrose2-xo1-nognome.ini
index 190e8ab..a595344 100644
--- a/examples/dextrose2-xo1-nognome.ini
+++ b/examples/dextrose2-xo1-nognome.ini
@@ -217,6 +217,7 @@ path=buildnr-dx
 custom_script_1=modules/custom_scripts/set_protected_list.sh
 custom_script_2=modules/custom_scripts/sugar_coredump.sh
 custom_script_3=modules/custom_scripts/libertas_debug.sh
+custom_script_4=modules/custom_scripts/yum_updater_setup.sh
 
 [base]
 versioned_fs=0
diff --git a/modules/custom_scripts/yum_updater_setup.sh b/modules/custom_scripts/yum_updater_setup.sh
new file mode 100755
index 0000000..8538b6b
--- /dev/null
+++ b/modules/custom_scripts/yum_updater_setup.sh
@@ -0,0 +1,55 @@
+cat >>"$INSTALL_ROOT/etc/default/dextrose-update" <<__EOF__
+DEXTROSE_YUM_REPO=dextrose
+__EOF__
+
+cat >>"$INSTALL_ROOT/usr/sbin/dextrose-update" <<__EOF__
+#!/bin/sh
+
+name="dextrose-update"
+. /etc/default/\${name}
+
+logfile="/var/log/\${name}"
+
+reboot_pkgs="kernel kernel-firmware"
+relogin_pkgs="sugar sugar-artwork sugar-base sugar-datastore sugar-presence-service sugar-toolkit"
+
+yum="/usr/bin/yum --disablerepo=* --enablerepo=\${DEXTROSE_YUM_REPO} --skip-broken --quiet"
+
+updates() {
+    \${yum} -e0 check-update | awk '/./{print \$1 "-" \$2}'
+}
+
+to_update=\$(updates)
+[ "\${to_update}" ] || exit 0
+
+parse() {
+    for i in \$@; do
+        echo \${to_update} | grep "\(^\| \)\$i\." >/dev/null && echo \$i
+    done
+}
+
+need_reboot=\$(parse \${reboot_pkgs})
+need_relogin=\$(parse \${relogin_pkgs})
+
+echo "\$(date)" >> \$logfile
+echo -e "\tRepository:" \${DEXTROSE_YUM_REPO} >> \$logfile
+echo -e "\tPackages to update:" \${to_update} >> \$logfile
+\${yum} -y update >> \$logfile 2>&1
+to_update=\$(updates)
+
+if [ "\${need_reboot}" ]; then
+    if [ "\${need_reboot}" != "\$(parse \${reboot_pkgs})" ]; then
+        echo -e "\tNeed to reboot..." >> \$logfile
+        dbus-send --system /org/sugarlabs/system org.sugarlabs.system.Reboot
+    fi
+fi
+
+if [ "\${need_relogin}" ]; then
+    if [ "\${need_relogin}" != "\$(parse \${relogin_pkgs})" ]; then
+        echo -e "\tNeed to relogin..." >> \$logfile
+        dbus-send --system /org/sugarlabs/system org.sugarlabs.system.Relogin
+    fi
+fi
+__EOF__
+
+ln -s $INSTALL_ROOT/usr/sbin/dextrose-update $INSTALL_ROOT/etc/cron.daily
-- 
1.7.3.4

