[arch-commits] Commit in xorg-server/trunk (PKGBUILD revert-udev-changes.diff)

Andreas Radke andyrtr at archlinux.org
Mon Dec 25 13:06:12 UTC 2017


    Date: Monday, December 25, 2017 @ 13:06:11
  Author: andyrtr
Revision: 313608

upgpkg: xorg-server 1.19.6-2

rebuild for new dri module path - FS#56847 + revert upstream udev changes leading to broken device detection - FS#56804

Added:
  xorg-server/trunk/revert-udev-changes.diff
Modified:
  xorg-server/trunk/PKGBUILD

--------------------------+
 PKGBUILD                 |   12 +++--
 revert-udev-changes.diff |  105 +++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 114 insertions(+), 3 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2017-12-25 12:59:41 UTC (rev 313607)
+++ PKGBUILD	2017-12-25 13:06:11 UTC (rev 313608)
@@ -5,7 +5,7 @@
 pkgbase=xorg-server
 pkgname=('xorg-server' 'xorg-server-xephyr' 'xorg-server-xdmx' 'xorg-server-xvfb' 'xorg-server-xnest' 'xorg-server-xwayland' 'xorg-server-common' 'xorg-server-devel')
 pkgver=1.19.6
-pkgrel=1
+pkgrel=2
 arch=('x86_64')
 license=('custom')
 groups=('xorg')
@@ -21,7 +21,8 @@
         nvidia-add-modulepath-support.patch
         xserver-autobind-hotplug.patch
         xvfb-run
-        xvfb-run.1)
+        xvfb-run.1
+        revert-udev-changes.diff)
 validpgpkeys=('7B27A3F1A6E18CD9588B4AE8310180050905E40C'
               'C383B778255613DFDB409D91DB221A6900000011'
               'DD38563A8A8224537D1F90E45B8A2D50A0ECD0D3'
@@ -31,7 +32,8 @@
             '914a8d775b708f836ae3f0eeca553da3872727a2e4262190f4d5c01241cb14e8'
             'fcaf536e4fc307958923b58f2baf3d3102ad694efc28506f6f95a9e64483fa57'
             'ff0156309470fc1d378fd2e104338020a884295e285972cc88e250e031cc35b9'
-            '2460adccd3362fefd4cdc5f1c70f332d7b578091fb9167bf88b5f91265bbd776')
+            '2460adccd3362fefd4cdc5f1c70f332d7b578091fb9167bf88b5f91265bbd776'
+            'ce9b235c053ac85a9da86fba3b60fcfc48d36a8bd789b94ed79d5d571bc7b0aa')
 
 prepare() {
   cd "${pkgbase}-${pkgver}"
@@ -41,6 +43,10 @@
   # patch from Fedora, not yet merged
   patch -Np1 -i ../xserver-autobind-hotplug.patch
 
+  # https://bugs.archlinux.org/task/56804 
+  # https://bugs.freedesktop.org/show_bug.cgi?id=104382
+  patch -Rp1 -i ../revert-udev-changes.diff
+
   autoreconf -vfi
 }
 

