summaryrefslogtreecommitdiff
path: root/libre
diff options
context:
space:
mode:
Diffstat (limited to 'libre')
-rw-r--r--libre/xorg-server-libre/10-quirks.conf10
-rw-r--r--libre/xorg-server-libre/CVE-2013-6424.diff49
-rw-r--r--libre/xorg-server-libre/PKGBUILD101
-rw-r--r--libre/xorg-server-libre/autoconfig-nvidia-libre.patch26
-rw-r--r--libre/xorg-server-libre/glamor-upstream-fix.patch178
-rw-r--r--libre/xorg-server-libre/xorg-server.install18
6 files changed, 277 insertions, 105 deletions
diff --git a/libre/xorg-server-libre/10-quirks.conf b/libre/xorg-server-libre/10-quirks.conf
deleted file mode 100644
index 7afad22dc..000000000
--- a/libre/xorg-server-libre/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/libre/xorg-server-libre/CVE-2013-6424.diff b/libre/xorg-server-libre/CVE-2013-6424.diff
deleted file mode 100644
index 8c664b66e..000000000
--- a/libre/xorg-server-libre/CVE-2013-6424.diff
+++ /dev/null
@@ -1,49 +0,0 @@
-From patchwork Wed Oct 2 13:47:54 2013
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: exa: only draw valid trapezoids
-From: Maarten Lankhorst <maarten.lankhorst@canonical.com>
-X-Patchwork-Id: 14769
-Message-Id: <524C240A.9010607@canonical.com>
-To: "X.Org Devel List" <xorg-devel@lists.freedesktop.org>
-Date: Wed, 02 Oct 2013 15:47:54 +0200
-
-Fixes freedesktop.org bug https://bugs.freedesktop.org/show_bug.cgi?id=67484
-
-If t->bottom is close to MIN_INT, removing top can wraparound, so do the check properly.
-A similar fix should also be applied to pixman.
-
-Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
-
----
-
-
-diff --git a/exa/exa_render.c b/exa/exa_render.c
-index 172e2b5..807eeba 100644
---- a/exa/exa_render.c
-+++ b/exa/exa_render.c
-@@ -1141,7 +1141,8 @@ exaTrapezoids(CARD8 op, PicturePtr pSrc, PicturePtr pDst,
-
- exaPrepareAccess(pPicture->pDrawable, EXA_PREPARE_DEST);
- for (; ntrap; ntrap--, traps++)
-- (*ps->RasterizeTrapezoid) (pPicture, traps, -bounds.x1, -bounds.y1);
-+ if (xTrapezoidValid(traps))
-+ (*ps->RasterizeTrapezoid) (pPicture, traps, -bounds.x1, -bounds.y1);
- exaFinishAccess(pPicture->pDrawable, EXA_PREPARE_DEST);
-
- xRel = bounds.x1 + xSrc - xDst;
-diff --git a/render/picture.h b/render/picture.h
-index c85353a..fcd6401 100644
---- a/render/picture.h
-+++ b/render/picture.h
-@@ -211,7 +211,7 @@ typedef pixman_fixed_t xFixed;
- /* whether 't' is a well defined not obviously empty trapezoid */
- #define xTrapezoidValid(t) ((t)->left.p1.y != (t)->left.p2.y && \
- (t)->right.p1.y != (t)->right.p2.y && \
-- (int) ((t)->bottom - (t)->top) > 0)
-+ ((t)->bottom > (t)->top))
-
- /*
- * Standard NTSC luminance conversions:
-
diff --git a/libre/xorg-server-libre/PKGBUILD b/libre/xorg-server-libre/PKGBUILD
index 0f77ca01d..cd84a2066 100644
--- a/libre/xorg-server-libre/PKGBUILD
+++ b/libre/xorg-server-libre/PKGBUILD
@@ -1,12 +1,12 @@
-# $Id$
+# $Id: PKGBUILD 218446 2014-07-31 12:02:24Z lcarlier $
+# Maintainer (Parabola): Márcio Silva <coadde@parabola.nu>
# Maintainer: AndyRTR <andyrtr@archlinux.org>
# Maintainer: Jan de Groot <jgc@archlinux.org>
-# Maintainer (Parabola): Márcio Silva <coadde@parabola.nu>
pkgbase=xorg-server
pkgname=('xorg-server-libre')
-pkgver=1.15.2
-pkgrel=1 # build first with 0.1 and then rebuild it after xf86-input-evdev rebuild
+pkgver=1.16.0
+pkgrel=6 # 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"
@@ -14,44 +14,52 @@ makedepends=('pixman' 'libx11' 'mesa' 'mesa-libgl' 'xf86driproto' 'xcmiscproto'
'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'
+ 'xorg-xkbcomp' 'xorg-util-macros' 'xorg-font-util' 'glproto' 'dri2proto' 'libgcrypt' 'libepoxy'
'xcb-util' 'xcb-util-image' 'xcb-util-wm' 'xcb-util-keysyms' 'dri3proto' 'libxshmfence')
-source=(${url}/releases/individual/xserver/${pkgbase}-${pkgver}.tar.bz2
+source=(${url}/releases/individual/xserver/${pkgbase}-${pkgver}.tar.bz2{,.sig}
+ autoconfig-nvidia-libre.patch
autoconfig-sis.patch
+ glamor-upstream-fix.patch
xvfb-run
- xvfb-run.1
- 10-quirks.conf
- CVE-2013-6424.diff)
-sha256sums=('3c0585607c654ded836da43a45a75492fc13454ff4149704fb08dac39f051163'
+ xvfb-run.1)
+sha256sums=('38330a03c5f7a38745a3f9816cf069db5b8844eebb358fd39dbabf61f32cd06b'
+ 'SKIP'
+ 'eca387a72345ac9cce866a8ca3b31e6ef696f298be4863196da75009c6673363'
'd027776fac1f7675b0a9ee817502290b1c45f9c09b0f0a6bb058c35f92361e84'
+ 'fbd898f0e867c77c9bf918fd2e7956c7776ecb3cc3634c61290fb03513b47987'
'ff0156309470fc1d378fd2e104338020a884295e285972cc88e250e031cc35b9'
- '2460adccd3362fefd4cdc5f1c70f332d7b578091fb9167bf88b5f91265bbd776'
- '94612f5c0d34a3b7152915c2e285c7b462e9d8e38d3539bd551a339498eac166'
- '89948993afd4d9aec6a0bdbaf62f494e9956bb77a0386307d497f340a818ff61')
+ '2460adccd3362fefd4cdc5f1c70f332d7b578091fb9167bf88b5f91265bbd776')
prepare() {
cd "${pkgbase}-${pkgver}"
# Use unofficial imedia SiS driver for supported SiS devices
patch -Np0 -i ../autoconfig-sis.patch
-
- # Fix CVE-2013-6424 (FS#38401)
- patch -Np1 -i ../CVE-2013-6424.diff
-
- # fix os name
- sed -i '\|Current Operating System| s| %s %s||
- s|name.sysname, name.nodename, name.release|OSNAME, name.nodename|
- s|name.version, name.machine|name.version|
+ # NV01 (Diamond Edge 3D) and NV03 (Riva 128) is not supported by nouveau:
+ # http://nouveau.freedesktop.org/wiki/CodeNames/#Ancient
+ # Use nouveau/nv/vesa drivers for nvidia devices
+ # Note: nonfree "nvidia" driver support was removed on our patch version
+ patch -Np1 -i ../autoconfig-nvidia-libre.patch
+ # merged upstream (1.16 branch)
+ patch -Np1 -i ../glamor-upstream-fix.patch
+
+ # fix os name:
+ #Build Operating System = OSNAME="--kernel-name --kernel-release --machine" OSVENDOR=""
+ #Current Operating System = --kernel-name --nodename --kernel-release --kernel-version --machine
+ # to:
+ #Build Operating System = OSNAME="--operating-system" OSVENDOR="--machine - kernel --kernel-release"
+ #Current Operating System = OSNAME="--operating-system" --nodename --machine - kernel --kernel-release --kernel-version
+ # see: man uname
+
+ sed -i '\|Current Operating System| s|%s %s %s %s %s|%s %s %s - kernel %s %s|
+ s|name.sysname, name.nodename, name.release|OSNAME, name.nodename, name.machine|
+ s|name.version, name.machine|name.release, name.version|
' hw/xfree86/common/xf86Init.c
sed -i 's|Linux|GNU/Linux|
+ s|GNU Hurd|GNU/Hurd|
' hw/xfree86/man/{Xorg,xorg.conf}.man
- sed -i '\|OSNAME| s|hurd|gnu|
- \|OSNAME| s|linux|gnu/linux|
- s|#define OSNAME "freebsd"|#define OSNAME "freebsd"\n#elif defined(__FreeBSD_kernel__)\n#define OSNAME "gnu/kfreebsd"|
- ' hw/xfree86/loader/os.c
- sed -i 's|uname -s|uname -o|
- s|uname -r|uname -sr|
- s|uname -orm|echo $(uname -o) $(uname -m) - $(uname -s) kernel $(uname -r)|
- ' ChangeLog config.guess configure.ac configure
+ sed -i 's|uname -srm|uname -o|
+ s|uname -s|uname -o|
+ ' ChangeLog config.guess configure.ac configure compile
}
build() {
@@ -67,26 +75,32 @@ build() {
--enable-xcsecurity \
--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 \
+ --enable-systemd-logind \
+ --enable-suid-wrapper \
+ --disable-install-setuid \
--enable-record \
--disable-xfbdev \
--disable-xfake \
--disable-static \
- --sysconfdir=/etc/X11 \
+ --libexecdir=/usr/bin \
+ --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-os-name="$(uname -o)" \
+ --with-os-vendor="$(uname -m) - kernel $(uname -r)"
-# --without-dtrace \
-# --disable-linux-acpi --disable-linux-apm \
+# --without-dtrace \
+# --disable-linux-acpi --disable-linux-apm \
make
@@ -95,29 +109,24 @@ 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-libre() {
pkgdesc="Xorg X server, without nonfree nvidia driver support"
- depends=(libxdmcp libxfont libpciaccess libdrm pixman libgcrypt libxau xorg-server-common xf86-input-evdev libxshmfence)
- backup=('etc/X11/xorg.conf.d/10-evdev.conf' 'etc/X11/xorg.conf.d/10-quirks.conf')
+ depends=(libepoxy libxdmcp libxfont libpciaccess libdrm pixman libgcrypt libxau xorg-server-common xf86-input-evdev libxshmfence)
# 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=15' 'X-ABI-XINPUT_VERSION=20' 'X-ABI-EXTENSION_VERSION=8.0' 'x-server' "$pkgbase=$pkgver")
+ provides=('X-ABI-VIDEODRV_VERSION=18' 'X-ABI-XINPUT_VERSION=21' 'X-ABI-EXTENSION_VERSION=8.0' 'x-server' "$pkgbase=$pkgver")
groups=('xorg')
- conflicts=('nvidia-utils' "$pkgbase")
- replaces=('nvidia-utils' "$pkgbase")
+ conflicts=('nvidia-utils' 'glamor-egl' "$pkgbase")
+ replaces=('nvidia-utils' 'glamor-egl' "$pkgbase")
+ install=xorg-server.install
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/"
-
- rmdir "${pkgdir}/usr/share/X11"
-
# Needed for non-mesa drivers, libgl will restore it
mv "${pkgdir}/usr/lib/xorg/modules/extensions/libglx.so" \
"${pkgdir}/usr/lib/xorg/modules/extensions/libglx.xorg"
diff --git a/libre/xorg-server-libre/autoconfig-nvidia-libre.patch b/libre/xorg-server-libre/autoconfig-nvidia-libre.patch
new file mode 100644
index 000000000..688b495e1
--- /dev/null
+++ b/libre/xorg-server-libre/autoconfig-nvidia-libre.patch
@@ -0,0 +1,26 @@
+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,21 @@
+ int idx = 0;
+
+ #ifdef __linux__
+- driverList[idx++] = "nouveau";
++ switch (dev->device_id)
++ {
++ /* NV1 - Diamond Edge 3D */
++ case 0x0008:
++ case 0x0009:
++ driverList[idx++] = "vesa";
++ break;
++ /* NV3 - Riva 128 */
++ case 0x0018:
++ driverList[idx++] = "nv";
++ break;
++ default:
++ driverList[idx++] = "nouveau";
++ break;
++ }
+ #endif
+ driverList[idx++] = "nv";
+ break;
diff --git a/libre/xorg-server-libre/glamor-upstream-fix.patch b/libre/xorg-server-libre/glamor-upstream-fix.patch
new file mode 100644
index 000000000..89dd4d017
--- /dev/null
+++ b/libre/xorg-server-libre/glamor-upstream-fix.patch
@@ -0,0 +1,178 @@
+From 3c0431b8911241552a15a43e4279c50658b50a18 Mon Sep 17 00:00:00 2001
+From: Keith Packard <keithp@keithp.com>
+Date: Wed, 16 Jul 2014 23:03:23 +0000
+Subject: glamor: Fix temp picture coordinates in glamor_composite_clipped_region
+
+To understand this patch, let's start at the protocol interface where
+the relationship between the coordinate spaces is documented:
+
+ static Bool
+ _glamor_composite(CARD8 op,
+ PicturePtr source,
+ PicturePtr mask,
+ PicturePtr dest,
+ INT16 x_source,
+ INT16 y_source,
+ INT16 x_mask,
+ INT16 y_mask,
+ INT16 x_dest, INT16 y_dest,
+ CARD16 width, CARD16 height, Bool fallback)
+
+The coordinates are passed to this function directly off the wire and
+are all relative to their respective drawables. For Windows, this means
+that they are relative to the upper left corner of the window, in
+whatever pixmap that window is getting drawn to.
+
+_glamor_composite calls miComputeCompositeRegion to construct a clipped
+region to actually render to. In reality, miComputeCompositeRegion clips
+only to the destination these days; source clip region based clipping
+would have to respect the transform, which isn't really possible. The
+returned region is relative to the screen in which dest lives; offset by
+dest->drawable.x and dest->drawable.y.
+
+What is important to realize here is that, because of clipping, the
+composite region may not have the same position within the destination
+drawable as x_dest, y_dest. The protocol coordinates now exist solely to
+'pin' the three objects together.
+
+ extents->x1,y1 Screen origin of clipped operation
+ width,height Extents of the clipped operation
+ x_dest,y_dest Unclipped destination-relative operation coordinate
+ x_source,y_source Unclipped source-relative operation coordinate
+ x_mask,y_mask Unclipped mask-relative operation coordinate
+
+One thing we want to know is what the offset is from the original
+operation origin to the clipped origin
+
+ Destination drawable relative coordinates of the clipped operation:
+
+ x_dest_clipped = extents->x1 - dest->drawable.x
+ y_dest_clipped = extents->y1 - dest->drawable.y
+
+ Offset from the original operation origin:
+
+ x_off_clipped = x_dest_clipped - x_dest
+ y_off_clipped = y_dest_clipped - y_dest
+
+ Source drawable relative coordinates of the clipped operation:
+
+ x_source_clipped = x_source + x_off_clipped;
+ y_source_clipped = y_source + y_off_clipped;
+
+ Mask drawable relative coordinates of the clipped operation:
+
+ x_mask_clipped = x_source + x_off_clipped;
+ y_mask_clipped = y_source + y_off_clipped;
+
+This is where the original code fails -- it doesn't subtract the
+destination drawable location when computing the distance that the
+operation has been moved by clipping. Here's what it does when
+constructing a temporary source picture:
+
+ temp_src =
+ glamor_convert_gradient_picture(screen, source,
+ extent->x1 + x_source - x_dest,
+ extent->y1 + y_source - y_dest,
+ width, height);
+ ...
+ x_temp_src = -extent->x1 + x_dest;
+ y_temp_src = -extent->y1 + y_dest;
+
+glamor_convert_gradient_picture needs source drawable relative
+coordinates, but that is not what it's getting; it's getting
+screen-relative coordinates for the destination, adjusted by the
+distance between the provided source and destination operation
+coordinates. We want x_source_clipped and y_source_clipped:
+
+ x_source_clipped = x_source + x_off_clipped
+ = x_source + x_dest_clipped - x_dest
+ = x_source + extents->x1 - dest->drawable.x - x_dest
+
+x_temp_src/y_temp_src are supposed to be the coordinates of the original
+operation translated to the temporary picture:
+
+ x_temp_src = x_source - x_source_clipped;
+ y_temp_src = y_source - y_source_clipped;
+
+Note that x_source_clipped/y_source_clipped will never be less than
+x_source/y_source because all we're doing is clipping. This means that
+x_temp_src/y_temp_src will always be non-positive; the original source
+coordinate can never be strictly *inside* the temporary image or we
+could have made the temporary image smaller.
+
+ x_temp_src = x_source - x_source_clipped
+ = x_source - (x_source + x_off_clipped)
+ = -x_off_clipped
+ = x_dest - x_dest_clipped
+ = x_dest - (extents->x1 - dest->drawable.x)
+
+Again, this is off by the destination origin within the screen
+coordinate space.
+
+The code should look like:
+
+ temp_src =
+ glamor_convert_gradient_picture(screen, source,
+ extent->x1 + x_source - x_dest - dest->pDrawable->x,
+ extent->y1 + y_source - y_dest - dest->pDrawable->y,
+ width, height);
+
+ x_temp_src = -extent->x1 + x_dest + dest->pDrawable->x;
+ y_temp_src = -extent->y1 + y_dest + dest->pDrawable->y;
+
+Signed-off-by: Keith Packard <keithp@keithp.com>
+Reviewed-by: Markus Wick <markus@selfnet.de>
+(cherry picked from commit 55f5bfb578e934319d1308cbb56c900c5ac7cfa7)
+Signed-off-by: Julien Cristau <jcristau@debian.org>
+---
+diff --git a/glamor/glamor_render.c b/glamor/glamor_render.c
+index 14ab738..e5d5d2c 100644
+--- a/glamor/glamor_render.c
++++ b/glamor/glamor_render.c
+@@ -1450,8 +1450,8 @@ glamor_composite_clipped_region(CARD8 op,
+ || source_pixmap->drawable.height != height)))) {
+ temp_src =
+ glamor_convert_gradient_picture(screen, source,
+- extent->x1 + x_source - x_dest,
+- extent->y1 + y_source - y_dest,
++ extent->x1 + x_source - x_dest - dest->pDrawable->x,
++ extent->y1 + y_source - y_dest - dest->pDrawable->y,
+ width, height);
+ if (!temp_src) {
+ temp_src = source;
+@@ -1459,8 +1459,8 @@ glamor_composite_clipped_region(CARD8 op,
+ }
+ temp_src_priv =
+ glamor_get_pixmap_private((PixmapPtr) (temp_src->pDrawable));
+- x_temp_src = -extent->x1 + x_dest;
+- y_temp_src = -extent->y1 + y_dest;
++ x_temp_src = -extent->x1 + x_dest + dest->pDrawable->x;
++ y_temp_src = -extent->y1 + y_dest + dest->pDrawable->y;
+ }
+
+ if (mask
+@@ -1474,8 +1474,8 @@ glamor_composite_clipped_region(CARD8 op,
+ * to do reduce one convertion. */
+ temp_mask =
+ glamor_convert_gradient_picture(screen, mask,
+- extent->x1 + x_mask - x_dest,
+- extent->y1 + y_mask - y_dest,
++ extent->x1 + x_mask - x_dest - dest->pDrawable->x,
++ extent->y1 + y_mask - y_dest - dest->pDrawable->y,
+ width, height);
+ if (!temp_mask) {
+ temp_mask = mask;
+@@ -1483,8 +1483,8 @@ glamor_composite_clipped_region(CARD8 op,
+ }
+ temp_mask_priv =
+ glamor_get_pixmap_private((PixmapPtr) (temp_mask->pDrawable));
+- x_temp_mask = -extent->x1 + x_dest;
+- y_temp_mask = -extent->y1 + y_dest;
++ x_temp_mask = -extent->x1 + x_dest + dest->pDrawable->x;
++ y_temp_mask = -extent->y1 + y_dest + dest->pDrawable->y;
+ }
+ /* Do two-pass PictOpOver componentAlpha, until we enable
+ * dual source color blending.
+--
+cgit v0.9.0.2-2-gbebe
+
diff --git a/libre/xorg-server-libre/xorg-server.install b/libre/xorg-server-libre/xorg-server.install
new file mode 100644
index 000000000..46bf5a90a
--- /dev/null
+++ b/libre/xorg-server-libre/xorg-server.install
@@ -0,0 +1,18 @@
+post_upgrade() {
+ if (( $(vercmp $2 1.16.0-3) < 0 )); then
+ post_install
+ fi
+}
+
+post_install() {
+ cat <<MSG
+>>> 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
+}
+