summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO6
-rw-r--r--PKGBUILD12
-rw-r--r--udev-changes.diff105
3 files changed, 118 insertions, 5 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 67c696777e15..096233c75d81 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,6 +1,6 @@
pkgbase = xorg-server-dev
pkgver = 1.19.6
- pkgrel = 1
+ pkgrel = 2
url = https://xorg.freedesktop.org
arch = x86_64
groups = xorg
@@ -60,12 +60,14 @@ pkgbase = xorg-server-dev
source = xserver-autobind-hotplug.patch
source = xvfb-run
source = xvfb-run.1
+ source = udev-changes.diff
sha256sums = 3c0e4a354a6b1d5d357b121357946ee8ffdb2f52158b2e63e105be9cef013168
sha256sums = SKIP
sha256sums = 914a8d775b708f836ae3f0eeca553da3872727a2e4262190f4d5c01241cb14e8
sha256sums = fcaf536e4fc307958923b58f2baf3d3102ad694efc28506f6f95a9e64483fa57
sha256sums = ff0156309470fc1d378fd2e104338020a884295e285972cc88e250e031cc35b9
sha256sums = 2460adccd3362fefd4cdc5f1c70f332d7b578091fb9167bf88b5f91265bbd776
+ sha256sums = ce9b235c053ac85a9da86fba3b60fcfc48d36a8bd789b94ed79d5d571bc7b0aa
pkgname = xorg-server-dev
pkgdesc = Xorg X server - Bleeding edge version
@@ -163,7 +165,7 @@ pkgname = xorg-server-common-dev
depends = xorg-xkbcomp
depends = xorg-setxkbmap
depends = xorg-fonts-misc
- provides = xorg-server-common=1.19.6-1
+ provides = xorg-server-common=1.19.6-2
conflicts = xorg-server-common
pkgname = xorg-server-devel-dev
diff --git a/PKGBUILD b/PKGBUILD
index b86185e4d186..59a4f7a246d0 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -4,7 +4,7 @@
_pkgbase=xorg-server
pkgname=('xorg-server-dev' 'xorg-server-xephyr-dev' 'xorg-server-xdmx-dev' 'xorg-server-xvfb-dev' 'xorg-server-xnest-dev' 'xorg-server-xwayland-dev' 'xorg-server-common-dev' 'xorg-server-devel-dev')
pkgver=1.19.6 # http://lists.x.org/archives/xorg/2017-December/059095.html
-pkgrel=1
+pkgrel=2 # https://git.archlinux.org/svntogit/packages.git/commit/trunk?h=packages/xorg-server&id=f29308c7c456c903e507602cd9c51d9577b3c655
arch=('x86_64')
license=('custom')
groups=('xorg')
@@ -20,7 +20,8 @@ source=(${url}/releases/individual/xserver/${_pkgbase}-${pkgver}.tar.bz2{,.sig}
nvidia-add-modulepath-support.patch
xserver-autobind-hotplug.patch
xvfb-run
- xvfb-run.1)
+ xvfb-run.1
+ udev-changes.diff)
validpgpkeys=('7B27A3F1A6E18CD9588B4AE8310180050905E40C'
'C383B778255613DFDB409D91DB221A6900000011'
'DD38563A8A8224537D1F90E45B8A2D50A0ECD0D3'
@@ -30,7 +31,8 @@ sha256sums=('3c0e4a354a6b1d5d357b121357946ee8ffdb2f52158b2e63e105be9cef013168'
'914a8d775b708f836ae3f0eeca553da3872727a2e4262190f4d5c01241cb14e8'
'fcaf536e4fc307958923b58f2baf3d3102ad694efc28506f6f95a9e64483fa57'
'ff0156309470fc1d378fd2e104338020a884295e285972cc88e250e031cc35b9'
- '2460adccd3362fefd4cdc5f1c70f332d7b578091fb9167bf88b5f91265bbd776')
+ '2460adccd3362fefd4cdc5f1c70f332d7b578091fb9167bf88b5f91265bbd776'
+ 'ce9b235c053ac85a9da86fba3b60fcfc48d36a8bd789b94ed79d5d571bc7b0aa')
prepare() {
cd "${_pkgbase}-${pkgver}"
@@ -41,6 +43,10 @@ prepare() {
msg2 "patch from Fedora, not yet merged"
patch -Np1 -i ../xserver-autobind-hotplug.patch
+ msg2 "https://bugs.archlinux.org/task/56804
+ https://bugs.freedesktop.org/show_bug.cgi?id=104382"
+ patch -Rp1 -i ../udev-changes.diff
+
msg2 "Starting autoreconf..."
autoreconf -vfi
}
diff --git a/udev-changes.diff b/udev-changes.diff
new file mode 100644
index 000000000000..28490f90c2f7
--- /dev/null
+++ b/udev-changes.diff
@@ -0,0 +1,105 @@
+From 5a5b6d6cca469521daa6ac9087f3589b7489ab55 Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer@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@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
+
+