diff options
-rw-r--r-- | .SRCINFO | 6 | ||||
-rw-r--r-- | PKGBUILD | 12 | ||||
-rw-r--r-- | udev-changes.diff | 105 |
3 files changed, 118 insertions, 5 deletions
@@ -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 @@ -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 + + |