lirc: update to 0.10.0

- remove upstream patches
- adapt patch to build without python
- adapt systemd services to lirc changes
- update lirc_options.conf
This commit is contained in:
Matthias Reichl 2017-08-12 11:03:10 +02:00
parent fb748cf452
commit 5e541035a7
11 changed files with 65 additions and 403 deletions

View File

@ -20,8 +20,9 @@ repeat-max = 600
#listen = [address:]port
#connect = host[:port]
#loglevel = 6
#uinput = ...
#release = ...
#release = true
#release_suffix = _EVUP
#logfile = ...
[lircmd]
@ -35,5 +36,8 @@ nodaemon = False
# code1 = /usr/bin/setfacl -m g:lirc:rw /dev/uinput
# code2 = ...
# [lircd-uinput]
# release-timeout = 200
# add-release-events = False
# release-timeout = 200
# release-suffix = _EVUP

View File

@ -17,8 +17,8 @@
################################################################################
PKG_NAME="lirc"
PKG_VERSION="0.9.4d"
PKG_SHA256="c68f18c35b489b865c0a741d119b136e8702191538cd3551b977a7af6c4e41ab"
PKG_VERSION="0.10.0"
PKG_SHA256="e57c2de8b1b91325d23f1c14fc553ec7912b0add7891e653d048300d38c3f553"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="http://www.lirc.org"
@ -31,10 +31,7 @@ PKG_LONGDESC="LIRC is a package that allows you to decode and send infra-red sig
PKG_IS_ADDON="no"
PKG_AUTORECONF="yes"
PKG_CONFIGURE_OPTS_TARGET="ac_cv_func_forkpty=no \
ac_cv_lib_util_forkpty=no \
ac_cv_prog_HAVE_PYTHON3=no \
--enable-devinput \
PKG_CONFIGURE_OPTS_TARGET="--enable-devinput \
--localstatedir=/ \
--with-gnu-ld \
--without-x"
@ -42,6 +39,7 @@ PKG_CONFIGURE_OPTS_TARGET="ac_cv_func_forkpty=no \
pre_configure_target() {
export HAVE_WORKING_POLL=yes
export HAVE_UINPUT=yes
export PYTHON=:
if [ -e ${SYSROOT_PREFIX}/usr/include/linux/input-event-codes.h ] ; then
export DEVINPUT_HEADER=${SYSROOT_PREFIX}/usr/include/linux/input-event-codes.h
else

View File

