From 75b0133774bb4069865e892304e78ade1964c7ff Mon Sep 17 00:00:00 2001 From: Britney Fransen Date: Tue, 23 Jun 2015 19:40:40 +0000 Subject: xorg-server: update to 1.17.2 --- ...accelerated-valuators-to-the-ValuatorMask.patch | 210 +++++++++++++++++++++ ...001-dix-fix-zaphod-screen-scrossing-54654.patch | 42 ----- ...-hook-up-the-unaccelerated-valuator-masks.patch | 134 +++++++++++++ abs/core/xorg-server/10-quirks.conf | 10 - abs/core/xorg-server/PKGBUILD | 143 ++++++++------ abs/core/xorg-server/Xwrapper.config | 3 + abs/core/xorg-server/__changelog | 5 +- abs/core/xorg-server/autoconfig-nvidia.patch | 28 --- abs/core/xorg-server/nvidia-drm-outputclass.conf | 6 + abs/core/xorg-server/xorg-server.install | 18 ++ 10 files changed, 463 insertions(+), 136 deletions(-) create mode 100644 abs/core/xorg-server/0001-dix-Add-unaccelerated-valuators-to-the-ValuatorMask.patch delete mode 100644 abs/core/xorg-server/0001-dix-fix-zaphod-screen-scrossing-54654.patch create mode 100644 abs/core/xorg-server/0002-dix-hook-up-the-unaccelerated-valuator-masks.patch delete mode 100644 abs/core/xorg-server/10-quirks.conf create mode 100644 abs/core/xorg-server/Xwrapper.config delete mode 100644 abs/core/xorg-server/autoconfig-nvidia.patch create mode 100644 abs/core/xorg-server/nvidia-drm-outputclass.conf create mode 100644 abs/core/xorg-server/xorg-server.install diff --git a/abs/core/xorg-server/0001-dix-Add-unaccelerated-valuators-to-the-ValuatorMask.patch b/abs/core/xorg-server/0001-dix-Add-unaccelerated-valuators-to-the-ValuatorMask.patch new file mode 100644 index 0000000..86744f1 --- /dev/null +++ b/abs/core/xorg-server/0001-dix-Add-unaccelerated-valuators-to-the-ValuatorMask.patch @@ -0,0 +1,210 @@ +From e1a7f4bb5333b0271d29f785eb55f1c3273e626a Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +Date: Tue, 5 May 2015 14:18:54 +1000 +Subject: [PATCH] dix: Add unaccelerated valuators to the ValuatorMask + +Allows a mask to carry both accelerated and unaccelerated motion at the same +time. + +This is required for xf86-input-libinput where the pointer acceleration +happens in libinput already, but parts of the server, specifically raw events +and DGA rely on device-specific unaccelerated data. + +To ease integration add this as a second set to the ValuatorMask rather than +extending all APIs to carry a second, possibly NULL set of valuators. + +Note that a valuator mask should only be used in either accel/unaccel or +standard mode at any time. Switching requires either a valuator_mask_zero() +call or unsetting all valuators one-by-one. Trying to mix the two will produce +a warning. + +The server has a shortcut for changing a mask with the +valuator_mask_drop_unaccelerated() call. This saves us from having to loop +through all valuators on every event, we can just drop the bits we know we +don't want. + +Signed-off-by: Peter Hutterer +Reviewed-by: Hans de Goede +--- + dix/inpututils.c | 82 +++++++++++++++++++++++++++++++++++++++--- + hw/xfree86/common/xf86Module.h | 2 +- + include/input.h | 15 ++++++++ + include/inpututils.h | 2 ++ + 4 files changed, 95 insertions(+), 6 deletions(-) + +diff --git a/dix/inpututils.c b/dix/inpututils.c +index 5c2a32d..1363988 100644 +--- a/dix/inpututils.c ++++ b/dix/inpututils.c +@@ -505,11 +505,8 @@ valuator_mask_isset(const ValuatorMask *mask, int valuator) + return mask->last_bit >= valuator && BitIsOn(mask->mask, valuator); + } + +-/** +- * Set the valuator to the given floating-point data. +- */ +-void +-valuator_mask_set_double(ValuatorMask *mask, int valuator, double data) ++static inline void ++_valuator_mask_set_double(ValuatorMask *mask, int valuator, double data) + { + mask->last_bit = max(valuator, mask->last_bit); + SetBit(mask->mask, valuator); +@@ -517,6 +514,17 @@ valuator_mask_set_double(ValuatorMask *mask, int valuator, double data) + } + + /** ++ * Set the valuator to the given floating-point data. ++ */ ++void ++valuator_mask_set_double(ValuatorMask *mask, int valuator, double data) ++{ ++ BUG_WARN_MSG(mask->has_unaccelerated, ++ "Do not mix valuator types, zero mask first\n"); ++ _valuator_mask_set_double(mask, valuator, data); ++} ++ ++/** + * Set the valuator to the given integer data. + */ + void +@@ -594,11 +602,15 @@ valuator_mask_unset(ValuatorMask *mask, int valuator) + + ClearBit(mask->mask, valuator); + mask->valuators[valuator] = 0.0; ++ mask->unaccelerated[valuator] = 0.0; + + for (i = 0; i <= mask->last_bit; i++) + if (valuator_mask_isset(mask, i)) + lastbit = max(lastbit, i); + mask->last_bit = lastbit; ++ ++ if (mask->last_bit == -1) ++ mask->has_unaccelerated = FALSE; + } + } + +@@ -611,6 +623,66 @@ valuator_mask_copy(ValuatorMask *dest, const ValuatorMask *src) + valuator_mask_zero(dest); + } + ++Bool ++valuator_mask_has_unaccelerated(const ValuatorMask *mask) ++{ ++ return mask->has_unaccelerated; ++} ++ ++void ++valuator_mask_drop_unaccelerated(ValuatorMask *mask) ++{ ++ memset(mask->unaccelerated, 0, sizeof(mask->unaccelerated)); ++ mask->has_unaccelerated = FALSE; ++} ++ ++/** ++ * Set both accelerated and unaccelerated value for this mask. ++ */ ++void ++valuator_mask_set_unaccelerated(ValuatorMask *mask, ++ int valuator, ++ double accel, ++ double unaccel) ++{ ++ BUG_WARN_MSG(mask->last_bit != -1 && !mask->has_unaccelerated, ++ "Do not mix valuator types, zero mask first\n"); ++ _valuator_mask_set_double(mask, valuator, accel); ++ mask->has_unaccelerated = TRUE; ++ mask->unaccelerated[valuator] = unaccel; ++} ++ ++double ++valuator_mask_get_accelerated(const ValuatorMask *mask, ++ int valuator) ++{ ++ return valuator_mask_get_double(mask, valuator); ++} ++ ++double ++valuator_mask_get_unaccelerated(const ValuatorMask *mask, ++ int valuator) ++{ ++ return mask->unaccelerated[valuator]; ++} ++ ++Bool ++valuator_mask_fetch_unaccelerated(const ValuatorMask *mask, ++ int valuator, ++ double *accel, ++ double *unaccel) ++{ ++ if (valuator_mask_isset(mask, valuator)) { ++ if (accel) ++ *accel = valuator_mask_get_accelerated(mask, valuator); ++ if (unaccel) ++ *unaccel = valuator_mask_get_unaccelerated(mask, valuator); ++ return TRUE; ++ } ++ else ++ return FALSE; ++} ++ + int + CountBits(const uint8_t * mask, int len) + { +diff --git a/hw/xfree86/common/xf86Module.h b/hw/xfree86/common/xf86Module.h +index e68fe9c..6133641 100644 +--- a/hw/xfree86/common/xf86Module.h ++++ b/hw/xfree86/common/xf86Module.h +@@ -81,7 +81,7 @@ typedef enum { + */ + #define ABI_ANSIC_VERSION SET_ABI_VERSION(0, 4) + #define ABI_VIDEODRV_VERSION SET_ABI_VERSION(19, 0) +-#define ABI_XINPUT_VERSION SET_ABI_VERSION(21, 0) ++#define ABI_XINPUT_VERSION SET_ABI_VERSION(21, 1) + #define ABI_EXTENSION_VERSION SET_ABI_VERSION(9, 0) + #define ABI_FONT_VERSION SET_ABI_VERSION(0, 6) + +diff --git a/include/input.h b/include/input.h +index bf22dc7..0a4c4f7 100644 +--- a/include/input.h ++++ b/include/input.h +@@ -674,6 +674,21 @@ extern _X_EXPORT Bool valuator_mask_fetch(const ValuatorMask *mask, + extern _X_EXPORT Bool valuator_mask_fetch_double(const ValuatorMask *mask, + int valnum, double *val); + ++extern _X_EXPORT Bool valuator_mask_has_unaccelerated(const ValuatorMask *mask); ++extern _X_EXPORT void valuator_mask_set_unaccelerated(ValuatorMask *mask, ++ int valuator, ++ double accel, ++ double unaccel); ++extern _X_EXPORT double valuator_mask_get_accelerated(const ValuatorMask *mask, ++ int valuator); ++extern _X_EXPORT double valuator_mask_get_unaccelerated(const ValuatorMask *mask, ++ int valuator); ++extern _X_EXPORT Bool valuator_mask_fetch_unaccelerated(const ValuatorMask *mask, ++ int valuator, ++ double *accel, ++ double *unaccel); ++extern _X_HIDDEN void valuator_mask_drop_unaccelerated(ValuatorMask *mask); ++ + /* InputOption handling interface */ + extern _X_EXPORT InputOption *input_option_new(InputOption *list, + const char *key, +diff --git a/include/inpututils.h b/include/inpututils.h +index 53c96ba..4e90815 100644 +--- a/include/inpututils.h ++++ b/include/inpututils.h +@@ -36,8 +36,10 @@ extern Mask event_filters[MAXDEVICES][MAXEVENTS]; + + struct _ValuatorMask { + int8_t last_bit; /* highest bit set in mask */ ++ int8_t has_unaccelerated; + uint8_t mask[(MAX_VALUATORS + 7) / 8]; + double valuators[MAX_VALUATORS]; /* valuator data */ ++ double unaccelerated[MAX_VALUATORS]; /* valuator data */ + }; + + extern void verify_internal_event(const InternalEvent *ev); +-- +2.4.1 + diff --git a/abs/core/xorg-server/0001-dix-fix-zaphod-screen-scrossing-54654.patch b/abs/core/xorg-server/0001-dix-fix-zaphod-screen-scrossing-54654.patch deleted file mode 100644 index e3e42d4..0000000 --- a/abs/core/xorg-server/0001-dix-fix-zaphod-screen-scrossing-54654.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 29d84d5a7ca4cc12cce47de9313adeb8554fb894 Mon Sep 17 00:00:00 2001 -From: Peter Hutterer -Date: Thu, 18 Oct 2012 15:11:31 +1000 -Subject: [PATCH] dix: fix zaphod screen scrossing (#54654) - -POINTER_SCREEN coordinates are screen-relative. For a Zaphod setup, the -coordinates after a screen crossing are already relative to the new screen's -origin. Add that offset to the coordinates before re-setting. - -regression introduced by -commit bafbd99080be49a17be97d2cc758fbe623369945 -Author: Peter Hutterer -Date: Wed Aug 8 11:34:32 2012 +1000 - - dix: work around scaling issues during WarpPointer (#53037) - -X.Org Bug 54654 - -Signed-off-by: Peter Hutterer ---- - dix/getevents.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/dix/getevents.c b/dix/getevents.c -index 71d83c4..8b4379d 100644 ---- a/dix/getevents.c -+++ b/dix/getevents.c -@@ -1400,8 +1400,9 @@ fill_pointer_events(InternalEvent *events, DeviceIntPtr pDev, int type, - coordinates were. - */ - if (flags & POINTER_SCREEN) { -- screenx = sx; -- screeny = sy; -+ scr = miPointerGetScreen(pDev); -+ screenx = sx + scr->x; -+ screeny = sy + scr->y; - } - - scr = positionSprite(pDev, (flags & POINTER_ABSOLUTE) ? Absolute : Relative, --- -1.7.11.7 - diff --git a/abs/core/xorg-server/0002-dix-hook-up-the-unaccelerated-valuator-masks.patch b/abs/core/xorg-server/0002-dix-hook-up-the-unaccelerated-valuator-masks.patch new file mode 100644 index 0000000..6b8b1e5 --- /dev/null +++ b/abs/core/xorg-server/0002-dix-hook-up-the-unaccelerated-valuator-masks.patch @@ -0,0 +1,134 @@ +From 7504fbd2239257f1a00a1a15d02862eea81f167c Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +Date: Tue, 5 May 2015 14:48:41 +1000 +Subject: [PATCH] dix: hook up the unaccelerated valuator masks + +If present, access the unaccelerated valuator mask values for DGA and XI2 raw +events. + +Signed-off-by: Peter Hutterer +Reviewed-by: Hans de Goede +--- + dix/getevents.c | 31 ++++++++++++++++++++++--------- + hw/xfree86/common/xf86Xinput.c | 4 ++++ + 2 files changed, 26 insertions(+), 9 deletions(-) + +diff --git a/dix/getevents.c b/dix/getevents.c +index 6fb12c5..64bf76e 100644 +--- a/dix/getevents.c ++++ b/dix/getevents.c +@@ -213,14 +213,25 @@ init_raw(DeviceIntPtr dev, RawDeviceEvent *event, Time ms, int type, int detail) + } + + static void +-set_raw_valuators(RawDeviceEvent *event, ValuatorMask *mask, double *data) ++set_raw_valuators(RawDeviceEvent *event, ValuatorMask *mask, ++ BOOL use_unaccel, double *data) + { + int i; + ++ use_unaccel = use_unaccel && valuator_mask_has_unaccelerated(mask); ++ + for (i = 0; i < valuator_mask_size(mask); i++) { + if (valuator_mask_isset(mask, i)) { ++ double v; ++ + SetBit(event->valuators.mask, i); +- data[i] = valuator_mask_get_double(mask, i); ++ ++ if (use_unaccel) ++ v = valuator_mask_get_unaccelerated(mask, i); ++ else ++ v = valuator_mask_get_double(mask, i); ++ ++ data[i] = v; + } + } + } +@@ -1138,11 +1149,11 @@ GetKeyboardEvents(InternalEvent *events, DeviceIntPtr pDev, int type, + valuator_mask_copy(&mask, mask_in); + + init_raw(pDev, raw, ms, type, key_code); +- set_raw_valuators(raw, &mask, raw->valuators.data_raw); ++ set_raw_valuators(raw, &mask, TRUE, raw->valuators.data_raw); + + clipValuators(pDev, &mask); + +- set_raw_valuators(raw, &mask, raw->valuators.data); ++ set_raw_valuators(raw, &mask, FALSE, raw->valuators.data); + + event = &events->device_event; + init_device_event(event, pDev, ms); +@@ -1423,9 +1434,11 @@ fill_pointer_events(InternalEvent *events, DeviceIntPtr pDev, int type, + num_events++; + + init_raw(pDev, raw, ms, type, buttons); +- set_raw_valuators(raw, &mask, raw->valuators.data_raw); ++ set_raw_valuators(raw, &mask, TRUE, raw->valuators.data_raw); + } + ++ valuator_mask_drop_unaccelerated(&mask); ++ + /* valuators are in driver-native format (rel or abs) */ + + if (flags & POINTER_ABSOLUTE) { +@@ -1438,7 +1451,7 @@ fill_pointer_events(InternalEvent *events, DeviceIntPtr pDev, int type, + transformAbsolute(pDev, &mask); + clipAbsolute(pDev, &mask); + if ((flags & POINTER_NORAW) == 0 && raw) +- set_raw_valuators(raw, &mask, raw->valuators.data); ++ set_raw_valuators(raw, &mask, FALSE, raw->valuators.data); + } + else { + transformRelative(pDev, &mask); +@@ -1446,7 +1459,7 @@ fill_pointer_events(InternalEvent *events, DeviceIntPtr pDev, int type, + if (flags & POINTER_ACCELERATE) + accelPointer(pDev, &mask, ms); + if ((flags & POINTER_NORAW) == 0 && raw) +- set_raw_valuators(raw, &mask, raw->valuators.data); ++ set_raw_valuators(raw, &mask, FALSE, raw->valuators.data); + + moveRelative(pDev, flags, &mask); + } +@@ -1951,7 +1964,7 @@ GetTouchEvents(InternalEvent *events, DeviceIntPtr dev, uint32_t ddx_touchid, + events++; + num_events++; + init_raw(dev, raw, ms, type, client_id); +- set_raw_valuators(raw, &mask, raw->valuators.data_raw); ++ set_raw_valuators(raw, &mask, TRUE, raw->valuators.data_raw); + } + + event = &events->device_event; +@@ -2013,7 +2026,7 @@ GetTouchEvents(InternalEvent *events, DeviceIntPtr dev, uint32_t ddx_touchid, + screeny = dev->spriteInfo->sprite->hotPhys.y; + } + if (need_rawevent) +- set_raw_valuators(raw, &mask, raw->valuators.data); ++ set_raw_valuators(raw, &mask, FALSE, raw->valuators.data); + + /* Indirect device touch coordinates are not used for cursor positioning. + * They are merely informational, and are provided in device coordinates. +diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c +index 1fb5b16..5ce4c71 100644 +--- a/hw/xfree86/common/xf86Xinput.c ++++ b/hw/xfree86/common/xf86Xinput.c +@@ -1137,12 +1137,16 @@ xf86CheckMotionEvent4DGA(DeviceIntPtr device, int is_absolute, + dx = valuator_mask_get(mask, 0); + if (is_absolute) + dx -= device->last.valuators[0]; ++ else if (valuator_mask_has_unaccelerated(mask)) ++ dx = valuator_mask_get_unaccelerated(mask, 0); + } + + if (valuator_mask_isset(mask, 1)) { + dy = valuator_mask_get(mask, 1); + if (is_absolute) + dy -= device->last.valuators[1]; ++ else if (valuator_mask_has_unaccelerated(mask)) ++ dy = valuator_mask_get_unaccelerated(mask, 1); + } + + if (DGAStealMotionEvent(device, idx, dx, dy)) +-- +2.4.1 + diff --git a/abs/core/xorg-server/10-quirks.conf b/abs/core/xorg-server/10-quirks.conf deleted file mode 100644 index 7afad22..0000000 --- a/abs/core/xorg-server/10-quirks.conf +++ /dev/null @@ -1,10 +0,0 @@ -# Collection of quirks and blacklist/whitelists for specific devices. - - -# Accelerometer device, posts data through ABS_X/ABS_Y, making X unusable -# http://bugs.freedesktop.org/show_bug.cgi?id=22442 -Section "InputClass" - Identifier "ThinkPad HDAPS accelerometer blacklist" - MatchProduct "ThinkPad HDAPS accelerometer data" - Option "Ignore" "on" -EndSection diff --git a/abs/core/xorg-server/PKGBUILD b/abs/core/xorg-server/PKGBUILD index 3b6fee0..f84da16 100644 --- a/abs/core/xorg-server/PKGBUILD +++ b/abs/core/xorg-server/PKGBUILD @@ -1,45 +1,49 @@ -# $Id: PKGBUILD 169327 2012-10-19 14:00:03Z andyrtr $ +# $Id$ +# Maintainer: AndyRTR # Maintainer: Jan de Groot pkgbase=xorg-server -pkgname=('xorg-server' 'xorg-server-xephyr' 'xorg-server-xdmx' 'xorg-server-xvfb' 'xorg-server-xnest' 'xorg-server-common' 'xorg-server-devel') -pkgver=1.13.0 -pkgrel=3 +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.17.2 +pkgrel=1 # build first with 0.1 and then rebuild it after xf86-input-evdev rebuild arch=('i686' 'x86_64') license=('custom') url="http://xorg.freedesktop.org" -makedepends=('pixman' 'libx11' 'mesa' 'libgl' 'xf86driproto' 'xcmiscproto' 'xtrans' 'bigreqsproto' 'randrproto' 'inputproto' 'fontsproto' 'videoproto' - 'compositeproto' 'recordproto' 'scrnsaverproto' 'resourceproto' 'xineramaproto' 'libxkbfile' 'libxfont' 'renderproto' 'libpciaccess' - 'libxv' 'xf86dgaproto' 'libxmu' 'libxrender' 'libxi' 'dmxproto' 'libxaw' 'libdmx' 'libxtst' 'libxres' 'xorg-xkbcomp' 'xorg-util-macros' - 'xorg-font-util' 'glproto' 'dri2proto' 'libgcrypt') -options=('!libtool') -source=(${url}/releases/individual/xserver/${pkgbase}-${pkgver}.tar.bz2 - autoconfig-nvidia.patch - autoconfig-sis.patch +makedepends=('pixman' 'libx11' 'mesa' 'mesa-libgl' 'xf86driproto' 'xcmiscproto' 'xtrans' 'bigreqsproto' 'randrproto' + 'inputproto' 'fontsproto' 'videoproto' 'presentproto' 'compositeproto' 'recordproto' 'scrnsaverproto' + 'resourceproto' 'xineramaproto' 'libxkbfile' 'libxfont' 'renderproto' 'libpciaccess' 'libxv' + 'xf86dgaproto' 'libxmu' 'libxrender' 'libxi' 'dmxproto' 'libxaw' 'libdmx' 'libxtst' 'libxres' + 'xorg-xkbcomp' 'xorg-util-macros' 'xorg-font-util' 'glproto' 'dri2proto' 'libgcrypt' 'libepoxy' + 'xcb-util' 'xcb-util-image' 'xcb-util-renderutil' 'xcb-util-wm' 'xcb-util-keysyms' 'dri3proto' + 'libxshmfence' 'libunwind') +source=(${url}/releases/individual/xserver/${pkgbase}-${pkgver}.tar.bz2{,.sig} + nvidia-drm-outputclass.conf xvfb-run xvfb-run.1 - 10-quirks.conf - 0001-dix-fix-zaphod-screen-scrossing-54654.patch) -sha256sums=('548b91cb01087ad4f892428e7ac4955251cf12393e86c70420436b33848ef28a' - '66e25f76a7496c429e0aff4b0670f168719bb0ceaeb88c6f2272f2bf3ed21162' - 'd027776fac1f7675b0a9ee817502290b1c45f9c09b0f0a6bb058c35f92361e84' + 0001-dix-Add-unaccelerated-valuators-to-the-ValuatorMask.patch + 0002-dix-hook-up-the-unaccelerated-valuator-masks.patch + Xwrapper.config) +validpgpkeys=('7B27A3F1A6E18CD9588B4AE8310180050905E40C' + 'C383B778255613DFDB409D91DB221A6900000011' + 'DD38563A8A8224537D1F90E45B8A2D50A0ECD0D3') +sha256sums=('f61120612728f2c5034671d0ca3e2273438c60aba93b3dda4a8aa40e6a257993' + 'SKIP' + 'af1c3d2ea5de7f6a6b5f7c60951a189a4749d1495e5462f3157ae7ac8fe1dc56' 'ff0156309470fc1d378fd2e104338020a884295e285972cc88e250e031cc35b9' '2460adccd3362fefd4cdc5f1c70f332d7b578091fb9167bf88b5f91265bbd776' - '94612f5c0d34a3b7152915c2e285c7b462e9d8e38d3539bd551a339498eac166' - '23861814b4283ca3fe43aae6e88ee82bcbae5713bf88eabeaef7beb94efe9707') + '3dc795002b8763a7d29db94f0af200131da9ce5ffc233bfd8916060f83a8fad7' + '416a1422eed71efcebb1d893de74e7f27e408323a56c4df003db37f5673b3f96' + 'SKIP') + +prepare() { + cd "${pkgbase}-${pkgver}" + # fix FS#45229, merged upstream + patch -Np1 -i ../0001-dix-Add-unaccelerated-valuators-to-the-ValuatorMask.patch + patch -Np1 -i ../0002-dix-hook-up-the-unaccelerated-valuator-masks.patch +} build() { - cd "${srcdir}/${pkgbase}-${pkgver}" - - # Use nouveau/nv/nvidia drivers for nvidia devices - patch -Np1 -i "${srcdir}/autoconfig-nvidia.patch" - - # Use unofficial imedia SiS driver for supported SiS devices - patch -Np0 -i "${srcdir}/autoconfig-sis.patch" - - # https://bugs.archlinux.org/task/31959 / https://bugs.freedesktop.org/show_bug.cgi?id=54654 - patch -Np1 -i ${srcdir}/0001-dix-fix-zaphod-screen-scrossing-54654.patch - + cd "${pkgbase}-${pkgver}" autoreconf -fi ./configure --prefix=/usr \ --enable-ipv6 \ @@ -49,25 +53,35 @@ build() { --enable-xnest \ --enable-composite \ --enable-xcsecurity \ + --enable-libunwind \ --enable-xorg \ --enable-xephyr \ + --enable-glamor \ + --enable-xwayland \ --enable-glx-tls \ --enable-kdrive \ --enable-kdrive-evdev \ --enable-kdrive-kbd \ --enable-kdrive-mouse \ - --enable-install-setuid \ --enable-config-udev \ - --disable-config-dbus \ + --disable-systemd-logind \ + --enable-suid-wrapper \ + --enable-install-setuid \ --enable-record \ --disable-xfbdev \ --disable-xfake \ --disable-static \ - --sysconfdir=/etc/X11 \ + --libexecdir=/usr/lib/xorg-server \ + --sysconfdir=/etc \ --localstatedir=/var \ --with-xkb-path=/usr/share/X11/xkb \ --with-xkb-output=/var/lib/xkb \ - --with-fontrootdir=/usr/share/fonts + --with-fontrootdir=/usr/share/fonts \ + --with-sha1=libgcrypt + +# --without-dtrace \ +# --disable-linux-acpi --disable-linux-apm \ + make # Disable subdirs for make install rule to make splitting easier @@ -75,14 +89,16 @@ build() { -e 's/^XVFB_SUBDIRS =.*/XVFB_SUBDIRS =/' \ -e 's/^XNEST_SUBDIRS =.*/XNEST_SUBDIRS = /' \ -e 's/^KDRIVE_SUBDIRS =.*/KDRIVE_SUBDIRS =/' \ + -e 's/^XWAYLAND_SUBDIRS =.*/XWAYLAND_SUBDIRS =/' \ -i hw/Makefile } package_xorg-server-common() { pkgdesc="Xorg server common files" - depends=('xkeyboard-config' 'xorg-xkbcomp' 'xorg-setxkbmap' 'xorg-fonts-misc') + depends=('xkeyboard-config' 'xorg-xkbcomp' 'xorg-setxkbmap' 'xorg-fonts-misc' + 'libunwind') - cd "${srcdir}/${pkgbase}-${pkgver}" + cd "${pkgbase}-${pkgver}" install -m755 -d "${pkgdir}/usr/share/licenses/xorg-server-common" install -m644 COPYING "${pkgdir}/usr/share/licenses/xorg-server-common" @@ -97,21 +113,24 @@ package_xorg-server-common() { package_xorg-server() { pkgdesc="Xorg X server" - depends=(libxdmcp libxfont libpciaccess libdrm pixman libgcrypt libxau xorg-server-common xf86-input-evdev) - backup=('etc/X11/xorg.conf.d/10-evdev.conf' 'etc/X11/xorg.conf.d/10-quirks.conf') - # see xorg-server-1.13.0/hw/xfree86/common/xf86Module.h for ABI versions - we provide major numbers that drivers can depend on - provides=('X-ABI-VIDEODRV_VERSION=13' 'X-ABI-XINPUT_VERSION=18' 'X-ABI-EXTENSION_VERSION=7.0' 'x-server') + depends=(libepoxy libxdmcp libxfont libpciaccess libdrm pixman libgcrypt libxau xorg-server-common xf86-input-evdev libxshmfence libgl) + # see xorg-server-*/hw/xfree86/common/xf86Module.h for ABI versions - we provide major numbers that drivers can depend on + # and /usr/lib/pkgconfig/xorg-server.pc in xorg-server-devel pkg + provides=('X-ABI-VIDEODRV_VERSION=19' 'X-ABI-XINPUT_VERSION=21.1' 'X-ABI-EXTENSION_VERSION=9.0' 'x-server') groups=('xorg') - conflicts=('nvidia-utils<=290.10') + conflicts=('nvidia-utils<=331.20' 'glamor-egl' 'xf86-video-modesetting') + replaces=('glamor-egl' 'xf86-video-modesetting') + install=xorg-server.install - cd "${srcdir}/${pkgbase}-${pkgver}" + cd "${pkgbase}-${pkgver}" make DESTDIR="${pkgdir}" install - install -m755 -d "${pkgdir}/etc/X11" - mv "${pkgdir}/usr/share/X11/xorg.conf.d" "${pkgdir}/etc/X11/" - install -m644 "${srcdir}/10-quirks.conf" "${pkgdir}/etc/X11/xorg.conf.d/" + # distro specific files must be installed in /usr/share/X11/xorg.conf.d + install -m755 -d "${pkgdir}/etc/X11/xorg.conf.d" + install -m644 "${srcdir}/nvidia-drm-outputclass.conf" "${pkgdir}/usr/share/X11/xorg.conf.d/" - rmdir "${pkgdir}/usr/share/X11" + # LinHES Xwrapper.config + install -m644 "${srcdir}/Xwrapper.config" "${pkgdir}/etc/X11/Xwrapper.config" # Needed for non-mesa drivers, libgl will restore it mv "${pkgdir}/usr/lib/xorg/modules/extensions/libglx.so" \ @@ -132,9 +151,10 @@ package_xorg-server() { package_xorg-server-xephyr() { pkgdesc="A nested X server that runs as an X application" - depends=(libxfont libgl libgcrypt libxv pixman xorg-server-common) + depends=(libxfont libgl libepoxy libgcrypt libxv pixman xorg-server-common 'xcb-util-image' + 'xcb-util-renderutil' 'xcb-util-wm' 'xcb-util-keysyms') - cd "${srcdir}/${pkgbase}-${pkgver}/hw/kdrive" + cd "${pkgbase}-${pkgver}/hw/kdrive" make DESTDIR="${pkgdir}" install install -m755 -d "${pkgdir}/usr/share/licenses/xorg-server-xephyr" @@ -143,9 +163,9 @@ package_xorg-server-xephyr() { package_xorg-server-xvfb() { pkgdesc="Virtual framebuffer X server" - depends=(libxfont libxdmcp libxau libgcrypt pixman xorg-server-common) + depends=(libxfont libxdmcp libxau libgcrypt pixman xorg-server-common xorg-xauth libgl) - cd "${srcdir}/${pkgbase}-${pkgver}/hw/vfb" + cd "${pkgbase}-${pkgver}/hw/vfb" make DESTDIR="${pkgdir}" install install -m755 "${srcdir}/xvfb-run" "${pkgdir}/usr/bin/" @@ -157,9 +177,9 @@ package_xorg-server-xvfb() { package_xorg-server-xnest() { pkgdesc="A nested X server that runs as an X application" - depends=(libxfont libxext libgcrypt pixman xorg-server-common) + depends=(libxfont libxext libgcrypt pixman xorg-server-common libsystemd) - cd "${srcdir}/${pkgbase}-${pkgver}/hw/xnest" + cd "${pkgbase}-${pkgver}/hw/xnest" make DESTDIR="${pkgdir}" install install -m755 -d "${pkgdir}/usr/share/licenses/xorg-server-xnest" @@ -170,23 +190,35 @@ package_xorg-server-xdmx() { pkgdesc="Distributed Multihead X Server and utilities" depends=(libxfont libxi libgcrypt libxaw libxrender libdmx libxfixes pixman xorg-server-common) - cd "${srcdir}/${pkgbase}-${pkgver}/hw/dmx" + cd "${pkgbase}-${pkgver}/hw/dmx" make DESTDIR="${pkgdir}" install install -m755 -d "${pkgdir}/usr/share/licenses/xorg-server-xdmx" ln -sf ../xorg-server-common/COPYING "${pkgdir}/usr/share/licenses/xorg-server-xdmx/COPYING" } +package_xorg-server-xwayland() { + pkgdesc="run X clients under wayland" + depends=(libxfont libepoxy libgl pixman xorg-server-common) + + cd "${pkgbase}-${pkgver}/hw/xwayland" + make DESTDIR="${pkgdir}" install + + install -m755 -d "${pkgdir}/usr/share/licenses/xorg-server-xwayland" + ln -sf ../xorg-server-common/COPYING "${pkgdir}/usr/share/licenses/xorg-server-xwayland/COPYING" +} + package_xorg-server-devel() { pkgdesc="Development files for the X.Org X server" depends=(# see pkgdir/usr/lib/pkgconfig/xorg-server.pc xproto randrproto renderproto xextproto inputproto kbproto fontsproto pixman videoproto xf86driproto glproto - mesa dri2proto xineramaproto libpciaccess + mesa dri2proto dri3proto xineramaproto libpciaccess + resourceproto scrnsaverproto presentproto # not technically required but almost every Xorg pkg needs it to build xorg-util-macros) - cd "${srcdir}/${pkgbase}-${pkgver}" + cd "${pkgbase}-${pkgver}" make DESTDIR="${pkgdir}" install rm -rf "${pkgdir}/usr/bin" @@ -194,6 +226,7 @@ package_xorg-server-devel() { rm -rf "${pkgdir}/usr/share/doc" rm -rf "${pkgdir}/usr/share/X11" rm -rf "${pkgdir}/usr/lib/xorg" + rm -rf "${pkgdir}/usr/lib/xorg-server" rm -rf "${pkgdir}/var" install -m755 -d "${pkgdir}/usr/share/licenses/xorg-server-devel" diff --git a/abs/core/xorg-server/Xwrapper.config b/abs/core/xorg-server/Xwrapper.config new file mode 100644 index 0000000..2b9a582 --- /dev/null +++ b/abs/core/xorg-server/Xwrapper.config @@ -0,0 +1,3 @@ +#see man Xorg.wrap for these options +allowed_users = anybody +#needs_root_rights = yes diff --git a/abs/core/xorg-server/__changelog b/abs/core/xorg-server/__changelog index a0d578e..1d44956 100644 --- a/abs/core/xorg-server/__changelog +++ b/abs/core/xorg-server/__changelog @@ -1,2 +1,5 @@ placeholder to prevent auto update. -pixman cache bug +PKGBUILD - Change configure options: + --disable-systemd-logind \ + --enable-install-setuid \ +PKGBUILD - Add Xwrapper.config file diff --git a/abs/core/xorg-server/autoconfig-nvidia.patch b/abs/core/xorg-server/autoconfig-nvidia.patch deleted file mode 100644 index 6d5220a..0000000 --- a/abs/core/xorg-server/autoconfig-nvidia.patch +++ /dev/null @@ -1,28 +0,0 @@ -diff -Nur xorg-server-1.11.99.902.orig/hw/xfree86/common/xf86pciBus.c xorg-server-1.11.99.902/hw/xfree86/common/xf86pciBus.c ---- xorg-server-1.11.99.902.orig/hw/xfree86/common/xf86pciBus.c 2012-02-10 10:10:37.583014924 +0000 -+++ xorg-server-1.11.99.902/hw/xfree86/common/xf86pciBus.c 2012-02-10 11:16:07.148971317 +0000 -@@ -1144,7 +1144,23 @@ - int idx = 0; - - #ifdef __linux__ -- driverList[idx++] = "nouveau"; -+ switch (dev->device_id) -+ { -+ /* NV1 */ -+ case 0x0008: -+ case 0x0009: -+ driverList[idx++] = "vesa"; -+ break; -+ /* NV3 */ -+ case 0x0018: -+ case 0x0019: -+ driverList[idx++] = "nouveau"; -+ break; -+ default: -+ driverList[idx++] = "nouveau"; -+ driverList[idx++] = "nvidia"; -+ break; -+ } - #endif - driverList[idx++] = "nv"; - break; diff --git a/abs/core/xorg-server/nvidia-drm-outputclass.conf b/abs/core/xorg-server/nvidia-drm-outputclass.conf new file mode 100644 index 0000000..40c1e08 --- /dev/null +++ b/abs/core/xorg-server/nvidia-drm-outputclass.conf @@ -0,0 +1,6 @@ +Section "OutputClass" + Identifier "nvidia" + MatchDriver "nvidia-drm" + Driver "nvidia" +EndSection + diff --git a/abs/core/xorg-server/xorg-server.install b/abs/core/xorg-server/xorg-server.install new file mode 100644 index 0000000..46bf5a9 --- /dev/null +++ b/abs/core/xorg-server/xorg-server.install @@ -0,0 +1,18 @@ +post_upgrade() { + if (( $(vercmp $2 1.16.0-3) < 0 )); then + post_install + fi +} + +post_install() { + cat <>> xorg-server has now the ability to run without root rights with + the help of systemd-logind. xserver will fail to run if not launched + from the same virtual terminal as was used to log in. + Without root rights, log files will be in ~/.local/share/xorg/ directory. + + Old behavior can be restored through Xorg.wrap config file. + See Xorg.wrap man page (man xorg.wrap). +MSG +} + -- cgit v0.12