Added: revert-udev-changes.diff
===================================================================
--- revert-udev-changes.diff	                        (rev 0)
+++ revert-udev-changes.diff	2017-12-25 13:06:11 UTC (rev 313608)
@@ -0,0 +1,105 @@
+From 5a5b6d6cca469521daa6ac9087f3589b7489ab55 Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer at who-t.net>
+Date: Tue, 26 Sep 2017 15:21:59 +1000
+Subject: config/udev: consider ID_INPUT_FOO=0 as 'unset'
+
+Historically we didn't need to care about this case but more devices are
+having invalid types set and they cannot be unset with a hwdb entry (which
+doesn't handle the empty string). Allow for "0" to mean "unset" because
+anything else would be crazy anyway.
+
+Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
+(cherry picked from commit 5aad81445c8c3d6b7b30d503cfe26027fa482870)
+---
+ config/udev.c | 65 +++++++++++++++++++++++++++++------------------------------
+ 1 file changed, 32 insertions(+), 33 deletions(-)
+
+(limited to 'config/udev.c')
+
+diff --git a/config/udev.c b/config/udev.c
+index 932f230..e198e86 100644
+--- a/config/udev.c
++++ b/config/udev.c
+@@ -134,7 +134,8 @@ device_added(struct udev_device *udev_device)
+     }
+ #endif
+ 
+-    if (!udev_device_get_property_value(udev_device, "ID_INPUT")) {
++    value = udev_device_get_property_value(udev_device, "ID_INPUT");
++    if (value && !strcmp(value, "0")) {
+         LogMessageVerb(X_INFO, 10,
+                        "config/udev: ignoring device %s without "
+                        "property ID_INPUT set\n", path);
+@@ -237,38 +238,36 @@ device_added(struct udev_device *udev_device)
+         else if (!strcmp(key, "ID_VENDOR")) {
+             LOG_PROPERTY(path, key, value);
+             attrs.vendor = strdup(value);
+-        }
+-        else if (!strcmp(key, "ID_INPUT_KEY")) {
+-            LOG_PROPERTY(path, key, value);
+-            attrs.flags |= ATTR_KEY;
+-        }
+-        else if (!strcmp(key, "ID_INPUT_KEYBOARD")) {
+-            LOG_PROPERTY(path, key, value);
+-            attrs.flags |= ATTR_KEYBOARD;
+-        }
+-        else if (!strcmp(key, "ID_INPUT_MOUSE")) {
+-            LOG_PROPERTY(path, key, value);
+-            attrs.flags |= ATTR_POINTER;
+-        }
+-        else if (!strcmp(key, "ID_INPUT_JOYSTICK")) {
+-            LOG_PROPERTY(path, key, value);
+-            attrs.flags |= ATTR_JOYSTICK;
+-        }
+-        else if (!strcmp(key, "ID_INPUT_TABLET")) {
+-            LOG_PROPERTY(path, key, value);
+-            attrs.flags |= ATTR_TABLET;
+-        }
+-        else if (!strcmp(key, "ID_INPUT_TABLET_PAD")) {
+-            LOG_PROPERTY(path, key, value);
+-            attrs.flags |= ATTR_TABLET_PAD;
+-        }
+-        else if (!strcmp(key, "ID_INPUT_TOUCHPAD")) {
+-            LOG_PROPERTY(path, key, value);
+-            attrs.flags |= ATTR_TOUCHPAD;
+-        }
+-        else if (!strcmp(key, "ID_INPUT_TOUCHSCREEN")) {
+-            LOG_PROPERTY(path, key, value);
+-            attrs.flags |= ATTR_TOUCHSCREEN;
++        } else if (!strncmp(key, "ID_INPUT_", 9)) {
++            const struct pfmap {
++                const char *property;
++                unsigned int flag;
++            } map[] = {
++                { "ID_INPUT_KEY", ATTR_KEY },
++                { "ID_INPUT_KEYBOARD", ATTR_KEYBOARD },
++                { "ID_INPUT_MOUSE", ATTR_POINTER },
++                { "ID_INPUT_JOYSTICK", ATTR_JOYSTICK },
++                { "ID_INPUT_TABLET", ATTR_TABLET },
++                { "ID_INPUT_TABLET_PAD", ATTR_TABLET_PAD },
++                { "ID_INPUT_TOUCHPAD", ATTR_TOUCHPAD },
++                { "ID_INPUT_TOUCHSCREEN", ATTR_TOUCHSCREEN },
++                { NULL, 0 },
++            };
++
++            /* Anything but the literal string "0" is considered a
++             * boolean true. The empty string isn't a thing with udev
++             * properties anyway */
++            if (value && strcmp(value, "0")) {
++                const struct pfmap *m = map;
++
++                while (m->property != NULL) {
++                    if (!strcmp(m->property, key)) {
++                        LOG_PROPERTY(path, key, value);
++                        attrs.flags |= m->flag;
++                    }
++                    m++;
++                }
++            }
+         }
+     }
+ 
+-- 
+cgit v1.1
+
+



More information about the arch-commits mailing list