[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Please unblock acpi-support



Hi,

while working on the dreaded dependency on consolekit (#665987) I found a much
more severe problem (#680409) and fixed both. I don't think we should release
without a fix to #680409 because that bug opens a whole can of worms. We've had
a lot of problems with acpi-support and other power managers interfering with
each other and I don't want to see those come up again. So please unblock.

Thanks.

Michael

P.S.: Debdiff attached.
-- 
Michael Meskes
Michael at Fam-Meskes dot De, Michael at Meskes dot (De|Com|Net|Org)
Michael at BorussiaFan dot De, Meskes at (Debian|Postgresql) dot Org
Jabber: michael.meskes at googlemail dot com
VfL Borussia! Força Barça! Go SF 49ers! Use Debian GNU/Linux, PostgreSQL
diff -u acpi-support-0.140/debian/changelog acpi-support-0.140/debian/changelog
--- acpi-support-0.140/debian/changelog
+++ acpi-support-0.140/debian/changelog
@@ -1,3 +1,13 @@
+acpi-support (0.140-5) unstable; urgency=low
+
+  * Rewrote getXuser in power-funcs to only use ck-list-sessions if installed,
+    if not fallback to using pinky instead. This enables us to downgrade
+    consolekit to a recommendation instead of a dependency. (Closes: #665987)
+  * Unset IFS after using it to make other commands use standard setting again.
+    (Closes: #680409)
+
+ -- Michael Meskes <meskes@debian.org>  Thu, 05 Jul 2012 11:03:20 +0200
+
 acpi-support (0.140-4) unstable; urgency=low
 
   * Remove examples that are variants of files still in use.
diff -u acpi-support-0.140/debian/control acpi-support-0.140/debian/control
--- acpi-support-0.140/debian/control
+++ acpi-support-0.140/debian/control
@@ -35,7 +35,8 @@
 
 Package: acpi-support-base
 Architecture: all
-Depends: acpid (>= 1.0.4), consolekit, ${misc:Depends}
+Depends: acpid (>= 1.0.4), ${misc:Depends}
+Recommends: consolekit
 Suggests: acpi-support
 Replaces: acpi-support (<< 0.109-1)
 Description: scripts for handling base ACPI events such as the power button
diff -u acpi-support-0.140/debian/patches/power-funcs.diff acpi-support-0.140/debian/patches/power-funcs.diff
--- acpi-support-0.140/debian/patches/power-funcs.diff
+++ acpi-support-0.140/debian/patches/power-funcs.diff
@@ -1,6 +1,6 @@
 --- acpi-support-0.140/lib/power-funcs
 +++ acpi-support-0.140/lib/power-funcs
-@@ -1,33 +1,51 @@
+@@ -1,33 +1,83 @@
  # a micro library of helper functions for the power scripts
  
 -umask 022;
@@ -21,32 +21,62 @@
  getXuser() {
 -	local display userhome uid
 -	if [ -z "$displaynum" ]; then
--		display=.+
-+	local display uid user startx pid userhome IFS
++	local plist display uid user startx pid userhome IFS
 +
 +	if [ "$displaynum" ]; then
 +		display=:$displaynum
++	else
+ 		display=.+
++	fi
++
++	user=
++	if [ -x /usr/bin/ck-list-sessions ]; then
++		uid=$(ck-list-sessions | awk 'BEGIN { unix_user = ""; } /^Session/ { unix_user = ""; } /unix-user =/ { gsub(/'\''/,"",$3); unix_user = $3; } /x11-display = '\'$display\''/ { print unix_user; exit (0); }')
++
++		if [ "$uid" ]; then
++			IFS=:
++			set -- $(getent passwd $uid)
++			user=$1
++			unset IFS
++		fi
  	else
 -		display=":$displaynum"
-+		display=.+
++		plist=$(pinky -fw) || pwf_error "pinky lost"
++		while read l; do
++			set -- $l
++			eval lastpp=\$$#
++			for ds in $2 $lastpp; do
++				case $ds in
++					$display)
++						user=$1
++						break
++						;;
++				esac
++			done
++			[ -z "$user" ] || break
++			for ds in $2 $lastpp; do
++				case $ds in
++					$display.0)
++						user=$1
++						break
++						;;
++				esac
++			done
++			[ -z "$user" ] || break
++		done <<-EOF
++			$plist
++		EOF
  	fi
-+
- 	uid=$(ck-list-sessions | awk 'BEGIN { unix_user = ""; } /^Session/ { unix_user = ""; } /unix-user =/ { gsub(/'\''/,"",$3); unix_user = $3; } /x11-display = '\'$display\''/ { print unix_user; exit (0); }')
+-	uid=$(ck-list-sessions | awk 'BEGIN { unix_user = ""; } /^Session/ { unix_user = ""; } /unix-user =/ { gsub(/'\''/,"",$3); unix_user = $3; } /x11-display = '\'$display\''/ { print unix_user; exit (0); }')
  
 -	if [ -n "$uid" ]; then
 -		user=$(getent passwd $uid | cut -d: -f1)
 -        	userhome=$(getent passwd $user | cut -d: -f6)
 -        	export XAUTHORITY=$userhome/.Xauthority
-+	if [ "$uid" ]; then
-+		IFS=:
-+		set -- $(getent passwd $uid)
-+		user=$1
- 	else
--		user=
--		export XAUTHORITY=""
++	if [ -z "$user" ]; then
 +		startx=$(pgrep -n startx || :)
 +		[ -z "$startx" ] || user=$(ps -o user --no-headers $startx || :)
- 	fi
++	fi
 +
 +	if [ x"$user" != x ]; then
 +        	for pid in `ps -U $user -o pid=`; do
@@ -59,14 +89,16 @@
 +			eval userhome=~$user
 +			export XAUTHORITY=$userhome/.Xauthority
 +		fi
-+	else
+ 	else
+-		user=
+-		export XAUTHORITY=""
 +		export XAUTHORITY=
-+	fi
+ 	fi
 +	export XUSER=$user
  }
  
  # getXconsole: get the information for the active X console, if any.
-@@ -36,45 +54,55 @@
+@@ -36,45 +86,55 @@
  # output: $XAUTHORITY: the path to the xauth data used for connecting to the
  #                      detected X display.
  #         $DISPLAY: the X display

Reply to: