Update for 0.9.4b

epel8
Alec Leamas 9 years ago
parent c38d577c48
commit 0f418eec86

@ -0,0 +1,36 @@
From 5d933bee5c100e119c26476e45b69e019b392323 Mon Sep 17 00:00:00 2001
From: Alec Leamas <leamas.alec@gmail.com>
Date: Wed, 17 Aug 2016 21:28:00 +0200
Subject: [PATCH] plugins: audio_alsa: Fix byte truncating in 16-bit data
(#218):
This fixes a bug introduced in 82305c72 which basically was
about muting a "dereferencing type-punned pointer will break
strict-aliasing rules" compiler warning.
---
plugins/audio_alsa.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/plugins/audio_alsa.c b/plugins/audio_alsa.c
index 20022f3..ff0d8a9 100644
--- a/plugins/audio_alsa.c
+++ b/plugins/audio_alsa.c
@@ -436,11 +436,12 @@ var_reset: /* Reset variables */
for (i = 0; i < count; i++) {
/* cs == current sample */
unsigned char cs, as, sl, sz, xz;
- short stmp;
+ unsigned short stmp;
if (bytes_per_sample == 2) {
- stmp = buff[i * bytes_per_sample * alsa_hw.num_channels +
- bytes_per_sample * alsa_hw.channel];
+ int ix = i * bytes_per_sample * alsa_hw.num_channels +
+ bytes_per_sample * alsa_hw.channel;
+ memcpy(&stmp, &buff[ix], sizeof(stmp));
cs = stmp >> 8;
cs ^= 0x80;
} else {
--
2.5.5

@ -0,0 +1,31 @@
From 6b8fad0fdfd026d437ab6b953e701f2ece307e45 Mon Sep 17 00:00:00 2001
From: Alec Leamas <leamas.alec@gmail.com>
Date: Thu, 18 Aug 2016 21:04:07 +0200
Subject: [PATCH] contrib: Fix usb devices' acl permissions (rhbz #1364744).
---
contrib/60-lirc.rules | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/contrib/60-lirc.rules b/contrib/60-lirc.rules
index 8147546..687009b 100644
--- a/contrib/60-lirc.rules
+++ b/contrib/60-lirc.rules
@@ -1,8 +1,9 @@
-# Installing this udev rule will make the /dev/lirc* devices accessible
-# for users in the group "lirc" using regular group permissions. USB
-# devices grants rw permission to the lirc group using ACL.
-# To enable, copy to /etc/udev/rules.d.
+# Make the /dev/lirc* devices accessible for users in the group "lirc"
+# using regular group permissions.
KERNEL=="lirc[0-9]*", SUBSYSTEM=="lirc", GROUP="lirc", MODE="0660"
-ACTION=="add", SUBSYSTEM=="usb", \
+
+# Grant rw permission to the lirc group for USB devices using acl(5).
+
+ACTION=="add", SUBSYSTEM=="usb", ENV{DEVNAME}=="?*", \
RUN+="/usr/bin/setfacl -m g:lirc:rw $env{DEVNAME}"
--
2.5.5

@ -0,0 +1,182 @@
From 5dd37205a06a44e6b9cdbae5a3901e39270f0975 Mon Sep 17 00:00:00 2001
From: Alec Leamas <leamas.alec@gmail.com>
Date: Thu, 18 Aug 2016 22:35:31 +0200
Subject: [PATCH 6/7] include: Update bundled lirc.h.
---
include/media/lirc.h | 95 ++++++----------------------------------------------
1 file changed, 10 insertions(+), 85 deletions(-)
diff --git a/include/media/lirc.h b/include/media/lirc.h
index 601fccb..991ab45 100644
--- a/include/media/lirc.h
+++ b/include/media/lirc.h
@@ -1,39 +1,13 @@
-/**
- * @file lirc.c
- * This file contains some general definitions, like feature flags.
- * It's a bundled copy from the kernel sources. Being part of
- * kernel sources is a bug, see
- * https://bugzilla.kernel.org/show_bug.cgi?id=75751.
- * The file is upstreamed to the kernel from 4.6.
- */
-
-#ifndef LIRC_BASE_H
-#define LIRC_BASE_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * This data type, with its extremely carefully selected name, is used as
- * data type for the signal durations.
- */
-#define lirc_t int
-
/*
* lirc.h - linux infrared remote control header file
- * last modified 2010/06/03 by Jarod Wilson
+ * last modified 2010/07/13 by Jarod Wilson
*/
-#if defined(__linux__)
+#ifndef _LINUX_LIRC_H
+#define _LINUX_LIRC_H
+
#include <linux/types.h>
#include <linux/ioctl.h>
-#elif defined(_NetBSD_)
-#include <sys/ioctl.h>
-#elif defined(_CYGWIN_)
-#define __USE_LINUX_IOCTL_DEFS
-#include <sys/ioctl.h>
-#endif
#define PULSE_BIT 0x01000000
#define PULSE_MASK 0x00FFFFFF
@@ -59,6 +33,9 @@ extern "C" {
#define LIRC_IS_FREQUENCY(val) (LIRC_MODE2(val) == LIRC_MODE2_FREQUENCY)
#define LIRC_IS_TIMEOUT(val) (LIRC_MODE2(val) == LIRC_MODE2_TIMEOUT)
+/* used heavily by lirc userspace */
+#define lirc_t int
+
/*** lirc compatible hardware features ***/
#define LIRC_MODE2SEND(x) (x)
@@ -79,16 +56,8 @@ extern "C" {
#define LIRC_CAN_SEND_MASK 0x0000003f
-/** This flag indicates that the transmitter is capable of setting the
- * IR carrier frequency. */
#define LIRC_CAN_SET_SEND_CARRIER 0x00000100
-
-/** This flag indicates that the transmitter is capable of setting the
- * duty cycle of generated IR signals. */
#define LIRC_CAN_SET_SEND_DUTY_CYCLE 0x00000200
-
-/** This flag indicates that the transmitter is capable of setting a
- * transmitter mask, i.e., probably has several transmitters. */
#define LIRC_CAN_SET_TRANSMITTER_MASK 0x00000400
#define LIRC_CAN_REC_RAW LIRC_MODE2REC(LIRC_MODE_RAW)
@@ -107,16 +76,10 @@ extern "C" {
#define LIRC_CAN_SET_REC_TIMEOUT 0x10000000
#define LIRC_CAN_SET_REC_FILTER 0x08000000
-
-/** This flag indicates that the receiver is capable of estimating
- * the carrier frequency of received IR signals. */
#define LIRC_CAN_MEASURE_CARRIER 0x02000000
#define LIRC_CAN_USE_WIDEBAND_RECEIVER 0x04000000
-/** Extract sending features from its argument. */
#define LIRC_CAN_SEND(x) ((x)&LIRC_CAN_SEND_MASK)
-
-/** Extract receiving features from its argument. */
#define LIRC_CAN_REC(x) ((x)&LIRC_CAN_REC_MASK)
#define LIRC_CAN_NOTIFY_DECODE 0x01000000
@@ -127,20 +90,11 @@ extern "C" {
#define LIRC_GET_SEND_MODE _IOR('i', 0x00000001, __u32)
#define LIRC_GET_REC_MODE _IOR('i', 0x00000002, __u32)
-#define LIRC_GET_SEND_CARRIER _IOR('i', 0x00000003, __u32)
-#define LIRC_GET_REC_CARRIER _IOR('i', 0x00000004, __u32)
-#define LIRC_GET_SEND_DUTY_CYCLE _IOR('i', 0x00000005, __u32)
-#define LIRC_GET_REC_DUTY_CYCLE _IOR('i', 0x00000006, __u32)
#define LIRC_GET_REC_RESOLUTION _IOR('i', 0x00000007, __u32)
#define LIRC_GET_MIN_TIMEOUT _IOR('i', 0x00000008, __u32)
#define LIRC_GET_MAX_TIMEOUT _IOR('i', 0x00000009, __u32)
-#define LIRC_GET_MIN_FILTER_PULSE _IOR('i', 0x0000000a, __u32)
-#define LIRC_GET_MAX_FILTER_PULSE _IOR('i', 0x0000000b, __u32)
-#define LIRC_GET_MIN_FILTER_SPACE _IOR('i', 0x0000000c, __u32)
-#define LIRC_GET_MAX_FILTER_SPACE _IOR('i', 0x0000000d, __u32)
-
/* code length in bits, currently only for LIRC_MODE_LIRCCODE */
#define LIRC_GET_LENGTH _IOR('i', 0x0000000f, __u32)
@@ -150,7 +104,6 @@ extern "C" {
#define LIRC_SET_SEND_CARRIER _IOW('i', 0x00000013, __u32)
#define LIRC_SET_REC_CARRIER _IOW('i', 0x00000014, __u32)
#define LIRC_SET_SEND_DUTY_CYCLE _IOW('i', 0x00000015, __u32)
-#define LIRC_SET_REC_DUTY_CYCLE _IOW('i', 0x00000016, __u32)
#define LIRC_SET_TRANSMITTER_MASK _IOW('i', 0x00000017, __u32)
/*
@@ -164,45 +117,17 @@ extern "C" {
#define LIRC_SET_REC_TIMEOUT_REPORTS _IOW('i', 0x00000019, __u32)
/*
- * pulses shorter than this are filtered out by hardware (software
- * emulation in lirc_dev?)
- */
-#define LIRC_SET_REC_FILTER_PULSE _IOW('i', 0x0000001a, __u32)
-/*
- * spaces shorter than this are filtered out by hardware (software
- * emulation in lirc_dev?)
- */
-#define LIRC_SET_REC_FILTER_SPACE _IOW('i', 0x0000001b, __u32)
-/*
- * if filter cannot be set independantly for pulse/space, this should
- * be used
- */
-#define LIRC_SET_REC_FILTER _IOW('i', 0x0000001c, __u32)
-
-/*
* if enabled from the next key press on the driver will send
* LIRC_MODE2_FREQUENCY packets
*/
-#define LIRC_SET_MEASURE_CARRIER_MODE _IOW('i', 0x0000001d, __u32)
+#define LIRC_SET_MEASURE_CARRIER_MODE _IOW('i', 0x0000001d, __u32)
/*
- * to set a range use
- * LIRC_SET_REC_DUTY_CYCLE_RANGE/LIRC_SET_REC_CARRIER_RANGE with the
- * lower bound first and later
- * LIRC_SET_REC_DUTY_CYCLE/LIRC_SET_REC_CARRIER with the upper bound
+ * to set a range use LIRC_SET_REC_CARRIER_RANGE with the
+ * lower bound first and later LIRC_SET_REC_CARRIER with the upper bound
*/
-
-#define LIRC_SET_REC_DUTY_CYCLE_RANGE _IOW('i', 0x0000001e, __u32)
#define LIRC_SET_REC_CARRIER_RANGE _IOW('i', 0x0000001f, __u32)
-#define LIRC_NOTIFY_DECODE _IO('i', 0x00000020)
-
-#define LIRC_SETUP_START _IO('i', 0x00000021)
-#define LIRC_SETUP_END _IO('i', 0x00000022)
#define LIRC_SET_WIDEBAND_RECEIVER _IOW('i', 0x00000023, __u32)
-#ifdef __cplusplus
-}
#endif
-
-#endif //LIRC_BASE_H
--
2.5.5

@ -0,0 +1,110 @@
From 6a57d48e1a233dfc55d436e8d064509cb03973d1 Mon Sep 17 00:00:00 2001
From: Alec Leamas <leamas.alec@gmail.com>
Date: Fri, 19 Aug 2016 04:48:02 +0200
Subject: [PATCH 7/7] lircd: Remove use of functions killed in kernel 4.8.0
From 4.8.0 the kernel no longer supports LIRC_NOTIFY_DECODE,
LIRC_SETUP_START/LIRC_SETUP_END and several constants related
to initiating filters. Remove corresponding calls from lircd.
---
daemons/lircd.cpp | 51 ++-------------------------------------------------
lib/driver.h | 7 +++++++
2 files changed, 9 insertions(+), 49 deletions(-)
diff --git a/daemons/lircd.cpp b/daemons/lircd.cpp
index a7dbc94..a50d11f 100644
--- a/daemons/lircd.cpp
+++ b/daemons/lircd.cpp
@@ -464,50 +464,6 @@ static int setup_timeout(void)
}
-static int setup_filter(void)
-{
- int ret1, ret2;
- lirc_t min_pulse_supported = 0, max_pulse_supported = 0;
- lirc_t min_space_supported = 0, max_space_supported = 0;
-
- if (!(curr_driver->features & LIRC_CAN_SET_REC_FILTER))
- return 1;
- if (curr_driver->drvctl_func(LIRC_GET_MIN_FILTER_PULSE,
- &min_pulse_supported) == -1 ||
- curr_driver->drvctl_func(LIRC_GET_MAX_FILTER_PULSE, &max_pulse_supported) == -1
- || curr_driver->drvctl_func(LIRC_GET_MIN_FILTER_SPACE, &min_space_supported) == -1
- || curr_driver->drvctl_func(LIRC_GET_MAX_FILTER_SPACE, &max_space_supported) == -1) {
- log_error("could not get filter range");
- log_perror_err(__func__);
- }
-
- if (setup_min_pulse > max_pulse_supported)
- setup_min_pulse = max_pulse_supported;
- else if (setup_min_pulse < min_pulse_supported)
- setup_min_pulse = 0; /* disable filtering */
-
- if (setup_min_space > max_space_supported)
- setup_min_space = max_space_supported;
- else if (setup_min_space < min_space_supported)
- setup_min_space = 0; /* disable filtering */
-
- ret1 = curr_driver->drvctl_func(LIRC_SET_REC_FILTER_PULSE, &setup_min_pulse);
- ret2 = curr_driver->drvctl_func(LIRC_SET_REC_FILTER_SPACE, &setup_min_space);
- if (ret1 == -1 || ret2 == -1) {
- if (curr_driver->
- drvctl_func(LIRC_SET_REC_FILTER,
- setup_min_pulse < setup_min_space ? &setup_min_pulse : &setup_min_space) == -1) {
- log_error("could not set filter");
- log_perror_err(__func__);
- return 0;
- }
- }
- return 1;
-}
-
-
-
-
static int setup_hardware(void)
{
int ret = 1;
@@ -516,10 +472,7 @@ static int setup_hardware(void)
if ((curr_driver->features & LIRC_CAN_SET_REC_CARRIER)
|| (curr_driver->features & LIRC_CAN_SET_REC_TIMEOUT)
|| (curr_driver->features & LIRC_CAN_SET_REC_FILTER)) {
- (void)curr_driver->drvctl_func(LIRC_SETUP_START, NULL);
- ret = setup_frequency() && setup_timeout()
- && setup_filter();
- (void)curr_driver->drvctl_func(LIRC_SETUP_END, NULL);
+ ret = setup_frequency() && setup_timeout();
}
}
return ret;
@@ -2162,7 +2115,7 @@ void loop(void)
int reps;
if (curr_driver->drvctl_func && (curr_driver->features & LIRC_CAN_NOTIFY_DECODE))
- curr_driver->drvctl_func(LIRC_NOTIFY_DECODE, NULL);
+ curr_driver->drvctl_func(DRVCTL_NOTIFY_DECODE, NULL);
get_release_data(&remote_name, &button_name, &reps);
diff --git a/lib/driver.h b/lib/driver.h
index c7c4a6a..fc7318e 100644
--- a/lib/driver.h
+++ b/lib/driver.h
@@ -97,6 +97,13 @@ int drv_handle_options(const char* options);
/** drvctl cmd: Free memory in argument obtained using DRVCTL_GET_DEVICES. */
#define DRVCTL_FREE_DEVICES 6
+/**
+ * The former LIRC_NOTIFY_DECODE, informs drier that signal is successfully
+ * decoded e. g., to initiate some visual feedback through a LED.
+ */
+
+#define DRVCTL_NOTIFY_DECODE 7
+
/** Last well-known command. Remaining is used in driver-specific controls.*/
#define DRVCTL_MAX 128
--
2.5.5

@ -4,8 +4,8 @@
#define tag devel
Name: lirc
Version: 0.9.4
Release: %{?tag:0.}3%{?tag:.}%{?tag}%{?dist}.1
Version: 0.9.4b
Release: %{?tag:0.}2%{?tag:.}%{?tag}%{?dist}
Summary: The Linux Infrared Remote Control package
%global repo http://downloads.sourceforge.net/lirc/LIRC/%{version}/
@ -18,9 +18,10 @@ Source0: %{?released:%{repo}}%{name}-%{version}%{?tag:-}%{?tag}.tar.gz
Source1: README.fedora
Source2: 99-remote-control-lirc.rules
# Config only, cannot be upstreamed.
Patch1: 0001-Changing-effective-user-default.patch
Patch2: 0008-plugins-devinput-Make-the-list-devices-support-avail.patch
Patch3: 0003-lib-use-proper-linking-method-to-avoid-parallel-buil.patch
Patch1: 0004-plugins-audio_alsa-Fix-byte-truncating-in-16-bit-dat.patch
Patch2: 0005-contrib-Fix-usb-devices-acl-permissions-rhbz-1364744.patch
Patch3: 0006-include-Update-bundled-lirc.h.patch
Patch4: 0007-lircd-Remove-use-of-functions-killed-in-kernel-4.8.0.patch
BuildRequires: alsa-lib-devel
Buildrequires: autoconf
@ -41,7 +42,6 @@ BuildRequires: python3-PyYAML
BuildRequires: systemd-devel
Requires: %{name}-libs = %{version}-%{release}
Requires: python3-PyYAML
Requires(pre): shadow-utils
Requires(post): systemd
@ -105,6 +105,7 @@ Summary: LIRC Configuration Tools and Data
Requires: lirc-core = %{version}-%{release}
Requires: lirc-doc = %{version}-%{release}
Requires: gnome-icon-theme
Requires: python3-PyYAML
BuildArch: noarch
%description config
@ -186,8 +187,16 @@ full support for the ftdi device.
%setup -qn %{name}-%{version}%{?tag}
%patch1 -p1
%patch2 -p1
%if 0%fedora > 24
%patch3 -p1
%patch4 -p1
cp lib/driver.h lib/lirc/driver.h
%endif
sed -i -e 's|/usr/local/etc/|/etc/|' contrib/irman2lirc
sed -i -e 's/#effective-user/effective-user /' lirc_options.conf
sed -i -e '/^effective-user/s/=$/= lirc/' lirc_options.conf
%build
@ -339,6 +348,19 @@ systemd-tmpfiles --create %{_tmpfilesdir}/lirc.conf
%{_udevrulesdir}/99-remote-control-lirc.rules
%changelog
* Wed Aug 17 2016 Alec Leamas <leamas.alec@gmail.com> - 0.9.4b-2
- Added patch for audio_alsa plugin (#218).
- Move R: python3-PyYAML to lirc-compat, fixes import error
https://retrace.fedoraproject.org/faf/reports/1229333/
- Modify usb devices acl(5) udev rule (#1364744).
* Tue Aug 09 2016 Alec Leamas <leamas.alec@gmail.com> - 0.9.4b-1
- Rebuilt for new upstream version 0.9.4b.
* Wed Jun 29 2016 Alec Leamas <leamas.alec@gmail.com> - 0.9.4a-1
- New upstream release.
- Fixes #1350750, bad systemd files syntax.
* Tue Jul 19 2016 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.9.4-3.1
- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages

Loading…
Cancel
Save