[Debian-eeepc-devel] [PATCH] Move SHE handling from acpid to pm-utils; call pm-utils if a power manager isn't running like acpi-support does

Luca Niccoli lultimouomo at gmail.com
Fri Apr 23 14:38:29 UTC 2010


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
NotDashEscaped: You need GnuPG to verify this message

This patch moves SHE handling to a pm-utils hook.
acpi-support calls pm-powersave if no power manager is running; I think that most
power managers do the same (xfce4-power-mangers does).
Since e-a-s conficts with acpi-support, it should ship the same acpi event rule
until it drops the conflict and starts depending on it.

Signed-off-by: Luca Niccoli <lultimouomo at gmail.com>
---
 debian/dirs                         |    1 +
 debian/preinst                      |    5 ++++
 debian/rules                        |    1 +
 etc/acpi/actions/ac_adapter.sh      |   44 -----------------------------------
 etc/acpi/actions/power.sh           |   11 ++++++++
 etc/acpi/events/ac                  |    6 ++++
 etc/acpi/events/ac_adapter_inserted |    2 -
 etc/acpi/events/ac_adapter_removed  |    2 -
 etc/pm/power.d/SHE.sh               |   44 +++++++++++++++++++++++++++++++++++
 9 files changed, 68 insertions(+), 48 deletions(-)
 delete mode 100755 etc/acpi/actions/ac_adapter.sh
 create mode 100755 etc/acpi/actions/power.sh
 create mode 100644 etc/acpi/events/ac
 delete mode 100644 etc/acpi/events/ac_adapter_inserted
 delete mode 100644 etc/acpi/events/ac_adapter_removed
 create mode 100755 etc/pm/power.d/SHE.sh

diff --git a/debian/dirs b/debian/dirs
index ffb1f0e..8823008 100644
--- a/debian/dirs
+++ b/debian/dirs
@@ -3,6 +3,7 @@ etc/acpi/actions
 etc/acpi/events
 etc/acpi/lib
 etc/modprobe.d
+etc/pm/power.d
 lib/udev/rules.d
 usr/share/eeepc-acpi-scripts
 var/lib/eeepc-acpi-scripts
diff --git a/debian/preinst b/debian/preinst
index 25809df..2ddaddf 100644
--- a/debian/preinst
+++ b/debian/preinst
@@ -20,6 +20,11 @@ case "$1" in
         if dpkg --compare-versions "$2" le "1.0.11"; then
             prep_mv_conffile "/etc/modprobe.d/eeepc"
         fi
+        if dpkg --compare-versions "$2" le "1.1.10"; then
+            prep_mv_conffile "/etc/acpi/events/ac_adapter_inserted"
+            prep_mv_conffile "/etc/acpi/events/ac_adapter_removed"
+            prep_mv_conffile "/etc/acpi/actions/ac_adapter.sh"
+        fi
     ;;
 
     abort-upgrade)
