v4l-utils: fix racy udev rule

ir-keytable -a can fail if it's run before the input and event
devices are created. Fix this by changing the udev rule to trigger
on event device creation instead of rc device creation.

Also drop the udev rules patch and simply replace the udev rule
with our version, this is easier to maintain.

Signed-off-by: Matthias Reichl <hias@horus.com>
This commit is contained in:
Matthias Reichl 2017-07-16 14:01:08 +02:00
parent 95eb836354
commit 1411f6098f
3 changed files with 29 additions and 35 deletions

View File

@ -46,6 +46,10 @@ post_makeinstall_target() {
mkdir -p $INSTALL/usr/config
cp -PR $PKG_DIR/config/* $INSTALL/usr/config
rm -rf $INSTALL/usr/lib/udev/rules.d
mkdir -p $INSTALL/usr/lib/udev/rules.d
cp -PR $PKG_DIR/udev.d/*.rules $INSTALL/usr/lib/udev/rules.d
(
echo "# table libreelec_multi, type: RC6 NEC"
for f in rc6_mce xbox_360 zotac_ad10 hp_mce xbox_one cubox_i ; do

View File

@ -1,35 +0,0 @@
From 996fdbf54f4b6c479dc7dd6ab4ca7933730aba93 Mon Sep 17 00:00:00 2001
From: Matthias Reichl <hias@horus.com>
Date: Sun, 12 Mar 2017 12:22:14 +0100
Subject: [PATCH] ir-keytable: allow map rules override via
/storage/.config/rc_maps.cfg
Signed-off-by: Matthias Reichl <hias@horus.com>
---
utils/keytable/70-infrared.rules | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/utils/keytable/70-infrared.rules b/utils/keytable/70-infrared.rules
index afffd95..eef3234 100644
--- a/utils/keytable/70-infrared.rules
+++ b/utils/keytable/70-infrared.rules
@@ -1,4 +1,14 @@
# Automatically load the proper keymaps after the Remote Controller device
-# creation. The keycode tables rules should be at /etc/rc_maps.cfg
+# creation.
+#
+# User-defined rules can be stored in /storage/.config/rc_maps.cfg. If that
+# file doesn't exist the default rules from /etc/rc_maps.cfg are used.
-ACTION=="add", SUBSYSTEM=="rc", RUN+="/usr/bin/ir-keytable -a /etc/rc_maps.cfg -s $name"
+ACTION=="add", SUBSYSTEM=="rc", IMPORT{program}="/usr/bin/sh -c '\
+ if [ -r /storage/.config/rc_maps.cfg ] ; then \
+ echo rc_maps_cfg=/storage/.config/rc_maps.cfg ; \
+ else \
+ echo rc_maps_cfg=/etc/rc_maps.cfg ; \
+ fi'"
+
+ENV{rc_maps_cfg}=="?*", RUN+="/usr/bin/ir-keytable -a $env{rc_maps_cfg} -s $name"
--
2.1.4

View File

@ -0,0 +1,25 @@
# Automatically load the proper keymaps after the Remote Controller device
# creation.
#
# User-defined rules can be stored in /storage/.config/rc_maps.cfg. If that
# file doesn't exist the default rules from /etc/rc_maps.cfg are used.
ACTION=="add", SUBSYSTEMS=="rc", GOTO="begin"
GOTO="end"
LABEL="begin"
SUBSYSTEM=="rc", ENV{rc_sysdev}="$name"
SUBSYSTEM=="input", IMPORT{parent}="rc_sysdev"
KERNEL=="event[0-9]*", ENV{rc_sysdev}=="?*", IMPORT{program}="/usr/bin/sh -c '\
if [ -r /storage/.config/rc_maps.cfg ] ; then \
echo rc_maps_cfg=/storage/.config/rc_maps.cfg ; \
else \
echo rc_maps_cfg=/etc/rc_maps.cfg ; \
fi'"
ENV{rc_maps_cfg}=="?*", RUN+="/usr/bin/ir-keytable -a $env{rc_maps_cfg} -s $env{rc_sysdev}"
LABEL="end"