@ -1,135 +0,0 @@
From 110aca982ca1a7d43e88a4b0c3da27c7519de860 Mon Sep 17 00:00:00 2001
From: Alec Leamas <leamas.alec@gmail.com>
Date: Wed, 8 Feb 2017 04:49:32 +0100
Subject: [PATCH] build: Configure devinput (#264)
---
Makefile.am | 3 ++-
configure.ac | 40 +++++++++++++++++++++++++++++++++++++
doc/man-source/lirc-make-devinput.1 | 7 +++++--
lib/Makefile.am | 2 +-
4 files changed, 48 insertions(+), 4 deletions(-)
diff --git a/Makefile.am b/Makefile.am
index 868ad7f..c01b050 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -53,6 +53,7 @@ headerdir = $(includedir)/lirc
nobase_header_HEADERS = include/media/lirc.h
header_HEADERS = paths.h config.h drivers/irpipe/irpipe.h
+
install-data-hook:
$(SED) -i -e '/^plugindir/s|/usr/lib|$(libdir)|' \
$(DESTDIR)$(lirc_confdir)/lirc_options.conf
@@ -96,6 +97,6 @@ devinput.lircd.conf:
echo "# Rename to devinput.lircd.dist if not using devinput driver" > $@
echo "# Re-generate for current kernel using lirc-make-devinput" >> $@
echo '#' >> $@
- $(srcdir)/tools/lirc-make-devinput >> $@
+ $(srcdir)/tools/lirc-make-devinput $(DEVINPUT_HEADER) >> $@
.phony:
diff --git a/configure.ac b/configure.ac
index 5c83085..ddf93aa 100644
--- a/configure.ac
+++ b/configure.ac
@@ -300,6 +300,33 @@ if test "$have_alsa" = "yes"; then
else
AM_CONDITIONAL([BUILD_ALSA_SB_RC],[false])
fi
+AC_MSG_CHECKING(for devinput)
+AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+ #include <unistd.h>
+]],[[
+ int r = access("/dev/input", R_OK);
+ return r == 0 ? r : 1;
+]])],[
+ have_devinput="yes"
+ AC_MSG_RESULT(yes)
+],[
+ AC_MSG_RESULT(no)
+ have_devinput="no"
+],[
+ test -z "$DEVINPUT_HEADER" -a x$enable_devinput = x$yes && AC_MSG_ERROR([
+ Define DEVINPUT_HEADER when cross-compiling
+ ])
+ test -n "$DEVINPUT_HEADER" -a ! -e "$DEVINPUT_HEADER" && AC_MSG_ERROR([
+ Cannot access $DEVINPUT_HEADER, giving up
+ ])
+ if test -n "$DEVINPUT_HEADER" ; then
+ have_devinput="yes"
+ else
+ have_devinput="no"
+ fi
+ AC_MSG_RESULT(yes)
+])
+
dnl see https://daniel.haxx.se/blog/2016/10/11/poll-on-mac-10-12-is-broken/
AC_MSG_CHECKING(for working poll(2))
@@ -470,6 +497,18 @@ AC_ARG_ENABLE([python3_fix],
[enable_python3_fix="no"])
AM_CONDITIONAL(NEED_PYTHON3, [test "x$enable_python3_fix" = "xyes"])
+AC_ARG_ENABLE(devinput,
+ [ --enable-devinput Use /dev/input devices (default=guessed)],
+ [ enable_devinput="${enableval}" ],
+ [ enable_devinput="${have_devinput}"]
+)
+AM_CONDITIONAL([HAVE_DEVINPUT], [test x$enable_devinput = xyes])
+
+AC_ARG_VAR(DEVINPUT_HEADER,[
+ Override default value .../linux/input.h or linux/input-event-codes.h
+ e. g., when cross-compiling.
+])
+
AC_ARG_VAR(HAVE_WORKING_POLL,[
On cross-compile: Target has a working poll(2) implementation])
@@ -557,6 +596,7 @@ AC_REPORT_CONDITIONAL([NEED_PYTHON3])
AC_REPORT_CONDITIONAL([SYSTEMD_INSTALL])
AC_REPORT_CONDITIONAL([DEVEL])
AC_REPORT_CONDITIONAL([HAVE_UINPUT])
+AC_REPORT_CONDITIONAL([HAVE_DEVINPUT])
AC_REPORT_CONDITIONAL([DARWIN])
AC_REPORT_CONDITIONAL([LINUX_KERNEL])
diff --git a/doc/man-source/lirc-make-devinput.1 b/doc/man-source/lirc-make-devinput.1
index a952b30..7d0ee0c 100644
--- a/doc/man-source/lirc-make-devinput.1
+++ b/doc/man-source/lirc-make-devinput.1
@@ -1,4 +1,4 @@
-.TH LIRC_MAKE_DEVINPUT "1" "Last change: Oct 2015" "lirc-make-devinput @version@" "User Commands"
+.TH LIRC_MAKE_DEVINPUT "1" "Last change: Feb 2017" "lirc-make-devinput @version@" "User Commands"
.SH NAME
lirc-make-devinput - create a devinput.lircd.conf for the local site.
.SH SYNOPSIS
@@ -14,8 +14,11 @@ matches the local system (i. e., the local kernel). It normally requires
that the kernel-headers package is installed.
.SH FILES
.TP
-/usr/include/linux/input.h
+/usr/include/linux/input-event-codes.h
Default system header file
+.TP
+/usr/include/linux/input.h
+Alternative file used on older kernels.
.SH "SEE ALSO"
.P
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 48f539e..09ad559 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -108,7 +108,7 @@ if LINUX_KERNEL
lirc/input_map.inc:
ln -s . lirc || :
$(top_srcdir)/tools/lirc-make-devinput -i > input_map.inc
- $(top_srcdir)/tools/lirc-make-devinput -i > $@
+ $(top_srcdir)/tools/lirc-make-devinput -i $(DEVINPUT_HEADER) > $@
else
lirc/input_map.inc:
touch $@
--
2.9.3

