[pkg-wpa-devel] r991 - in /wpasupplicant/trunk/debian: changelog ifupdown/functions.sh ifupdown/ifupdown.sh rules wpasupplicant.postinst wpasupplicant.postrm wpasupplicant.preinst wpasupplicant.wpa-ifupdown.init

kelmo-guest at users.alioth.debian.org kelmo-guest at users.alioth.debian.org
Sun Jan 6 02:20:07 UTC 2008


Author: kelmo-guest
Date: Sun Jan  6 02:20:07 2008
New Revision: 991

URL: http://svn.debian.org/wsvn/pkg-wpa/?sc=1&rev=991
Log:
* Handle removal of /etc/init.d/wpa-ifupdown from package on upgrade. This
  is done using preinst, postinst and postrm trio similar to that which
  facilitated the removal of /etc/init.d/wpasupplicant.
* Create sendsigs omission pidfile in /lib/init/rw/sendsigs.omit.d/ for
  wpa_supplicant and wpa_cli processes managed by ifupdown. Determine
  runlevel when wpa_cli roaming daemon is active, and allow ot to be killed
  in runlevels 0 and 6.

Added:
    wpasupplicant/trunk/debian/wpasupplicant.preinst
Removed:
    wpasupplicant/trunk/debian/wpasupplicant.wpa-ifupdown.init
Modified:
    wpasupplicant/trunk/debian/changelog
    wpasupplicant/trunk/debian/ifupdown/functions.sh
    wpasupplicant/trunk/debian/ifupdown/ifupdown.sh
    wpasupplicant/trunk/debian/rules
    wpasupplicant/trunk/debian/wpasupplicant.postinst
    wpasupplicant/trunk/debian/wpasupplicant.postrm

Modified: wpasupplicant/trunk/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-wpa/wpasupplicant/trunk/debian/changelog?rev=991&op=diff
==============================================================================
--- wpasupplicant/trunk/debian/changelog (original)
+++ wpasupplicant/trunk/debian/changelog Sun Jan  6 02:20:07 2008
@@ -64,8 +64,15 @@
   * Remove upgrade removal of conffiles from wpasupplicant versions that exist
     in oldstable and before. The preinst part of the upgrade handling was
     removed in pkg-wpa commit r852.
-
- -- Kel Modderman <kel at otaku42.de>  Fri, 04 Jan 2008 16:35:39 +1000
+  * Handle removal of /etc/init.d/wpa-ifupdown from package on upgrade. This
+    is done using preinst, postinst and postrm trio similar to that which
+    facilitated the removal of /etc/init.d/wpasupplicant.
+  * Create sendsigs omission pidfile in /lib/init/rw/sendsigs.omit.d/ for
+    wpa_supplicant and wpa_cli processes managed by ifupdown. Determine
+    runlevel when wpa_cli roaming daemon is active, and allow ot to be killed
+    in runlevels 0 and 6.
+
+ -- Kel Modderman <kel at otaku42.de>  Sun, 06 Jan 2008 12:15:43 +1000
 
 wpasupplicant (0.6.1~git20071119-1) unstable; urgency=low
 

Modified: wpasupplicant/trunk/debian/ifupdown/functions.sh
URL: http://svn.debian.org/wsvn/pkg-wpa/wpasupplicant/trunk/debian/ifupdown/functions.sh?rev=991&op=diff
==============================================================================
--- wpasupplicant/trunk/debian/ifupdown/functions.sh (original)
+++ wpasupplicant/trunk/debian/ifupdown/functions.sh Sun Jan  6 02:20:07 2008
@@ -32,12 +32,14 @@
 WPA_SUP_BIN="/sbin/wpa_supplicant"
 WPA_SUP_PNAME="wpa_supplicant"
 WPA_SUP_PIDFILE="/var/run/wpa_supplicant.${WPA_IFACE}.pid"
+WPA_SUP_OMIT_PIDFILE="/lib/init/rw/sendsigs.omit.d/wpa_supplicant.${WPA_IFACE}.pid"
 WPA_SUP_LOGFILE="/var/log/wpa_supplicant.${WPA_IFACE}.log"
 
 # wpa_cli variables
 WPA_CLI_BIN="/sbin/wpa_cli"
 WPA_CLI_PNAME="wpa_cli"
 WPA_CLI_PIDFILE="/var/run/wpa_action.${WPA_IFACE}.pid"
+WPA_CLI_OMIT_PIDFILE="/lib/init/rw/sendsigs.omit.d/wpa_action.${WPA_IFACE}.pid"
 WPA_CLI_LOGFILE="/var/log/wpa_action.${WPA_IFACE}.log"
 WPA_CLI_TIMESTAMP="/var/run/wpa_action.${WPA_IFACE}.timestamp"
 
@@ -243,6 +245,17 @@
 			wpa_msg stderr "$WPA_SUP_BIN daemon failed to start"
 			return 1
 		fi
+
+		if [ -s "$WPA_SUP_PIDFILE" ]; then
+			# add pid to sendsigs omit directory
+			if [ -d /lib/init/rw/sendsigs.omit.d/ ]; then
+				cat "$WPA_SUP_PIDFILE" > "$WPA_SUP_OMIT_PIDFILE"
+			else
+				wpa_msg stderr "sendsigs omit dir does not exist: /lib/init/rw/sendsigs.omit.d/"
+			fi
+		else
+			wpa_msg stderr "pidfile missing or empty: $WPA_SUP_PIDFILE"
+		fi
 		
 		local WPA_SOCKET_WAIT MAX_WPA_SOCKET_WAIT
 		WPA_SOCKET_WAIT="0"
@@ -281,6 +294,11 @@
 		if [ -f "$WPA_SUP_PIDFILE" ]; then
 			rm -f "$WPA_SUP_PIDFILE"
 		fi
+
+		if [ -f "$WPA_SUP_OMIT_PIDFILE" ]; then
+			wpa_msg verbose "removing $WPA_SUP_OMIT_PIDFILE"
+			rm -f "$WPA_SUP_OMIT_PIDFILE"
+		fi
 	elif [ -S "$WPA_CTRL_DIR/$WPA_IFACE" ]; then
 
 		wpa_msg action "terminating via ctrl_interface socket $WPA_CTRL_DIR/$WPA_IFACE"
@@ -333,6 +351,16 @@
 			wpa_msg stderr "$WPA_CLI_BIN daemon failed to start"
 			return 1
 		fi
+
+		if [ -s "$WPA_CLI_PIDFILE" ]; then
+			if [ -d /lib/init/rw/sendsigs.omit.d/ ]; then
+				cat "$WPA_CLI_PIDFILE" > "$WPA_CLI_OMIT_PIDFILE"
+			else
+				wpa_msg stderr "sendsigs omit dir does not exist: /lib/init/rw/sendsigs.omit.d/"
+			fi
+		else
+			wpa_msg stderr "empty or missing: $WPA_CLI_PIDFILE"
+		fi
 	fi
 }
 
@@ -350,6 +378,10 @@
 		
 		if [ -f "$WPA_CLI_PIDFILE" ]; then
 			rm -f "$WPA_CLI_PIDFILE"
+		fi
+
+		if [ -f "$WPA_CLI_OMIT_PIDFILE" ]; then
+			rm -f "$WPA_CLI_OMIT_PIDFILE"
 		fi
 	fi
 }

Modified: wpasupplicant/trunk/debian/ifupdown/ifupdown.sh
URL: http://svn.debian.org/wsvn/pkg-wpa/wpasupplicant/trunk/debian/ifupdown/ifupdown.sh?rev=991&op=diff
==============================================================================
--- wpasupplicant/trunk/debian/ifupdown/ifupdown.sh (original)
+++ wpasupplicant/trunk/debian/ifupdown/ifupdown.sh Sun Jan  6 02:20:07 2008
@@ -57,9 +57,27 @@
 	exit 0
 fi
 
-# quit if wpa_action is active
 if test_wpa_cli; then
-	exit 0
+	# wpa-roam/wpa_action mode is active
+	if [ "$MODE" = stop ]; then
+		RUNLEVEL=$(/sbin/runlevel)
+		RUNLEVEL="${RUNLEVEL#*\ }"
+		case "$RUNLEVEL" in
+			0|6)
+				# wpa_cli and wpa_supplicant are to be killed, we are in
+				# shutdown or reboot
+				wpa_msg verbose "allowing stop, runlevel: $RUNLEVEL"
+				;;
+			*)
+				# allow wpa_cli daemon (wpa-roam/wpa_action) to continue,
+				# we are in a standard runlevel
+				exit 0
+				;;
+		esac
+	else
+		# allow wpa_cli daemon (wpa-roam/wpa_action) to continue
+		exit 0
+	fi
 fi
 
 # preliminary sanity checks for roaming daemon

Modified: wpasupplicant/trunk/debian/rules
URL: http://svn.debian.org/wsvn/pkg-wpa/wpasupplicant/trunk/debian/rules?rev=991&op=diff
==============================================================================
--- wpasupplicant/trunk/debian/rules (original)
+++ wpasupplicant/trunk/debian/rules Sun Jan  6 02:20:07 2008
@@ -93,7 +93,6 @@
 	dh_install
 	dh_installlogrotate --package=wpasupplicant --name=wpa_action
 	dh_installlogrotate --package=wpasupplicant --name=wpa_supplicant
-	dh_installinit --package=wpasupplicant --name=wpa-ifupdown --no-start -- start 15 0 6 .
 	dh_installman
 	dh_link
 	dh_strip

