From efd95ce5b48d0214af3a6da3960413ac476a2d1a Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Fri, 2 Jan 2015 23:07:19 +0000
Subject: lirc: update to 0.9.1a; build for kernel 3.18.1

---
 abs/core/lirc/PKGBUILD                        | 92 +++++++++++----------------
 abs/core/lirc/__changelog                     |  1 -
 abs/core/lirc/irexec.service                  |  8 +--
 abs/core/lirc/kernel-2.6.39.patch             | 54 ----------------
 abs/core/lirc/linux-3.8.patch                 | 80 -----------------------
 abs/core/lirc/lirc-0.9.1a-fix-segfaults.patch | 79 +++++++++++++++++++++++
 abs/core/lirc/lirc-utils.install              |  8 ++-
 abs/core/lirc/lirc.install                    | 12 ++--
 abs/core/lirc/lirc.service                    | 12 ----
 abs/core/lirc/lirc_atiusb-kfifo.patch         | 31 ---------
 abs/core/lirc/lirc_wpc8769l.patch             | 88 -------------------------
 abs/core/lirc/lircd-handle-large-config.patch | 39 ------------
 abs/core/lirc/lircm.service                   | 12 ----
 abs/core/lirc/wpc8769l-build-fix.patch        | 90 ++++++++++++++++++++++++++
 14 files changed, 221 insertions(+), 385 deletions(-)
 delete mode 100644 abs/core/lirc/kernel-2.6.39.patch
 delete mode 100644 abs/core/lirc/linux-3.8.patch
 create mode 100644 abs/core/lirc/lirc-0.9.1a-fix-segfaults.patch
 delete mode 100644 abs/core/lirc/lirc.service
 delete mode 100644 abs/core/lirc/lirc_atiusb-kfifo.patch
 delete mode 100644 abs/core/lirc/lirc_wpc8769l.patch
 delete mode 100644 abs/core/lirc/lircd-handle-large-config.patch
 delete mode 100644 abs/core/lirc/lircm.service
 create mode 100644 abs/core/lirc/wpc8769l-build-fix.patch

diff --git a/abs/core/lirc/PKGBUILD b/abs/core/lirc/PKGBUILD
index e77de3a..c79cf09 100644
--- a/abs/core/lirc/PKGBUILD
+++ b/abs/core/lirc/PKGBUILD
@@ -3,41 +3,35 @@
 
 pkgbase=lirc
 pkgname=('lirc' 'lirc-utils')
-pkgver=0.9.0
-pkgrel=74
-#epoch=1
-_extramodules=extramodules-3.13-ARCH
+_pkgver=0.9.1a
+[[ $_pkgver =~ [a-z]$ ]] && pkgver="${_pkgver:0:-1}.${_pkgver: -1}" || pkgver="$_pkgver"
+pkgrel=11
+epoch=1
+_extramodules=extramodules-3.18-ARCH
 arch=('i686' 'x86_64')
 url="http://www.lirc.org/"
 license=('GPL')
-### NOTICE don't forget to bump version in depends in package_lirc
-makedepends=('help2man' 'linux>=3.13' 'linux<3.14' 'linux-headers>=3.13' 'linux-headers<3.14' 'alsa-lib' 'libx11' 'libftdi-compat' 'libirman' 'python2' 'iguanair')
+# NOTICE: Don't forget to bump version in depends in package_lirc()!
+makedepends=('help2man' 'linux>=3.18' 'linux<3.19' 'linux-headers>=3.18' 'linux-headers<3.19' 'alsa-lib' 'libx11' 'libftdi-compat' 'libirman' 'python2' 'iguanair')
 options=('!makeflags' '!strip')