View File

@ -1,119 +0,0 @@
From 6b35f7e0db3d1da5fce27c089d0ccfb18ee4c5fa Mon Sep 17 00:00:00 2001
From: Alec Leamas <leamas.alec@gmail.com>
Date: Sun, 12 Feb 2017 10:49:07 +0100
Subject: [PATCH] Use _EVUP instead of _UP as release suffic (#263).
---
daemons/lircd-uinput.cpp | 4 ++--
doc/man-source/lircd-uinput.8 | 11 +++++++----
doc/man-source/lircd.8 | 6 +++++-
lib/lirc_config.h | 2 +-
4 files changed, 15 insertions(+), 8 deletions(-)
diff --git a/daemons/lircd-uinput.cpp b/daemons/lircd-uinput.cpp
index ff3a727..110f1de 100644
--- a/daemons/lircd-uinput.cpp
+++ b/daemons/lircd-uinput.cpp
@@ -38,7 +38,7 @@ static const char* const HELP =
"\t socket: lircd output socket or test file [" LIRCD "]\n"
"\nOptions:\n"
"\t -u --uinput=uinput \t\tuinput device [/dev/uinput]\n"
- "\t -r --release-suffix=suffix \tRelease events suffix [_UP]\n"
+ "\t -r --release-suffix=suffix \tRelease events suffix [_EVUP]\n"
"\t -R --repeat=delay[,period]\tSet kernel repeat parameters [none]\n"
"\t -a --add-release-events\tAdd synthetic release events [no]\n"
"\t -d --disable=file\t\tDisable buttons listed in file\n"
@@ -157,7 +157,7 @@ static void add_defaults(void)
LOGFILE_OPT, "syslog",
UINPUT_OPT, "/dev/uinput",
REPEAT_OPT, (const char*) NULL,
- SUFFIX_OPT, suffix ? suffix : "_UP",
+ SUFFIX_OPT, suffix ? suffix : "_EVUP",
TIMEOUT_OPT, "200",
INPUT_ARG, socket ? socket : LIRCD,
DISABLED_OPT, (const char*)NULL,
diff --git a/doc/man-source/lircd-uinput.8 b/doc/man-source/lircd-uinput.8
index 0786a6f..3409d13 100644
--- a/doc/man-source/lircd-uinput.8
+++ b/doc/man-source/lircd-uinput.8
@@ -1,4 +1,4 @@
-.TH LIRCD-UINPUT "8" "Last change: Oct 2016" "lircd.uinput @version@" "System Managers Manual"
+.TH LIRCD-UINPUT "8" "Last change: Feb 2017" "lircd.uinput @version@" "System Managers Manual"
.\" Copyright (c) 2015, Alec Leamas
.\"
@@ -93,7 +93,7 @@ The setting should usually match the
.I --release
option.
Defaults to the lircd setting, falling back to
-.I _UP
+.I _EVUP
\&. See REPEAT HANDLING
.TP
\fB\-R\fR \fB\-\-repeat\fR <\fIdelay\fR[,\fIperiod\fR] | \fI,period\fR>
@@ -171,15 +171,18 @@ using the
.I --release
option.
Such events typically has an
-.I _UP
+.I _EVUP
suffix appended to the original keypress event.
As an alternative,
.B lircd-uinput
can create release events using the
-.I --add-relesea-events
+.I --add-release-events
option.
Combining both of these options might give unexpected results.
.P
+Note that the linux kernel uses the suffix _UP (which was used py
+lircd prior to 0.10.0) for other purposes since 4.7.
+.P
In any case, the repeat events generated by the kernel can be tweaked using
the
.I --repeat
diff --git a/doc/man-source/lircd.8 b/doc/man-source/lircd.8
index 1aa036f..f992e6f 100644
--- a/doc/man-source/lircd.8
+++ b/doc/man-source/lircd.8
@@ -141,7 +141,11 @@ under DRIVER LOADING. The argument is a :-separated search path.
\fB-r, --release\fR [\fIsuffix\fR]
Enables automatic generation of release events for each button press.
lircd will append the given suffix to the button name for each release
-event. If no suffix is given the default suffix is '_UP'.
+event. If no suffix is given the default suffix is '_EVUP'.
+.IP
+Note the suffix _UP, which was used by
+.B lircd
+prior to 0.10.0, is used by the linux kernel for other purposes since 4.7.
.TP
\fB-R, --repeat-max\fR <\fIlimit\fR>
Sets an upper limit to the number of repeats when sending a signal. The
diff --git a/lib/lirc_config.h b/lib/lirc_config.h
index d57da3d..903ce3a 100644
--- a/lib/lirc_config.h
+++ b/lib/lirc_config.h
@@ -74,7 +74,7 @@
#define PIDFILE VARRUNDIR "/" PACKAGE "/" PID_LIRCD
/** Suffix added to release events. */
-#define LIRC_RELEASE_SUFFIX "_UP"
+#define LIRC_RELEASE_SUFFIX "_EVUP"
/** Default directory for plugins/drivers. */
#define PLUGINDIR LIBDIR "/lirc/plugins"
diff a/lib/lirc/lirc_config.h b/lib/lirc/lirc_config.h
--- a/lib/lirc/lirc_config.h
+++ b/lib/lirc/lirc_config.h
@@ -74,7 +74,7 @@
#define PIDFILE VARRUNDIR "/" PACKAGE "/" PID_LIRCD
/** Suffix added to release events. */
-#define LIRC_RELEASE_SUFFIX "_UP"
+#define LIRC_RELEASE_SUFFIX "_EVUP"
/** Default directory for plugins/drivers. */
#define PLUGINDIR LIBDIR "/lirc/plugins"
--
2.1.4

View File

@ -1,32 +0,0 @@
From e2fcade8acd9280873bea676cbcf2f5e43a70e2a Mon Sep 17 00:00:00 2001
From: Matthias Reichl <hiassoft@users.sf.net>
Date: Wed, 5 Apr 2017 13:40:27 +0200
Subject: [PATCH] lib: Fix bad driver initialization (#279).
---
lib/drv_admin.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/lib/drv_admin.c b/lib/drv_admin.c
index 66046ad..1c35560 100644
--- a/lib/drv_admin.c
+++ b/lib/drv_admin.c
@@ -259,6 +259,7 @@ int hw_choose_driver(const char* name)
if (name == NULL) {
memcpy(&drv, &drv_null, sizeof(struct driver));
+ drv.fd = -1;
return 0;
}
if (strcasecmp(name, "dev/input") == 0)
@@ -267,6 +268,7 @@ int hw_choose_driver(const char* name)
found = for_each_driver(match_hw_name, (void*)name, NULL);
if (found != (struct driver*)NULL) {
memcpy(&drv, found, sizeof(struct driver));
+ drv.fd = -1;
return 0;
}
return -1;
--
2.1.4

View File

@ -1,50 +0,0 @@
From ce4a46f6e7021e54f3679bfc8ea02c6f213f6d96 Mon Sep 17 00:00:00 2001
From: Matthias Reichl <hias@horus.com>
Date: Fri, 7 Apr 2017 13:47:34 +0200
Subject: [PATCH] backport Handle systemd new pkg-config filename (#274)
---
configure.ac | 2 ++
daemons/lircd.cpp | 2 ++
2 files changed, 4 insertions(+)
diff --git a/configure.ac b/configure.ac
index 5c83085..865784d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -408,6 +408,7 @@ AC_CHECK_HEADERS(linux/i2c-dev.h,[
PKG_CHECK_MODULES([SYSTEMD],[libsystemd-daemon],,[true])
+test -n "$SYSTEMD_LIBS" || PKG_CHECK_MODULES([SYSTEMD],[libsystemd],,[true])
if test -n "$SYSTEMD_LIBS"; then
CFLAGS="$CFLAGS $SYSTEMD_CFLAGS"
AC_DEFINE(HAVE_SYSTEMD)
@@ -559,6 +560,7 @@ AC_REPORT_CONDITIONAL([DEVEL])
AC_REPORT_CONDITIONAL([HAVE_UINPUT])
AC_REPORT_CONDITIONAL([DARWIN])
AC_REPORT_CONDITIONAL([LINUX_KERNEL])
+AC_REPORT_CONDITIONAL([HAVE_SYSTEMD])
echo
diff --git a/daemons/lircd.cpp b/daemons/lircd.cpp
index fd1eab5..0dffc4a 100644
--- a/daemons/lircd.cpp
+++ b/daemons/lircd.cpp
@@ -1035,10 +1035,12 @@ void start_server(mode_t permission, int nodaemon, loglevel_t loglevel)
fprintf(stderr, "Too many file descriptors received.\n");
goto start_server_failed0;
} else if (n == 1) {
+ log_notice("Using systemd fd");
sockfd = SD_LISTEN_FDS_START + 0;
}
#endif
if (sockfd == -1) {
+ log_debug("No systemd fd found");
sockfd = socket(AF_UNIX, SOCK_STREAM, 0);
if (sockfd == -1) {
perror("Could not create socket");
--
2.1.4

View File

@ -0,0 +1,52 @@
diff --git a/Makefile.am b/Makefile.am
index ba7150c..609b050 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -39,7 +39,7 @@ if WITH_SYSTEMDSYSTEMUNITDIR
SYSTEMD_DIR = systemd
endif
-SUBDIRS = lib daemons tools plugins configs doc $(SYSTEMD_DIR)
+SUBDIRS = lib daemons tools plugins $(SYSTEMD_DIR)
if INSTALL_ETC
@@ -60,6 +60,7 @@ endif
dist_doc_DATA = VERSION
+if HAVE_PYTHON
nodist_pkgdata_DATA = $(PYTHON_TARBALL)
pkgconfigdir = $(libdir)/pkgconfig
@@ -133,6 +134,8 @@ all-local:
$(if $(VERBOSE),,-q) build
endif
+endif
+
install-data-hook:
$(SED) -i -e '/^plugindir/s|/usr/lib|$(libdir)|' \
$(DESTDIR)$(lirc_confdir)/lirc_options.conf
diff --git a/configure.ac b/configure.ac
index 4268e31..b43904c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -43,7 +43,8 @@ AC_CHECK_PROG([DOXYGEN],[doxygen],[yes],[no])
AM_CONDITIONAL(HAVE_DOXYGEN, test x$DOXYGEN = xyes)
LT_INIT([disable-static])
-AM_PATH_PYTHON([3.1],,)
+AM_PATH_PYTHON([3.1],,[:])
+AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
PKG_CHECK_MODULES([PYTHON],[python-${PYTHON_VERSION}m],,[true])
test -z "$PYTHON_LIBS" && \
PKG_CHECK_MODULES([PYTHON], [python-$PYTHON_VERSION],,[true])
@@ -577,6 +578,7 @@ AX_REPORT_CONDITIONAL([DEVEL])
AX_REPORT_CONDITIONAL([LINUX_KERNEL])
AX_REPORT_CONDITIONAL([HAVE_DEVINPUT])
AX_REPORT_CONDITIONAL([WITH_SYSTEMDSYSTEMUNITDIR])
+AX_REPORT_CONDITIONAL([HAVE_PYTHON])
AX_REPORT_CONDITIONAL([HAVE_PYTHON35])
echo

View File

@ -1,43 +0,0 @@
diff -Naur a/configure.ac b/configure.ac
--- a/configure.ac 2016-06-08 13:06:09.757102470 -0700
+++ b/configure.ac 2016-06-08 13:07:04.620705345 -0700
@@ -40,9 +40,9 @@
AM_CONDITIONAL(HAVE_DOXYGEN, test x$DOXYGEN = xyes)
AC_PROG_LN_S
LT_INIT([disable-static])
-AM_PATH_PYTHON([3.1],,)
-AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != ""])
-AC_CHECK_PROG([HAVE_PYTHON3],[python3],[yes],[no])
+AM_PATH_PYTHON([3.1],,[:])
+AM_CONDITIONAL([HAVE_PYTHON], [false])
+AC_CHECK_PROG([HAVE_PYTHON3],[python3],[no],[no])
LIBUSB_CONFIG="pkg-config libusb"
dnl Checks for header files.
diff -Naur a/tools/Makefile.am b/tools/Makefile.am
--- a/tools/Makefile.am 2016-05-23 10:18:48.000000000 -0700
+++ b/tools/Makefile.am 2016-06-08 13:15:25.711341537 -0700
@@ -114,22 +114,7 @@
install-exec-hook:
$(SED) -i -e 's/@version@/$(VERSION)/' \
- $(DESTDIR)$(bindir)/lirc-config-tool \
- $(DESTDIR)$(bindir)/irdb-get
- rm -f $(DESTDIR)/$(bindir)/lirc-setup
- $(srcdir)/make_rel_symlink.py \
- $(DESTDIR)/$(pkgpythondir)/lirc-setup \
- $(DESTDIR)/$(bindir)/lirc-setup
-
-install-data-hook:
- rm -f $(DESTDIR)/$(pkgpythondir)/configs
- $(srcdir)/make_rel_symlink.py \
- $(DESTDIR)$(pkgdatadir)/configs \
- $(DESTDIR)$(pkgpythondir)/configs
-
-uninstall-hook:
- rm -f $(DESTDIR)/$(bindir)/lirc-setup \
- $(DESTDIR)/$(pkgpythondir)/configs
+ $(DESTDIR)$(bindir)/lirc-config-tool
clean-local:
-find . -name __pycache__ -exec rm -r {} \;

View File

@ -1,13 +0,0 @@
diff --git a/Makefile.am b/Makefile.am
index 868ad7f..45d64e0 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -25,7 +25,7 @@ if WITH_SYSTEMDSYSTEMUNITDIR
SYSTEMD_DIR = systemd
endif
-SUBDIRS = lib daemons tools plugins configs doc $(SYSTEMD_DIR)
+SUBDIRS = lib daemons tools plugins configs $(SYSTEMD_DIR)
if INSTALL_ETC

View File

@ -6,7 +6,7 @@ After=lircd.service
[Service]
Type=simple
ExecStart=/usr/lib/libreelec/lircd_uinput_helper
ExecStart=/usr/lib/libreelec/lircd_uinput_helper --add-release-events
[Install]
WantedBy=multi-user.target

View File

@ -6,7 +6,7 @@ After=network.target
[Service]
Type=simple
ExecStart=/usr/lib/libreelec/lircd_helper --nodaemon --release
ExecStart=/usr/lib/libreelec/lircd_helper --nodaemon
[Install]
WantedBy=multi-user.target