summaryrefslogtreecommitdiffstats
path: root/testing/upgrade-notify
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2013-05-22 07:17:56 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2013-05-22 07:18:35 +0000
commit25d8ef878f52ada1ed371ae6f9508a851a74b23c (patch)
tree76acf933ed1059f3bd1ce8714c5c864a5b7cbcea /testing/upgrade-notify
parent17c3e67787c5817eef0819e096c38a48ae8bd5b2 (diff)
downloadaports-25d8ef878f52ada1ed371ae6f9508a851a74b23c.tar.bz2
aports-25d8ef878f52ada1ed371ae6f9508a851a74b23c.tar.xz
testing/upgrade-notify: new aport
Get notifications about what services need to restart after an upgrade http://git.alpinelinux.org/alpine/tree/testing/upgrade-notify
Diffstat (limited to 'testing/upgrade-notify')
-rw-r--r--testing/upgrade-notify/APKBUILD18
-rw-r--r--testing/upgrade-notify/upgrade-notify.trigger52
2 files changed, 70 insertions, 0 deletions
diff --git a/testing/upgrade-notify/APKBUILD b/testing/upgrade-notify/APKBUILD
new file mode 100644
index 000000000..9174a1762
--- /dev/null
+++ b/testing/upgrade-notify/APKBUILD
@@ -0,0 +1,18 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname="upgrade-notify"
+pkgver=0.1
+license="GPL"
+pkgdesc="Get notifications about what services need to restart after an upgrade"
+url="http://git.alpinelinux.org/alpine/tree/testing/upgrade-notify"
+arch=noarch
+triggers="$pkgname.trigger=/etc/init.d:/boot"
+
+build() {
+ return 0
+}
+
+package() {
+ mkdir -p "$pkgdir"
+}
+
+
diff --git a/testing/upgrade-notify/upgrade-notify.trigger b/testing/upgrade-notify/upgrade-notify.trigger
new file mode 100644
index 000000000..0c3cf462f
--- /dev/null
+++ b/testing/upgrade-notify/upgrade-notify.trigger
@@ -0,0 +1,52 @@
+#!/bin/sh
+
+msg() {
+ local summary="$1"
+ shift
+ echo "" >&2
+ echo " $summary" >&2
+ local i
+ for i; do
+ echo " $i" >&2
+ done
+ echo "" >&2
+}
+
+# compare the timestamp of "started" symlink with timestamp of /etc/init.d
+# if the /etc/init.d/* script is newer than "started" symlink then
+# service was upgraded after service was started
+services=$(find /run/openrc/started -type l | xargs stat -c "%n %Y" \
+ | while read file started; do
+ svc=${file##*/}
+ installed=$(stat -c "%Y" /etc/init.d/$svc)
+ if [ $installed -gt $started ]; then
+ echo $svc
+ fi
+done)
+
+need_reboot=false
+for i; do
+ case $i in
+ /boot)
+ need_reboot=true
+ esac
+done
+
+notify=msg
+if which notify-send > /dev/null; then
+ notify="notify-send"
+fi
+
+if [ -n "$services" ]; then
+ $notify "The following services have been updated and need a restart:" \
+ $services
+fi
+
+case "$(rc --sys)" in
+ LXC|VSERVER) exit 0 ;;
+esac
+
+if $need_reboot ; then
+ $notify "Kernel(s) were updated. You might need to reboot"
+fi
+