Modified: wpasupplicant/trunk/debian/wpasupplicant.postinst
URL: http://svn.debian.org/wsvn/pkg-wpa/wpasupplicant/trunk/debian/wpasupplicant.postinst?rev=991&op=diff
==============================================================================
--- wpasupplicant/trunk/debian/wpasupplicant.postinst (original)
+++ wpasupplicant/trunk/debian/wpasupplicant.postinst Sun Jan  6 02:20:07 2008
@@ -15,8 +15,23 @@
 # If prerm fails during replacement due to conflict:
 #       <postinst> abort-remove in-favour <new-package> <version>
 
+# Remove a no-longer used conffile
+rm_conffile() {
+	CONFFILE="$1"
+	
+	if [ -e "$CONFFILE" ]; then
+		echo "Removing obsolete conffile $CONFFILE"
+		rm -f "$CONFFILE"
+	fi
+}
+
 case "$1" in
 	configure)
+		# Remove the obsolete wpa-ifupdown workaround
+		if dpkg --compare-versions "$2" le "0.6.2-1"; then
+			rm_conffile /etc/init.d/wpa-ifupdown
+			update-rc.d -f wpa-ifupdown remove || true
+		fi
 		# Add the netdev group unless it's already there
 		if ! getent group netdev >/dev/null; then
 			addgroup --quiet --system netdev || true

Modified: wpasupplicant/trunk/debian/wpasupplicant.postrm
URL: http://svn.debian.org/wsvn/pkg-wpa/wpasupplicant/trunk/debian/wpasupplicant.postrm?rev=991&op=diff
==============================================================================
--- wpasupplicant/trunk/debian/wpasupplicant.postrm (original)
+++ wpasupplicant/trunk/debian/wpasupplicant.postrm Sun Jan  6 02:20:07 2008
@@ -26,6 +26,18 @@
 # If preinst fails during upgrade:
 #       <new-postrm> abort-upgrade <old-version>
 
+# Undo removal of a no-longer used conffile
+undo_rm_conffile() {
+	CONFFILE="$1"
+	
+	if [ ! -e "$CONFFILE" ]; then
+		if [ -e "$CONFFILE".dpkg-bak ]; then
+			echo "Restoring modified conffile $CONFFILE"
+			mv -f "$CONFFILE".dpkg-bak "$CONFFILE"
+        	fi
+	fi
+}
+
 case "$1" in
 	remove)
 		;;
@@ -37,6 +49,9 @@
 	upgrade|failed-upgrade|disappear)
 		;;
 	abort-install|abort-upgrade)
+		if dpkg --compare-versions "$2" le "0.6.2-1"; then
+			undo_rm_conffile /etc/init.d/wpa-ifupdown
+		fi
 		;;
 	*)
 		echo "$0 called with unknown argument \`$1'" 1>&2

Added: wpasupplicant/trunk/debian/wpasupplicant.preinst
URL: http://svn.debian.org/wsvn/pkg-wpa/wpasupplicant/trunk/debian/wpasupplicant.preinst?rev=991&op=file
==============================================================================
--- wpasupplicant/trunk/debian/wpasupplicant.preinst (added)
+++ wpasupplicant/trunk/debian/wpasupplicant.preinst Sun Jan  6 02:20:07 2008
@@ -1,0 +1,48 @@
+#!/bin/sh -e
+# This script can be called in the following ways:
+#
+# Before the package is installed:
+#       <new-preinst> install
+#
+# Before removed package is upgraded:
+#       <new-preinst> install <old-version>
+#
+# Before the package is upgraded:
+#       <new-preinst> upgrade <old-version>
+#
+#
+# If postrm fails during upgrade or fails on failed upgrade:
+#       <old-preinst> abort-upgrade <new-version>
+
+# Prepare to move a conffile without triggering a dpkg question
+prep_rm_conffile() {
+	PKGNAME="$1"
+	CONFFILE="$2"
+
+	if [ -e "$CONFFILE" ]; then
+		md5sum="`md5sum \"$CONFFILE\" | sed -e \"s/ .*//\"`"
+		old_md5sum="`dpkg-query -W -f='${Conffiles}' $PKGNAME | sed -n -e \"\\\\' $CONFFILE'{s/ obsolete$//;s/.* //p}\"`"
+		if [ "$md5sum" != "$old_md5sum" ]; then
+			echo "Obsolete conffile $CONFFILE has been modified by you."
+			echo "Renaming to $CONFFILE.dpkg-bak ..."
+			mv -f "$CONFFILE" "$CONFFILE".dpkg-bak
+		fi
+	fi
+}
+
+case "$1" in
+	install|upgrade)
+		if dpkg --compare-versions "$2" le "0.6.2-1"; then
+			prep_rm_conffile wpasupplicant /etc/init.d/wpa-ifupdown
+		fi
+		;;
+	abort-upgrade)
+		;;
+	*)
+		echo "$0 called with unknown argument \`$1'" 1>&2
+		exit 1
+		;;
+esac
+
+#DEBHELPER#
+exit 0




More information about the Pkg-wpa-devel mailing list