mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2025-01-17 23:34:07 +00:00
added extra/xorg-server 1.14.0-2.1, adding patch from #446
This commit is contained in:
parent
0c9f269b85
commit
d834f327e5
10 changed files with 830 additions and 0 deletions
10
extra/xorg-server/10-quirks.conf
Normal file
10
extra/xorg-server/10-quirks.conf
Normal file
|
@ -0,0 +1,10 @@
|
|||
# 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
|
219
extra/xorg-server/PKGBUILD
Normal file
219
extra/xorg-server/PKGBUILD
Normal file
|
@ -0,0 +1,219 @@
|
|||
# $Id: PKGBUILD 180178 2013-03-18 16:08:50Z andyrtr $
|
||||
# Maintainer: AndyRTR <andyrtr@archlinux.org>
|
||||
# Maintainer: Jan de Groot <jgc@archlinux.org>
|
||||
|
||||
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.14.0
|
||||
pkgrel=2.1
|
||||
arch=('i686' 'x86_64')
|
||||
license=('custom')
|
||||
url="http://xorg.freedesktop.org"
|
||||
makedepends=('pixman' 'libx11' 'mesa' '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
|
||||
xserver-1.6.0-less-acpi-brokenness.patch
|
||||
bug59825.patch
|
||||
xvfb-run
|
||||
xvfb-run.1
|
||||
10-quirks.conf
|
||||
git-fixes.patch
|
||||
arm.patch)
|
||||
sha256sums=('1f5107573252c26439fdd165481765a2c0964e02a2e9fab36e02414d08f30630'
|
||||
'66e25f76a7496c429e0aff4b0670f168719bb0ceaeb88c6f2272f2bf3ed21162'
|
||||
'd027776fac1f7675b0a9ee817502290b1c45f9c09b0f0a6bb058c35f92361e84'
|
||||
'e033f9bcc21980f7f0428e6ed6c362a3d55ad293b05fd6e6c6c1933b86f9e63a'
|
||||
'26ee6ff255a60d7c1e136c612925eb63c86e85a4a3a55d531852ad9275526588'
|
||||
'ff0156309470fc1d378fd2e104338020a884295e285972cc88e250e031cc35b9'
|
||||
'2460adccd3362fefd4cdc5f1c70f332d7b578091fb9167bf88b5f91265bbd776'
|
||||
'94612f5c0d34a3b7152915c2e285c7b462e9d8e38d3539bd551a339498eac166'
|
||||
'd0832cc16b5e6c1dee2959055a4b327f5c87e2a67b5f427d654663057207b2c1'
|
||||
'ca90b99582f70eae4e91409ceccbcaa728b9640eeed6ef99f75a173d89f41a0b')
|
||||
|
||||
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.freedesktop.org/show_bug.cgi?id=59825 - fixes crash with vboxvideo
|
||||
patch -Np1 -i "${srcdir}/bug59825.patch"
|
||||
|
||||
# From Fedora. Do not build acpid code, it is buggy and we do not need it
|
||||
patch -Np1 -i "${srcdir}/xserver-1.6.0-less-acpi-brokenness.patch"
|
||||
|
||||
# post release git fixes
|
||||
patch -Np1 -i "${srcdir}/git-fixes.patch"
|
||||
|
||||
# ARM fix
|
||||
patch -Np1 -i "${srcdir}/arm.patch"
|
||||
|
||||
autoreconf -fi
|
||||
./configure --prefix=/usr \
|
||||
--enable-ipv6 \
|
||||
--enable-dri \
|
||||
--enable-dmx \
|
||||
--enable-xvfb \
|
||||
--enable-xnest \
|
||||
--enable-composite \
|
||||
--enable-xcsecurity \
|
||||
--enable-xorg \
|
||||
--enable-xephyr \
|
||||
--enable-glx-tls \
|
||||
--enable-kdrive \
|
||||
--enable-kdrive-evdev \
|
||||
--enable-kdrive-kbd \
|
||||
--enable-kdrive-mouse \
|
||||
--enable-install-setuid \
|
||||
--enable-config-udev \
|
||||
--disable-config-dbus \
|
||||
--enable-record \
|
||||
--disable-xfbdev \
|
||||
--disable-xfake \
|
||||
--disable-static \
|
||||
--sysconfdir=/etc/X11 \
|
||||
--localstatedir=/var \
|
||||
--with-xkb-path=/usr/share/X11/xkb \
|
||||
--with-xkb-output=/var/lib/xkb \
|
||||
--with-fontrootdir=/usr/share/fonts
|
||||
make
|
||||
|
||||
# Disable subdirs for make install rule to make splitting easier
|
||||
sed -e 's/^DMX_SUBDIRS =.*/DMX_SUBDIRS =/' \
|
||||
-e 's/^XVFB_SUBDIRS =.*/XVFB_SUBDIRS =/' \
|
||||
-e 's/^XNEST_SUBDIRS =.*/XNEST_SUBDIRS = /' \
|
||||
-e 's/^KDRIVE_SUBDIRS =.*/KDRIVE_SUBDIRS =/' \
|
||||
-i hw/Makefile
|
||||
}
|
||||
|
||||
package_xorg-server-common() {
|
||||
pkgdesc="Xorg server common files"
|
||||
depends=('xkeyboard-config' 'xorg-xkbcomp' 'xorg-setxkbmap' 'xorg-fonts-misc')
|
||||
|
||||
cd "${srcdir}/${pkgbase}-${pkgver}"
|
||||
install -m755 -d "${pkgdir}/usr/share/licenses/xorg-server-common"
|
||||
install -m644 COPYING "${pkgdir}/usr/share/licenses/xorg-server-common"
|
||||
|
||||
make -C xkb DESTDIR="${pkgdir}" install-data
|
||||
|
||||
install -m755 -d "${pkgdir}/usr/share/man/man1"
|
||||
install -m644 man/Xserver.1 "${pkgdir}/usr/share/man/man1/"
|
||||
|
||||
install -m755 -d "${pkgdir}/usr/lib/xorg"
|
||||
install -m644 dix/protocol.txt "${pkgdir}/usr/lib/xorg/"
|
||||
}
|
||||
|
||||
package_xorg-server() {
|
||||
pkgdesc="Xorg X server"
|
||||
depends=(libxdmcp libxfont libpciaccess libdrm 'pixman>=0.28.0' 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-*/hw/xfree86/common/xf86Module.h for ABI versions - we provide major numbers that drivers can depend on
|
||||
provides=('X-ABI-VIDEODRV_VERSION=14' 'X-ABI-XINPUT_VERSION=19' 'X-ABI-EXTENSION_VERSION=7.0' 'x-server')
|
||||
groups=('xorg')
|
||||
conflicts=('nvidia-utils<=290.10')
|
||||
|
||||
cd "${srcdir}/${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"
|
||||
|
||||
rm -rf "${pkgdir}/var"
|
||||
|
||||
rm -f "${pkgdir}/usr/share/man/man1/Xserver.1"
|
||||
rm -f "${pkgdir}/usr/lib/xorg/protocol.txt"
|
||||
|
||||
install -m755 -d "${pkgdir}/usr/share/licenses/xorg-server"
|
||||
ln -sf ../xorg-server-common/COPYING "${pkgdir}/usr/share/licenses/xorg-server/COPYING"
|
||||
|
||||
rm -rf "${pkgdir}/usr/lib/pkgconfig"
|
||||
rm -rf "${pkgdir}/usr/include"
|
||||
rm -rf "${pkgdir}/usr/share/aclocal"
|
||||
}
|
||||
|
||||
package_xorg-server-xephyr() {
|
||||
pkgdesc="A nested X server that runs as an X application"
|
||||
depends=(libxfont libgl libgcrypt libxv 'pixman>=0.28.0' xorg-server-common)
|
||||
|
||||
cd "${srcdir}/${pkgbase}-${pkgver}/hw/kdrive"
|
||||
make DESTDIR="${pkgdir}" install
|
||||
|
||||
install -m755 -d "${pkgdir}/usr/share/licenses/xorg-server-xephyr"
|
||||
ln -sf ../xorg-server-common/COPYING "${pkgdir}/usr/share/licenses/xorg-server-xephyr/COPYING"
|
||||
}
|
||||
|
||||
package_xorg-server-xvfb() {
|
||||
pkgdesc="Virtual framebuffer X server"
|
||||
depends=(libxfont libxdmcp libxau libgcrypt 'pixman>=0.28.0' xorg-server-common)
|
||||
|
||||
cd "${srcdir}/${pkgbase}-${pkgver}/hw/vfb"
|
||||
make DESTDIR="${pkgdir}" install
|
||||
|
||||
install -m755 "${srcdir}/xvfb-run" "${pkgdir}/usr/bin/"
|
||||
install -m644 "${srcdir}/xvfb-run.1" "${pkgdir}/usr/share/man/man1/"
|
||||
|
||||
install -m755 -d "${pkgdir}/usr/share/licenses/xorg-server-xvfb"
|
||||
ln -sf ../xorg-server-common/COPYING "${pkgdir}/usr/share/licenses/xorg-server-xvfb/COPYING"
|
||||
}
|
||||
|
||||
package_xorg-server-xnest() {
|
||||
pkgdesc="A nested X server that runs as an X application"
|
||||
depends=(libxfont libxext libgcrypt 'pixman>=0.28.0' xorg-server-common)
|
||||
|
||||
cd "${srcdir}/${pkgbase}-${pkgver}/hw/xnest"
|
||||
make DESTDIR="${pkgdir}" install
|
||||
|
||||
install -m755 -d "${pkgdir}/usr/share/licenses/xorg-server-xnest"
|
||||
ln -sf ../xorg-server-common/COPYING "${pkgdir}/usr/share/licenses/xorg-server-xnest/COPYING"
|
||||
}
|
||||
|
||||
package_xorg-server-xdmx() {
|
||||
pkgdesc="Distributed Multihead X Server and utilities"
|
||||
depends=(libxfont libxi libgcrypt libxaw libxrender libdmx libxfixes 'pixman>=0.28.0' xorg-server-common)
|
||||
|
||||
cd "${srcdir}/${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-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
|
||||
# see FS#32146
|
||||
resourceproto scrnsaverproto
|
||||
# not technically required but almost every Xorg pkg needs it to build
|
||||
xorg-util-macros)
|
||||
|
||||
cd "${srcdir}/${pkgbase}-${pkgver}"
|
||||
make DESTDIR="${pkgdir}" install
|
||||
|
||||
rm -rf "${pkgdir}/usr/bin"
|
||||
rm -rf "${pkgdir}/usr/share/man"
|
||||
rm -rf "${pkgdir}/usr/share/doc"
|
||||
rm -rf "${pkgdir}/usr/share/X11"
|
||||
rm -rf "${pkgdir}/usr/lib/xorg"
|
||||
rm -rf "${pkgdir}/var"
|
||||
|
||||
install -m755 -d "${pkgdir}/usr/share/licenses/xorg-server-devel"
|
||||
ln -sf ../xorg-server-common/COPYING "${pkgdir}/usr/share/licenses/xorg-server-devel/COPYING"
|
||||
}
|
26
extra/xorg-server/arm.patch
Normal file
26
extra/xorg-server/arm.patch
Normal file
|
@ -0,0 +1,26 @@
|
|||
see ARM related bug reports [1-3]
|
||||
|
||||
[1] https://github.com/archlinuxarm/PKGBUILDs/issues/446I
|
||||
[2] http://www.raspberrypi.org/phpBB3/viewtopic.php?t=38568&p=321673
|
||||
[3] http://lists.linuxtogo.org/pipermail/openembedded-core/2013-April/037805.html
|
||||
|
||||
Signed-off-by: Andreas Müller <schnitzeltony at googlemail.com>
|
||||
---
|
||||
include/dixstruct.h | 2 +-
|
||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/include/dixstruct.h b/include/dixstruct.h
|
||||
index 6784819..aef822c 100644
|
||||
--- a/include/dixstruct.h
|
||||
+++ b/include/dixstruct.h
|
||||
@@ -96,7 +96,7 @@ typedef struct _Client {
|
||||
unsigned int clientGone:1;
|
||||
unsigned int closeDownMode:2;
|
||||
unsigned int clientState:2;
|
||||
- char smart_priority;
|
||||
+ signed char smart_priority;
|
||||
short noClientException; /* this client died or needs to be killed */
|
||||
int priority;
|
||||
ReplySwapPtr pSwapReplyFunc;
|
||||
--
|
||||
1.7.6.5
|
28
extra/xorg-server/autoconfig-nvidia.patch
Normal file
28
extra/xorg-server/autoconfig-nvidia.patch
Normal file
|
@ -0,0 +1,28 @@
|
|||
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;
|
21
extra/xorg-server/autoconfig-sis.patch
Normal file
21
extra/xorg-server/autoconfig-sis.patch
Normal file
|
@ -0,0 +1,21 @@
|
|||
--- hw/xfree86/common/xf86pciBus.c.orig 2011-09-24 10:53:45.421697668 +0000
|
||||
+++ hw/xfree86/common/xf86pciBus.c 2011-09-24 10:55:56.416250708 +0000
|
||||
@@ -1200,9 +1200,15 @@
|
||||
break;
|
||||
}
|
||||
break;
|
||||
- case 0x1039:
|
||||
- driverList[0] = "sis";
|
||||
- break;
|
||||
+ case 0x1039:
|
||||
+ switch (dev->device_id)
|
||||
+ {
|
||||
+ case 0x6350: case 0x6351:
|
||||
+ driverList[0] = "sisimedia"; driverList[1] = "sis"; break;
|
||||
+ default:
|
||||
+ driverList[0] = "sis"; break;
|
||||
+ }
|
||||
+ break;
|
||||
case 0x126f:
|
||||
driverList[0] = "siliconmotion";
|
||||
break;
|
12
extra/xorg-server/bug59825.patch
Normal file
12
extra/xorg-server/bug59825.patch
Normal file
|
@ -0,0 +1,12 @@
|
|||
diff -U 3 -b -d -p -r -- a/glx/glxdri.c b/glx/glxdri.c
|
||||
--- a/glx/glxdri.c 2013-01-24 22:14:35.216092949 +0100
|
||||
+++ b/glx/glxdri.c 2013-01-24 22:13:48.499427991 +0100
|
||||
@@ -971,6 +971,8 @@ __glXDRIscreenProbe(ScreenPtr pScreen)
|
||||
size_t buffer_size;
|
||||
ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
|
||||
|
||||
+ framebuffer.base = NULL;
|
||||
+
|
||||
if (!xf86LoaderCheckSymbol("DRIQueryDirectRenderingCapable") ||
|
||||
!DRIQueryDirectRenderingCapable(pScreen, &isCapable) || !isCapable) {
|
||||
LogMessage(X_INFO,
|
27
extra/xorg-server/git-fixes.patch
Normal file
27
extra/xorg-server/git-fixes.patch
Normal file
|
@ -0,0 +1,27 @@
|
|||
From 5047810a4c20fab444b8c6eb146c55dcdb0d4219 Mon Sep 17 00:00:00 2001
|
||||
From: Aaron Plattner <aplattner@nvidia.com>
|
||||
Date: Wed, 06 Mar 2013 17:40:28 +0000
|
||||
Subject: fb: Rename wfbDestroyGlyphCache
|
||||
|
||||
Renaming this function was missed in commit
|
||||
9cbcb5bd6a5360a128d15b77a02d8d3351f74366, so both libfb.so and libwfb.so define
|
||||
functions named fbDestroyGlyphCache.
|
||||
|
||||
Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
|
||||
Reviewed-by: Søren Sandmann <ssp@redhat.com>
|
||||
Signed-off-by: Keith Packard <keithp@keithp.com>
|
||||
---
|
||||
diff --git a/fb/wfbrename.h b/fb/wfbrename.h
|
||||
index 588440c..54d00d0 100644
|
||||
--- a/fb/wfbrename.h
|
||||
+++ b/fb/wfbrename.h
|
||||
@@ -52,6 +52,7 @@
|
||||
#define fbCreatePixmap wfbCreatePixmap
|
||||
#define fbCreatePixmapBpp wfbCreatePixmapBpp
|
||||
#define fbCreateWindow wfbCreateWindow
|
||||
+#define fbDestroyGlyphCache wfbDestroyGlyphCache
|
||||
#define fbDestroyPixmap wfbDestroyPixmap
|
||||
#define fbDestroyWindow wfbDestroyWindow
|
||||
#define fbDoCopy wfbDoCopy
|
||||
--
|
||||
cgit v0.9.0.2-2-gbebe
|
25
extra/xorg-server/xserver-1.6.0-less-acpi-brokenness.patch
Normal file
25
extra/xorg-server/xserver-1.6.0-less-acpi-brokenness.patch
Normal file
|
@ -0,0 +1,25 @@
|
|||
From 0002cde5312e785529b2901d7f8a82d5623e4ca7 Mon Sep 17 00:00:00 2001
|
||||
From: Adam Jackson <ajax@redhat.com>
|
||||
Date: Wed, 9 Nov 2011 11:52:06 +1000
|
||||
Subject: [PATCH 2/7] Don't build the ACPI code.
|
||||
|
||||
No good can come of this.
|
||||
---
|
||||
configure.ac | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index a12783c..54f4464 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -1620,7 +1620,6 @@ if test "x$XORG" = xyes; then
|
||||
linux_alpha=yes
|
||||
;;
|
||||
i*86|amd64*|x86_64*|ia64*)
|
||||
- linux_acpi="yes"
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
--
|
||||
1.7.10.1
|
||||
|
180
extra/xorg-server/xvfb-run
Normal file
180
extra/xorg-server/xvfb-run
Normal file
|
@ -0,0 +1,180 @@
|
|||
#!/bin/sh
|
||||
|
||||
# $Id: xvfb-run 2027 2004-11-16 14:54:16Z branden $
|
||||
|
||||
# This script starts an instance of Xvfb, the "fake" X server, runs a command
|
||||
# with that server available, and kills the X server when done. The return
|
||||
# value of the command becomes the return value of this script.
|
||||
#
|
||||
# If anyone is using this to build a Debian package, make sure the package
|
||||
# Build-Depends on xvfb, xbase-clients, and xfonts-base.
|
||||
|
||||
set -e
|
||||
|
||||
PROGNAME=xvfb-run
|
||||
SERVERNUM=99
|
||||
AUTHFILE=
|
||||
ERRORFILE=/dev/null
|
||||
STARTWAIT=3
|
||||
XVFBARGS="-screen 0 640x480x8"
|
||||
LISTENTCP="-nolisten tcp"
|
||||
XAUTHPROTO=.
|
||||
|
||||
# Query the terminal to establish a default number of columns to use for
|
||||
# displaying messages to the user. This is used only as a fallback in the event
|
||||
# the COLUMNS variable is not set. ($COLUMNS can react to SIGWINCH while the
|
||||
# script is running, and this cannot, only being calculated once.)
|
||||
DEFCOLUMNS=$(stty size 2>/dev/null | awk '{print $2}') || true
|
||||
if ! expr "$DEFCOLUMNS" : "[[:digit:]]\+$" >/dev/null 2>&1; then
|
||||
DEFCOLUMNS=80
|
||||
fi
|
||||
|
||||
# Display a message, wrapping lines at the terminal width.
|
||||
message () {
|
||||
echo "$PROGNAME: $*" | fmt -t -w ${COLUMNS:-$DEFCOLUMNS}
|
||||
}
|
||||
|
||||
# Display an error message.
|
||||
error () {
|
||||
message "error: $*" >&2
|
||||
}
|
||||
|
||||
# Display a usage message.
|
||||
usage () {
|
||||
if [ -n "$*" ]; then
|
||||
message "usage error: $*"
|
||||
fi
|
||||
cat <<EOF
|
||||
Usage: $PROGNAME [OPTION ...] COMMAND
|
||||
Run COMMAND (usually an X client) in a virtual X server environment.
|
||||
Options:
|
||||
-a --auto-servernum try to get a free server number, starting at
|
||||
--server-num
|
||||
-e FILE --error-file=FILE file used to store xauth errors and Xvfb
|
||||
output (default: $ERRORFILE)
|
||||
-f FILE --auth-file=FILE file used to store auth cookie
|
||||
(default: ./.Xauthority)
|
||||
-h --help display this usage message and exit
|
||||
-n NUM --server-num=NUM server number to use (default: $SERVERNUM)
|
||||
-l --listen-tcp enable TCP port listening in the X server
|
||||
-p PROTO --xauth-protocol=PROTO X authority protocol name to use
|
||||
(default: xauth command's default)
|
||||
-s ARGS --server-args=ARGS arguments (other than server number and
|
||||
"-nolisten tcp") to pass to the Xvfb server
|
||||
(default: "$XVFBARGS")
|
||||
-w DELAY --wait=DELAY delay in seconds to wait for Xvfb to start
|
||||
before running COMMAND (default: $STARTWAIT)
|
||||
EOF
|
||||
}
|
||||
|
||||
# Find a free server number by looking at .X*-lock files in /tmp.
|
||||
find_free_servernum() {
|
||||
# Sadly, the "local" keyword is not POSIX. Leave the next line commented in
|
||||
# the hope Debian Policy eventually changes to allow it in /bin/sh scripts
|
||||
# anyway.
|
||||
#local i
|
||||
|
||||
i=$SERVERNUM
|
||||
while [ -f /tmp/.X$i-lock ]; do
|
||||
i=$(($i + 1))
|
||||
done
|
||||
echo $i
|
||||
}
|
||||
|
||||
# Clean up files
|
||||
clean_up() {
|
||||
if [ -e "$AUTHFILE" ]; then
|
||||
XAUTHORITY=$AUTHFILE xauth remove ":$SERVERNUM" >>"$ERRORFILE" 2>&1
|
||||
fi
|
||||
if [ -n "$XVFB_RUN_TMPDIR" ]; then
|
||||
if ! rm -r "$XVFB_RUN_TMPDIR"; then
|
||||
error "problem while cleaning up temporary directory"
|
||||
exit 5
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Parse the command line.
|
||||
ARGS=$(getopt --options +ae:f:hn:lp:s:w: \
|
||||
--long auto-servernum,error-file:,auth-file:,help,server-num:,listen-tcp,xauth-protocol:,server-args:,wait: \
|
||||
--name "$PROGNAME" -- "$@")
|
||||
GETOPT_STATUS=$?
|
||||
|
||||
if [ $GETOPT_STATUS -ne 0 ]; then
|
||||
error "internal error; getopt exited with status $GETOPT_STATUS"
|
||||
exit 6
|
||||
fi
|
||||
|
||||
eval set -- "$ARGS"
|
||||
|
||||
while :; do
|
||||
case "$1" in
|
||||
-a|--auto-servernum) SERVERNUM=$(find_free_servernum) ;;
|
||||
-e|--error-file) ERRORFILE="$2"; shift ;;
|
||||
-f|--auth-file) AUTHFILE="$2"; shift ;;
|
||||
-h|--help) SHOWHELP="yes" ;;
|
||||
-n|--server-num) SERVERNUM="$2"; shift ;;
|
||||
-l|--listen-tcp) LISTENTCP="" ;;
|
||||
-p|--xauth-protocol) XAUTHPROTO="$2"; shift ;;
|
||||
-s|--server-args) XVFBARGS="$2"; shift ;;
|
||||
-w|--wait) STARTWAIT="$2"; shift ;;
|
||||
--) shift; break ;;
|
||||
*) error "internal error; getopt permitted \"$1\" unexpectedly"
|
||||
exit 6
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if [ "$SHOWHELP" ]; then
|
||||
usage
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ -z "$*" ]; then
|
||||
usage "need a command to run" >&2
|
||||
exit 2
|
||||
fi
|
||||
|
||||
if ! which xauth >/dev/null; then
|
||||
error "xauth command not found"
|
||||
exit 3
|
||||
fi
|
||||
|
||||
# tidy up after ourselves
|
||||
trap clean_up EXIT
|
||||
|
||||
# If the user did not specify an X authorization file to use, set up a temporary
|
||||
# directory to house one.
|
||||
if [ -z "$AUTHFILE" ]; then
|
||||
XVFB_RUN_TMPDIR="$(mktemp -d -t $PROGNAME.XXXXXX)"
|
||||
AUTHFILE="$XVFB_RUN_TMPDIR/Xauthority"
|
||||
fi
|
||||
|
||||
# Start Xvfb.
|
||||
MCOOKIE=$(mcookie)
|
||||
XAUTHORITY=$AUTHFILE xauth source - << EOF >>"$ERRORFILE" 2>&1
|
||||
add :$SERVERNUM $XAUTHPROTO $MCOOKIE
|
||||
EOF
|
||||
XAUTHORITY=$AUTHFILE Xvfb ":$SERVERNUM" $XVFBARGS $LISTENTCP >>"$ERRORFILE" \
|
||||
2>&1 &
|
||||
XVFBPID=$!
|
||||
sleep "$STARTWAIT"
|
||||
if ! kill -0 $XVFBPID 2>/dev/null; then
|
||||
echo "Xvfb failed to start" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Start the command and save its exit status.
|
||||
set +e
|
||||
DISPLAY=:$SERVERNUM XAUTHORITY=$AUTHFILE "$@" 2>&1
|
||||
RETVAL=$?
|
||||
set -e
|
||||
|
||||
# Kill Xvfb now that the command has exited.
|
||||
kill $XVFBPID
|
||||
|
||||
# Return the executed command's exit status.
|
||||
exit $RETVAL
|
||||
|
||||
# vim:set ai et sts=4 sw=4 tw=80:
|
282
extra/xorg-server/xvfb-run.1
Normal file
282
extra/xorg-server/xvfb-run.1
Normal file
|
@ -0,0 +1,282 @@
|
|||
.\" $Id: xvfb-run.1 2138 2005-01-17 23:40:27Z branden $
|
||||
.\"
|
||||
.\" Copyright 1998-2004 Branden Robinson <branden@debian.org>.
|
||||
.\"
|
||||
.\" This is free software; you may redistribute it and/or modify
|
||||
.\" it under the terms of the GNU General Public License as
|
||||
.\" published by the Free Software Foundation; either version 2,
|
||||
.\" or (at your option) any later version.
|
||||
.\"
|
||||
.\" This is distributed in the hope that it will be useful, but
|
||||
.\" WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
.\" GNU General Public License for more details.
|
||||
.\"
|
||||
.\" You should have received a copy of the GNU General Public License with
|
||||
.\" the Debian operating system, in /usr/share/common-licenses/GPL; if
|
||||
.\" not, write to the Free Software Foundation, Inc., 59 Temple Place,
|
||||
.\" Suite 330, Boston, MA 02111-1307 USA
|
||||
.\"
|
||||
.\" We need the URL macro from groff's www macro package, but also want
|
||||
.\" things to work all right for people who don't have it. So we define
|
||||
.\" our own URL macro and let the www macro package override it if it's
|
||||
.\" available.
|
||||
.de URL
|
||||
\\$2 \(laURL: \\$1 \(ra\\$3
|
||||
..
|
||||
.if \n[.g] .mso www.tmac
|
||||
.TH xvfb\-run 1 "2004\-11\-12" "Debian Project"
|
||||
.SH NAME
|
||||
xvfb\-run \- run specified X client or command in a virtual X server environment
|
||||
.SH SYNOPSIS
|
||||
.B xvfb\-run
|
||||
[
|
||||
.I options
|
||||
]
|
||||
.I command
|
||||
.SH DESCRIPTION
|
||||
.B xvfb\-run
|
||||
is a wrapper for the
|
||||
.BR Xvfb (1x)
|
||||
command which simplifies the task of running commands (typically an X
|
||||
client, or a script containing a list of clients to be run) within a virtual
|
||||
X server environment.
|
||||
.PP
|
||||
.B xvfb\-run
|
||||
sets up an X authority file (or uses an existing user\-specified one),
|
||||
writes a cookie to it (see
|
||||
.BR xauth (1x))
|
||||
and then starts the
|
||||
.B Xvfb
|
||||
X server as a background process.
|
||||
The process ID of
|
||||
.B Xvfb
|
||||
is stored for later use.
|
||||
The specified
|
||||
.I command
|
||||
is then run using the X display corresponding to the
|
||||
.B Xvfb
|
||||
server
|
||||
just started and the X authority file created earlier.
|
||||
.PP
|
||||
When the
|
||||
.I command
|
||||
exits, its status is saved, the
|
||||
.B Xvfb
|
||||
server is killed (using the process ID stored earlier), the X authority
|
||||
cookie removed, and the authority file deleted (if the user did not specify
|
||||
one to use).
|
||||
.B xvfb\-run
|
||||
then exits with the exit status of
|
||||
.IR command .
|
||||
.PP
|
||||
.B xvfb\-run
|
||||
requires the
|
||||
.B xauth
|
||||
command to function.
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.B \-a\fR,\fB \-\-auto\-servernum
|
||||
Try to get a free server number, starting at 99, or the argument to
|
||||
.BR \-\-server\-num .
|
||||
.TP
|
||||
.BI \-e\ file \fR,\fB\ \-\-error\-file= file
|
||||
Store output from
|
||||
.B xauth
|
||||
and
|
||||
.B Xvfb
|
||||
in
|
||||
.IR file .
|
||||
The default is
|
||||
.IR /dev/null .
|
||||
.TP
|
||||
.BI \-f\ file \fR,\fB\ \-\-auth\-file= file
|
||||
Store X authentication data in
|
||||
.IR file .
|
||||
By default, a temporary directory called
|
||||
.IR xvfb\-run. PID
|
||||
(where PID is the process ID of
|
||||
.B xvfb\-run
|
||||
itself) is created in the directory specified by the environment variable
|
||||
.B TMPDIR
|
||||
(or
|
||||
.I /tmp
|
||||
if that variable is null or unset), and the
|
||||
.BR tempfile (1)
|
||||
command is used to create a file in that temporary directory called
|
||||
.IR Xauthority .
|
||||
.TP
|
||||
.B \-h\fR,\fB \-\-help
|
||||
Display a usage message and exit.
|
||||
.TP
|
||||
.BI \-n\ servernumber \fR,\fB\ \-\-server\-num= servernumber
|
||||
Use
|
||||
.I servernumber
|
||||
as the server number (but see the
|
||||
.B \-a\fR,\fB \-\-auto\-servernum
|
||||
option above).
|
||||
The default is 99.
|
||||
.TP
|
||||
.B \-l\fR,\fB \-\-listen\-tcp
|
||||
Enable TCP port listening in the X server.
|
||||
For security reasons (to avoid denial\-of\-service attacks or exploits),
|
||||
TCP port listening is disabled by default.
|
||||
.TP
|
||||
.BI \-p\ protocolname \fR,\fB\ \-\-xauth\-protocol= protocolname
|
||||
Use
|
||||
.I protocolname
|
||||
as the X authority protocol to use.
|
||||
The default is \(oq.\(cq, which
|
||||
.B xauth
|
||||
interprets as its own default protocol, which is MIT\-MAGIC\-COOKIE\-1.
|
||||
.TP
|
||||
.BI \-s\ arguments \fR,\fB\ \-\-server\-args= arguments
|
||||
Pass
|
||||
.I arguments
|
||||
to the
|
||||
.B Xvfb
|
||||
server.
|
||||
Be careful to quote any whitespace characters that may occur within
|
||||
.I arguments
|
||||
to prevent them from regarded as separators for
|
||||
.BR xvfb\-run 's
|
||||
own arguments.
|
||||
Also, note that specification of \(oq\-nolisten tcp\(cq in
|
||||
.I arguments
|
||||
may override the function of
|
||||
.BR xvfb\-run 's
|
||||
own
|
||||
.B \-l\fR,\fB \-\-listen\-tcp
|
||||
option, and that specification of the server number (e.g., \(oq:1\(cq) may
|
||||
be ignored because of the way the X server parses its argument list.
|
||||
Use the
|
||||
.B xvfb\-run
|
||||
option
|
||||
.BI \-n\ servernumber \fR,\fB\ \-\-server\-num= servernumber
|
||||
to achieve the latter function.
|
||||
The default is \(oq\-screen 0 640x480x8\(cq.
|
||||
.TP
|
||||
.BI \-w\ delay \fR,\fB\ \-\-wait= delay
|
||||
Wait
|
||||
.I delay
|
||||
seconds after launching
|
||||
.B Xvfb
|
||||
before attempting to start the specified command.
|
||||
The default is 3.
|
||||
.SH ENVIRONMENT
|
||||
.TP
|
||||
.B COLUMNS
|
||||
indicates the width of the terminal device in character cells.
|
||||
This value is used for formatting diagnostic messages.
|
||||
If not set, the terminal is queried using
|
||||
.BR stty (1)
|
||||
to determine its width.
|
||||
If that fails, a value of \(oq80\(cq is assumed.
|
||||
.TP
|
||||
.B TMPDIR
|
||||
specifies the directory in which to place
|
||||
.BR xvfb\-run 's
|
||||
temporary directory for storage of the X authority file; only used if the
|
||||
.B \-f
|
||||
or
|
||||
.B \-\-auth\-file
|
||||
options are not specified.
|
||||
.SH "OUTPUT FILES"
|
||||
.PP
|
||||
Unless the
|
||||
.B \-f
|
||||
or
|
||||
.B \-\-auth\-file
|
||||
options are specified, a temporary
|
||||
directory and file within it are created (and deleted) to store the X
|
||||
authority cookies used by the
|
||||
.B Xvfb
|
||||
server and client(s) run under it.
|
||||
See
|
||||
.BR tempfile (1).
|
||||
If \-f or \-\-auth\-file are used, then the specified X authority file is
|
||||
only written to, not created or deleted (though
|
||||
.B xauth
|
||||
creates an authority file itself if told to use use that does not already
|
||||
exist).
|
||||
.PP
|
||||
An error file with a user\-specified name is also created if the
|
||||
.B \-e
|
||||
or
|
||||
.B \-\-error\-file
|
||||
options are specifed; see above.
|
||||
.SH "EXIT STATUS"
|
||||
.B xvfb\-run
|
||||
uses its exit status as well as output to standard error to communicate
|
||||
diagnostics.
|
||||
The exit status of \(oq1\(cq is not used, and should be interpreted as failure
|
||||
of the specified command.
|
||||
.TP
|
||||
0
|
||||
.B xvfb\-run
|
||||
only uses this exit status if the
|
||||
.B \-h\fR,\fB \-\-help
|
||||
option is given.
|
||||
In all other situations, this may be interpreted as success of the specified
|
||||
command.
|
||||
.TP
|
||||
2
|
||||
No command to run was specified.
|
||||
.TP
|
||||
3
|
||||
The
|
||||
.B xauth
|
||||
command is not available.
|
||||
.TP
|
||||
4
|
||||
The temporary directory that was going to be used already exists; since
|
||||
.B xvfb\-run
|
||||
produces a uniquely named directory, this may indicate an attempt by another
|
||||
process on the system to exploit a temporary file race condition.
|
||||
.TP
|
||||
5
|
||||
A problem was encountered while cleaning up the temporary directory.
|
||||
.TP
|
||||
6
|
||||
A problem was encountered while using
|
||||
.BR getopt (1)
|
||||
to parse the command\-line arguments.
|
||||
.SH EXAMPLES
|
||||
.TP
|
||||
.B xvfb\-run \-\-auto\-servernum \-\-server\-num=1 xlogo
|
||||
runs the
|
||||
.BR xlogo (1x)
|
||||
demonstration client inside the
|
||||
.B Xvfb
|
||||
X server on the first available server number greater than or equal to 1.
|
||||
.TP
|
||||
.B xvfb\-run \-\-server\-args="\-screen 0 1024x768x24" ico \-faces
|
||||
runs the
|
||||
.BR ico (1x)
|
||||
demonstration client (and passes it the
|
||||
.B \-faces
|
||||
argument) inside the
|
||||
.B Xvfb
|
||||
X server, configured with a root window of 1024 by 768 pixels and a color
|
||||
depth of 24 bits.
|
||||
.PP
|
||||
Note that the demo X clients used in the above examples will not exit on
|
||||
their own, so they will have to be killed before
|
||||
.B xvfb\-run
|
||||
will exit.
|
||||
.SH BUGS
|
||||
See
|
||||
.URL "http://bugs.debian.org/xvfb" "the Debian Bug Tracking System" .
|
||||
If you wish to report a bug in
|
||||
.BR xvfb\-run ,
|
||||
please use the
|
||||
.BR reportbug (1)
|
||||
command.
|
||||
.SH AUTHOR
|
||||
.B xfvb\-run
|
||||
was written by Branden Robinson and Jeff Licquia with sponsorship from
|
||||
Progeny Linux Systems.
|
||||
.SH "SEE ALSO"
|
||||
.BR Xvfb (1x),
|
||||
.BR xauth (1x)
|
||||
.\" vim:set et tw=80:
|
Loading…
Reference in a new issue