-source=(http://prdownloads.sourceforge.net/${pkgbase}/${pkgbase}-${pkgver}.tar.bz2
-        lirc_wpc8769l.patch
-        lircd-handle-large-config.patch
-        lirc_atiusb-kfifo.patch
-        kernel-2.6.39.patch
-        linux-3.8.patch
+source=("http://prdownloads.sourceforge.net/${pkgbase}/${pkgbase}-${_pkgver}.tar.bz2"
+        wpc8769l-build-fix.patch
+        lirc-0.9.1a-fix-segfaults.patch
         lirc.logrotate
-        lirc.service 
-        lircm.service 
         irexec.service
         lirc.tmpfiles)
+md5sums=('1f1fac162ed309dd50f307e96a292957'
+         '9ec33169b3407f74264062d7679dd269'
+         'cd00acf480e82a0bf050032732d0d733'
+         '3deb02604b37811d41816e9b4385fcc3'
+         '32df3b9bc859565d6acf5f0e5b747083'
+         'febf25c154a7d36f01159e84f26c2d9a')
 
 prepare() {
-  cd "${srcdir}/lirc-${pkgver}"
-  patch -Np1 -i "${srcdir}/lirc_wpc8769l.patch"
-  patch -Np1 -i "${srcdir}/lircd-handle-large-config.patch"
-  patch -Np1 -i "${srcdir}/lirc_atiusb-kfifo.patch"
-  patch -Np1 -i "${srcdir}/kernel-2.6.39.patch"
-  patch -Np1 -i "${srcdir}/linux-3.8.patch"
-
-  # use fixed instead of Courier w/xmode2, should be more prevalent on linux boxen
-  sed -i -e 's|char.*font1_name.*Courier.*$|char		font1_name[]="-misc-fixed-*-r-*-*-12-*-*-*-*-*-iso8859-1";|g' tools/xmode2.c
+  cd "${srcdir}/lirc-${_pkgver}"
 
-  # use /dev/lirc0 by default instead of /dev/lirc
-  sed -i -e 's|#define DEV_LIRC	"lirc"|#define DEV_LIRC	"lirc0"|' config.h.in
+  patch -Np1 -i "${srcdir}/wpc8769l-build-fix.patch"
+  patch -Np1 -i "${srcdir}/lirc-0.9.1a-fix-segfaults.patch"
 
   sed -i '/AC_PATH_XTRA/d' configure.ac
   sed -e 's/@X_CFLAGS@//g' \
@@ -45,78 +39,64 @@ prepare() {
       -e 's/@X_PRE_LIBS@//g' \
       -e 's/@X_EXTRA_LIBS@//g' -i Makefile.am tools/Makefile.am
 
-  # fix for new automake #33497
-  sed -i 's/AM_CONFIG_HEADER/AC_CONFIG_HEADER/' configure.ac
   libtoolize
   autoreconf
 }
 
 build() {
+  cd "${srcdir}/lirc-${_pkgver}"
   _kernver="$(cat /usr/lib/modules/${_extramodules}/version)"
-  cd "${srcdir}/lirc-${pkgver}"
 
   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 \
+      --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
-      #removed removing    lirc_atiusb which is needed for the firefly 
-      #-e "s:lirc_atiusb::" -e "s:lirc_i2c::" \
 }
 
 package_lirc() {
   pkgdesc="Linux Infrared Remote Control kernel modules for stock arch kernel"
-  depends=('lirc-utils' 'linux>=3.13' 'linux<3.14')
+  depends=('lirc-utils' 'linux>=3.18' 'linux<3.19' 'iguanair')
   replaces=('lirc+pctv')
   install=lirc.install
 
-  cd "${srcdir}/lirc-${pkgver}/drivers"
+  cd "${srcdir}/lirc-${_pkgver}/drivers"
+
   make DESTDIR="${pkgdir}" moduledir="/usr/lib/modules/${_extramodules}" install
+  gzip -9 "${pkgdir}/usr/lib/modules/${_extramodules}"/*.ko
 
   # set the kernel we've built for inside the install script
-  sed -i -e "s/EXTRAMODULES=.*/EXTRAMODULES=${_extramodules}/g" "${startdir}/lirc.install"
-  # gzip -9 modules
-  find "${pkgdir}" -name '*.ko' -exec gzip -9 {} \;
+  sed -i "s/^EXTRAMODULES=.*$/EXTRAMODULES=${_extramodules}/" "${startdir}/lirc.install"
 }
 
 package_lirc-utils() {
   pkgdesc="Linux Infrared Remote Control utils"
-  depends=('alsa-lib' 'libx11' 'libftdi-compat' 'libirman' 'iguanair')
+  depends=('alsa-lib' 'libx11' 'libftdi-compat' 'libirman')
   optdepends=('python2: pronto2lirc utility')
   options=('strip')
+  backup=('etc/lirc/lirc_options.conf' 'etc/lirc/lircd.conf' 'etc/lirc/lircmd.conf')
   install=lirc-utils.install
 
-  cd "${srcdir}/lirc-${pkgver}"
+  cd "${srcdir}/lirc-${_pkgver}"
+
   make DESTDIR="${pkgdir}" install
-  install -D -m644 "${srcdir}"/lirc.service "${pkgdir}"/usr/lib/systemd/system/lirc.service
-  install -D -m644 "${srcdir}"/lircm.service "${pkgdir}"/usr/lib/systemd/system/lircm.service
-  install -D -m644 "${srcdir}"/irexec.service "${pkgdir}"/usr/lib/systemd/system/irexec.service
-  install -D -m644 "${srcdir}"/lirc.tmpfiles "${pkgdir}"/usr/lib/tmpfiles.d/lirc.conf
+
+  install -Dm644 "${srcdir}"/irexec.service "${pkgdir}"/usr/lib/systemd/system/irexec.service
+  install -Dm644 "${srcdir}"/lirc.tmpfiles "${pkgdir}"/usr/lib/tmpfiles.d/lirc.conf
+
   cp -rp remotes "${pkgdir}/usr/share/lirc"
   chmod -R go-w "${pkgdir}/usr/share/lirc/"
 
   # install the logrotate config
   install -Dm644 "${srcdir}/lirc.logrotate" "${pkgdir}/etc/logrotate.d/lirc"
     
-  install -d "${pkgdir}/etc/lirc"
-  
   # remove built modules
   rm -r "${pkgdir}/usr/lib/modules"
 }
-md5sums=('b232aef26f23fe33ea8305d276637086'
-         '1cce37e18e3f6f46044abab29016d18f'
-         'b70cc9640505205446ec47b7d4779f38'
-         '1f8b104a2365d9f93404b143f499059b'
-         '087a7d102e1c96bf1179f38db2b0b237'
-         '9ee196bd03ea44af5a752fb0cc6ca96a'
-         '3deb02604b37811d41816e9b4385fcc3'
-         'a9ab637e7207472e61e55a2fa75dc555'
-         '1847b9997685bc3ad2cf11bea4590a92'
-         '07131d117fcfe9dcd50c453c3a5e9531'
-         'febf25c154a7d36f01159e84f26c2d9a')
diff --git a/abs/core/lirc/__changelog b/abs/core/lirc/__changelog
index c0068c0..19c9302 100644
--- a/abs/core/lirc/__changelog
+++ b/abs/core/lirc/__changelog
@@ -1,2 +1 @@
 added 'iguanair' to make depends and package depends
-change configure kerneldir for 3.13 moving src to --with-kerneldir=/usr/lib/modules/${_kernver}/build
diff --git a/abs/core/lirc/irexec.service b/abs/core/lirc/irexec.service
index 5d7915b..dffbbf5 100644
--- a/abs/core/lirc/irexec.service
+++ b/abs/core/lirc/irexec.service
@@ -1,11 +1,11 @@
 [Unit]
-Description=IR Exec
-After=lirc.service
-Wants=lirc.service
+Description=LIRC command handler
+After=network.target
 
 [Service]
-ExecStart=/usr/bin/irexec --daemon
 Type=forking
+ExecStart=/usr/bin/irexec --daemon
 
 [Install]
 WantedBy=multi-user.target
+Wants=lircd.service
diff --git a/abs/core/lirc/kernel-2.6.39.patch b/abs/core/lirc/kernel-2.6.39.patch
deleted file mode 100644
index 7353d61..0000000
--- a/abs/core/lirc/kernel-2.6.39.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-diff -ru lirc-0.9.0/drivers//lirc_atiusb/lirc_atiusb.c lirc-0.9.0.new/drivers//lirc_atiusb/lirc_atiusb.c
---- lirc-0.9.0/drivers//lirc_atiusb/lirc_atiusb.c	2011-03-25 23:28:18.000000000 +0100
-+++ lirc-0.9.0.new/drivers//lirc_atiusb/lirc_atiusb.c	2011-06-07 17:02:20.356580306 +0200
-@@ -48,7 +48,6 @@
- #include <linux/slab.h>
- #include <linux/module.h>
- #include <linux/kmod.h>
--#include <linux/smp_lock.h>
- #include <linux/completion.h>
- #include <linux/uaccess.h>
- #include <linux/usb.h>
-diff -ru lirc-0.9.0/drivers//lirc_i2c/lirc_i2c.c lirc-0.9.0.new/drivers//lirc_i2c/lirc_i2c.c
---- lirc-0.9.0/drivers//lirc_i2c/lirc_i2c.c	2011-03-25 23:28:18.000000000 +0100
-+++ lirc-0.9.0.new/drivers//lirc_i2c/lirc_i2c.c	2011-06-07 17:04:19.725933627 +0200
-@@ -555,8 +555,8 @@
- 		kfree(ir);
- 		return -EINVAL;
- 	}
--	printk(KERN_INFO "lirc_i2c: chip 0x%x found @ 0x%02x (%s)\n",
--	       adap->id, addr, ir->c.name);
-+	printk(KERN_INFO "lirc_i2c: chip found @ 0x%02x (%s)\n",
-+	       addr, ir->c.name);
- 
- #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 31)
- 	/* register device */
-diff -ru lirc-0.9.0/drivers//lirc_wpc8769l/lirc_wpc8769l.c lirc-0.9.0.new/drivers//lirc_wpc8769l/lirc_wpc8769l.c
---- lirc-0.9.0/drivers//lirc_wpc8769l/lirc_wpc8769l.c	2011-03-25 23:28:18.000000000 +0100
-+++ lirc-0.9.0.new/drivers//lirc_wpc8769l/lirc_wpc8769l.c	2011-06-07 17:07:23.984935411 +0200
-@@ -361,14 +361,14 @@
- 		size = count << 3;
- 
- 		ldata = (unsigned long *) data_buf;
--		next_one = generic_find_next_le_bit(ldata, size, 0);
-+		next_one = find_next_zero_bit_le(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_le(ldata,
- 				size, next_one + 1);
- 
- 			put_space_bit(
-@@ -376,7 +376,7 @@
- 				* WPC8769L_USECS_PER_BIT);
- 
- 			if (next_zero < size) {
--				next_one = generic_find_next_le_bit(ldata,
-+				next_one = find_next_bit_le(ldata,
- 					size, next_zero + 1);
- 
- 				put_pulse_bit(
diff --git a/abs/core/lirc/linux-3.8.patch b/abs/core/lirc/linux-3.8.patch
deleted file mode 100644
index 7b6378a..0000000
--- a/abs/core/lirc/linux-3.8.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-diff -upr lirc-0.9.0.orig/drivers/lirc_serial/lirc_serial.c lirc-0.9.0/drivers/lirc_serial/lirc_serial.c
---- lirc-0.9.0.orig/drivers/lirc_serial/lirc_serial.c	2013-02-21 02:36:25.000000000 +0200
-+++ lirc-0.9.0/drivers/lirc_serial/lirc_serial.c	2013-02-21 02:39:55.000000000 +0200
-@@ -1103,12 +1103,12 @@ static struct lirc_driver driver = {
- 
- static struct platform_device *lirc_serial_dev;
- 
--static int __devinit lirc_serial_probe(struct platform_device *dev)
-+static int lirc_serial_probe(struct platform_device *dev)
- {
- 	return 0;
- }
- 
--static int __devexit lirc_serial_remove(struct platform_device *dev)
-+static int lirc_serial_remove(struct platform_device *dev)
- {
- 	return 0;
- }
-@@ -1159,7 +1159,7 @@ static int lirc_serial_resume(struct pla
- 
- static struct platform_driver lirc_serial_driver = {
- 	.probe		= lirc_serial_probe,
--	.remove		= __devexit_p(lirc_serial_remove),
-+	.remove		= lirc_serial_remove,
- 	.suspend	= lirc_serial_suspend,
- 	.resume		= lirc_serial_resume,
- 	.driver		= {
-diff -upr lirc-0.9.0.orig/drivers/lirc_sir/lirc_sir.c lirc-0.9.0/drivers/lirc_sir/lirc_sir.c
---- lirc-0.9.0.orig/drivers/lirc_sir/lirc_sir.c	2013-02-21 02:36:25.000000000 +0200
-+++ lirc-0.9.0/drivers/lirc_sir/lirc_sir.c	2013-02-21 02:38:24.000000000 +0200
-@@ -1290,19 +1290,19 @@ static int init_lirc_sir(void)
- 	return 0;
- }
- 
--static int __devinit lirc_sir_probe(struct platform_device *dev)
-+static int lirc_sir_probe(struct platform_device *dev)
- {
- 	return 0;
- }
- 
--static int __devexit lirc_sir_remove(struct platform_device *dev)
-+static int lirc_sir_remove(struct platform_device *dev)
- {
- 	return 0;
- }
- 
- static struct platform_driver lirc_sir_driver = {
- 	.probe		= lirc_sir_probe,
--	.remove		= __devexit_p(lirc_sir_remove),
-+	.remove		= lirc_sir_remove,
- 	.driver		=	{
- 		.name	= "lirc_sir",
- 		.owner	= THIS_MODULE,
-diff -upr lirc-0.9.0.orig/drivers/lirc_wpc8769l/lirc_wpc8769l.c lirc-0.9.0/drivers/lirc_wpc8769l/lirc_wpc8769l.c
---- lirc-0.9.0.orig/drivers/lirc_wpc8769l/lirc_wpc8769l.c	2013-02-21 02:36:25.000000000 +0200
-+++ lirc-0.9.0/drivers/lirc_wpc8769l/lirc_wpc8769l.c	2013-02-21 02:39:39.000000000 +0200
-@@ -930,12 +930,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;
- }
-@@ -963,7 +963,7 @@ static int lirc_wpc8769l_resume(struct p
- 
- 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		= {
diff --git a/abs/core/lirc/lirc-0.9.1a-fix-segfaults.patch b/abs/core/lirc/lirc-0.9.1a-fix-segfaults.patch
new file mode 100644
index 0000000..a1f6575
--- /dev/null
+++ b/abs/core/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/abs/core/lirc/lirc-utils.install b/abs/core/lirc/lirc-utils.install
index 293d1ed..f7faa07 100644
--- a/abs/core/lirc/lirc-utils.install
+++ b/abs/core/lirc/lirc-utils.install
@@ -3,5 +3,11 @@ post_install() {
 }
 
 post_upgrade() {
-  post_install
+	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/abs/core/lirc/lirc.install b/abs/core/lirc/lirc.install
index 8e5460a..53b1bc7 100644
--- a/abs/core/lirc/lirc.install
+++ b/abs/core/lirc/lirc.install
@@ -1,16 +1,14 @@
-EXTRAMODULES=extramodules-3.13-ARCH
+EXTRAMODULES=extramodules-3.18-ARCH
 
 post_install() {
-  # updating module dependencies
-  echo ">>> Updating module dependencies. Please wait ..."
-  depmod $(cat /usr/lib/modules/$EXTRAMODULES/version) > /dev/null 2>&1
+	echo ">>> Updating module dependencies. Please wait ..."
+	depmod "$(cat /usr/lib/modules/$EXTRAMODULES/version)" >/dev/null 2>&1
 }
 
 post_upgrade() {
-  post_install
+	post_install
 }
 
-# arg 1:  the old package version
 post_remove() {
-  post_install
+	post_install
 }
diff --git a/abs/core/lirc/lirc.service b/abs/core/lirc/lirc.service
deleted file mode 100644
index a797d16..0000000
--- a/abs/core/lirc/lirc.service
+++ /dev/null
@@ -1,12 +0,0 @@
-[Unit]
-Description=Linux Infrared Remote Control
-After=network.target
-
-[Service]
-Type=forking
-PIDFile=/run/lirc/lircd.pid
-ExecStart=/usr/sbin/lircd --driver=default --device=/dev/lirc0 
-
-[Install]
-WantedBy=multi-user.target
-
diff --git a/abs/core/lirc/lirc_atiusb-kfifo.patch b/abs/core/lirc/lirc_atiusb-kfifo.patch
deleted file mode 100644
index a64984d..0000000
--- a/abs/core/lirc/lirc_atiusb-kfifo.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From ec3c5660e67c122e2d5eb9cfa838c9709fccf8e0 Mon Sep 17 00:00:00 2001
-From: Jason Martin <publicmsu@gmail.com>
-Date: Fri, 3 Jun 2011 00:12:51 -0400
-Subject: [PATCH] lirc_atiusb: fix buffer alloc to work with new kfifo
-
-I came across posts with regards to lirc_atiusb and its compatibility
-with newer kernels, and their use of kfifo.I spent a little bit of time
-this evening, and was able to correct the issues with the driver, and
-now have a functioning lirc_atiusb device under the 2.6.38 kernel.
-
-Signed-off-by: Jarod Wilson <jarod@redhat.com>
----
- drivers/lirc_atiusb/lirc_atiusb.c |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/drivers/lirc_atiusb/lirc_atiusb.c b/drivers/lirc_atiusb/lirc_atiusb.c
-index 52080de..bf2b631 100644
---- a/drivers/lirc_atiusb/lirc_atiusb.c
-+++ b/drivers/lirc_atiusb/lirc_atiusb.c
-@@ -1048,7 +1048,7 @@ static struct atirf_dev *new_irctl(struct usb_interface *intf)
- 		goto new_irctl_failure_check;
- 	}
- 
--	if (lirc_buffer_init(driver->rbuf, dclen, 1)) {
-+	if (lirc_buffer_init(driver->rbuf, dclen, 2)) {
- 		mem_failure = 4;
- 		goto new_irctl_failure_check;
- 	}
--- 
-1.7.0.1
-
diff --git a/abs/core/lirc/lirc_wpc8769l.patch b/abs/core/lirc/lirc_wpc8769l.patch
deleted file mode 100644
index e4e2a04..0000000
--- a/abs/core/lirc/lirc_wpc8769l.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-From 413e83bf504fe9a9a177f27742220cfcb184b034 Mon Sep 17 00:00:00 2001
-From: =?utf8?q?Juan=20Jes=C3=BAs=20Garc=C3=ADa=20de=20Soria=20Lucena?= <skandalfo@gmail.com>
-Date: Wed, 30 Mar 2011 16:46:35 -0400
-Subject: [PATCH] Make lirc_wpc8769l functional again
-
-Signed-off-by: Jarod Wilson <jarod@redhat.com>
----
- drivers/lirc_wpc8769l/lirc_wpc8769l.c |   28 +++++++++++++++++-----------
- 1 files changed, 17 insertions(+), 11 deletions(-)
-
-diff --git a/drivers/lirc_wpc8769l/lirc_wpc8769l.c b/drivers/lirc_wpc8769l/lirc_wpc8769l.c
-index f820d11..4d04063 100644
---- a/drivers/lirc_wpc8769l/lirc_wpc8769l.c
-+++ b/drivers/lirc_wpc8769l/lirc_wpc8769l.c
-@@ -816,10 +816,6 @@ static int set_use_inc(void *data)
- 	/* Reset last timeout value. */
- 	lastus = 0;
- 
--	/* Init the read buffer. */
--	if (lirc_buffer_init(&rbuf, sizeof(lirc_t), RBUF_LEN) < 0)
--		return -ENOMEM;
--
- 	/* Acquire the IRQ. */
- 	result = request_irq(irq, irq_handler,
- 			   IRQF_DISABLED | IRQF_SHARED,
-@@ -863,9 +859,6 @@ static void set_use_dec(void *data)
- 	/* Free the IRQ. */
- 	free_irq(irq, THIS_MODULE);
- 	dprintk("Freed IRQ %d\n", irq);
--
--	/* Free the RX buffer. */
--	lirc_buffer_free(&rbuf);
- }
- 
- static struct lirc_driver driver = {
-@@ -1065,19 +1058,29 @@ static int __init lirc_wpc8769l_module_init(void)
- 	/* Do load-time checks. */
- 	wpc8769l_power_up_and_check_if_we_woke_us_up();
- 
-+	/* Init the read buffer. */
-+	if (lirc_buffer_init(&rbuf, sizeof(lirc_t), RBUF_LEN) < 0) {
-+		rc = -ENOMEM;
-+		goto exit_platform_exit;
-+	}
-+
- 	/* Configure the driver hooks. */
- 	driver.features = LIRC_CAN_REC_MODE2;
-+	driver.dev = &lirc_wpc8769l_platform_dev->dev;
- 	driver.minor = lirc_register_driver(&driver);
- 	if (driver.minor < 0) {
- 		eprintk("lirc_register_driver failed!\n");
- 		rc = -EIO;
--		goto exit_platform_exit;
-+		goto exit_release_buffer;
- 	}
- 
- 	iprintk("Driver loaded.\n");
- 
- 	return 0; /* Everything OK. */
- 
-+exit_release_buffer:
-+	lirc_buffer_free(&rbuf);
-+
- exit_platform_exit:
- 	lirc_wpc8769l_platform_exit();
- 
-@@ -1095,12 +1098,15 @@ module_init(lirc_wpc8769l_module_init);
- 
- static void __exit lirc_wpc8769l_module_exit(void)
- {
--	/* Unregister the platform driver and device. */
--	lirc_wpc8769l_platform_exit();
--
- 	/* Unregister the LIRC driver. */
- 	lirc_unregister_driver(driver.minor);
- 
-+	/* Free the buffer. */
-+	lirc_buffer_free(&rbuf);
-+
-+	/* Unregister the platform driver and device. */
-+	lirc_wpc8769l_platform_exit();
-+
- 	/* Release the second range. */
- 	if (baseport2)
- 		release_region(baseport2, WPC8769L_IO_REGION_2_SIZE);
--- 
-1.7.0.1
-
diff --git a/abs/core/lirc/lircd-handle-large-config.patch b/abs/core/lirc/lircd-handle-large-config.patch
deleted file mode 100644
index 85bc205..0000000
--- a/abs/core/lirc/lircd-handle-large-config.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 5efb56bf22a5077db564c766ba7cc37bc269231d Mon Sep 17 00:00:00 2001
-From: Jarod Wilson <jarod@redhat.com>
-Date: Wed, 6 Apr 2011 11:04:12 -0400
-Subject: [PATCH] lircd: handle larger config files in write_socket better
-
-Pointed out by Michael Zanetti on list, irsend LIST has issues with long
-config files, which didn't exist in maintainer mode, as we were using a
-do while loop to make sure we spit out everything. Just use that loop
-all the time.
-
-Signed-off-by: Jarod Wilson <jarod@redhat.com>
----
- daemons/lircd.c |    8 ++------
- 1 files changed, 2 insertions(+), 6 deletions(-)
-
-diff --git a/daemons/lircd.c b/daemons/lircd.c
-index 6c21a3a..ddcca05 100644
---- a/daemons/lircd.c
-+++ b/daemons/lircd.c
-@@ -231,14 +231,10 @@ inline int write_socket(int fd, const char *buf, int len)
- 	int done, todo = len;
- 
- 	while (todo) {
--#ifdef SIM_REC
- 		do {
- 			done = write(fd, buf, todo);
--		}
--		while (done < 0 && errno == EAGAIN);
--#else
--		done = write(fd, buf, todo);
--#endif
-+		} while (done < 0 && errno == EAGAIN);
-+
- 		if (done <= 0)
- 			return (done);
- 		buf += done;
--- 
-1.7.0.1
-
diff --git a/abs/core/lirc/lircm.service b/abs/core/lirc/lircm.service
deleted file mode 100644
index c0b5e36..0000000
--- a/abs/core/lirc/lircm.service
+++ /dev/null
@@ -1,12 +0,0 @@
-[Unit]
-Description=LIRC Mouse
-Requires=lirc.service
-After=network.target lirc.service
-
-[Service]
-Type=forking
-ExecStart=/usr/sbin/lircmd 
-
-[Install]
-WantedBy=multi-user.target
-
diff --git a/abs/core/lirc/wpc8769l-build-fix.patch b/abs/core/lirc/wpc8769l-build-fix.patch
new file mode 100644
index 0000000..5e25693
--- /dev/null
+++ b/abs/core/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		= {
-- 
cgit v0.12