maintainer, ensure musl compatibility - with acpid kvm based setups can react on acpi shutdown and reboot actions Signed-off-by: heil <heil@terminal-consulting.de>lilik-openwrt-22.03
@ -0,0 +1,68 @@ | |||
# | |||
# Copyright (C) 2012-2015 OpenWrt.org | |||
# | |||
# This is free software, licensed under the GNU General Public License v2. | |||
# See /LICENSE for more information. | |||
# | |||
include $(TOPDIR)/rules.mk | |||
PKG_NAME:=acpid | |||
PKG_VERSION:=2.0.23 | |||
PKG_RELEASE:=1 | |||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz | |||
PKG_SOURCE_URL:=@SF/acpid2 | |||
PKG_MD5SUM:=d7bcdcdefcd53b03730e50ba842554ea | |||
PKG_MAINTAINER:=Thomas Heil<heil@terminal-consulting.de> | |||
PKG_LICENSE:=GPL-2.0 | |||
PKG_LICENSE_FILES:=COPYING | |||
include $(INCLUDE_DIR)/package.mk | |||
define Package/acpid | |||
SECTION:=utils | |||
CATEGORY:=Utilities | |||
TITLE:=The ACPI Daemon (acpid) With Netlink Support | |||
URL:=http://tedfelix.com/linux/acpid-netlink.html | |||
DEPENDS:=@(TARGET_x86||TARGET_x86_64) +kmod-input-evdev | |||
endef | |||
define Package/acpid/description | |||
The ACPI Daemon (acpid) With Netlink Support | |||
endef | |||
define Build/Compile | |||
$(MAKE) -C $(PKG_BUILD_DIR) \ | |||
CC="$(TARGET_CC)" \ | |||
LD="$(TARGET_CC)" \ | |||
LDFLAGS="$(TARGET_LDFLAGS)" \ | |||
all | |||
endef | |||
define Package/acpid/install | |||
$(INSTALL_DIR) $(1)/usr/sbin | |||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/acpid $(1)/usr/sbin/ | |||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/acpi_listen $(1)/usr/sbin/ | |||
$(INSTALL_DIR) $(1)/etc/acpi/events | |||
$(INSTALL_CONF) ./files/default $(1)/etc/acpi/events/default | |||
$(INSTALL_DIR) $(1)/etc/init.d | |||
$(INSTALL_CONF) ./files/acpid.init $(1)/etc/init.d/acpid | |||
chmod 0750 $(1)/etc/init.d/acpid | |||
$(INSTALL_DIR) $(1)/etc/hotplug.d/input/ | |||
$(INSTALL_CONF) ./files/acpid.hotplug $(1)/etc/hotplug.d/input/ | |||
endef | |||
define Package/acpid/postinst | |||
#!/bin/sh | |||
[ -n "$${IPKG_INSTROOT}" ] || { | |||
echo "waiting for input devices to come up" | |||
/etc/init.d/acpid enable | |||
sleep 5 | |||
/etc/init.d/acpid start | |||
echo "please try the power button" | |||
exit 0 | |||
} | |||
endef | |||
$(eval $(call BuildPackage,acpid)) |
@ -0,0 +1,7 @@ | |||
#!/bin/sh | |||
. /lib/functions.sh | |||
if [ "$ACTION" = add ] && [ "$DEVICENAME" = event0 ]; then | |||
( /etc/init.d/acpid/stop; sleep 3; /usr/sbin/acpid )& | |||
fi |
@ -0,0 +1,25 @@ | |||
#!/bin/ash /etc/rc.common | |||
# Copyright (C) 2009-2010 OpenWrt.org | |||
START=99 | |||
STOP=80 | |||
ACPID_BIN="/usr/sbin/acpid" | |||
ACPID_PID="/var/run/acpid.pid" | |||
start() { | |||
[ -x "$ACPID_BIN" ] || return 1 | |||
start-stop-daemon -S -x $ACPID_BIN -p $ACPID_PID | |||
} | |||
boot() { | |||
# Do nothing on boot | |||
[ -x "$ACPID_BIN" ] || return 1 | |||
start-stop-daemon -S -x $ACPID_BIN -p $ACPID_PID | |||
exit 0 | |||
} | |||
stop() { | |||
service_kill ${ACPID_BIN##*/} $ACPID_PID | |||
rm -f $ACPID_PID | |||
} |
@ -0,0 +1,5 @@ | |||
# This is a sample ACPID configuration | |||
event=button/power.* | |||
action=/sbin/poweroff | |||
@ -0,0 +1,129 @@ | |||
Index: acpid-2.0.23/tempfailure.h | |||
=================================================================== | |||
--- /dev/null | |||
+++ acpid-2.0.23/tempfailure.h | |||
@@ -0,0 +1,8 @@ | |||
+#ifndef TEMP_FAILURE_RETRY | |||
+#define TEMP_FAILURE_RETRY(expression) \ | |||
+ (__extension__ \ | |||
+ ({ long int __result; \ | |||
+ do __result = (long int) (expression); \ | |||
+ while (__result == -1L && errno == EINTR); \ | |||
+ __result; })) | |||
+#endif | |||
Index: acpid-2.0.23/acpi_listen.c | |||
=================================================================== | |||
--- acpid-2.0.23.orig/acpi_listen.c | |||
+++ acpid-2.0.23/acpi_listen.c | |||
@@ -39,6 +39,8 @@ | |||
#include "acpid.h" | |||
#include "ud_socket.h" | |||
+#include "tempfailure.h" | |||
+ | |||
static int handle_cmdline(int *argc, char ***argv); | |||
static char *read_line(int fd); | |||
Index: acpid-2.0.23/acpid.c | |||
=================================================================== | |||
--- acpid-2.0.23.orig/acpid.c | |||
+++ acpid-2.0.23/acpid.c | |||
@@ -41,6 +41,7 @@ | |||
#include "input_layer.h" | |||
#include "inotify_handler.h" | |||
#include "netlink.h" | |||
+#include "tempfailure.h" | |||
static int handle_cmdline(int *argc, char ***argv); | |||
static void close_fds(void); | |||
Index: acpid-2.0.23/event.c | |||
=================================================================== | |||
--- acpid-2.0.23.orig/event.c | |||
+++ acpid-2.0.23/event.c | |||
@@ -40,6 +40,9 @@ | |||
#include "sock.h" | |||
#include "ud_socket.h" | |||
#include "event.h" | |||
+ | |||
+#include "tempfailure.h" | |||
+ | |||
/* | |||
* What is a rule? It's polymorphic, pretty much. | |||
*/ | |||
Index: acpid-2.0.23/input_layer.c | |||
=================================================================== | |||
--- acpid-2.0.23.orig/input_layer.c | |||
+++ acpid-2.0.23/input_layer.c | |||
@@ -47,6 +47,8 @@ | |||
#define DIM(a) (sizeof(a) / sizeof(a[0])) | |||
+#include "tempfailure.h" | |||
+ | |||
struct evtab_entry { | |||
struct input_event event; | |||
const char *str; | |||
Index: acpid-2.0.23/kacpimon/libnetlink.c | |||
=================================================================== | |||
--- acpid-2.0.23.orig/kacpimon/libnetlink.c | |||
+++ acpid-2.0.23/kacpimon/libnetlink.c | |||
@@ -26,6 +26,8 @@ | |||
#include "libnetlink.h" | |||
+#include "../tempfailure.h" | |||
+ | |||
void rtnl_close(struct rtnl_handle *rth) | |||
{ | |||
if (rth->fd >= 0) { | |||
Index: acpid-2.0.23/netlink.c | |||
=================================================================== | |||
--- acpid-2.0.23.orig/netlink.c | |||
+++ acpid-2.0.23/netlink.c | |||
@@ -46,6 +46,7 @@ | |||
#include "connection_list.h" | |||
#include "netlink.h" | |||
+#include "tempfailure.h" | |||
static void | |||
format_netlink(struct nlmsghdr *msg) | |||
Index: acpid-2.0.23/proc.c | |||
=================================================================== | |||
--- acpid-2.0.23.orig/proc.c | |||
+++ acpid-2.0.23/proc.c | |||
@@ -34,6 +34,8 @@ | |||
#include "proc.h" | |||
+#include "tempfailure.h" | |||
+ | |||
const char *eventfile = ACPID_EVENTFILE; | |||
static char *read_line(int fd); | |||
Index: acpid-2.0.23/ud_socket.c | |||
=================================================================== | |||
--- acpid-2.0.23.orig/ud_socket.c | |||
+++ acpid-2.0.23/ud_socket.c | |||
@@ -22,6 +22,8 @@ | |||
#include "log.h" | |||
#include "ud_socket.h" | |||
+#include "tempfailure.h" | |||
+ | |||
int | |||
ud_create_socket(const char *name, mode_t socketmode) | |||
{ | |||
Index: acpid-2.0.23/libnetlink.c | |||
=================================================================== | |||
--- acpid-2.0.23.orig/libnetlink.c | |||
+++ acpid-2.0.23/libnetlink.c | |||
@@ -26,6 +26,8 @@ | |||
#include "libnetlink.h" | |||
+#include "tempfailure.h" | |||
+ | |||
void rtnl_close(struct rtnl_handle *rth) | |||
{ | |||
if (rth->fd >= 0) { |
@ -0,0 +1,21 @@ | |||
Partially roll back upstream commit 4711119089e1ad08dad206f4fded68f1972fdeed | |||
since released versions of uClibc don't support isfdtype(). | |||
Signed-off-by: Gustavo Zaarias <gustavo@zacarias.com.ar> | |||
Index: acpid-2.0.23/sock.c | |||
=================================================================== | |||
--- acpid-2.0.23.orig/sock.c | |||
+++ acpid-2.0.23/sock.c | |||
@@ -53,7 +53,10 @@ int non_root_clients; | |||
int | |||
is_socket(int fd) | |||
{ | |||
- return (isfdtype(fd, S_IFSOCK) == 1); | |||
+ int v; | |||
+ socklen_t l = sizeof(int); | |||
+ | |||
+ return (getsockopt(fd, SOL_SOCKET, SO_TYPE, (char *)&v, &l) == 0); | |||
} | |||
/* accept a new client connection */ |