summaryrefslogtreecommitdiff
path: root/libre/lirc
diff options
context:
space:
mode:
authorAndré Fabian Silva Delgado <emulatorman@parabola.nu>2014-09-01 07:52:09 -0300
committerAndré Fabian Silva Delgado <emulatorman@parabola.nu>2014-09-01 07:59:21 -0300
commit3f2a8eca7c7bdcd7bcdc9b67e00f02cdef9002bf (patch)
tree8a2143d69f3b7f572060b0331fa10cd77e7b67b2 /libre/lirc
parentd5730eabb036bfa84f5831fa592d49222cd6ad5e (diff)
remove parabola suffix and add complex pkgrel on kernel module packages
Diffstat (limited to 'libre/lirc')
-rw-r--r--libre/lirc/PKGBUILD163
-rw-r--r--libre/lirc/irexec.service11
-rw-r--r--libre/lirc/kmod.install14
-rw-r--r--libre/lirc/lirc-0.9.1a-fix-segfaults.patch79
-rw-r--r--libre/lirc/lirc-utils.install13
-rw-r--r--libre/lirc/lirc.logrotate5
-rw-r--r--libre/lirc/lirc.tmpfiles1
-rw-r--r--libre/lirc/wpc8769l-build-fix.patch90
8 files changed, 376 insertions, 0 deletions
diff --git a/libre/lirc/PKGBUILD b/libre/lirc/PKGBUILD
new file mode 100644
index 000000000..ff9c204df
--- /dev/null
+++ b/libre/lirc/PKGBUILD
@@ -0,0 +1,163 @@
+# $Id: PKGBUILD 220120 2014-08-16 22:32:11Z lfleischer $
+# Maintainer (Arch): Paul Mattal <paul@archlinux.org>
+# Maintainer: André Silva <emulatorman@parabola.nu>
+# Contributor: Luke Shumaker <lukeshu@sbcglobal.net>
+# Contributor: Márcio Silva <coadde@parabola.nu>
+
+_kernelname=
+_basekernel=3.16
+_archrel=3
+_parabolarel=1
+
+if [[ ${_kernelname} == "" ]]; then
+ _basekernel=${_basekernel}
+ _archrel=${_archrel}
+ _parabolarel=${_parabolarel}
+elif [[ ${_kernelname} == -lts ]]; then
+ _basekernel=3.14
+ _archrel=${_archrel}
+ _parabolarel=${_parabolarel}
+elif [[ ${_kernelname} == -grsec ]]; then
+ _basekernel=3.15
+ _archrel=${_archrel}
+ _parabolarel=${_parabolarel}
+elif [[ ${_kernelname} == -lts-grsec ]]; then
+ _basekernel=3.14
+ _archrel=${_archrel}
+ _parabolarel=${_parabolarel}
+elif [[ ${_kernelname} == -lts-knock ]]; then
+ _basekernel=3.10
+ _archrel=${_archrel}
+ _parabolarel=${_parabolarel}
+elif [[ ${_kernelname} == -rt ]]; then
+ _basekernel=3.14
+ _archrel=${_archrel}
+ _parabolarel=${_parabolarel}
+elif [[ ${_kernelname} == -pae ]]; then
+ _basekernel=${_basekernel}
+ _archrel=${_archrel}
+ _parabolarel=${_parabolarel}
+elif [[ ${_kernelname} == -xen ]]; then
+ _basekernel=${_basekernel}
+ _archrel=${_archrel}
+ _parabolarel=${_parabolarel}
+fi
+
+pkgbase=lirc
+_pkgname=${pkgbase}${_kernelname}
+if [[ -z ${_kernelname} ]]; then
+ pkgname=("$_pkgname" "${pkgbase}-utils")
+else
+ pkgname=("$_pkgname")
+fi
+_pkgver=0.9.1a
+[[ $_pkgver =~ [a-z]$ ]] && pkgver="${_pkgver:0:-1}.${_pkgver: -1}" || pkgver="$_pkgver"
+pkgrel=${_archrel}.parabola${_parabolarel}.basekernel${_basekernel}
+epoch=1
+_extramodules=extramodules-${_basekernel}${_kernelname}
+arch=('i686' 'x86_64' 'mips64el')
+url="http://www.$pkgbase.org/"
+license=('GPL')
+# NOTICE: Don't forget to bump version in depends in package_lirc()!
+makedepends=('help2man' 'alsa-lib' 'libx11' 'libftdi-compat' 'libirman' 'python2')
+
+# Generic (you shouldn't have to modify any of these variables)
+_toohigh=$(IFS=. read a b <<<$_basekernel; echo $a.$((b+1)))
+makedepends+=("linux-libre${_kernelname}>=${_basekernel}" "linux-libre${_kernelname}<${_toohigh}"
+ "linux-libre${_kernelname}-headers>=${_basekernel}" "linux-libre${_kernelname}-headers<${_toohigh}")
+
+options=('!makeflags' '!strip')
+source=("http://prdownloads.sourceforge.net/${pkgbase}/${pkgbase}-${_pkgver}.tar.bz2"
+ wpc8769l-build-fix.patch
+ ${pkgbase}-0.9.1a-fix-segfaults.patch
+ ${pkgbase}.logrotate
+ irexec.service
+ ${pkgbase}.tmpfiles)
+md5sums=('1f1fac162ed309dd50f307e96a292957'
+ '9ec33169b3407f74264062d7679dd269'
+ 'cd00acf480e82a0bf050032732d0d733'
+ '3deb02604b37811d41816e9b4385fcc3'
+ '32df3b9bc859565d6acf5f0e5b747083'
+ 'febf25c154a7d36f01159e84f26c2d9a')
+
+prepare() {
+ cd "${srcdir}/lirc-${_pkgver}"
+
+ patch -Np1 -i "${srcdir}/wpc8769l-build-fix.patch"
+ patch -Np1 -i "${srcdir}/${pkgbase}-0.9.1a-fix-segfaults.patch"
+
+ sed -i '/AC_PATH_XTRA/d' configure.ac
+ sed -e 's/@X_CFLAGS@//g' \
+ -e 's/@X_LIBS@//g' \
+ -e 's/@X_PRE_LIBS@//g' \
+ -e 's/@X_EXTRA_LIBS@//g' -i Makefile.am tools/Makefile.am
+
+ libtoolize
+ autoreconf
+}
+
+build() {
+ cd "${srcdir}/${pkgbase}-${_pkgver}"
+ _kernver="$(cat /usr/lib/modules/${_extramodules}/version)"
+
+ PYTHON=python2 ./configure --enable-sandboxed --prefix=/usr \
+ --with-driver=all --with-kerneldir="/usr/lib/modules/${_kernver}/build/" \
+ --with-moduledir="/usr/lib/modules/${_kernver}/kernel/drivers/misc" \
+ --sbindir=/usr/bin --with-transmitter
+
+ # Remove drivers already in kernel
+ sed -e "s:lirc_dev::" -e "s:lirc_bt829::" -e "s:lirc_igorplugusb::" \
+ -e "s:lirc_imon::" -e "s:lirc_parallel::" -e "s:lirc_sasem::" \
+ -e "s:lirc_serial::" -e "s:lirc_sir::" -e "s:lirc_ttusbir::" \
+ -e "s:lirc_atiusb::" -e "s:lirc_i2c::" \
+ -i Makefile drivers/Makefile drivers/*/Makefile tools/Makefile
+ make
+}
+
+package_lirc() {
+ pkgdesc="Linux Infrared Remote Control kernel modules (built for the linux-libre${_kernelname} kernel package)"
+ depends=("${pkgbase}-utils" "linux-libre${_kernelname}>=${_basekernel}" "linux-libre${_kernelname}<${_toohigh}")
+ replaces=("${_pkgname}-libre${_kernelname}" "${_pkgname}-parabola${_kernelname}")
+ [[ -n ${_kernelname} ]] && replaces+=("${_pkgname}${_kernelname}-parabola")
+ conflicts=("${_pkgname}-libre${_kernelname}" "${_pkgname}-parabola${_kernelname}")
+ [[ -n ${_kernelname} ]] && conflicts+=("${_pkgname}${_kernelname}-parabola")
+ replaces+=("${pkgbase}+pctv")
+ install=kmod.install
+
+ cd "${srcdir}/${pkgbase}-${_pkgver}/drivers"
+
+ make DESTDIR="${pkgdir}" moduledir="/usr/lib/modules/${_extramodules}" install
+ gzip -9 "${pkgdir}/usr/lib/modules/${_extramodules}"/*.ko
+
+ # Set the correct extramodules directory for install
+ cp -f "${startdir}/${install}" "${startdir}/${install}.pkg"
+ true && install=${install}.pkg
+ sed -i "s/^_EXTRAMODULES=$/_EXTRAMODULES="${_extramodules}"/" "${startdir}/${install}"
+}
+
+package_lirc-utils() {
+ pkgdesc="Linux Infrared Remote Control utilities"
+ depends=('alsa-lib' 'libx11' 'libftdi-compat' 'libirman')
+ optdepends=('python2: pronto2lirc utility')
+ options=('strip')
+ backup=("etc/${pkgbase}/${pkgbase}_options.conf" "etc/${pkgbase}/${pkgbase}d.conf" "etc/${pkgbase}/${pkgbase}md.conf")
+ replaces=("${pkgbase}-libre-utils" "${pkgbase}-utils-parabola")
+ conflicts=("${pkgbase}-libre-utils" "${pkgbase}-utils-parabola")
+ install=${pkgbase}-utils.install
+
+ cd "${srcdir}/${pkgbase}-${_pkgver}"
+
+ make DESTDIR="${pkgdir}" install
+
+ install -Dm644 "${srcdir}"/irexec.service "${pkgdir}"/usr/lib/systemd/system/irexec.service
+ install -Dm644 "${srcdir}"/${pkgbase}.tmpfiles "${pkgdir}"/usr/lib/tmpfiles.d/${pkgbase}.conf
+
+ cp -rp remotes "${pkgdir}/usr/share/${pkgbase}"
+ chmod -R go-w "${pkgdir}/usr/share/${pkgbase}/"
+
+ # install the logrotate config
+ install -Dm644 "${srcdir}/${pkgbase}.logrotate" "${pkgdir}/etc/logrotate.d/${pkgbase}"
+
+ # remove built modules
+ rm -r "${pkgdir}/usr/lib/modules"
+}
diff --git a/libre/lirc/irexec.service b/libre/lirc/irexec.service
new file mode 100644
index 000000000..dffbbf5e0
--- /dev/null
+++ b/libre/lirc/irexec.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=LIRC command handler
+After=network.target
+
+[Service]
+Type=forking
+ExecStart=/usr/bin/irexec --daemon
+
+[Install]
+WantedBy=multi-user.target
+Wants=lircd.service
diff --git a/libre/lirc/kmod.install b/libre/lirc/kmod.install
new file mode 100644
index 000000000..40caa464f
--- /dev/null
+++ b/libre/lirc/kmod.install
@@ -0,0 +1,14 @@
+_EXTRAMODULES=
+
+post_install() {
+ echo ">>> Updating module dependencies. Please wait ..."
+ depmod "$(cat /usr/lib/modules/$_EXTRAMODULES/version)" >/dev/null 2>&1
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/libre/lirc/lirc-0.9.1a-fix-segfaults.patch b/libre/lirc/lirc-0.9.1a-fix-segfaults.patch
new file mode 100644
index 000000000..a1f657551
--- /dev/null
+++ b/libre/lirc/lirc-0.9.1a-fix-segfaults.patch
@@ -0,0 +1,79 @@
+From 8459a881fd53525a47ae2f9180fa3644be5df343 Mon Sep 17 00:00:00 2001
+From: Alec Leamas <leamas@nowhere.net>
+Date: Mon, 18 Aug 2014 10:00:49 +0200
+Subject: [PATCH 1/3] Fix segfault when starting lircd (AUR 41581)
+
+See https://bugs.archlinux.org/task/41581
+---
+ lirc_options.conf | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lirc_options.conf b/lirc_options.conf
+index d8ddedd..11293e2 100644
+--- a/lirc_options.conf
++++ b/lirc_options.conf
+@@ -7,7 +7,7 @@ nodaemon = False
+ permission = 666
+ driver = default
+ device = /dev/lirc0
+-output = /var/run/lirc/lircd
++lircdfile = /var/run/lirc/lircd
+ pidfile = /var/run/lirc/lircd.pid
+ plugindir = /usr/lib/lirc/plugins
+ allow-simulate = No
+--
+2.1.0
+
+
+From 4a9b45822890f50c5ed36660468e0a99cd4531e0 Mon Sep 17 00:00:00 2001
+From: Alec Leamas <leamas@nowhere.net>
+Date: Mon, 18 Aug 2014 10:05:44 +0200
+Subject: [PATCH 2/3] lircd: Fix bad default for lircdfile.
+
+---
+ daemons/lircd.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/daemons/lircd.c b/daemons/lircd.c
+index db8ea13..fa8cf17 100644
+--- a/daemons/lircd.c
++++ b/daemons/lircd.c
+@@ -2147,7 +2147,7 @@ static void lircd_add_defaults(void)
+ "lircd:device", LIRC_DRIVER_DEVICE,
+ "lircd:listen", NULL ,
+ "lircd:connect", NULL,
+- "lircd:output", LIRCD,
++ "lircd:lircdfile", LIRCD,
+ "lircd:pidfile", PIDFILE,
+ "lircd:logfile", LOGFILE,
+ "lircd:debug", "False",
+--
+2.1.0
+
+
+From 02252a9fe76c4a4fd809966971759c66af707f02 Mon Sep 17 00:00:00 2001
+From: Andreas Bader <andreasbader at badersystems.de>
+Date: Tue, 19 Aug 2014 16:58:21 +0200
+Subject: [PATCH 3/3] 0.9.1a: Bugfix: segfault when parsing --connect in config
+ file.
+
+---
+ daemons/lircd.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/daemons/lircd.c b/daemons/lircd.c
+index fa8cf17..7af4265 100644
+--- a/daemons/lircd.c
++++ b/daemons/lircd.c
+@@ -2311,7 +2311,7 @@ int main(int argc, char **argv)
+ }
+ opt = options_getstring("lircd:connect");
+ if (opt != NULL) {
+- if (!add_peer_connection(optarg))
++ if (!add_peer_connection(opt))
+ return(EXIT_FAILURE);
+ }
+ # ifdef DEBUG
+--
+2.1.0
+
diff --git a/libre/lirc/lirc-utils.install b/libre/lirc/lirc-utils.install
new file mode 100644
index 000000000..f7faa07eb
--- /dev/null
+++ b/libre/lirc/lirc-utils.install
@@ -0,0 +1,13 @@
+post_install() {
+ systemd-tmpfiles --create lirc.conf
+}
+
+post_upgrade() {
+ post_install
+
+ if [[ "$(vercmp $2 1:0.9.1-1)" -lt 0 ]]; then
+ echo ':: lirc.service and lircm.service have been replaced'
+ echo ' by the upstream unit files lircd.service and'
+ echo ' lircmd.service.'
+ fi
+}
diff --git a/libre/lirc/lirc.logrotate b/libre/lirc/lirc.logrotate
new file mode 100644
index 000000000..623c4f328
--- /dev/null
+++ b/libre/lirc/lirc.logrotate
@@ -0,0 +1,5 @@
+/var/log/lircd {
+ missingok
+ notifempty
+ delaycompress
+}
diff --git a/libre/lirc/lirc.tmpfiles b/libre/lirc/lirc.tmpfiles
new file mode 100644
index 000000000..0b80e2e47
--- /dev/null
+++ b/libre/lirc/lirc.tmpfiles
@@ -0,0 +1 @@
+d /run/lirc 0755 root root -
diff --git a/libre/lirc/wpc8769l-build-fix.patch b/libre/lirc/wpc8769l-build-fix.patch
new file mode 100644
index 000000000..5e25693ab
--- /dev/null
+++ b/libre/lirc/wpc8769l-build-fix.patch
@@ -0,0 +1,90 @@
+diff --git a/drivers/lirc_wpc8769l/lirc_wpc8769l.c b/drivers/lirc_wpc8769l/lirc_wpc8769l.c
+index 790efa2..4248fe9 100644
+--- a/drivers/lirc_wpc8769l/lirc_wpc8769l.c
++++ b/drivers/lirc_wpc8769l/lirc_wpc8769l.c
+@@ -51,17 +51,13 @@
+ #include <linux/irq.h>
+
+ #include <linux/acpi.h>
++#include <linux/types.h>
+
+ #include <linux/platform_device.h>
++#include <asm-generic/bitops/find.h>
+
+-#include "drivers/kcompat.h"
+-#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 35)
+-#include <media/lirc.h>
+-#include <media/lirc_dev.h>
+-#else
+-#include "drivers/lirc.h"
+-#include "drivers/lirc_dev/lirc_dev.h"
+-#endif
++#include "media/lirc_dev.h"
++#include "media/lirc.h"
+
+ #include "lirc_wpc8769l.h"
+
+@@ -105,11 +101,11 @@ static unsigned int baseport2;
+ static unsigned int irq;
+
+ /* Debugging flag. */
+-static int debug;
++static bool debug;
+
+ /* If true, we skip ACPI autodetection and use the parameter-supplied I/O and
+ * IRQ. */
+-static int skip_probe;
++static bool skip_probe;
+
+ /* Whether the device is open or not. */
+ static int lirc_wpc8769l_is_open;
+@@ -360,14 +356,14 @@ static irqreturn_t irq_handler(int irqno, void *blah, struct pt_regs *regs)
+ size = count << 3;
+
+ ldata = (unsigned long *) data_buf;
+- next_one = generic_find_next_le_bit(ldata, size, 0);
++ next_one = find_next_bit(ldata, size, 0);
+
+ if (next_one > 0)
+ put_pulse_bit(next_one
+ * WPC8769L_USECS_PER_BIT);
+
+ while (next_one < size) {
+- next_zero = generic_find_next_zero_le_bit(ldata,
++ next_zero = find_next_zero_bit(ldata,
+ size, next_one + 1);
+
+ put_space_bit(
+@@ -375,7 +371,7 @@ static irqreturn_t irq_handler(int irqno, void *blah, struct pt_regs *regs)
+ * WPC8769L_USECS_PER_BIT);
+
+ if (next_zero < size) {
+- next_one = generic_find_next_le_bit(ldata,
++ next_one = find_next_bit(ldata,
+ size, next_zero + 1);
+
+ put_pulse_bit(
+@@ -922,12 +918,12 @@ static int wpc8769l_acpi_detect(void)
+ #ifdef MODULE
+ static struct platform_device *lirc_wpc8769l_platform_dev;
+
+-static int __devinit lirc_wpc8769l_probe(struct platform_device *dev)
++static int lirc_wpc8769l_probe(struct platform_device *dev)
+ {
+ return 0;
+ }
+
+-static int __devexit lirc_wpc8769l_remove(struct platform_device *dev)
++static int lirc_wpc8769l_remove(struct platform_device *dev)
+ {
+ return 0;
+ }
+@@ -955,7 +951,7 @@ static int lirc_wpc8769l_resume(struct platform_device *dev)
+
+ static struct platform_driver lirc_wpc8769l_platform_driver = {
+ .probe = lirc_wpc8769l_probe,
+- .remove = __devexit_p(lirc_wpc8769l_remove),
++ .remove = lirc_wpc8769l_remove,
+ .suspend = lirc_wpc8769l_suspend,
+ .resume = lirc_wpc8769l_resume,
+ .driver = {