diff --git a/debian/rules b/debian/rules
index db23e1d..9606a91 100755
--- a/debian/rules
+++ b/debian/rules
@@ -29,6 +29,7 @@ install: build
 	install -m 0644 etc/acpi/events/* $(TMP)/etc/acpi/events
 	install -m 0644 etc/acpi/lib/* $(TMP)/etc/acpi/lib
 	install -m 0644 etc/modprobe.d/* $(TMP)/etc/modprobe.d
+	install -m 0755 etc/pm/power.d/* $(TMP)/etc/pm/power.d
 	install -m 0644 lib/udev/rules.d/* $(TMP)/lib/udev/rules.d
 	install -m 0755 lib/udev/[!r]* $(TMP)/lib/udev
 	install -m 0644 functions.sh $(TMP)/usr/share/$(PKG)/
diff --git a/etc/acpi/actions/ac_adapter.sh b/etc/acpi/actions/ac_adapter.sh
deleted file mode 100755
index a2e4bc6..0000000
--- a/etc/acpi/actions/ac_adapter.sh
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/bin/sh
-
-# do nothing if package is removed
-PKG=eeepc-acpi-scripts
-FUNC_LIB=/usr/share/$PKG/functions.sh
-DEFAULT=/etc/default/$PKG
-[ -e $FUNC_LIB ] || exit 0
-
-case $(runlevel) in
-    *0|*6)
-	exit 0
-	;;
-esac
-
-if [ -e "$DEFAULT" ]; then . "$DEFAULT"; fi
-. $FUNC_LIB
-
-. /etc/acpi/lib/notify.sh
-code="$3 $4"
-
-case "$code" in
-    # AC adapter present
-    0000008[01]\ 00000001)
-	. /etc/acpi/lib/shengine.sh
-	if shengine_supported && [ "${SHENGINE_SETTING:-auto}" = auto ]; then
-	    PWR_CLOCK_AC="${PWR_CLOCK_AC:-0}"
-	    if [ $(get_shengine -) -gt "$PWR_CLOCK_AC" ]; then
-		handle_shengine "$PWR_CLOCK_AC" -
-	    fi
-	fi
-	;;
-
-    # AC adapter not present
-    0000008[01]\ 00000000)
-	. /etc/acpi/lib/shengine.sh
-	if shengine_supported && [ "${SHENGINE_SETTING:-auto}" = auto ]; then
-	    PWR_CLOCK_BATTERY="${PWR_CLOCK_BATTERY:-$(($SHENGINE_LIMIT - 1))}"
-	    if [ $(get_shengine -) -lt "$PWR_CLOCK_BATTERY" ]; then
-		handle_shengine "$PWR_CLOCK_BATTERY" -
-	    fi
-	fi
-	;;
-
-esac
diff --git a/etc/acpi/actions/power.sh b/etc/acpi/actions/power.sh
new file mode 100755
index 0000000..7e10fa6
--- /dev/null
+++ b/etc/acpi/actions/power.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+test -f /usr/share/acpi-support/key-constants || exit 0
+
+. /usr/share/acpi-support/policy-funcs
+
+if [ -z "$*" ] && [ `CheckPolicy` = 0 ]; then
+    exit;
+fi
+
+#pm-powersave $*
diff --git a/etc/acpi/events/ac b/etc/acpi/events/ac
new file mode 100644
index 0000000..2dd5a71
--- /dev/null
+++ b/etc/acpi/events/ac
@@ -0,0 +1,6 @@
+# /etc/acpi/events/ac
+# Called when the user connects ac power to us
+# 
+
+event=ac_adapter.*
+action=/etc/acpi/actions/power.sh
diff --git a/etc/acpi/events/ac_adapter_inserted b/etc/acpi/events/ac_adapter_inserted
deleted file mode 100644
index af9eb09..0000000
--- a/etc/acpi/events/ac_adapter_inserted
+++ /dev/null
@@ -1,2 +0,0 @@
-event=ac_adapter .* 0000008[01] 00000001
-action=/etc/acpi/actions/ac_adapter.sh %e
diff --git a/etc/acpi/events/ac_adapter_removed b/etc/acpi/events/ac_adapter_removed
deleted file mode 100644
index b05b617..0000000
--- a/etc/acpi/events/ac_adapter_removed
+++ /dev/null
@@ -1,2 +0,0 @@
-event=ac_adapter .* 0000008[01] 00000000
-action=/etc/acpi/actions/ac_adapter.sh %e
diff --git a/etc/pm/power.d/SHE.sh b/etc/pm/power.d/SHE.sh
new file mode 100755
index 0000000..050b905
--- /dev/null
+++ b/etc/pm/power.d/SHE.sh
@@ -0,0 +1,44 @@
+#!/bin/sh
+
+# Handles EeePc Super Hybrid Engine
+# do nothing if package is removed
+PKG=eeepc-acpi-scripts
+FUNC_LIB=/usr/share/$PKG/functions.sh
+DEFAULT=/etc/default/$PKG
+[ -e $FUNC_LIB ] || exit 0
+
+case $(runlevel) in
+    *0|*6)
+	exit 0
+	;;
+esac
+
+if [ -e "$DEFAULT" ]; then . "$DEFAULT"; fi
+. $FUNC_LIB
+
+. /etc/acpi/lib/notify.sh
+
+case "$1" in
+    # AC adapter present
+    false)
+	. /etc/acpi/lib/shengine.sh
+	if shengine_supported && [ "${SHENGINE_SETTING:-auto}" = auto ]; then
+	    PWR_CLOCK_AC="${PWR_CLOCK_AC:-0}"
+	    if [ $(get_shengine -) -gt "$PWR_CLOCK_AC" ]; then
+		handle_shengine "$PWR_CLOCK_AC" -
+	    fi
+	fi
+	;;
+
+    # AC adapter not present
+    true)
+	. /etc/acpi/lib/shengine.sh
+	if shengine_supported && [ "${SHENGINE_SETTING:-auto}" = auto ]; then
+	    PWR_CLOCK_BATTERY="${PWR_CLOCK_BATTERY:-$(($SHENGINE_LIMIT - 1))}"
+	    if [ $(get_shengine -) -lt "$PWR_CLOCK_BATTERY" ]; then
+		handle_shengine "$PWR_CLOCK_BATTERY" -
+	    fi
+	fi
+	;;
+
+esac
-- 
1.7.0.4

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.14 (GNU/Linux)

iEYEARECAAYFAkvRsK4ACgkQ+AQB36CPPlrydQCglgh8SzOBOZtmpg10aVYb+9VP
7ZoAoKcqfb/nBzxy29v2KXnX4x7BolQH
=r+UC
-----END PGP SIGNATURE-----



More information about the Debian-eeepc-devel mailing list