diff options
author | root <root@rshg054.dnsready.net> | 2012-05-28 00:02:35 +0000 |
---|---|---|
committer | root <root@rshg054.dnsready.net> | 2012-05-28 00:02:35 +0000 |
commit | 89dd7b5f30d48c708092a71b1c8285090fe91505 (patch) | |
tree | fb3a22f789121b955ff0fce7ec8d2f8c8886579b /staging | |
parent | 1f45ad8e3f17397e2f44e68ef9a0d860091eea9e (diff) |
Mon May 28 00:02:35 UTC 2012
Diffstat (limited to 'staging')
64 files changed, 6185 insertions, 0 deletions
diff --git a/staging/bluez/PKGBUILD b/staging/bluez/PKGBUILD new file mode 100644 index 000000000..9d9043e53 --- /dev/null +++ b/staging/bluez/PKGBUILD @@ -0,0 +1,87 @@ +# $Id: PKGBUILD 159751 2012-05-26 12:43:04Z tomegun $ +# Maintainer: Tom Gundersen <teg@jklm.no> +# Contributor: Andrea Scarpino <andrea@archlinux.org> +# Contributor: Geoffroy Carrier <geoffroy@archlinux.org> + +pkgname=bluez +pkgver=4.99 +pkgrel=3 +pkgdesc="Libraries and tools for the Bluetooth protocol stack" +url="http://www.bluez.org/" +arch=('i686' 'x86_64') +license=('GPL2') +depends=('dbus-core' 'python2' 'udev') +makedepends=('gstreamer0.10-base' 'libusb-compat' 'libsndfile') +optdepends=("gstreamer0.10-base: bluetooth GStreamer support" + "alsa-lib: Audio bluetooth devices support" + "dbus-python: to run bluez-simple-agent" + "pygobject: to run bluez-simple-agent" + "libusb-compat: USB adapters support" + "cups: CUPS backend") +conflicts=('bluez-libs' 'bluez-utils') +provides=('bluez-libs' 'bluez-utils') +replaces=('bluez-libs' 'bluez-utils') +options=('!libtool') +backup=(etc/bluetooth/{main,rfcomm,audio,network,input,serial}.conf + 'etc/conf.d/bluetooth' 'etc/dbus-1/system.d/bluetooth.conf') +source=("http://www.kernel.org/pub/linux/bluetooth/${pkgname}-${pkgver}.tar.bz2" + 'bluetooth.conf.d' + 'rc.bluetooth') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + + ./configure --prefix=/usr \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --libexecdir=/lib \ + --enable-gstreamer \ + --enable-alsa \ + --enable-usb \ + --enable-tools \ + --enable-bccmd \ + --enable-dfutool \ + --enable-hid2hci \ + --enable-hidd \ + --enable-pand \ + --enable-dund \ + --enable-cups \ + --enable-wiimote \ + --disable-test + + sed -ri 's,udev_get_(dev|sys)_path([^)]+\)),"/\1",g' tools/hid2hci.c + + make +} + +package() { + cd ${srcdir}/${pkgname}-${pkgver} + make DESTDIR=${pkgdir} install + + install -Dm755 ${srcdir}/rc.bluetooth ${pkgdir}/etc/rc.d/bluetooth + + install -d ${pkgdir}/etc/bluetooth + install -m644 network/network.conf \ + input/input.conf \ + audio/audio.conf \ + serial/serial.conf \ + ${pkgdir}/etc/bluetooth/ + + install -Dm644 ${srcdir}/bluetooth.conf.d \ + ${pkgdir}/etc/conf.d/bluetooth + + # FS#27630 + install -Dm755 test/simple-agent "${pkgdir}"/usr/bin/bluez-simple-agent + install -Dm755 test/test-device "${pkgdir}"/usr/bin/bluez-test-device + install -Dm755 test/test-input "${pkgdir}"/usr/bin/bluez-test-input + sed -i 's#/usr/bin/python#/usr/bin/python2#' \ + "${pkgdir}"/usr/bin/bluez-simple-agent \ + "${pkgdir}"/usr/bin/bluez-test-device \ + "${pkgdir}"/usr/bin/bluez-test-input + + # http://mailman.archlinux.org/pipermail/arch-general/2011-April/019787.html +# rm "${pkgdir}"/usr/lib/udev/rules.d/97-bluetooth.rules +} +md5sums=('2387053eb5a7b02f37df4871df022a02' + '7412982b440f29fa7f76a41a87fef985' + '8f9498707f809506928b2e480d3b6789') diff --git a/staging/bluez/bluetooth.conf.d b/staging/bluez/bluetooth.conf.d new file mode 100644 index 000000000..1c1e02589 --- /dev/null +++ b/staging/bluez/bluetooth.conf.d @@ -0,0 +1,30 @@ +# Bluetooth configuraton file + +# Bluetooth services (allowed values are "true" and "false") + +# Run the bluetoothd daemon (default: true) +#DAEMON_ENABLE="false" + +# Run the sdp daemon (default: false) +# If this is disabled, hcid's internal sdp daemon will be used +#SDPD_ENABLE="true" + +# Run the bluetooth HID daemon (default: false) +#HIDD_ENABLE="true" + +# Activate rfcomm ports (default: false) +#RFCOMM_ENABLE="true" + +# Run bluetooth dial-up networking daemon (default: false) +#DUND_ENABLE="true" + +# Run bluetooth PAN daemon (default: false) +#PAND_ENABLE="true" + +# rfcomm configuration file (default: /etc/bluetooth/rfcomm.conf) +#RFCOMM_CONFIG="/etc/bluetooth/rfcomm.conf" + +# Options for hidd, dund and pand (default: none) +HIDD_OPTIONS="--server" +#DUND_OPTIONS="" +#PAND_OPTIONS="" diff --git a/staging/bluez/rc.bluetooth b/staging/bluez/rc.bluetooth new file mode 100644 index 000000000..a46ee2abb --- /dev/null +++ b/staging/bluez/rc.bluetooth @@ -0,0 +1,100 @@ +#!/bin/bash +# +# Start/stop the Bluetooth daemons +# + +. /etc/rc.conf +. /etc/rc.d/functions + +DAEMON_NAME="bluetoothd" +HIDD_NAME="hidd" +RFCOMM_NAME="rfcomm" +PAND_NAME="pand" +DUND_NAME="dund" + +DAEMON_EXEC="/usr/sbin/bluetoothd" +HIDD_EXEC="/usr/bin/hidd" +RFCOMM_EXEC="/usr/bin/rfcomm" +PAND_EXEC="/usr/bin/pand" +DUND_EXEC="/usr/bin/dund" + +DAEMON_ENABLE="true" +HIDD_ENABLE="false" +RFCOMM_ENABLE="false" +DUND_ENABLE="false" +PAND_ENABLE="false" + +RFCOMM_CONFIG="/etc/bluetooth/rfcomm.conf" + +HIDD_OPTIONS="" +DUND_OPTIONS="" +PAND_OPTIONS="" + +[ -f /etc/conf.d/bluetooth ] && . /etc/conf.d/bluetooth + +case "$1" in + start) + stat_busy "Starting bluetooth subsystem:" + if [ "$DAEMON_ENABLE" = "true" -a -x "$DAEMON_EXEC" ] ; then + stat_append " $DAEMON_NAME" + $DAEMON_EXEC + sleep 1 + fi + if [ "$SDPD_ENABLE" = "true" -a -x "$SDPD_EXEC" ] ; then + stat_append " $SDPD_NAME" + $SDPD_EXEC + fi + if [ "$HIDD_ENABLE" = "true" -a -x "$HIDD_EXEC" ]; then + stat_append " $HIDD_NAME" + $HIDD_EXEC $HIDD_OPTIONS + fi + if [ "$RFCOMM_ENABLE" = "true" -a -x "$RFCOMM_EXEC" -a -f "$RFCOMM_CONFIG" ]; then + stat_append " $RFCOMM_NAME" + $RFCOMM_EXEC -f $RFCOMM_CONFIG bind all + fi + if [ "$DUND_ENABLE" = "true" -a -x "$DUND_EXEC" -a -n "$DUND_OPTIONS" ]; then + stat_append " $DUND_NAME" + $DUND_EXEC $DUND_OPTIONS + fi + if [ "$PAND_ENABLE" = "true" -a -x "$PAND_EXEC" -a -n "$PAND_OPTIONS" ]; then + stat_append " $PAND_NAME" + $PAND_EXEC $PAND_OPTIONS + fi + add_daemon bluetooth + stat_done + ;; + stop) + stat_busy "Stopping bluetooth subsystem:" + + stat_append " $PAND_NAME" + killall $PAND_NAME >/dev/null 2>&1 + + stat_append " $DUND_NAME" + killall $DUND_NAME >/dev/null 2>&1 + + if [ -x "$RFCOMM_EXEC" ]; then + stat_append " $RFCOMM_NAME" + $RFCOMM_EXEC release all >/dev/null 2>&1 + fi + + stat_append " $HIDD_NAME" + killall $HIDD_NAME >/dev/null 2>&1 + + stat_append " $SDPD_NAME" + killall $SDPD_NAME >/dev/null 2>&1 + + stat_append " $DAEMON_NAME" + killall $DAEMON_NAME >/dev/null 2>&1 + + rm_daemon bluetooth + stat_done + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac +exit 0 diff --git a/staging/cairo-perl/PKGBUILD b/staging/cairo-perl/PKGBUILD new file mode 100644 index 000000000..ba76f82c8 --- /dev/null +++ b/staging/cairo-perl/PKGBUILD @@ -0,0 +1,34 @@ +# $Id: PKGBUILD 159743 2012-05-26 12:14:50Z bluewind $ +# Maintainer: Jan de Groot <jgc@archlinux.org> + +pkgname=cairo-perl +pkgver=1.082 +pkgrel=2 +pkgdesc="Perl wrappers for cairo" +arch=(i686 x86_64) +license=('LGPL') +url="http://gtk2-perl.sourceforge.net/" +options=('!emptydirs') +depends=('cairo' 'perl') +makedepends=('perl-extutils-depends' 'perl-extutils-pkgconfig') +source=(http://downloads.sourceforge.net/sourceforge/gtk2-perl/Cairo-${pkgver}.tar.gz + testsuite.patch) +md5sums=('cfd61e519ff20023979c255d4040fe06' + '6a3ceac304a5a53f8fdd5652d98f6855') + +build() { + cd "${srcdir}/Cairo-${pkgver}" + patch -Np1 -i "${srcdir}/testsuite.patch" + perl Makefile.PL INSTALLDIRS=vendor + make +} + +check() { + cd "${srcdir}/Cairo-${pkgver}" + make test +} + +package() { + cd "${srcdir}/Cairo-${pkgver}" + make DESTDIR="${pkgdir}" install +} diff --git a/staging/cairo-perl/testsuite.patch b/staging/cairo-perl/testsuite.patch new file mode 100644 index 000000000..59cb58f28 --- /dev/null +++ b/staging/cairo-perl/testsuite.patch @@ -0,0 +1,135 @@ +From 21dd8a0600cbfac46723c7745b377fce94c8bdc3 Mon Sep 17 00:00:00 2001 +From: Torsten Schönfeld <kaffeetisch@gmx.de> +Date: Sat, 31 Mar 2012 10:34:11 +0000 +Subject: Fix compiling and testing against older versions of cairo + +--- +(limited to 't/CairoPath.t') + +diff --git a/t/CairoPath.t b/t/CairoPath.t +index e515172..770e464 100644 +--- a/t/CairoPath.t ++++ b/t/CairoPath.t +@@ -11,11 +11,17 @@ use strict; + use warnings; + use Cairo; + +-use Test::More tests => 6; ++use Test::More; + + use constant IMG_WIDTH => 256; + use constant IMG_HEIGHT => 256; + ++if (Cairo::VERSION >= Cairo::VERSION_ENCODE (1, 4, 0)) { ++ plan tests => 6; ++} else { ++ plan skip_all => 'path behavior not predictable on cairo < 1.4'; ++} ++ + my $surf = Cairo::ImageSurface->create ('rgb24', IMG_WIDTH, IMG_HEIGHT); + my $cr = Cairo::Context->create ($surf); + +-- +cgit v0.9.0.2 +From a1cd2e45b4ee49a724ae5d7e854ad9829eebf00d Mon Sep 17 00:00:00 2001 +From: Torsten Schönfeld <kaffeetisch@gmx.de> +Date: Sat, 07 Apr 2012 18:01:31 +0000 +Subject: Make t/CairoPath.t more robust + +The end of a path that took a round trip into cairo and back might differ +for different versions of cairo. Hence, compare only the beginning with +the expected path. +--- +diff --git a/t/CairoPath.t b/t/CairoPath.t +index 770e464..27a3aad 100644 +--- a/t/CairoPath.t ++++ b/t/CairoPath.t +@@ -11,17 +11,11 @@ use strict; + use warnings; + use Cairo; + +-use Test::More; ++use Test::More tests => 18; + + use constant IMG_WIDTH => 256; + use constant IMG_HEIGHT => 256; + +-if (Cairo::VERSION >= Cairo::VERSION_ENCODE (1, 4, 0)) { +- plan tests => 6; +-} else { +- plan skip_all => 'path behavior not predictable on cairo < 1.4'; +-} +- + my $surf = Cairo::ImageSurface->create ('rgb24', IMG_WIDTH, IMG_HEIGHT); + my $cr = Cairo::Context->create ($surf); + +@@ -40,14 +34,7 @@ my $expected_path = [ + ]; + + my $path = $cr->copy_path; +-is_deeply ($path, $expected_path); +- +-sub paths_agree { +- my ($cr, $path, $expected_path) = @_; +- $cr->new_path; +- $cr->append_path ($path); +- is_deeply ($cr->copy_path, $expected_path); +-} ++paths_agree ($path, $expected_path); + + # Modifying single point values. + foreach ($path, $expected_path) { +@@ -57,21 +44,21 @@ foreach ($path, $expected_path) { + $_->[2]{points}[2][0] = 99; + $_->[2]{points}[2][1] = 1010; + } +-paths_agree ($cr, $path, $expected_path); ++path_round_trip_ok ($cr, $path, $expected_path); + + # Modifying single points. + foreach ($path, $expected_path) { + $_->[1]{points}[0] = [333, 444]; + $_->[2]{points}[2] = [77, 88]; + } +-paths_agree ($cr, $path, $expected_path); ++path_round_trip_ok ($cr, $path, $expected_path); + + # Replacing all points. + foreach ($path, $expected_path) { + $_->[1]{points} = [[3333, 4444]]; + $_->[2]{points} = [[55, 66], [77, 88], [99, 1010]]; + } +-paths_agree ($cr, $path, $expected_path); ++path_round_trip_ok ($cr, $path, $expected_path); + + # Replacing and adding path segments. + my @cloned_path = @{$path}; +@@ -86,9 +73,24 @@ foreach (\@cloned_path, $expected_path) { + type => 'line-to', + points => [[23, 42]] }; + } +-paths_agree ($cr, \@cloned_path, $expected_path); ++path_round_trip_ok ($cr, \@cloned_path, $expected_path); + + # Passing bare arrays into Cairo. + $cr->new_path; + $cr->append_path ($expected_path); +-is_deeply ($cr->copy_path, $expected_path); ++paths_agree ($cr->copy_path, $expected_path); ++ ++sub path_round_trip_ok { ++ my ($cr, $path, $expected_path) = @_; ++ $cr->new_path; ++ $cr->append_path ($path); ++ paths_agree ($cr->copy_path, $expected_path); ++} ++ ++sub paths_agree { ++ my ($path, $expected_path) = @_; ++ # Only the first three entries seem to be reliable across cairo versions. ++ for (0..2) { ++ is_deeply ($path->[$_], $expected_path->[$_]); ++ } ++} +-- +cgit v0.9.0.2 diff --git a/staging/easytag/PKGBUILD b/staging/easytag/PKGBUILD new file mode 100644 index 000000000..eb59f4ae0 --- /dev/null +++ b/staging/easytag/PKGBUILD @@ -0,0 +1,28 @@ +# $Id: PKGBUILD 159784 2012-05-26 23:49:07Z tomegun $ +# Maintainer: +# Contributor: Kevin Piche <kevin@archlinux.org> +# Contributor: Aaron Griffin <aaron@archlinux.org> +# Contributor: dorphell <dorphell@archlinux.org> + +pkgname=easytag +pkgver=2.1.7 +pkgrel=2 +pkgdesc="Utility for viewing, editing and writing ID3 tags of your MP3 files" +arch=('i686' 'x86_64') +license=('GPL') +url='http://easytag.sourceforge.net/' +depends=('id3lib' 'libid3tag' 'gtk2' 'libvorbis' 'flac' 'speex' 'wavpack' 'desktop-file-utils') +install=${pkgname}.install +source=("http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.bz2") +md5sums=('9df3e800d80e754670642f2ba5e03539') + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + ./configure --prefix=/usr + make +} + +package() { + cd ${srcdir}/${pkgname}-${pkgver} + make DESTDIR=${pkgdir} install +} diff --git a/staging/easytag/easytag.install b/staging/easytag/easytag.install new file mode 100644 index 000000000..93908edac --- /dev/null +++ b/staging/easytag/easytag.install @@ -0,0 +1,11 @@ +post_install() { + [[ -x usr/bin/update-desktop-database ]] && update-desktop-database -q || true +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} diff --git a/staging/frozen-bubble/PKGBUILD b/staging/frozen-bubble/PKGBUILD new file mode 100644 index 000000000..c4428993a --- /dev/null +++ b/staging/frozen-bubble/PKGBUILD @@ -0,0 +1,41 @@ +# $Id: PKGBUILD 159777 2012-05-26 19:52:21Z foutrelis $ +# Maintainer: Jan "heftig" Steffens <jan.steffens@gmail.com> +# Contributor: Allan McRae <allan@archlinux.org> +# Contributor: Brandon Niemczyk <maccorin@cfl.rr.com> + +pkgname=frozen-bubble +_pkgver=2.2.1-beta1 +pkgver=${_pkgver/-/} +pkgrel=4 +pkgdesc="A game in which you throw colorful bubbles and build groups to destroy the bubbles" +arch=(i686 x86_64) +url="http://www.frozen-bubble.org" +license=(GPL2) +depends=(perl-sdl perl-ipc-system-simple perl-compress-bzip2 perl-file-which) +makedepends=(perl-file-slurp perl-locale-maketext-lexicon) +options=('!emptydirs') +source=(http://www.frozen-bubble.org/data/$pkgname-$_pkgver.tar.bz2 \ + frozen-bubble.desktop) +md5sums=('825cc23ed806838b9d86de9982a5687a' + '01b10b77ba6ad856f5c199121c582272') + +build() { + cd "$srcdir/$pkgname-$_pkgver" + unset CFLAGS + # install module in vendor directories + perl Build.PL installdirs=vendor + perl Build +} + +check() { + cd "$srcdir/$pkgname-$_pkgver" + perl Build test +} + +package() { + cd "$srcdir/$pkgname-$_pkgver" + perl Build install destdir="$pkgdir" + + install -D -m644 share/icons/frozen-bubble-icon-64x64.png "$pkgdir/usr/share/pixmaps/frozen-bubble.png" + install -D -m644 "$srcdir/frozen-bubble.desktop" "$pkgdir/usr/share/applications/frozen-bubble.desktop" +} diff --git a/staging/frozen-bubble/frozen-bubble.desktop b/staging/frozen-bubble/frozen-bubble.desktop new file mode 100644 index 000000000..76a7bcd88 --- /dev/null +++ b/staging/frozen-bubble/frozen-bubble.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Type=Application +Version=1.0 +Encoding=UTF-8 +Name=Frozen Bubble +Icon=frozen-bubble.png +Exec=/usr/bin/vendor_perl/frozen-bubble +Terminal=false +Categories=Game; diff --git a/staging/gconf-perl/PKGBUILD b/staging/gconf-perl/PKGBUILD new file mode 100644 index 000000000..e63bf621d --- /dev/null +++ b/staging/gconf-perl/PKGBUILD @@ -0,0 +1,34 @@ +# $Id: PKGBUILD 159747 2012-05-26 12:22:57Z bluewind $ +# Maintainer: Jan de Groot <jgc@archlinux.org> + +pkgname=gconf-perl +pkgver=1.044 +pkgrel=7 +pkgdesc="Gnome2-GConf perl bindings for gconf" +arch=('i686' 'x86_64') +license=('LGPL') +url="http://gtk2-perl.sourceforge.net/" +makedepends=('perl-extutils-pkgconfig' 'perl-extutils-depends') +depends=('glib-perl' 'gconf' 'perl') +options=(!emptydirs) +source=(http://downloads.sourceforge.net/sourceforge/gtk2-perl/Gnome2-GConf-${pkgver}.tar.gz + disable-orbit.patch) +md5sums=('ea386003b18f067524833b0eeb271330' + '14852fc936ce7b552eb204913d55fd1c') + +build() { + cd "${srcdir}/Gnome2-GConf-${pkgver}" + patch -Np1 -i "${srcdir}/disable-orbit.patch" + perl Makefile.PL INSTALLDIRS=vendor + make +} + +check() { + cd "${srcdir}/Gnome2-GConf-${pkgver}" + dbus-launch --exit-with-session make test +} + +package() { + cd "${srcdir}/Gnome2-GConf-${pkgver}" + make DESTDIR="${pkgdir}" install +} diff --git a/staging/gconf-perl/disable-orbit.patch b/staging/gconf-perl/disable-orbit.patch new file mode 100644 index 000000000..da526ec2e --- /dev/null +++ b/staging/gconf-perl/disable-orbit.patch @@ -0,0 +1,30 @@ +Description: Disable gconf_engine_key_is_writable + This symbol is not available in libgconf when it is configured without + ORBit support, which is currently the case in Debian. +Author: Colin Watson <cjwatson@ubuntu.com> +Bug-Debian: http://bugs.debian.org/649055 +Forwarded: no +Last-Update: 2011-11-17 + +Index: b/xs/GConfEngine.xs +=================================================================== +--- a/xs/GConfEngine.xs ++++ b/xs/GConfEngine.xs +@@ -350,6 +350,8 @@ + if (err) + gperl_croak_gerror (NULL, err); + ++#if 0 /* requires gconf to be configured with ORBit support */ ++ + ##gboolean gconf_engine_key_is_writable (GConfEngine *conf, + ## const gchar *key, + ## GError **err); +@@ -366,6 +368,8 @@ + OUTPUT: + RETVAL + ++#endif ++ + guint + gconf_engine_notify_add (engine, namespace_section, func, data=NULL) + GConfEngine * engine diff --git a/staging/glib-perl/PKGBUILD b/staging/glib-perl/PKGBUILD new file mode 100644 index 000000000..6f0b83b09 --- /dev/null +++ b/staging/glib-perl/PKGBUILD @@ -0,0 +1,32 @@ +# $Id: PKGBUILD 159741 2012-05-26 12:00:57Z bluewind $ +# Maintainer: Jan de Groot <jgc@archlinux.org> +# Contributor: Sarah Hay <sarah@archlinux.org> + +pkgname=glib-perl +pkgver=1.242 +pkgrel=2 +pkgdesc="Perl wrappers for glib 2.x, including GObject" +arch=(i686 x86_64) +license=('LGPL') +url="http://gtk2-perl.sourceforge.net/" +options=('!emptydirs') +depends=('glib2>=2.24.1' 'perl>=5.14') +makedepends=('perl-extutils-depends>=0.302' 'perl-extutils-pkgconfig>=1.12') +source=(http://downloads.sourceforge.net/sourceforge/gtk2-perl/Glib-${pkgver}.tar.gz) +md5sums=('59c176888e8ef8139c4e1b8c2d45f1d0') + +build() { + cd "${srcdir}/Glib-${pkgver}" + perl Makefile.PL INSTALLDIRS=vendor + make +} + +check() { + cd "${srcdir}/Glib-${pkgver}" + make test +} + +package() { + cd "${srcdir}/Glib-${pkgver}" + make DESTDIR="${pkgdir}" install +} diff --git a/staging/graphicsmagick/PKGBUILD b/staging/graphicsmagick/PKGBUILD new file mode 100644 index 000000000..96cb72b92 --- /dev/null +++ b/staging/graphicsmagick/PKGBUILD @@ -0,0 +1,60 @@ +# $Id: PKGBUILD 159767 2012-05-26 17:25:12Z bluewind $ +# Maintainer: Ronald van Haren <ronald.archlinux.org> +# Maintainer: Gaetan Bisson <bisson@archlinux.org> +# Contributor: Jaroslav Lichtblau <dragonlord@aur.archlinux.org> +# Contributor: Anton Leontiev <bunder@t-25.ru> + +pkgname=graphicsmagick +pkgver=1.3.15 +pkgrel=2 +pkgdesc='Image processing system' +url='http://www.graphicsmagick.org/' +arch=('i686' 'x86_64') +license=('MIT') +makedepends=('perl') +depends=('bzip2' 'freetype2' 'ghostscript' 'jasper' 'lcms2' 'xz' + 'libtiff' 'libwmf' 'libsm' 'libxml2' 'libltdl') +options=('!libtool') +source=("http://downloads.sourceforge.net/project/${pkgname}/${pkgname}/${pkgver}/GraphicsMagick-${pkgver}.tar.xz") +sha1sums=('d5df4000d5531fad3ede9e008f9c8dc2d085d546') + +build() { + cd "${srcdir}/GraphicsMagick-${pkgver}" + + # fix typemap bug + # https://rt.cpan.org/Public/Bug/Display.html?id=70150 + # http://trac.imagemagick.org/browser/ImageMagick/branches/ImageMagick-6.7.7/PerlMagick/typemap + echo 'Graphics::Magick T_PTROBJ' > typemap + + ./configure \ + --prefix=/usr \ + --with-perl \ + --enable-shared \ + --disable-static \ + --with-gs-font-dir=/usr/share/fonts/Type1 \ + + make +} + +package() { + cd "${srcdir}/GraphicsMagick-${pkgver}" + + make DESTDIR="${pkgdir}" install + + # Install MIT license + install -Dm644 "Copyright.txt" "${pkgdir}/usr/share/licenses/${pkgname}/Copyright.txt" + + # Install perl bindings + # The patching was introduced in order to build perl module without installing package itself and + # not to introduce unnecessary path into LD_RUN_PATH + cd PerlMagick + sed -i -e "s:'LDDLFLAGS' => \"\(.*\)\":'LDDLFLAGS' => \"-L${pkgdir}/usr/lib \1\":" Makefile.PL + perl Makefile.PL INSTALLDIRS=vendor PREFIX=/usr DESTDIR="${pkgdir}" + sed -i -e "s/LDLOADLIBS =/LDLOADLIBS = -lGraphicsMagick/" Makefile + make + make install + + # Remove perllocal.pod and .packlist + rm -rf "${pkgdir}/usr/lib/perl5/core_perl" + rm "${pkgdir}/usr/lib/perl5/vendor_perl/auto/Graphics/Magick/.packlist" +} diff --git a/staging/gvfs/PKGBUILD b/staging/gvfs/PKGBUILD new file mode 100644 index 000000000..bb8fa6d9c --- /dev/null +++ b/staging/gvfs/PKGBUILD @@ -0,0 +1,112 @@ +# $Id: PKGBUILD 159759 2012-05-26 15:13:31Z ibiru $ +# Maintainer: Jan de Groot <jgc@archlinux.org> + +pkgbase=gvfs +pkgname=('gvfs' 'gvfs-smb' 'gvfs-afc' 'gvfs-afp' 'gvfs-gphoto2' 'gvfs-obexftp') +pkgver=1.12.3 +pkgrel=2 +arch=('i686' 'x86_64') +license=('LGPL') +makedepends=('avahi' 'bluez' 'dbus-glib' 'fuse' 'intltool' 'libarchive' 'libcdio' 'libgphoto2' 'libimobiledevice' 'libsoup-gnome' 'smbclient' 'udisks2') +url="http://www.gnome.org" +options=(!libtool) +source=(http://ftp.gnome.org/pub/gnome/sources/$pkgbase/${pkgver%.*}/$pkgbase-$pkgver.tar.xz) +sha256sums=('38f69ec92083f86a51e7814e98d2861151f16dfb3abe4b3b39488408e12fd9c2') + +build() { + cd "$pkgbase-$pkgver" + ./configure --prefix=/usr --sysconfdir=/etc \ + --localstatedir=/var --disable-static \ + --libexecdir=/usr/lib/gvfs \ + --with-bash-completion-dir=/usr/share/bash-completion/completions + make +} + +package_gvfs() { + pkgdesc="Userspace virtual filesystem implemented as a pluggable module for gio" + depends=('avahi' 'dconf' 'fuse' 'libarchive' 'libcdio' 'libsoup-gnome' 'udisks2') + optdepends=('gvfs-afc: AFC (mobile devices) support' + 'gvfs-smb: SMB/CIFS (Windows client) support' + 'gvfs-gphoto2: gphoto2 (PTP camera/MTP media player) support' + 'gvfs-obexftp: ObexFTP (bluetooth) support' + 'gvfs-afp: Apple Filing Protocol (AFP) support') + install=gvfs.install + + cd "$pkgbase-$pkgver" + sed -e 's/^am__append_4/#am__append_4/' \ + -e 's/^am__append_5/#am__append_5/' \ + -i monitor/Makefile + make DESTDIR="$pkgdir" install + + cd "$pkgdir" + rm usr/lib/gvfs/gvfsd-{smb,smb-browse,afc,afp,afp-browse,gphoto2,obexftp} + rm usr/share/gvfs/mounts/{smb,smb-browse,afc,afp,afp-browse,gphoto2,obexftp}.mount + rm usr/share/glib-2.0/schemas/org.gnome.system.smb.gschema.xml + rm usr/share/GConf/gsettings/gvfs-smb.convert +} + +package_gvfs-smb() { + pkgdesc="SMB/CIFS (Windows client) backend for gvfs" + depends=("gvfs=$pkgver" 'smbclient' 'libgnome-keyring') + install=gvfs-smb.install + + cd "$pkgbase-$pkgver/daemon" + install -m755 -d "$pkgdir/usr/lib/gvfs" + install -m755 -d "$pkgdir/usr/share/gvfs/mounts" + + install -m755 .libs/gvfsd-smb{,-browse} "$pkgdir/usr/lib/gvfs/" + install -m644 smb{,-browse}.mount "$pkgdir/usr/share/gvfs/mounts/" + + install -Dm644 org.gnome.system.smb.gschema.xml \ + "$pkgdir/usr/share/glib-2.0/schemas/org.gnome.system.smb.gschema.xml" + install -Dm644 gvfs-smb.convert \ + "$pkgdir/usr/share/GConf/gsettings/gvfs-smb.convert" +} + +package_gvfs-afc() { + pkgdesc="AFC (mobile devices) backend for gvfs" + depends=("gvfs=$pkgver" 'libimobiledevice') + install=gvfs-module.install + + cd "$pkgbase-$pkgver/daemon" + install -D .libs/gvfsd-afc "$pkgdir/usr/lib/gvfs/gvfsd-afc" + install -Dm644 afc.mount "$pkgdir/usr/share/gvfs/mounts/afc.mount" + + cd "$srcdir/$pkgbase-$pkgver/monitor/afc" + make DESTDIR="$pkgdir" install +} + +package_gvfs-gphoto2() { + pkgdesc="gphoto2 (PTP camera/MTP media player) backend for gvfs" + depends=("gvfs=$pkgver" 'dbus-core' 'libgphoto2' 'udev') + install=gvfs-module.install + + cd "$pkgbase-$pkgver/daemon" + install -D .libs/gvfsd-gphoto2 "$pkgdir/usr/lib/gvfs/gvfsd-gphoto2" + install -Dm644 gphoto2.mount "$pkgdir/usr/share/gvfs/mounts/gphoto2.mount" + + cd "$srcdir/$pkgbase-$pkgver/monitor/gphoto2" + make DESTDIR="$pkgdir" install +} + +package_gvfs-obexftp() { + pkgdesc="ObexFTP (bluetooth) backend for gvfs" + depends=("gvfs=$pkgver" 'dbus-glib' 'bluez' 'obex-data-server') + install=gvfs-module.install + + cd "$pkgbase-$pkgver/daemon" + install -D .libs/gvfsd-obexftp "$pkgdir/usr/lib/gvfs/gvfsd-obexftp" + install -Dm644 obexftp.mount "$pkgdir/usr/share/gvfs/mounts/obexftp.mount" +} + +package_gvfs-afp() { + pkgdesc="Apple Filing Protocol (AFP) backend for gvfs" + depends=("gvfs=$pkgver") + install=gvfs-module.install + install -m755 -d "$pkgdir/usr/lib/gvfs" + install -m755 -d "$pkgdir/usr/share/gvfs/mounts" + + cd "$pkgbase-$pkgver/daemon" + install -m755 .libs/gvfsd-afp{,-browse} "$pkgdir/usr/lib/gvfs/" + install -m644 afp{,-browse}.mount "$pkgdir/usr/share/gvfs/mounts/" +} diff --git a/staging/gvfs/gvfs-module.install b/staging/gvfs/gvfs-module.install new file mode 100644 index 000000000..09d1f11ec --- /dev/null +++ b/staging/gvfs/gvfs-module.install @@ -0,0 +1,7 @@ +post_install() { + killall -USR1 gvfsd >&/dev/null || : +} + +post_upgrade() { + post_install +} diff --git a/staging/gvfs/gvfs-smb.install b/staging/gvfs/gvfs-smb.install new file mode 100644 index 000000000..da6a2ab6d --- /dev/null +++ b/staging/gvfs/gvfs-smb.install @@ -0,0 +1,12 @@ +post_install() { + glib-compile-schemas /usr/share/glib-2.0/schemas + killall -USR1 gvfsd >&/dev/null || : +} + +post_upgrade() { + post_install +} + +post_remove() { + glib-compile-schemas /usr/share/glib-2.0/schemas +} diff --git a/staging/gvfs/gvfs.install b/staging/gvfs/gvfs.install new file mode 100644 index 000000000..3482d99e3 --- /dev/null +++ b/staging/gvfs/gvfs.install @@ -0,0 +1,14 @@ +post_install() { + gio-querymodules /usr/lib/gio/modules + glib-compile-schemas /usr/share/glib-2.0/schemas + killall -USR1 gvfsd >&/dev/null || : +} + +post_upgrade() { + post_install +} + +post_remove() { + gio-querymodules /usr/lib/gio/modules + glib-compile-schemas /usr/share/glib-2.0/schemas +} diff --git a/staging/libatasmart/PKGBUILD b/staging/libatasmart/PKGBUILD new file mode 100644 index 000000000..7981b0536 --- /dev/null +++ b/staging/libatasmart/PKGBUILD @@ -0,0 +1,28 @@ +# $Id: PKGBUILD 159755 2012-05-26 15:06:57Z ibiru $ +# Maintainer: Jan de Groot <jgc@archlinux.org> + +pkgname=libatasmart +pkgver=0.18 +pkgrel=2 +pkgdesc="ATA S.M.A.R.T. Reading and Parsing Library" +arch=('i686' 'x86_64') +license=('LGPL') +depends=('udev') +url="http://0pointer.de/blog/projects/being-smart.html" +options=('!libtool') +source=("http://0pointer.de/public/${pkgname}-${pkgver}.tar.gz") +md5sums=('dc22b7acda1c2230f55ae98737e8b159') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --disable-static + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make DESTDIR="${pkgdir}" install +} diff --git a/staging/mesa/LICENSE b/staging/mesa/LICENSE new file mode 100644 index 000000000..ae33d2709 --- /dev/null +++ b/staging/mesa/LICENSE @@ -0,0 +1,82 @@ +Disclaimer + +Mesa is a 3-D graphics library with an API which is very similar to +that of OpenGL* +To the extent that Mesa utilizes the OpenGL command syntax or state +machine, it is being used with authorization from Silicon Graphics, +Inc.(SGI). However, the author does not possess an OpenGL license +from SGI, and makes no claim that Mesa is in any way a compatible +replacement for OpenGL or associated with SGI. Those who want a +licensed implementation of OpenGL should contact a licensed +vendor. + +Please do not refer to the library as MesaGL (for legal +reasons). It's just Mesa or The Mesa 3-D graphics +library + +* OpenGL is a trademark of Silicon Graphics Incorporated. + +License / Copyright Information + +The Mesa distribution consists of several components. Different copyrights +and licenses apply to different components. For example, GLUT is copyrighted +by Mark Kilgard, some demo programs are copyrighted by SGI, some of the Mesa +device drivers are copyrighted by their authors. See below for a list of +Mesa's main components and the license for each. + +The core Mesa library is licensed according to the terms of the MIT license. +This allows integration with the XFree86, Xorg and DRI projects. + +The default Mesa license is as follows: + +Copyright (C) 1999-2007 Brian Paul All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Attention, Contributors + +When contributing to the Mesa project you must agree to the licensing terms +of the component to which you're contributing. +The following section lists the primary components of the Mesa distribution +and their respective licenses. + + +Mesa Component Licenses + +Component Location Primary Author License +---------------------------------------------------------------------------- +Main Mesa code src/mesa/ Brian Paul Mesa (MIT) + +Device drivers src/mesa/drivers/* See drivers See drivers + +Ext headers include/GL/glext.h SGI SGI Free B + include/GL/glxext.h + +GLUT src/glut/ Mark Kilgard Mark's copyright + +Mesa GLU library src/glu/mesa/ Brian Paul GNU-LGPL + +SGI GLU library src/glu/sgi/ SGI SGI Free B + +demo programs progs/demos/ various see source files + +X demos progs/xdemos/ Brian Paul see source files + +SGI demos progs/samples/ SGI SGI copyright + +RedBook demos progs/redbook/ SGI SGI copyright diff --git a/staging/mesa/PKGBUILD b/staging/mesa/PKGBUILD new file mode 100644 index 000000000..7bcb4ad10 --- /dev/null +++ b/staging/mesa/PKGBUILD @@ -0,0 +1,268 @@ +# $Id: PKGBUILD 159718 2012-05-26 09:28:14Z andyrtr $ +# Maintainer: Jan de Groot <jgc@archlinux.org> +# Maintainer: Andreas Radke <andyrtr@archlinux.org> + +pkgbase=mesa +pkgname=('mesa' 'libgl' 'osmesa' 'libglapi' 'libgbm' 'libgles' 'libegl' 'khrplatform-devel' 'ati-dri' 'intel-dri' 'nouveau-dri' 'svga-dri') + +#_git=true +_gitdate=20111031 +_git=false + +if [ "${_git}" = "true" ]; then + pkgver=7.10.99.git20110709 + #pkgver=7.11 + else + pkgver=8.0.3 +fi +pkgrel=2 +arch=('i686' 'x86_64') +makedepends=('glproto>=1.4.15' 'libdrm>=2.4.30' 'libxxf86vm>=1.1.1' 'libxdamage>=1.1.3' 'expat>=2.0.1' 'libx11>=1.4.99.1' 'libxt>=1.1.1' + 'gcc-libs>=4.6.1' 'dri2proto>=2.6' 'python2' 'libxml2' 'imake' 'llvm' 'udev>=183') +url="http://mesa3d.sourceforge.net" +license=('custom') +source=(LICENSE + mesa-8.0.3-llvm-3.1-fixes.patch) +if [ "${_git}" = "true" ]; then + # mesa git shot from 7.11 branch - see for state: http://cgit.freedesktop.org/mesa/mesa/commit/?h=7.11&id=1ae00c5960af83bea9545a18a1754bad83d5cbd0 + #source=(${source[@]} 'ftp://ftp.archlinux.org/other/mesa/mesa-1ae00c5960af83bea9545a18a1754bad83d5cbd0.tar.bz2') + source=(${source[@]} "MesaLib-git${_gitdate}.zip"::"http://cgit.freedesktop.org/mesa/mesa/snapshot/mesa-ef9f16f6322a89fb699fbe3da868b10f9acaef98.tar.bz2") + else + source=(${source[@]} "ftp://ftp.freedesktop.org/pub/mesa/${pkgver}/MesaLib-${pkgver}.tar.bz2" + #source=(${source[@]} "ftp://ftp.freedesktop.org/pub/mesa/8.0/MesaLib-8.0-rc2.tar.bz2" + #source=(${source[@]} "MesaLib-git${_gitdate}.zip"::"http://cgit.freedesktop.org/mesa/mesa/snapshot/mesa-4464ee1a9aa3745109cee23531e3fb2323234d07.tar.bz2" +) +fi +md5sums=('5c65a0fe315dd347e09b1f2826a1df5a' + 'c452ed3392468170726c004c2f4e02ca' + 'cc5ee15e306b8c15da6a478923797171') + +build() { + cd ${srcdir}/?esa-* + + patch -Np1 -i "${srcdir}/mesa-8.0.3-llvm-3.1-fixes.patch" + +if [ "${_git}" = "true" ]; then + autoreconf -vfi + ./autogen.sh --prefix=/usr \ + --with-dri-driverdir=/usr/lib/xorg/modules/dri \ + --with-gallium-drivers=r300,r600,nouveau,svga,swrast \ + --enable-gallium-llvm \ + --enable-gallium-egl \ + --enable-shared-glapi \ + --enable-gbm \ + --enable-glx-tls \ + --enable-dri \ + --enable-glx \ + --enable-osmesa \ + --enable-gles1 \ + --enable-gles2 \ + --enable-egl \ + --enable-texture-float \ + --enable-xa \ + --enable-shared-dricore + #--enable-gbm \ + # --enable-gallium-svga \ + + else + autoreconf -vfi + ./configure --prefix=/usr \ + --with-dri-driverdir=/usr/lib/xorg/modules/dri \ + --with-gallium-drivers=r300,r600,nouveau,svga,swrast \ + --enable-gallium-llvm \ + --enable-gallium-egl \ + --enable-shared-glapi \ + --enable-gbm \ + --enable-glx-tls \ + --enable-dri \ + --enable-glx \ + --enable-osmesa \ + --enable-gles1 \ + --enable-gles2 \ + --enable-egl \ + --enable-texture-float \ + --enable-xa \ + --enable-shared-dricore +fi + + make +} + +package_libgl() { + depends=('libdrm>=2.4.31' 'libxxf86vm>=1.1.1' 'libxdamage>=1.1.3' 'expat>=2.0.1' 'libglapi' 'gcc-libs') + pkgdesc="Mesa 3-D graphics library and DRI software rasterizer" + #replaces=('unichrome-dri' 'mach64-dri' 'mga-dri' 'r128-dri' 'savage-dri' 'sis-dri' 'tdfx-dri') + + cd ${srcdir}/?esa-* + install -m755 -d "${pkgdir}/usr/lib" + install -m755 -d "${pkgdir}/usr/lib/xorg/modules/extensions" + + bin/minstall lib/libGL.so* "${pkgdir}/usr/lib/" + bin/minstall lib/libdricore.so* "${pkgdir}/usr/lib/" + bin/minstall lib/libglsl.so* "${pkgdir}/usr/lib/" + + cd src/mesa/drivers/dri + make -C ${srcdir}/?esa-*/src/gallium/targets/dri-swrast DESTDIR="${pkgdir}" install + + ln -s libglx.xorg "${pkgdir}/usr/lib/xorg/modules/extensions/libglx.so" + + install -m755 -d "${pkgdir}/usr/share/licenses/libgl" + install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/libgl/" +} + +package_osmesa() { + depends=('mesa') + optdepends=('opengl-man-pages: for the OpenGL API man pages') + pkgdesc="Mesa 3D off-screen rendering library" + + make -C ${srcdir}/?esa-*/src/mesa DESTDIR="${pkgdir}" install-osmesa +} + +package_libglapi() { + depends=('glibc') + pkgdesc="free implementation of the GL API -- shared library. The Mesa GL API module is responsible for dispatching all the gl* functions" + + cd ${srcdir}/?esa-* + install -m755 -d "${pkgdir}/usr/lib" + bin/minstall lib/libglapi.so* "${pkgdir}/usr/lib/" + + install -m755 -d "${pkgdir}/usr/share/licenses/libglapi" + install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/libglapi/" +} + +package_libgbm() { + depends=('glibc') + pkgdesc="Mesa gbm library" + + cd ${srcdir}/?esa-* + install -m755 -d "${pkgdir}/usr/lib" + bin/minstall lib/libgbm.so* "${pkgdir}/usr/lib/" + install -m755 -d "${pkgdir}/usr/lib/pkgconfig" + bin/minstall src/gbm/main/gbm.pc "${pkgdir}/usr/lib/pkgconfig/" + + install -m755 -d "${pkgdir}/usr/share/licenses/libgbm" + install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/libgbm/" +} + +package_libgles() { + depends=('libglapi' 'khrplatform-devel') + pkgdesc="Mesa GLES libraries and headers" + + cd ${srcdir}/?esa-* + install -m755 -d "${pkgdir}/usr/lib" + install -m755 -d "${pkgdir}/usr/lib/pkgconfig" + install -m755 -d "${pkgdir}/usr/include" + install -m755 -d "${pkgdir}/usr/include/GLES" + install -m755 -d "${pkgdir}/usr/include/GLES2" + bin/minstall lib/libGLESv* "${pkgdir}/usr/lib/" + bin/minstall src/mapi/es1api/glesv1_cm.pc "${pkgdir}/usr/lib/pkgconfig/" + bin/minstall src/mapi/es2api/glesv2.pc "${pkgdir}/usr/lib/pkgconfig/" + bin/minstall include/GLES/* "${pkgdir}/usr/include/GLES/" + bin/minstall include/GLES2/* "${pkgdir}/usr/include/GLES2/" + bin/minstall include/GLES2/* "${pkgdir}/usr/include/GLES2/" + + install -m755 -d "${pkgdir}/usr/share/licenses/libgles" + install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/libgles/" +} + +package_libegl() { + depends=('libglapi' 'libdrm' 'libxext' 'libxfixes' 'udev' 'khrplatform-devel') + pkgdesc="Mesa EGL libraries and headers" + + cd ${srcdir}/?esa-* + make -C src/gallium/targets/egl-static DESTDIR="${pkgdir}" install + install -m755 -d "${pkgdir}/usr/lib" + install -m755 -d "${pkgdir}/usr/lib/pkgconfig" + install -m755 -d "${pkgdir}/usr/include" + install -m755 -d "${pkgdir}/usr/include/" + install -m755 -d "${pkgdir}/usr/include/EGL" + install -m755 -d "${pkgdir}/usr/share" + install -m755 -d "${pkgdir}/usr/share/doc" + install -m755 -d "${pkgdir}/usr/share/doc/libegl" + bin/minstall lib/libEGL.so* "${pkgdir}/usr/lib/" + install -m755 -d "${pkgdir}/usr/lib/egl" + bin/minstall lib/egl/* "${pkgdir}/usr/lib/egl/" + bin/minstall src/egl/main/egl.pc "${pkgdir}/usr/lib/pkgconfig/" + bin/minstall include/EGL/* "${pkgdir}/usr/include/EGL/" + bin/minstall docs/egl.html "${pkgdir}/usr/share/doc/libegl/" + + install -m755 -d "${pkgdir}/usr/share/licenses/libegl" + install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/libegl/" +} + +package_khrplatform-devel() { + #depends=('') + pkgdesc="Khronos platform development package" + + cd ${srcdir}/?esa-* + install -m755 -d "${pkgdir}/usr/include/KHR" + bin/minstall include/KHR/khrplatform.h "${pkgdir}/usr/include/KHR/" + + install -m755 -d "${pkgdir}/usr/share/licenses/khrplatform-devel" + install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/khrplatform-devel/" +} + +package_mesa() { + depends=('libgl' 'libx11>=1.4.3' 'libxt>=1.1.1' 'gcc-libs>=4.6' 'dri2proto>=2.6' 'glproto>=1.4.14') #dri2proto + glproto needed for gl.pc + optdepends=('opengl-man-pages: for the OpenGL API man pages') + pkgdesc="Mesa 3-D graphics libraries and include files" + + cd ${srcdir}/?esa-* + make DESTDIR="${pkgdir}" install + + rm -f "${pkgdir}/usr/lib/libGL.so"* + rm -f "${pkgdir}/usr/lib/libglapi.so"* + rm -f "${pkgdir}/usr/lib/libgbm.so"* + rm -f "${pkgdir}/usr/lib/libGLESv"* + rm -f "${pkgdir}/usr/lib/libEGL"* + rm -rf "${pkgdir}/usr/lib/egl" + rm -f "${pkgdir}/usr/lib/libOSMesa"* + rm -f ${pkgdir}/usr/lib/pkgconfig/{glesv1_cm.pc,glesv2.pc,egl.pc,osmesa.pc,gbm.pc} + rm -rf "${pkgdir}/usr/lib/xorg" + rm -f "${pkgdir}/usr/include/GL/glew.h" + rm -f "${pkgdir}/usr/include/GL/glxew.h" + rm -f "${pkgdir}/usr/include/GL/wglew.h" + rm -f "${pkgdir}/usr/include/GL/glut.h" + rm -rf ${pkgdir}/usr/include/{GLES,GLES2,EGL,KHR} + + install -m755 -d "${pkgdir}/usr/share/licenses/mesa" + install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/mesa/" +} + +package_ati-dri() { + depends=("libgl=${pkgver}") + pkgdesc="Mesa DRI radeon/r200 + Gallium3D r300,r600 drivers for AMD/ATI Radeon" + conflicts=('xf86-video-ati<6.9.0-6') + + # classic mesa drivers for radeon,r200 + make -C ${srcdir}/?esa-*/src/mesa/drivers/dri/radeon DESTDIR="${pkgdir}" install + make -C ${srcdir}/?esa-*/src/mesa/drivers/dri/r200 DESTDIR="${pkgdir}" install + # gallium3D driver for r300,r600 + make -C ${srcdir}/?esa-*/src/gallium/targets/dri-r300 DESTDIR="${pkgdir}" install + make -C ${srcdir}/?esa-*/src/gallium/targets/dri-r600 DESTDIR="${pkgdir}" install +} + +package_intel-dri() { + depends=("libgl=${pkgver}") + pkgdesc="Mesa DRI drivers for Intel" + + make -C ${srcdir}/?esa-*/src/mesa/drivers/dri/i915 DESTDIR="${pkgdir}" install + make -C ${srcdir}/?esa-*/src/mesa/drivers/dri/i965 DESTDIR="${pkgdir}" install +} + +package_nouveau-dri() { + depends=("libgl=${pkgver}") + pkgdesc="Mesa classic DRI + Gallium3D drivers for Nouveau" + + # classic mesa driver for nv10 , nv20 nouveau_vieux_dri.so + make -C ${srcdir}/?esa-*/src/mesa/drivers/dri/nouveau DESTDIR="${pkgdir}" install + # gallium3D driver for nv30 - nv40 - nv50 nouveau_dri.so + make -C ${srcdir}/?esa-*/src/gallium/targets/dri-nouveau DESTDIR="${pkgdir}" install +} + +package_svga-dri() { + depends=("mesa=${pkgver}") + pkgdesc="Gallium3D VMware guest GL driver" + + make -C ${srcdir}/?esa-*/src/gallium/targets/dri-vmwgfx DESTDIR="${pkgdir}" install +} diff --git a/staging/mesa/mesa-8.0.3-llvm-3.1-fixes.patch b/staging/mesa/mesa-8.0.3-llvm-3.1-fixes.patch new file mode 100644 index 000000000..a567b5926 --- /dev/null +++ b/staging/mesa/mesa-8.0.3-llvm-3.1-fixes.patch @@ -0,0 +1,46 @@ +diff --git a/src/gallium/auxiliary/gallivm/lp_bld_debug.cpp b/src/gallium/auxiliary/gallivm/lp_bld_debug.cpp +index a50a51d..f1bb4d9 100644 +--- a/src/gallium/auxiliary/gallivm/lp_bld_debug.cpp ++++ b/src/gallium/auxiliary/gallivm/lp_bld_debug.cpp +@@ -235,7 +235,24 @@ lp_disassemble(const void* func) + int AsmPrinterVariant = AsmInfo->getAssemblerDialect(); + #endif + +-#if HAVE_LLVM >= 0x0300 ++#if HAVE_LLVM >= 0x0301 ++ OwningPtr<const MCRegisterInfo> MRI(T->createMCRegInfo(Triple)); ++ if (!MRI) { ++ debug_printf("error: no register info for target %s\n", Triple.c_str()); ++ return; ++ } ++ ++ OwningPtr<const MCInstrInfo> MII(T->createMCInstrInfo()); ++ if (!MII) { ++ debug_printf("error: no instruction info for target %s\n", Triple.c_str()); ++ return; ++ } ++#endif ++ ++#if HAVE_LLVM >= 0x0301 ++ OwningPtr<MCInstPrinter> Printer( ++ T->createMCInstPrinter(AsmPrinterVariant, *AsmInfo, *MII, *MRI, *STI)); ++#elif HAVE_LLVM == 0x0300 + OwningPtr<MCInstPrinter> Printer( + T->createMCInstPrinter(AsmPrinterVariant, *AsmInfo, *STI)); + #elif HAVE_LLVM >= 0x0208 +diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp +index fe7616b..68f8808 100644 +--- a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp ++++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp +@@ -62,7 +62,11 @@ + extern "C" void + lp_register_oprofile_jit_event_listener(LLVMExecutionEngineRef EE) + { ++#if HAVE_LLVM >= 0x0301 ++ llvm::unwrap(EE)->RegisterJITEventListener(llvm::JITEventListener::createOProfileJITEventListener()); ++#else + llvm::unwrap(EE)->RegisterJITEventListener(llvm::createOProfileJITEventListener()); ++#endif + } + + diff --git a/staging/mod_perl/PKGBUILD b/staging/mod_perl/PKGBUILD new file mode 100644 index 000000000..1802ed461 --- /dev/null +++ b/staging/mod_perl/PKGBUILD @@ -0,0 +1,45 @@ +# $Id: PKGBUILD 159775 2012-05-26 19:41:32Z foutrelis $ +# Maintainer: +# Contributor: Firmicus <francois.archlinux.org> +# Contributor: Tom K <tomk@runbox.com> + +pkgname=mod_perl +pkgver=2.0.6 +pkgrel=1 +pkgdesc="Apache module that embeds the Perl interpreter within the server" +arch=('i686' 'x86_64') +url="http://perl.apache.org/" +license=('APACHE') +depends=('perl' 'apache' 'db' 'apr-util' 'perl-linux-pid') +options=('!emptydirs') +source=(http://perl.apache.org/dist/$pkgname-$pkgver.tar.gz + mod_perl-2.0.6-nolfs.patch + mod_perl-2.0.6-perl-5.16-fixes.patch) +sha256sums=('8cf768d2c55291e10542ef8d9a4f4ebe835365e43b4584771e654079405827dc' + '5d1b6a051d847108b23b5dc06ea5885c37dd81d3a9156b69d179d95b5cf92f08' + 'c6cde22806b1b2d919545b21c49536c8c377c8d1f921e8948e1289bb2ab413d9') + +build() { + cd "$srcdir/$pkgname-$pkgver" + + # Patch from openSUSE to fix segfaults on i686 (FS#25008): + # avoid a conflict between apache's LARGEFILE64_SOURCE and perl's + # FILE_OFFSET_BITS=64 because the conflict isn't real and causes the perl + # structures to be invalid if only the apache flags are used + patch -Np1 -i "$srcdir/mod_perl-2.0.6-nolfs.patch" + + # Fix build with Perl 5.16 + # http://search.cpan.org/dist/perl-5.16.0/pod/perldelta.pod#$%3C,_$%3E,_$%28_and_$%29_are_no_longer_cached + patch -Np1 -i "$srcdir/mod_perl-2.0.6-perl-5.16-fixes.patch" + + # install module in vendor directories. + perl Makefile.PL INSTALLDIRS=vendor MP_APXS=/usr/sbin/apxs + make +} + +package() { + cd "$srcdir/$pkgname-$pkgver" + make install DESTDIR="$pkgdir" +} + +# vim:set ts=2 sw=2 et: diff --git a/staging/mod_perl/mod_perl-2.0.6-nolfs.patch b/staging/mod_perl/mod_perl-2.0.6-nolfs.patch new file mode 100644 index 000000000..13e5cccee --- /dev/null +++ b/staging/mod_perl/mod_perl-2.0.6-nolfs.patch @@ -0,0 +1,13 @@ +diff -upr mod_perl-2.0.6.orig/lib/Apache2/Build.pm mod_perl-2.0.6/lib/Apache2/Build.pm +--- mod_perl-2.0.6.orig/lib/Apache2/Build.pm 2012-05-26 22:31:00.000000000 +0300 ++++ mod_perl-2.0.6/lib/Apache2/Build.pm 2012-05-26 22:31:32.000000000 +0300 +@@ -2207,7 +2207,8 @@ sub has_large_files_conflict { + # with it is that we didn't have such a case yet, but may need to + # deal with it later + +- return $perl_lfs64 ^ $apr_lfs64; ++ return 0; ++ # $perl_lfs64 ^ $apr_lfs64; + } + + # if perl is built with uselargefiles, but apr not, the build won't diff --git a/staging/mod_perl/mod_perl-2.0.6-perl-5.16-fixes.patch b/staging/mod_perl/mod_perl-2.0.6-perl-5.16-fixes.patch new file mode 100644 index 000000000..4e26fd87d --- /dev/null +++ b/staging/mod_perl/mod_perl-2.0.6-perl-5.16-fixes.patch @@ -0,0 +1,17 @@ +diff -upr mod_perl-2.0.6.orig/src/modules/perl/modperl_perl.c mod_perl-2.0.6/src/modules/perl/modperl_perl.c +--- mod_perl-2.0.6.orig/src/modules/perl/modperl_perl.c 2012-05-26 21:49:27.000000000 +0300 ++++ mod_perl-2.0.6/src/modules/perl/modperl_perl.c 2012-05-26 21:55:39.000000000 +0300 +@@ -102,13 +102,4 @@ static void modperl_perl_init_ids(pTHX_ + sv_setiv(GvSV(gv_fetchpv("$", TRUE, SVt_PV)), ids->pid); + +-#ifndef WIN32 +- PL_uid = ids->uid; +- PL_euid = ids->euid; +- PL_gid = ids->gid; +- PL_egid = ids->egid; +-#endif +-#ifdef MP_MAINTAIN_PPID +- PL_ppid = ids->ppid; +-#endif + } + diff --git a/staging/net-snmp/PKGBUILD b/staging/net-snmp/PKGBUILD new file mode 100644 index 000000000..e9930ec14 --- /dev/null +++ b/staging/net-snmp/PKGBUILD @@ -0,0 +1,58 @@ +# $Id: PKGBUILD 159781 2012-05-26 20:12:07Z foutrelis $ +# Maintainer: +# Contributor: Dale Blount <dale@archlinux.org> + +pkgname=net-snmp +pkgver=5.7.1 +pkgrel=3 +pkgdesc="A suite of applications used to implement SNMP v1, SNMP v2c and SNMP v3 using both IPv4 and IPv6" +arch=('i686' 'x86_64') +url="http://www.net-snmp.org/" +license=('BSD') +depends=('openssl' 'libnl' 'pciutils') +makedepends=('python2-distribute') +optdepends=('perl-term-readkey: for snmpcheck application' + 'perl-tk: for snmpcheck and tkmib applications' + 'python2: for the python modules') +provides=('ucd-snmp') +backup=('etc/conf.d/snmpd') +options=('!libtool' '!makeflags' '!emptydirs') +source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz{,.asc} + snmpd.confd snmpd.rc libnl32.patch) +sha1sums=('ddb82ce1112ef0642869d3c8d7c7e585f151849a' + '2bdc2839ce09d7daa608cd54687fa8beb47ed907' + 'cf811da9e57bbca34d8e2a3c358bb3bfc0c2b33b' + '90600c0141eed10d6e3ca3ccc97ad8dda15c2112' + '74a9848b95f63378eb1753fc309d2b74de5afb0f') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + + # http://sourceforge.net/tracker/index.php?func=detail&aid=3250304&group_id=12694&atid=112694 + patch -Np1 -i "$srcdir/libnl32.patch" + autoreconf -f -i + + sed -i -e "s:\(install --basedir=\$\$dir\):\1 --root='${pkgdir}':" Makefile.in + PYTHONPROG=/usr/bin/python2 ./configure --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --enable-ucd-snmp-compatibility \ + --enable-ipv6 \ + --with-python-modules \ + --with-default-snmp-version="3" \ + --with-sys-contact="root@localhost" \ + --with-sys-location="Unknown" \ + --with-logfile="/var/log/snmpd.log" \ + --with-mib-modules="host misc/ipfwacc ucd-snmp/diskio tunnel ucd-snmp/dlmod" \ + --with-persistent-directory="/var/net-snmp" \ + --disable-static + make NETSNMP_DONT_CHECK_VERSION=1 +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make DESTDIR="${pkgdir}" INSTALL_PREFIX="${pkgdir}" INSTALLDIRS=vendor install + install -D -m755 "${srcdir}/snmpd.rc" "${pkgdir}/etc/rc.d/snmpd" + install -D -m644 "${srcdir}/snmpd.confd" "${pkgdir}/etc/conf.d/snmpd" + install -D -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" +} diff --git a/staging/net-snmp/libnl32.patch b/staging/net-snmp/libnl32.patch new file mode 100644 index 000000000..d93d7ef67 --- /dev/null +++ b/staging/net-snmp/libnl32.patch @@ -0,0 +1,80 @@ +diff -u -r net-snmp-5.7.1/agent/mibgroup/mibII/tcpTable.c net-snmp-5.7.1-libnl32/agent/mibgroup/mibII/tcpTable.c +--- net-snmp-5.7.1/agent/mibgroup/mibII/tcpTable.c 2011-09-28 06:53:47.000000000 +0200 ++++ net-snmp-5.7.1-libnl32/agent/mibgroup/mibII/tcpTable.c 2012-02-09 20:02:49.136022132 +0100 +@@ -566,8 +566,9 @@ + static int + tcpTable_load_netlink(void) + { ++ int err; + /* TODO: perhaps use permanent nl handle? */ +- struct nl_handle *nl = nl_handle_alloc(); ++ struct nl_sock *nl = nl_socket_alloc(); + + if (nl == NULL) { + DEBUGMSGTL(("mibII/tcpTable", "Failed to allocate netlink handle\n")); +@@ -575,10 +576,10 @@ + return -1; + } + +- if (nl_connect(nl, NETLINK_INET_DIAG) < 0) { +- DEBUGMSGTL(("mibII/tcpTable", "Failed to connect to netlink: %s\n", nl_geterror())); +- snmp_log(LOG_ERR, "snmpd: Couldn't connect to netlink: %s\n", nl_geterror()); +- nl_handle_destroy(nl); ++ if ((err = nl_connect(nl, NETLINK_INET_DIAG)) < 0) { ++ DEBUGMSGTL(("mibII/tcpTable", "Failed to connect to netlink: %s\n", nl_geterror(err))); ++ snmp_log(LOG_ERR, "snmpd: Couldn't connect to netlink: %s\n", nl_geterror(err)); ++ nl_socket_free(nl); + return -1; + } + +@@ -590,10 +591,10 @@ + struct nl_msg *nm = nlmsg_alloc_simple(TCPDIAG_GETSOCK, NLM_F_ROOT|NLM_F_MATCH|NLM_F_REQUEST); + nlmsg_append(nm, &req, sizeof(struct inet_diag_req), 0); + +- if (nl_send_auto_complete(nl, nm) < 0) { +- DEBUGMSGTL(("mibII/tcpTable", "nl_send_autocomplete(): %s\n", nl_geterror())); +- snmp_log(LOG_ERR, "snmpd: nl_send_autocomplete(): %s\n", nl_geterror()); +- nl_handle_destroy(nl); ++ if ((err = nl_send_auto_complete(nl, nm)) < 0) { ++ DEBUGMSGTL(("mibII/tcpTable", "nl_send_autocomplete(): %s\n", nl_geterror(err))); ++ snmp_log(LOG_ERR, "snmpd: nl_send_autocomplete(): %s\n", nl_geterror(err)); ++ nl_socket_free(nl); + return -1; + } + nlmsg_free(nm); +@@ -604,9 +605,9 @@ + + while (running) { + if ((len = nl_recv(nl, &peer, &buf, NULL)) <= 0) { +- DEBUGMSGTL(("mibII/tcpTable", "nl_recv(): %s\n", nl_geterror())); +- snmp_log(LOG_ERR, "snmpd: nl_recv(): %s\n", nl_geterror()); +- nl_handle_destroy(nl); ++ DEBUGMSGTL(("mibII/tcpTable", "nl_recv(): %s\n", nl_geterror(len))); ++ snmp_log(LOG_ERR, "snmpd: nl_recv(): %s\n", nl_geterror(len)); ++ nl_socket_free(nl); + return -1; + } + +@@ -655,7 +656,7 @@ + free(buf); + } + +- nl_handle_destroy(nl); ++ nl_socket_free(nl); + + if (tcp_head) { + DEBUGMSGTL(("mibII/tcpTable", "Loaded TCP Table using netlink\n")); +diff -u -r net-snmp-5.7.1/configure.d/config_os_libs2 net-snmp-5.7.1-libnl32/configure.d/config_os_libs2 +--- net-snmp-5.7.1/configure.d/config_os_libs2 2011-09-28 06:53:47.000000000 +0200 ++++ net-snmp-5.7.1-libnl32/configure.d/config_os_libs2 2012-02-09 20:10:44.282165275 +0100 +@@ -224,8 +224,9 @@ + if test "x$with_nl" != "xno"; then + case $target_os in + linux*) # Check for libnl (linux) ++ CPPFLAGS="$CPPFLAGS $(pkg-config --cflags-only-I libnl-3.0)" + NETSNMP_SEARCH_LIBS( +- nl_connect, nl, ++ nl_connect, nl-3, + [AC_CHECK_HEADERS(netlink/netlink.h)],,, LMIBLIBS) + ;; + esac diff --git a/staging/net-snmp/snmpd.confd b/staging/net-snmp/snmpd.confd new file mode 100644 index 000000000..926b09bbf --- /dev/null +++ b/staging/net-snmp/snmpd.confd @@ -0,0 +1,5 @@ +# +# Parameters to be passed to snmpd +# +SNMPD_ARGS="" + diff --git a/staging/net-snmp/snmpd.rc b/staging/net-snmp/snmpd.rc new file mode 100644 index 000000000..b00c09f4f --- /dev/null +++ b/staging/net-snmp/snmpd.rc @@ -0,0 +1,39 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions +. /etc/conf.d/snmpd + +PID=`pidof -o %PPID /usr/sbin/snmpd` +case "$1" in + start) + stat_busy "Starting Net-SNMP" + [ -z "$PID" ] && /usr/sbin/snmpd $SNMPD_ARGS + if [ $? -gt 0 ]; then + stat_fail + else + echo $PID > /var/run/snmpd.pid + add_daemon snmpd + stat_done + fi + ;; + stop) + stat_busy "Stopping Net-SNMP" + [ ! -z "$PID" ] && kill $PID &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm /var/run/snmpd.pid + rm_daemon snmpd + stat_done + fi + ;; + restart) + $0 stop + sleep 2 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac +exit 0 diff --git a/staging/pango-perl/PKGBUILD b/staging/pango-perl/PKGBUILD new file mode 100644 index 000000000..64805ec07 --- /dev/null +++ b/staging/pango-perl/PKGBUILD @@ -0,0 +1,31 @@ +# $Id: PKGBUILD 159745 2012-05-26 12:16:38Z bluewind $ +# Maintainer: Jan de Groot <jgc@archlinux.org> + +pkgname=pango-perl +pkgver=1.223 +pkgrel=2 +pkgdesc="Perl bindings for Pango" +arch=(i686 x86_64) +license=('LGPL') +url="http://gtk2-perl.sourceforge.net/" +makedepends=('perl-extutils-pkgconfig' 'perl-extutils-depends') +depends=('pango' 'glib-perl' 'cairo-perl') +options=('!emptydirs') +source=(http://downloads.sourceforge.net/sourceforge/gtk2-perl/Pango-${pkgver}.tar.gz) +md5sums=('628a6de54f47b6791c6b45edfb835215') + +build() { + cd "${srcdir}/Pango-${pkgver}" + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor + make +} + +check() { + cd "${srcdir}/Pango-${pkgver}" + make test +} + +package() { + cd "${srcdir}/Pango-${pkgver}" + make install DESTDIR="${pkgdir}" +} diff --git a/staging/perl-async-interrupt/PKGBUILD b/staging/perl-async-interrupt/PKGBUILD new file mode 100644 index 000000000..1fa3cdbda --- /dev/null +++ b/staging/perl-async-interrupt/PKGBUILD @@ -0,0 +1,47 @@ +# Packager: Justin Davis (juster) <jrcd83@gmail.com> +# $Id: PKGBUILD 159729 2012-05-26 11:40:38Z bluewind $ + +pkgname=perl-async-interrupt +_ver=1.1 +pkgver=1.10 +pkgrel=2 +pkgdesc='allow C/XS libraries to interrupt perl asynchronously' +arch=(i686 x86_64) +license=(PerlArtistic GPL) +options=(!emptydirs) +depends=(perl-common-sense) +url=https://metacpan.org/release/Async-Interrupt +source=("http://search.cpan.org/CPAN/authors/id/M/ML/MLEHMANN/Async-Interrupt-$_ver.tar.gz") +md5sums=(18f19b1537ecf5d6195a6a243110e64b) +sha512sums=(e8e62efc053c8103f509c08a19bfa0fefbfe760ca4e1e4670187de4ed4fbdec2e5a9a19bba1696cd2b721ad7fa6d4b723c24e342118b69dc8b7b1597f5e1385e) +_dir="$srcdir/Async-Interrupt-$_ver" + +build() +( + cd "$_dir" + export PERL_MM_USE_DEFAULT=1 PERL_AUTOINSTALL=--skipdeps + unset PERL5LIB PERL_MM_OPT + /usr/bin/perl Makefile.PL + make +) + +check() +( + cd "$_dir" + export PERL_MM_USE_DEFAULT=1 + unset PERL5LIB + make test +) + +package() +( + cd "$_dir" + make install INSTALLDIRS=vendor DESTDIR="$pkgdir" + find "$pkgdir" -name .packlist -o -name perllocal.pod -delete +) + +# Local Variables: +# mode: shell-script +# sh-basic-offset: 2 +# End: +# vim:set ts=2 sw=2 et: diff --git a/staging/perl-ev/PKGBUILD b/staging/perl-ev/PKGBUILD new file mode 100644 index 000000000..41e569b0d --- /dev/null +++ b/staging/perl-ev/PKGBUILD @@ -0,0 +1,46 @@ +# Packager: Justin Davis (juster) <jrcd83@gmail.com> +# $Id: PKGBUILD 159731 2012-05-26 11:42:13Z bluewind $ + +pkgname=perl-ev +pkgver=4.11 +pkgrel=2 +pkgdesc='perl interface to libev, a high performance full-featured event loop' +arch=(i686 x86_64) +license=(PerlArtistic GPL) +options=(!emptydirs) +depends=(perl-common-sense) +url=https://metacpan.org/release/EV +source=("http://search.cpan.org/CPAN/authors/id/M/ML/MLEHMANN/EV-$pkgver.tar.gz") +md5sums=(405c6d74f9dff12918b12560c1a57877) +sha512sums=(6aca3eeb617a313de7947b760558c12ed85af4fa8efd5bb4fd8bc2f271b4556312989aebf77cda4e212fd3b1351c268624aeaf2b1cf700507ff46c0c9dcc9db8) +_dir="$srcdir/EV-$pkgver" + +build() +( + cd "$_dir" + export PERL_MM_USE_DEFAULT=1 PERL_AUTOINSTALL=--skipdeps + unset PERL5LIB PERL_MM_OPT + /usr/bin/perl Makefile.PL + make +) + +check() +( + cd "$_dir" + export PERL_MM_USE_DEFAULT=1 + unset PERL5LIB + make test +) + +package() +( + cd "$_dir" + make install INSTALLDIRS=vendor DESTDIR="$pkgdir" + find "$pkgdir" -name .packlist -o -name perllocal.pod -delete +) + +# Local Variables: +# mode: shell-script +# sh-basic-offset: 2 +# End: +# vim:set ts=2 sw=2 et: diff --git a/staging/perl-guard/PKGBUILD b/staging/perl-guard/PKGBUILD new file mode 100644 index 000000000..da440e55c --- /dev/null +++ b/staging/perl-guard/PKGBUILD @@ -0,0 +1,48 @@ +# Packager: Justin Davis <jrcd83@gmail.com> +# $Id: PKGBUILD 159733 2012-05-26 11:43:47Z bluewind $ + +pkgname=perl-guard +pkgver=1.022 +pkgrel=2 +pkgdesc="safe cleanup blocks" +arch=(i686 x86_64) +license=(custom:unknown) +options=(!emptydirs) +depends=('perl') +url=https://metacpan.org/release/Guard +source=("http://search.cpan.org/CPAN/authors/id/M/ML/MLEHMANN/Guard-${pkgver}.tar.gz") +md5sums=(8d1d8b942fd5d0240f47906a6d6fac8c) +sha512sums=(9eb1c4fa29f6190115fe11215ff5d27bb3e7f5ab60c7f40c4142ad9ff8aad91b0b169204e4d0f1b1638381c0c99e6a0b5627b8b6d60fad62f1392a9d1e49751e) +_distdir="${srcdir}/Guard-${pkgver}" + +build() { + ( export PERL_MM_USE_DEFAULT=1 PERL5LIB="" \ + PERL_AUTOINSTALL=--skipdeps \ + PERL_MM_OPT="INSTALLDIRS=vendor DESTDIR='$pkgdir'" \ + PERL_MB_OPT="--installdirs vendor --destdir '$pkgdir'" \ + MODULEBUILDRC=/dev/null + + cd "$_distdir" + /usr/bin/perl Makefile.PL + make + ) +} + +check() { + ( export PERL_MM_USE_DEFAULT=1 PERL5LIB="" + cd "$_distdir" + make test + ) +} + +package() { + cd "$_distdir" + make DESTDIR="$pkgdir" install + find "$pkgdir" -name .packlist -o -name perllocal.pod -delete +} + +# Local Variables: +# mode: shell-script +# sh-basic-offset: 2 +# End: +# vim:set ts=2 sw=2 et: diff --git a/staging/perl-list-moreutils/PKGBUILD b/staging/perl-list-moreutils/PKGBUILD new file mode 100644 index 000000000..3b0b7b33f --- /dev/null +++ b/staging/perl-list-moreutils/PKGBUILD @@ -0,0 +1,49 @@ +# $Id: PKGBUILD 159735 2012-05-26 11:45:02Z bluewind $ +# Maintainer : Justin "juster" Davis <jrcd83@gmail.com> +# Generator : pbjam 0.01 + +pkgname=perl-list-moreutils +pkgver=0.33 +pkgrel=3 +pkgdesc="Provide the stuff missing in List::Util" +arch=(i686 x86_64) +license=(PerlArtistic GPL) +options=(!emptydirs) +depends=('perl>=5.5.30') +url=http://search.cpan.org/dist/List-MoreUtils +source=("http://search.cpan.org/CPAN/authors/id/A/AD/ADAMK/List-MoreUtils-${pkgver}.tar.gz") +md5sums=(8a33c84028cc2ff3e92c92434b326c0f) +sha512sums=(e758b995438c5c5322317aab3602e89b9f683c42d403a0ac97ccd8cc20d0db1a75caefc22f34ad088314867c0bdd9c2b8264e8f2f6a43eab1421aa8c482233b5) +_distdir="${srcdir}/List-MoreUtils-${pkgver}" + +build() { + ( export PERL_MM_USE_DEFAULT=1 PERL5LIB="" \ + PERL_AUTOINSTALL=--skipdeps \ + PERL_MM_OPT="INSTALLDIRS=vendor DESTDIR='$pkgdir'" \ + PERL_MB_OPT="--installdirs vendor --destdir '$pkgdir'" \ + MODULEBUILDRC=/dev/null + + cd "$_distdir" + /usr/bin/perl Makefile.PL + make + ) +} + +check() { + ( export PERL_MM_USE_DEFAULT=1 PERL5LIB="" + cd "$_distdir" + make test + ) +} + +package() { + cd "$_distdir" + make DESTDIR="$pkgdir" install + find "$pkgdir" -name .packlist -o -name perllocal.pod -delete +} + +# Local Variables: +# mode: shell-script +# sh-basic-offset: 2 +# End: +# vim:set ts=2 sw=2 et: diff --git a/staging/perl-socket6/PKGBUILD b/staging/perl-socket6/PKGBUILD new file mode 100644 index 000000000..88c8acc07 --- /dev/null +++ b/staging/perl-socket6/PKGBUILD @@ -0,0 +1,49 @@ +# Maintainer: Florian Pritz <bluewind@xinu.at> +# Generator : CPANPLUS::Dist::Arch 1.18 + +pkgname='perl-socket6' +pkgver='0.23' +pkgrel='2' +pkgdesc="getaddrinfo/getnameinfo support module" +arch=('i686' 'x86_64') +license=('PerlArtistic' 'GPL') +options=('!emptydirs') +depends=('perl') +makedepends=() +url='http://search.cpan.org/dist/Socket6' +source=('http://search.cpan.org/CPAN/authors/id/U/UM/UMEMOTO/Socket6-0.23.tar.gz') +md5sums=('2c02adb13c449d48d232bb704ddbd492') +sha512sums=('39ced223ecdef89e6fa241031019bb5a73e63d2dfdaf3edb55bfea0cb81b91bea09f1cc26b2d15fa28d32227cc13cdb093c70f0ba346c9bdb523359de53d96f9') +_distdir="${srcdir}/Socket6-0.23" + +build() { + ( export PERL_MM_USE_DEFAULT=1 PERL5LIB="" \ + PERL_AUTOINSTALL=--skipdeps \ + PERL_MM_OPT="INSTALLDIRS=vendor DESTDIR='$pkgdir'" \ + PERL_MB_OPT="--installdirs vendor --destdir '$pkgdir'" \ + MODULEBUILDRC=/dev/null + + cd "$_distdir" + /usr/bin/perl Makefile.PL + make + ) +} + +check() { + cd "$_distdir" + ( export PERL_MM_USE_DEFAULT=1 PERL5LIB="" + make test + ) +} + +package() { + cd "$_distdir" + make install + find "$pkgdir" -name .packlist -o -name perllocal.pod -delete +} + +# Local Variables: +# mode: shell-script +# sh-basic-offset: 2 +# End: +# vim:set ts=2 sw=2 et: diff --git a/staging/perl-template-toolkit/PKGBUILD b/staging/perl-template-toolkit/PKGBUILD new file mode 100644 index 000000000..fdce31abc --- /dev/null +++ b/staging/perl-template-toolkit/PKGBUILD @@ -0,0 +1,32 @@ +# Maintainer: Firmicus <francois.archlinux.org> +# Contributor: Tom Killian <tomk@runbox.com> +# Contributor: FJ <joostef@gmail.com> + +pkgname=perl-template-toolkit +_realname=Template-Toolkit +pkgver=2.22 +pkgrel=5 +pkgdesc="Perl template processing system" +arch=(i686 x86_64) +license=('PerlArtistic') +url="http://search.cpan.org/dist/${_realname}/" +depends=('perl-appconfig' 'perl>=5.10.0') +options=(!emptydirs) +source=(http://search.cpan.org/CPAN/authors/id/A/AB/ABW/${_realname}-$pkgver.tar.gz) +md5sums=('d98277f6420e5da6b93d99a8db2b3934') + +build() { + cd ${srcdir}/${_realname}-$pkgver + # install module in vendor directories. + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor + make +} + +package() { + cd ${srcdir}/${_realname}-$pkgver + make install DESTDIR=${startdir}/pkg + + # remove perllocal.pod and .packlist + find ${startdir}/pkg -name perllocal.pod -delete + find ${startdir}/pkg -name .packlist -delete +} diff --git a/staging/razor/PKGBUILD b/staging/razor/PKGBUILD new file mode 100644 index 000000000..50d808a21 --- /dev/null +++ b/staging/razor/PKGBUILD @@ -0,0 +1,41 @@ +# $Id: PKGBUILD 159771 2012-05-26 18:11:56Z eric $ +# Maintainer: +# Contributor: Dale Blount <dale@archlinux.org> +# Contributor: Manolis Tzanidakis + +pkgname=razor +pkgver=2.84 +pkgrel=7 +pkgdesc="A distributed, collaborative, spam detection and filtering network" +arch=('i686' 'x86_64') +url="http://razor.sourceforge.net" +license=('PerlArtistic') +depends=('perl-net-dns' 'perl-digest-sha1' 'perl-uri' 'perl-digest-nilsimsa' 'perl') +options=('!emptydirs') +source=("http://downloads.sourceforge.net/${pkgname}/${pkgname}-agents-${pkgver}.tar.bz2") +md5sums=('8b9a11a6ce020383c32c45d1530d77c2') + +build() { + cd "${srcdir}"/${pkgname}-agents-${pkgver} + + # skip install_razor_agents (we'll do the linking later) + # /bin/sed -i "s|install :: all pure_install doc_install install_razor_agents|install :: all pure_install doc_install|g" Makefile + + perl Makefile.PL INSTALLDIRS=vendor + make +} + +check() { + cd "${srcdir}"/${pkgname}-agents-${pkgver} + make test +} + +package() { + cd "${srcdir}"/${pkgname}-agents-${pkgver} + make DESTDIR="${pkgdir}" install + + # cd ${pkgdir}/usr/bin + # for i in razor-check razor-report razor-revoke razor-admin; do + # /bin/ln -sf razor-client $i; + # done +} diff --git a/staging/rrdtool/PKGBUILD b/staging/rrdtool/PKGBUILD new file mode 100644 index 000000000..469ba4ceb --- /dev/null +++ b/staging/rrdtool/PKGBUILD @@ -0,0 +1,38 @@ +# $Id: PKGBUILD 159769 2012-05-26 17:51:59Z eric $ +# Maintainer: Eric Bélanger <eric@archlinux.org> + +pkgname=rrdtool +pkgver=1.4.7 +pkgrel=2 +pkgdesc="Data logging and graphing application" +arch=('i686' 'x86_64') +url="http://www.rrdtool.org" +license=('GPL' 'custom') +depends=('libxml2' 'pango' 'ttf-dejavu') +makedepends=('intltool' 'ruby' 'python2' 'tcl' 'lua') +optdepends=('tcl: to use corresponding binding' \ + 'python2: to use corresponding binding' \ + 'ruby: to use corresponding binding' \ + 'lua: to use corresponding binding') +options=('!libtool' '!emptydirs' '!makeflags') +source=(http://oss.oetiker.ch/rrdtool/pub/rrdtool-${pkgver}.tar.gz) +sha1sums=('faab7df7696b69f85d6f89dd9708d7cf0c9a273b') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + + # fix FS#28521 make ruby install to vendor_ruby instead of site_ruby + sed -e 's/$(RUBY) extconf.rb/& --vendor/' -i bindings/Makefile.in + + PYTHON=python2 ./configure --prefix=/usr --localstatedir=/var --disable-rpath \ + --enable-perl --enable-perl-site-install --with-perl-options='INSTALLDIRS=vendor' \ + --enable-ruby --enable-ruby-site-install --enable-python \ + --enable-lua --enable-lua-site-install --enable-tcl --disable-libwrap + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make DESTDIR="${pkgdir}" install + install -D -m644 COPYRIGHT "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" +} diff --git a/staging/subversion/PKGBUILD b/staging/subversion/PKGBUILD new file mode 100644 index 000000000..cf8ba275f --- /dev/null +++ b/staging/subversion/PKGBUILD @@ -0,0 +1,79 @@ +# $Id: PKGBUILD 159761 2012-05-26 15:28:27Z stephane $ +# Maintainer: Stéphane Gaudreault <stephane@archlinux.org> +# Contributor: Paul Mattal <paul@archlinux.org> +# Contributor: Jason Chu <jason@archlinux.org> + +pkgname=subversion +pkgver=1.7.5 +pkgrel=2 +pkgdesc="A Modern Concurrent Version Control System" +arch=('i686' 'x86_64') +license=('APACHE') +depends=('neon' 'apr-util' 'sqlite' 'file') +optdepends=('libgnome-keyring' 'kdeutils-kwallet' 'bash-completion: for svn bash completion' \ + 'python2: for some hook scripts') # 'ruby: for some hook scripts' 'java-environment') +makedepends=('krb5' 'apache' 'python2' 'perl' 'swig' 'java-runtime' 'java-environment' + 'autoconf' 'db' 'e2fsprogs' 'libgnome-keyring' 'kdelibs') +backup=('etc/xinetd.d/svn' 'etc/conf.d/svnserve') +url="http://subversion.apache.org/" +provides=('svn') +options=('!makeflags' '!libtool' '!emptydirs') +source=(http://apache.mirror.rafal.ca/subversion/$pkgname-$pkgver.tar.bz2{,.asc} + svnserve svn svnserve.conf subversion.rpath.fix.patch) +sha1sums=('05c079762690d5ac1ccd2549742e7ef70fa45cf1' + 'b267cba19b4f56360657a5bf5b231950e027a45a' + '64ba3e6ebafc08ac62f59d788f7a825fdce69573' + '73b36c046c09cec2093354911c89e3ba8056af6c' + 'ad117bf3b2a838a9a678a93fd8db1a066ad46c41' + '3d1e28408a9abb42af2e531adc0d01ce21acfad6') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + export PYTHON=/usr/bin/python2 + + patch -p0 -i ../subversion.rpath.fix.patch + sed -i 's|/usr/bin/env python|/usr/bin/env python2|' tools/hook-scripts/{,mailer/{,tests/}}*.py + + ./configure --prefix=/usr --with-apr=/usr --with-apr-util=/usr \ + --with-zlib=/usr --with-neon=/usr --with-apxs \ + --with-sqlite=/usr --with-berkeley-db=:/usr/include/:/usr/lib:db-5.3 \ + --enable-javahl --with-gnome-keyring --with-kwallet + + make external-all + make LT_LDFLAGS="-L$Fdestdir/usr/lib" local-all + make swig_pydir=/usr/lib/python2.7/site-packages/libsvn \ + swig_pydir_extra=/usr/lib/python2.7/site-packages/svn swig-py swig-pl javahl # swig-rb +} + +#check() { +# cd "${srcdir}/${pkgname}-${pkgver}" +# export LANG=C LC_ALL=C +# make check check-swig-pl check-swig-py check-javahl CLEANUP=yes # check-swig-rb +#} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + + export LD_LIBRARY_PATH="${pkgdir}"/usr/lib:${LD_LIBRARY_PATH} + make DESTDIR="${pkgdir}" INSTALLDIRS=vendor \ + swig_pydir=/usr/lib/python2.7/site-packages/libsvn \ + swig_pydir_extra=/usr/lib/python2.7/site-packages/svn \ + install install-swig-py install-swig-pl install-javahl # install-swig-rb + + install -d "${pkgdir}"/usr/share/subversion + cp -a tools/hook-scripts "${pkgdir}"/usr/share/subversion/ + rm "${pkgdir}"/usr/share/subversion/hook-scripts/*.in + + rm "${pkgdir}"/usr/lib/perl5/vendor_perl/auto/SVN/_Core/.packlist + rm -r "${pkgdir}"/usr/lib/perl5/core_perl + + install -D -m 755 "${srcdir}"/svnserve "${pkgdir}"/etc/rc.d/svnserve + install -D -m 644 "${srcdir}"/svn "${pkgdir}"/etc/xinetd.d/svn + install -D -m 644 "${srcdir}"/svnserve.conf "${pkgdir}"/etc/conf.d/svnserve + + install -Dm 644 tools/client-side/bash_completion \ + "${pkgdir}"/usr/share/bash-completion/completions/subversion + for i in svn svnadmin svndumpfilter svnlook svnsync svnversion; do + ln -sf subversion "${pkgdir}"/usr/share/bash-completion/completions/${i} + done +} diff --git a/staging/subversion/subversion.rpath.fix.patch b/staging/subversion/subversion.rpath.fix.patch new file mode 100644 index 000000000..ba6ee9e4e --- /dev/null +++ b/staging/subversion/subversion.rpath.fix.patch @@ -0,0 +1,10 @@ +--- Makefile.in.orig 2009-02-16 14:10:48.000000000 -0200 ++++ Makefile.in 2009-06-04 00:56:29.000000000 -0300 +@@ -678,6 +678,7 @@ + + $(SWIG_PL_DIR)/native/Makefile: $(SWIG_PL_DIR)/native/Makefile.PL + cd $(SWIG_PL_DIR)/native; $(PERL) Makefile.PL ++ cd $(SWIG_PL_DIR)/native; sed -i 's|LD_RUN_PATH|DIE_RPATH_DIE|g' Makefile{,.{client,delta,fs,ra,repos,wc}} + + swig-pl_DEPS = autogen-swig-pl libsvn_swig_perl \ + $(SWIG_PL_DIR)/native/Makefile diff --git a/staging/subversion/svn b/staging/subversion/svn new file mode 100644 index 000000000..8988aaf63 --- /dev/null +++ b/staging/subversion/svn @@ -0,0 +1,11 @@ +service svn +{ + flags = REUSE + socket_type = stream + wait = no + user = root + server = /usr/bin/svnserve + server_args = -i + log_on_failure += USERID + disable = yes +} diff --git a/staging/subversion/svnserve b/staging/subversion/svnserve new file mode 100755 index 000000000..670fee742 --- /dev/null +++ b/staging/subversion/svnserve @@ -0,0 +1,42 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions +. /etc/conf.d/svnserve + +PID=`pidof -o %PPID /usr/bin/svnserve` +case "$1" in + start) + stat_busy "Starting svnserve" + if [ -z "$PID" ]; then + if [ -n "$SVNSERVE_USER" ]; then + su -s '/bin/sh' $SVNSERVE_USER -c "/usr/bin/svnserve -d $SVNSERVE_ARGS" & + else + /usr/bin/svnserve -d $SVNSERVE_ARGS & + fi + fi + if [ ! -z "$PID" -o $? -gt 0 ]; then + stat_fail + else + add_daemon svnserve + stat_done + fi + ;; + stop) + stat_busy "Stopping svnserve" + [ ! -z "$PID" ] && kill $PID &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon svnserve + stat_done + fi + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac diff --git a/staging/subversion/svnserve.conf b/staging/subversion/svnserve.conf new file mode 100644 index 000000000..37fb7ea10 --- /dev/null +++ b/staging/subversion/svnserve.conf @@ -0,0 +1,7 @@ +# +# Parameters to be passed to svnserve +# +#SVNSERVE_ARGS="-r /path/to/some/repos" +SVNSERVE_ARGS="" + +#SVNSERVE_USER="svn" diff --git a/staging/udisks/PKGBUILD b/staging/udisks/PKGBUILD new file mode 100644 index 000000000..79fd768d9 --- /dev/null +++ b/staging/udisks/PKGBUILD @@ -0,0 +1,31 @@ +# $Id: PKGBUILD 159757 2012-05-26 15:09:57Z ibiru $ +# Maintainer: Jan de Groot <jgc@archlinux.org> + +pkgname=udisks +pkgver=1.0.4 +pkgrel=4 +pkgdesc="Disk Management Service" +arch=('i686' 'x86_64') +url="http://www.freedesktop.org/wiki/Software/udisks" +license=('GPL') +depends=('udev' 'sg3_utils' 'glib2' 'dbus-glib' 'polkit' 'parted' 'device-mapper' 'libatasmart' 'lsof' 'eject') +makedepends=('intltool' 'docbook-xsl') +options=(!libtool) +source=(http://hal.freedesktop.org/releases/${pkgname}-${pkgver}.tar.gz) +sha256sums=('854b89368733b9c3a577101b761ad5397ae75a05110c8698ac5b29de9a8bf8f5') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \ + --libexecdir=/usr/lib/udisks --disable-static + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make profiledir=/usr/share/bash-completion/completions DESTDIR="${pkgdir}" install + chmod 644 "${pkgdir}/usr/share/bash-completion/completions/udisks-bash-completion.sh" + # move udev helpers and rules to /usr/lib + mv "${pkgdir}"/lib/udev "${pkgdir}"/usr/lib/ + rm -r "${pkgdir}"/lib +} diff --git a/staging/util-linux/PKGBUILD b/staging/util-linux/PKGBUILD new file mode 100644 index 000000000..8fa507437 --- /dev/null +++ b/staging/util-linux/PKGBUILD @@ -0,0 +1,55 @@ +# $Id: PKGBUILD 159749 2012-05-26 12:39:32Z tomegun $ +# Maintainer: Tom Gundersen <teg@jklm.no> +# Contributor: judd <jvinet@zeroflux.org> + +pkgname=util-linux +pkgver=2.21.2 +pkgrel=1 +pkgdesc="Miscellaneous system utilities for Linux" +url="http://www.kernel.org/pub/linux/utils/util-linux/" +arch=('i686' 'x86_64') +groups=('base') +depends=('udev' 'pam') +conflicts=('util-linux-ng') +provides=("util-linux-ng=${pkgver}") +license=('GPL2') +options=('!libtool') +source=(ftp://ftp.kernel.org/pub/linux/utils/${pkgname}/v2.21/${pkgname}-${pkgver}.tar.xz) + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + + # hardware clock + sed -e 's%etc/adjtime%var/lib/hwclock/adjtime%' -i include/pathnames.h + + ./configure --prefix=/usr \ + --libdir=/usr/lib \ + --enable-fs-paths-extra=/usr/bin:/usr/sbin \ + --enable-write \ + --enable-raw \ + --disable-wall \ + --enable-new-mount + + make +} + +check() { + make -C "$pkgname-$pkgver" check +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + + make DESTDIR="${pkgdir}" install + + cd "${pkgdir}" + + install -dm755 var/lib/hwclock + + # broken tool, going away in next major release, so just remove it now + rm "${pkgdir}"/usr/{bin/chkdupexe,share/man/man1/chkdupexe.1} + + # delete stray empty dir, fixed upstream + rm -r usr/share/man/ru +} +md5sums=('54ba880f1d66782c2287ee2c898520e9') diff --git a/staging/vlc/PKGBUILD b/staging/vlc/PKGBUILD new file mode 100644 index 000000000..9c48c6b9f --- /dev/null +++ b/staging/vlc/PKGBUILD @@ -0,0 +1,88 @@ +# $Id: PKGBUILD 159698 2012-05-26 06:51:40Z giovanni $ +# Maintainer: Giovanni Scafora <giovanni@archlinux.org> +# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca> +# Contributor: Martin Sandsmark <martin.sandsmark@kde.org> + +pkgname=vlc +pkgver=2.0.1 +pkgrel=2 +pkgdesc="A multi-platform MPEG, VCD/DVD, and DivX player" +arch=('i686' 'x86_64') +url="http://www.videolan.org/vlc/" +license=('LGPL2.1' 'GPL2') +depends=('a52dec' 'libdvbpsi' 'libxpm' 'libdca' 'qt' 'libproxy' + 'sdl_image' 'libdvdnav' 'libtiger' 'lua' 'libmatroska' + 'zvbi' 'taglib' 'libmpcdec' 'ffmpeg' 'faad2' 'libupnp' + 'libshout' 'libmad' 'libmpeg2' 'libmodplug' 'libass' + 'xcb-util-keysyms' 'ttf-freefont') +makedepends=('live-media' 'libnotify' 'libbluray' 'flac' 'kdelibs' + 'fluidsynth' 'libdc1394' 'libavc1394' 'lirc-utils' + 'libcaca' 'librsvg' 'portaudio' 'oss' 'libgme' 'xosd' + 'projectm' 'twolame' 'aalib' 'libmtp' 'libdvdcss' + 'gnome-vfs' 'libgoom2' 'libtar' 'vcdimager') +optdepends=('avahi: for service discovery using bonjour protocol' + 'libnotify: for notification plugin' + 'ncurses: for ncurses interface support' + 'libdvdcss: for decoding encrypted DVDs' + 'lirc-utils: for lirc plugin' + 'libavc1394: for devices using the 1394ta AV/C' + 'libdc1394: for IEEE 1394 plugin' + 'kdelibs: KDE Solid hardware integration' + 'vdpau-video: vdpau back-end for nvidia' + 'libva-driver-intel: back-end for intel cards' + 'libbluray: for Blu-Ray support' + 'flac: for Free Lossless Audio Codec plugin' + 'oss: for OSS audio support' + 'portaudio: for portaudio support' + 'twolame: for TwoLAME mpeg2 encoder plugin' + 'projectm: for ProjectM visualisation plugin' + 'libcaca: for colored ASCII art video output' + 'libgme: for libgme plugin' + 'librsvg: for SVG plugin' + 'gnome-vfs: for GNOME Virtual File System support' + 'libgoom2: for libgoom plugin' + 'vcdimager: navigate VCD with libvcdinfo' + 'xosd: for xosd support' + 'aalib: for ASCII art plugin' + 'libmtp: for MTP devices support' + 'fluidsynth: for synthesizer MIDI FluidSynth' + 'smbclient: for SMB access plugin') +conflicts=('vlc-plugin') +replaces=('vlc-plugin') +backup=('usr/share/vlc/lua/http/.hosts' + 'usr/share/vlc/lua/http/dialogs/.hosts') +options=('!libtool' '!emptydirs') +install=vlc.install +source=("http://download.videolan.org/pub/videolan/${pkgname}/${pkgver}/${pkgname}-${pkgver}.tar.xz") +md5sums=('5ad114755670e4881a2b35354e2f79bc') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + + sed -i -e 's:truetype/freefont:TTF:g' modules/text_renderer/freetype.c + + ./configure --prefix=/usr \ + --disable-rpath \ + --enable-oss \ + --enable-faad \ + --enable-nls \ + --enable-lirc \ + --enable-pvr \ + --enable-ncurses \ + --enable-realrtsp \ + --enable-xosd \ + --enable-aa \ + --enable-vcdx + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + + make DESTDIR="${pkgdir}" install + + for res in 16 32 48 128; do + install -D -m644 "${srcdir}/vlc-${pkgver}/share/icons/${res}x${res}/vlc.png" \ + "${pkgdir}/usr/share/icons/hicolor/${res}x${res}/apps/vlc.png" + done +} diff --git a/staging/vlc/vlc.install b/staging/vlc/vlc.install new file mode 100644 index 000000000..dc4961cae --- /dev/null +++ b/staging/vlc/vlc.install @@ -0,0 +1,18 @@ +post_install() { + xdg-icon-resource forceupdate --theme hicolor &> /dev/null + usr/lib/vlc/vlc-cache-gen -f /usr/lib/vlc/plugins + update-desktop-database -q +} + +post_upgrade() { + post_install +} + +pre_remove() { + rm -f usr/lib/vlc/plugins/plugins-*.dat +} + +post_remove() { + xdg-icon-resource forceupdate --theme hicolor &> /dev/null + update-desktop-database -q +} diff --git a/staging/xf86-video-ati/0000-poor-man-s-solid-picture-support-for-r300-r600.patch b/staging/xf86-video-ati/0000-poor-man-s-solid-picture-support-for-r300-r600.patch new file mode 100644 index 000000000..bcfbf94db --- /dev/null +++ b/staging/xf86-video-ati/0000-poor-man-s-solid-picture-support-for-r300-r600.patch @@ -0,0 +1,571 @@ +From 837149c63929d7d5a8ef6f8204d396f8e6d5acd7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <michel@daenzer.net> +Date: Fri, 13 Apr 2012 11:12:51 +0200 +Subject: [PATCH 1/4] Poor man's acceleration of solid pictures for R3xx-R7xx + +The patch below implements basic acceleration of solid pictures via +scratch 1x1 pixmaps. It seems to at least alleviate some of the +corruption and performance issues exposed by Cairo 1.12, and should also +improve performance for other toolkits/apps using solid pictures. + +If there are no objections to this approach, maybe someone else can beat +me to extending this for Evergreen+ and R1/2xx. +--- + src/r600_exa.c | 160 ++++++++++++++++++++++++++-------------------- + src/radeon_exa_render.c | 115 ++++++++++++++++++++-------------- + src/radeon_exa_shared.c | 19 ++++++ + src/radeon_exa_shared.h | 1 + + 4 files changed, 179 insertions(+), 116 deletions(-) + +diff --git a/src/r600_exa.c b/src/r600_exa.c +index e1eb62f..c3ae553 100644 +--- a/src/r600_exa.c ++++ b/src/r600_exa.c +@@ -901,17 +901,8 @@ static Bool R600CheckCompositeTexture(PicturePtr pPict, + int op, + int unit) + { +- int w = pPict->pDrawable->width; +- int h = pPict->pDrawable->height; + unsigned int repeatType = pPict->repeat ? pPict->repeatType : RepeatNone; + unsigned int i; +- int max_tex_w, max_tex_h; +- +- max_tex_w = 8192; +- max_tex_h = 8192; +- +- if ((w > max_tex_w) || (h > max_tex_h)) +- RADEON_FALLBACK(("Picture w/h too large (%dx%d)\n", w, h)); + + for (i = 0; i < sizeof(R600TexFormats) / sizeof(R600TexFormats[0]); i++) { + if (R600TexFormats[i].fmt == pPict->format) +@@ -951,9 +942,7 @@ static Bool R600TextureSetup(PicturePtr pPict, PixmapPtr pPix, + ScrnInfoPtr pScrn = xf86Screens[pPix->drawable.pScreen->myNum]; + RADEONInfoPtr info = RADEONPTR(pScrn); + struct radeon_accel_state *accel_state = info->accel_state; +- int w = pPict->pDrawable->width; +- int h = pPict->pDrawable->height; +- unsigned int repeatType = pPict->repeat ? pPict->repeatType : RepeatNone; ++ unsigned int repeatType; + unsigned int i; + tex_resource_t tex_res; + tex_sampler_t tex_samp; +@@ -969,9 +958,16 @@ static Bool R600TextureSetup(PicturePtr pPict, PixmapPtr pPix, + } + + /* Texture */ ++ if (pPict->pDrawable) { ++ tex_res.w = pPict->pDrawable->width; ++ tex_res.h = pPict->pDrawable->height; ++ repeatType = pPict->repeat ? pPict->repeatType : RepeatNone; ++ } else { ++ tex_res.w = 1; ++ tex_res.h = 1; ++ repeatType = RepeatNormal; ++ } + tex_res.id = unit; +- tex_res.w = w; +- tex_res.h = h; + tex_res.pitch = accel_state->src_obj[unit].pitch; + tex_res.depth = 0; + tex_res.dim = SQ_TEX_DIM_2D; +@@ -1170,24 +1166,24 @@ static Bool R600TextureSetup(PicturePtr pPict, PixmapPtr pPix, + vs_alu_consts[0] = xFixedToFloat(pPict->transform->matrix[0][0]); + vs_alu_consts[1] = xFixedToFloat(pPict->transform->matrix[0][1]); + vs_alu_consts[2] = xFixedToFloat(pPict->transform->matrix[0][2]); +- vs_alu_consts[3] = 1.0 / w; ++ vs_alu_consts[3] = 1.0 / tex_res.w; + + vs_alu_consts[4] = xFixedToFloat(pPict->transform->matrix[1][0]); + vs_alu_consts[5] = xFixedToFloat(pPict->transform->matrix[1][1]); + vs_alu_consts[6] = xFixedToFloat(pPict->transform->matrix[1][2]); +- vs_alu_consts[7] = 1.0 / h; ++ vs_alu_consts[7] = 1.0 / tex_res.h; + } else { + accel_state->is_transform[unit] = FALSE; + + vs_alu_consts[0] = 1.0; + vs_alu_consts[1] = 0.0; + vs_alu_consts[2] = 0.0; +- vs_alu_consts[3] = 1.0 / w; ++ vs_alu_consts[3] = 1.0 / tex_res.w; + + vs_alu_consts[4] = 0.0; + vs_alu_consts[5] = 1.0; + vs_alu_consts[6] = 0.0; +- vs_alu_consts[7] = 1.0 / h; ++ vs_alu_consts[7] = 1.0 / tex_res.h; + } + + /* VS alu constants */ +@@ -1202,33 +1198,30 @@ static Bool R600CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP + { + uint32_t tmp1; + PixmapPtr pSrcPixmap, pDstPixmap; +- int max_tex_w, max_tex_h, max_dst_w, max_dst_h; + + /* Check for unsupported compositing operations. */ + if (op >= (int) (sizeof(R600BlendOp) / sizeof(R600BlendOp[0]))) + RADEON_FALLBACK(("Unsupported Composite op 0x%x\n", op)); + +- if (!pSrcPicture->pDrawable) +- RADEON_FALLBACK(("Solid or gradient pictures not supported yet\n")); +- +- pSrcPixmap = RADEONGetDrawablePixmap(pSrcPicture->pDrawable); ++ if (pSrcPicture->pDrawable) { ++ pSrcPixmap = RADEONGetDrawablePixmap(pSrcPicture->pDrawable); + +- max_tex_w = 8192; +- max_tex_h = 8192; +- max_dst_w = 8192; +- max_dst_h = 8192; ++ if (pSrcPixmap->drawable.width >= 8192 || ++ pSrcPixmap->drawable.height >= 8192) { ++ RADEON_FALLBACK(("Source w/h too large (%d,%d).\n", ++ pSrcPixmap->drawable.width, ++ pSrcPixmap->drawable.height)); ++ } + +- if (pSrcPixmap->drawable.width >= max_tex_w || +- pSrcPixmap->drawable.height >= max_tex_h) { +- RADEON_FALLBACK(("Source w/h too large (%d,%d).\n", +- pSrcPixmap->drawable.width, +- pSrcPixmap->drawable.height)); +- } ++ if (!R600CheckCompositeTexture(pSrcPicture, pDstPicture, op, 0)) ++ return FALSE; ++ } else if (pSrcPicture->pSourcePict->type != SourcePictTypeSolidFill) ++ RADEON_FALLBACK(("Gradient pictures not supported yet\n")); + + pDstPixmap = RADEONGetDrawablePixmap(pDstPicture->pDrawable); + +- if (pDstPixmap->drawable.width >= max_dst_w || +- pDstPixmap->drawable.height >= max_dst_h) { ++ if (pDstPixmap->drawable.width >= 8192 || ++ pDstPixmap->drawable.height >= 8192) { + RADEON_FALLBACK(("Dest w/h too large (%d,%d).\n", + pDstPixmap->drawable.width, + pDstPixmap->drawable.height)); +@@ -1237,38 +1230,35 @@ static Bool R600CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP + if (pMaskPicture) { + PixmapPtr pMaskPixmap; + +- if (!pMaskPicture->pDrawable) +- RADEON_FALLBACK(("Solid or gradient pictures not supported yet\n")); ++ if (pMaskPicture->pDrawable) { ++ pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); + +- pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); +- +- if (pMaskPixmap->drawable.width >= max_tex_w || +- pMaskPixmap->drawable.height >= max_tex_h) { +- RADEON_FALLBACK(("Mask w/h too large (%d,%d).\n", +- pMaskPixmap->drawable.width, +- pMaskPixmap->drawable.height)); +- } ++ if (pMaskPixmap->drawable.width >= 8192 || ++ pMaskPixmap->drawable.height >= 8192) { ++ RADEON_FALLBACK(("Mask w/h too large (%d,%d).\n", ++ pMaskPixmap->drawable.width, ++ pMaskPixmap->drawable.height)); ++ } + +- if (pMaskPicture->componentAlpha) { +- /* Check if it's component alpha that relies on a source alpha and +- * on the source value. We can only get one of those into the +- * single source value that we get to blend with. +- */ +- if (R600BlendOp[op].src_alpha && +- (R600BlendOp[op].blend_cntl & COLOR_SRCBLEND_mask) != +- (BLEND_ZERO << COLOR_SRCBLEND_shift)) { +- RADEON_FALLBACK(("Component alpha not supported with source " +- "alpha and source value blending.\n")); ++ if (pMaskPicture->componentAlpha) { ++ /* Check if it's component alpha that relies on a source alpha and ++ * on the source value. We can only get one of those into the ++ * single source value that we get to blend with. ++ */ ++ if (R600BlendOp[op].src_alpha && ++ (R600BlendOp[op].blend_cntl & COLOR_SRCBLEND_mask) != ++ (BLEND_ZERO << COLOR_SRCBLEND_shift)) { ++ RADEON_FALLBACK(("Component alpha not supported with source " ++ "alpha and source value blending.\n")); ++ } + } +- } + +- if (!R600CheckCompositeTexture(pMaskPicture, pDstPicture, op, 1)) +- return FALSE; ++ if (!R600CheckCompositeTexture(pMaskPicture, pDstPicture, op, 1)) ++ return FALSE; ++ } else if (pMaskPicture->pSourcePict->type != SourcePictTypeSolidFill) ++ RADEON_FALLBACK(("Gradient pictures not supported yet\n")); + } + +- if (!R600CheckCompositeTexture(pSrcPicture, pDstPicture, op, 0)) +- return FALSE; +- + if (!R600GetDestFormat(pDstPicture, &tmp1)) + return FALSE; + +@@ -1280,7 +1270,8 @@ static Bool R600PrepareComposite(int op, PicturePtr pSrcPicture, + PicturePtr pMaskPicture, PicturePtr pDstPicture, + PixmapPtr pSrc, PixmapPtr pMask, PixmapPtr pDst) + { +- ScrnInfoPtr pScrn = xf86Screens[pSrc->drawable.pScreen->myNum]; ++ ScreenPtr pScreen = pDst->drawable.pScreen; ++ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + RADEONInfoPtr info = RADEONPTR(pScrn); + struct radeon_accel_state *accel_state = info->accel_state; + uint32_t dst_format; +@@ -1288,15 +1279,21 @@ static Bool R600PrepareComposite(int op, PicturePtr pSrcPicture, + shader_config_t vs_conf, ps_conf; + struct r600_accel_object src_obj, mask_obj, dst_obj; + +- if (pDst->drawable.bitsPerPixel < 8 || pSrc->drawable.bitsPerPixel < 8) ++ if (pDst->drawable.bitsPerPixel < 8 || (pSrc && pSrc->drawable.bitsPerPixel < 8)) + return FALSE; + ++ if (!pSrc) { ++ pSrc = RADEONSolidPixmap(pScreen, pSrcPicture->pSourcePict->solidFill.color); ++ if (!pSrc) ++ RADEON_FALLBACK("Failed to create solid scratch pixmap\n"); ++ } ++ + #if defined(XF86DRM_MODE) + if (info->cs) { + src_obj.offset = 0; + dst_obj.offset = 0; +- src_obj.bo = radeon_get_pixmap_bo(pSrc); + dst_obj.bo = radeon_get_pixmap_bo(pDst); ++ src_obj.bo = radeon_get_pixmap_bo(pSrc); + dst_obj.tiling_flags = radeon_get_pixmap_tiling(pDst); + src_obj.tiling_flags = radeon_get_pixmap_tiling(pSrc); + dst_obj.surface = radeon_get_pixmap_surface(pDst); +@@ -1322,7 +1319,16 @@ static Bool R600PrepareComposite(int op, PicturePtr pSrcPicture, + dst_obj.bpp = pDst->drawable.bitsPerPixel; + dst_obj.domain = RADEON_GEM_DOMAIN_VRAM; + +- if (pMask) { ++ if (pMaskPicture) { ++ if (!pMask) { ++ pMask = RADEONSolidPixmap(pScreen, pMaskPicture->pSourcePict->solidFill.color); ++ if (!pMask) { ++ if (!pSrcPicture->pDrawable) ++ pScreen->DestroyPixmap(pSrc); ++ RADEON_FALLBACK("Failed to create solid scratch pixmap\n"); ++ } ++ } ++ + #if defined(XF86DRM_MODE) + if (info->cs) { + mask_obj.offset = 0; +@@ -1509,11 +1515,9 @@ static Bool R600PrepareComposite(int op, PicturePtr pSrcPicture, + return TRUE; + } + +-static void R600DoneComposite(PixmapPtr pDst) ++static void R600FinishComposite(ScrnInfoPtr pScrn, PixmapPtr pDst, ++ struct radeon_accel_state *accel_state) + { +- ScrnInfoPtr pScrn = xf86Screens[pDst->drawable.pScreen->myNum]; +- RADEONInfoPtr info = RADEONPTR(pScrn); +- struct radeon_accel_state *accel_state = info->accel_state; + int vtx_size; + + if (accel_state->vsync) +@@ -1527,6 +1531,22 @@ static void R600DoneComposite(PixmapPtr pDst) + r600_finish_op(pScrn, vtx_size); + } + ++static void R600DoneComposite(PixmapPtr pDst) ++{ ++ ScreenPtr pScreen = pDst->drawable.pScreen; ++ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ RADEONInfoPtr info = RADEONPTR(pScrn); ++ struct radeon_accel_state *accel_state = info->accel_state; ++ ++ R600FinishComposite(pScrn, pDst, accel_state); ++ ++ if (!accel_state->src_pic->pDrawable) ++ pScreen->DestroyPixmap(accel_state->src_pix); ++ ++ if (accel_state->msk_pic && !accel_state->msk_pic->pDrawable) ++ pScreen->DestroyPixmap(accel_state->msk_pix); ++} ++ + static void R600Composite(PixmapPtr pDst, + int srcX, int srcY, + int maskX, int maskY, +@@ -1543,7 +1563,7 @@ static void R600Composite(PixmapPtr pDst, + + #ifdef XF86DRM_MODE + if (info->cs && CS_FULL(info->cs)) { +- R600DoneComposite(info->accel_state->dst_pix); ++ R600FinishComposite(pScrn, pDst, info->accel_state); + radeon_cs_flush_indirect(pScrn); + R600PrepareComposite(info->accel_state->composite_op, + info->accel_state->src_pic, +diff --git a/src/radeon_exa_render.c b/src/radeon_exa_render.c +index e5c231f..b6cc9e4 100644 +--- a/src/radeon_exa_render.c ++++ b/src/radeon_exa_render.c +@@ -299,8 +299,8 @@ static Bool RADEONSetupSourceTile(PicturePtr pPict, + if (repeatType == RepeatNormal || repeatType == RepeatReflect) { + Bool badPitch = needMatchingPitch && !RADEONPitchMatches(pPix); + +- int w = pPict->pDrawable->width; +- int h = pPict->pDrawable->height; ++ int w = pPict->pDrawable ? pPict->pDrawable->width : 1; ++ int h = pPict->pDrawable ? pPict->pDrawable->height : 1; + + if (pPict->transform) { + if (badPitch) +@@ -1112,23 +1112,8 @@ static Bool R300CheckCompositeTexture(PicturePtr pPict, + ScreenPtr pScreen = pDstPict->pDrawable->pScreen; + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + RADEONInfoPtr info = RADEONPTR(pScrn); +- + unsigned int repeatType = pPict->repeat ? pPict->repeatType : RepeatNone; +- int w = pPict->pDrawable->width; +- int h = pPict->pDrawable->height; + int i; +- int max_tex_w, max_tex_h; +- +- if (is_r500) { +- max_tex_w = 4096; +- max_tex_h = 4096; +- } else { +- max_tex_w = 2048; +- max_tex_h = 2048; +- } +- +- if ((w > max_tex_w) || (h > max_tex_h)) +- RADEON_FALLBACK(("Picture w/h too large (%dx%d)\n", w, h)); + + for (i = 0; i < sizeof(R300TexFormats) / sizeof(R300TexFormats[0]); i++) + { +@@ -1139,7 +1124,7 @@ static Bool R300CheckCompositeTexture(PicturePtr pPict, + RADEON_FALLBACK(("Unsupported picture format 0x%x\n", + (int)pPict->format)); + +- if (!RADEONCheckTexturePOT(pPict, unit == 0)) { ++ if (pPict->pDrawable && !RADEONCheckTexturePOT(pPict, unit == 0)) { + if (info->cs) { + struct radeon_exa_pixmap_priv *driver_priv; + PixmapPtr pPix; +@@ -1181,15 +1166,23 @@ static Bool FUNC_NAME(R300TextureSetup)(PicturePtr pPict, PixmapPtr pPix, + { + RINFO_FROM_SCREEN(pPix->drawable.pScreen); + uint32_t txfilter, txformat0, txformat1, txoffset, txpitch, us_format = 0; +- int w = pPict->pDrawable->width; +- int h = pPict->pDrawable->height; ++ int w, h; + int i, pixel_shift, out_size = 6; +- unsigned int repeatType = pPict->repeat ? pPict->repeatType : RepeatNone; ++ unsigned int repeatType; + struct radeon_exa_pixmap_priv *driver_priv; + ACCEL_PREAMBLE(); + + TRACE; + ++ if (pPict->pDrawable) { ++ w = pPict->pDrawable->width; ++ h = pPict->pDrawable->height; ++ repeatType = pPict->repeat ? pPict->repeatType : RepeatNone; ++ } else { ++ w = h = 1; ++ repeatType = RepeatNormal; ++ } ++ + txpitch = exaGetPixmapPitch(pPix); + txoffset = 0; + +@@ -1394,11 +1387,6 @@ static Bool R300CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP + if (op >= sizeof(RadeonBlendOp) / sizeof(RadeonBlendOp[0])) + RADEON_FALLBACK(("Unsupported Composite op 0x%x\n", op)); + +- if (!pSrcPicture->pDrawable) +- RADEON_FALLBACK(("Solid or gradient pictures not supported yet\n")); +- +- pSrcPixmap = RADEONGetDrawablePixmap(pSrcPicture->pDrawable); +- + if (IS_R500_3D) { + max_tex_w = 4096; + max_tex_h = 4096; +@@ -1416,13 +1404,6 @@ static Bool R300CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP + } + } + +- if (pSrcPixmap->drawable.width > max_tex_w || +- pSrcPixmap->drawable.height > max_tex_h) { +- RADEON_FALLBACK(("Source w/h too large (%d,%d).\n", +- pSrcPixmap->drawable.width, +- pSrcPixmap->drawable.height)); +- } +- + pDstPixmap = RADEONGetDrawablePixmap(pDstPicture->pDrawable); + + if (pDstPixmap->drawable.width > max_dst_w || +@@ -1432,20 +1413,32 @@ static Bool R300CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP + pDstPixmap->drawable.height)); + } + ++ if (pSrcPicture->pDrawable) { ++ pSrcPixmap = RADEONGetDrawablePixmap(pSrcPicture->pDrawable); ++ ++ if (pSrcPixmap->drawable.width > max_tex_w || ++ pSrcPixmap->drawable.height > max_tex_h) { ++ RADEON_FALLBACK(("Source w/h too large (%d,%d).\n", ++ pSrcPixmap->drawable.width, ++ pSrcPixmap->drawable.height)); ++ } ++ } else if (pSrcPicture->pSourcePict->type != SourcePictTypeSolidFill) ++ RADEON_FALLBACK(("Gradient pictures not supported yet\n")); ++ + if (pMaskPicture) { + PixmapPtr pMaskPixmap; + +- if (!pMaskPicture->pDrawable) +- RADEON_FALLBACK(("Solid or gradient pictures not supported yet\n")); ++ if (pMaskPicture->pDrawable) { ++ pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); + +- pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); +- +- if (pMaskPixmap->drawable.width > max_tex_w || +- pMaskPixmap->drawable.height > max_tex_h) { +- RADEON_FALLBACK(("Mask w/h too large (%d,%d).\n", +- pMaskPixmap->drawable.width, +- pMaskPixmap->drawable.height)); +- } ++ if (pMaskPixmap->drawable.width > max_tex_w || ++ pMaskPixmap->drawable.height > max_tex_h) { ++ RADEON_FALLBACK(("Mask w/h too large (%d,%d).\n", ++ pMaskPixmap->drawable.width, ++ pMaskPixmap->drawable.height)); ++ } ++ } else if (pMaskPicture->pSourcePict->type != SourcePictTypeSolidFill) ++ RADEON_FALLBACK(("Gradient pictures not supported yet\n")); + + if (pMaskPicture->componentAlpha) { + /* Check if it's component alpha that relies on a source alpha and +@@ -1479,7 +1472,8 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, + PicturePtr pMaskPicture, PicturePtr pDstPicture, + PixmapPtr pSrc, PixmapPtr pMask, PixmapPtr pDst) + { +- RINFO_FROM_SCREEN(pDst->drawable.pScreen); ++ ScreenPtr pScreen = pDst->drawable.pScreen; ++ RINFO_FROM_SCREEN(pScreen); + uint32_t dst_format, dst_pitch; + uint32_t txenable, colorpitch; + uint32_t blendcntl, output_fmt; +@@ -1508,9 +1502,24 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, + if (((dst_pitch >> pixel_shift) & 0x7) != 0) + RADEON_FALLBACK(("Bad destination pitch 0x%x\n", (int)dst_pitch)); + ++ if (!pSrc) { ++ pSrc = RADEONSolidPixmap(pScreen, cpu_to_le32(pSrcPicture->pSourcePict->solidFill.color)); ++ if (!pSrc) ++ RADEON_FALLBACK("Failed to create solid scratch pixmap\n"); ++ } ++ + if (!RADEONSetupSourceTile(pSrcPicture, pSrc, TRUE, FALSE)) + return FALSE; + ++ if (pMaskPicture && !pMask) { ++ pMask = RADEONSolidPixmap(pScreen, cpu_to_le32(pMaskPicture->pSourcePict->solidFill.color)); ++ if (!pMask) { ++ if (!pSrcPicture->pDrawable) ++ pScreen->DestroyPixmap(pSrc); ++ RADEON_FALLBACK("Failed to create solid scratch pixmap\n"); ++ } ++ } ++ + RADEONPrepareCompositeCS(op, pSrcPicture, pMaskPicture, pDstPicture, + pSrc, pMask, pDst); + +@@ -2132,7 +2141,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, + return TRUE; + } + +-static void FUNC_NAME(RadeonDoneComposite)(PixmapPtr pDst) ++static void FUNC_NAME(RadeonFinishComposite)(PixmapPtr pDst) + { + RINFO_FROM_SCREEN(pDst->drawable.pScreen); + ACCEL_PREAMBLE(); +@@ -2179,6 +2188,20 @@ static void FUNC_NAME(RadeonDoneComposite)(PixmapPtr pDst) + LEAVE_DRAW(0); + } + ++static void FUNC_NAME(RadeonDoneComposite)(PixmapPtr pDst) ++{ ++ ScreenPtr pScreen = pDst->drawable.pScreen; ++ RINFO_FROM_SCREEN(pScreen); ++ struct radeon_accel_state *accel_state = info->accel_state; ++ ++ FUNC_NAME(RadeonFinishComposite)(pDst); ++ ++ if (!accel_state->src_pic->pDrawable) ++ pScreen->DestroyPixmap(accel_state->src_pix); ++ ++ if (accel_state->msk_pic && !accel_state->msk_pic->pDrawable) ++ pScreen->DestroyPixmap(accel_state->msk_pix); ++} + + #ifdef ACCEL_CP + +@@ -2257,7 +2280,7 @@ static void FUNC_NAME(RadeonCompositeTile)(ScrnInfoPtr pScrn, + if ((info->cs && CS_FULL(info->cs)) || + (!info->cs && (info->cp->indirectBuffer->used + 4 * 32) > + info->cp->indirectBuffer->total)) { +- FUNC_NAME(RadeonDoneComposite)(info->accel_state->dst_pix); ++ FUNC_NAME(RadeonFinishComposite)(info->accel_state->dst_pix); + if (info->cs) + radeon_cs_flush_indirect(pScrn); + else +diff --git a/src/radeon_exa_shared.c b/src/radeon_exa_shared.c +index be1d2fa..28dc335 100644 +--- a/src/radeon_exa_shared.c ++++ b/src/radeon_exa_shared.c +@@ -126,6 +126,25 @@ Bool RADEONCheckBPP(int bpp) + return FALSE; + } + ++PixmapPtr RADEONSolidPixmap(ScreenPtr pScreen, uint32_t solid) ++{ ++ PixmapPtr pPix = pScreen->CreatePixmap(pScreen, 1, 1, 32, 0); ++ struct radeon_bo *bo; ++ ++ exaMoveInPixmap(pPix); ++ bo = radeon_get_pixmap_bo(pPix); ++ ++ if (radeon_bo_map(bo, 1)) { ++ pScreen->DestroyPixmap(pPix); ++ return NULL; ++ } ++ ++ memcpy(bo->ptr, &solid, 4); ++ radeon_bo_unmap(bo); ++ ++ return pPix; ++} ++ + static Bool radeon_vb_get(ScrnInfoPtr pScrn) + { + RADEONInfoPtr info = RADEONPTR(pScrn); +diff --git a/src/radeon_exa_shared.h b/src/radeon_exa_shared.h +index 7b8b5ca..60a1045 100644 +--- a/src/radeon_exa_shared.h ++++ b/src/radeon_exa_shared.h +@@ -40,6 +40,7 @@ extern void RADEONVlineHelperClear(ScrnInfoPtr pScrn); + extern void RADEONVlineHelperSet(ScrnInfoPtr pScrn, int x1, int y1, int x2, int y2); + extern Bool RADEONValidPM(uint32_t pm, int bpp); + extern Bool RADEONCheckBPP(int bpp); ++extern PixmapPtr RADEONSolidPixmap(ScreenPtr pScreen, uint32_t solid); + + #define RADEON_TRACE_FALL 0 + #define RADEON_TRACE_DRAW 0 +-- +1.7.7.5 + diff --git a/staging/xf86-video-ati/0001-poor-man-s-solid-picture-support-for-evergreen.patch b/staging/xf86-video-ati/0001-poor-man-s-solid-picture-support-for-evergreen.patch new file mode 100644 index 000000000..e6b5433e1 --- /dev/null +++ b/staging/xf86-video-ati/0001-poor-man-s-solid-picture-support-for-evergreen.patch @@ -0,0 +1,290 @@ +From 761ef4b340e689490a76ec5ce520c858335e2106 Mon Sep 17 00:00:00 2001 +From: Alex Deucher <alexander.deucher@amd.com> +Date: Sat, 14 Apr 2012 08:53:39 -0400 +Subject: [PATCH] poor man's solid picture support for evergreen + +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + src/evergreen_exa.c | 163 ++++++++++++++++++++++++++++++--------------------- + 1 files changed, 95 insertions(+), 68 deletions(-) + +diff --git a/src/evergreen_exa.c b/src/evergreen_exa.c +index cee3ec2..61b47a4 100644 +--- a/src/evergreen_exa.c ++++ b/src/evergreen_exa.c +@@ -748,17 +748,8 @@ static Bool EVERGREENCheckCompositeTexture(PicturePtr pPict, + int op, + int unit) + { +- int w = pPict->pDrawable->width; +- int h = pPict->pDrawable->height; + unsigned int repeatType = pPict->repeat ? pPict->repeatType : RepeatNone; + unsigned int i; +- int max_tex_w, max_tex_h; +- +- max_tex_w = 16384; +- max_tex_h = 16384; +- +- if ((w > max_tex_w) || (h > max_tex_h)) +- RADEON_FALLBACK(("Picture w/h too large (%dx%d)\n", w, h)); + + for (i = 0; i < sizeof(EVERGREENTexFormats) / sizeof(EVERGREENTexFormats[0]); i++) { + if (EVERGREENTexFormats[i].fmt == pPict->format) +@@ -798,9 +789,16 @@ static void EVERGREENXFormSetup(PicturePtr pPict, PixmapPtr pPix, + ScrnInfoPtr pScrn = xf86Screens[pPix->drawable.pScreen->myNum]; + RADEONInfoPtr info = RADEONPTR(pScrn); + struct radeon_accel_state *accel_state = info->accel_state; +- int w = pPict->pDrawable->width; +- int h = pPict->pDrawable->height; + int const_offset = unit * 8; ++ int w, h; ++ ++ if (pPict->pDrawable) { ++ w = pPict->pDrawable->width; ++ h = pPict->pDrawable->height; ++ } else { ++ w = 1; ++ h = 1; ++ } + + if (pPict->transform != 0) { + accel_state->is_transform[unit] = TRUE; +@@ -837,9 +835,7 @@ static Bool EVERGREENTextureSetup(PicturePtr pPict, PixmapPtr pPix, + ScrnInfoPtr pScrn = xf86Screens[pPix->drawable.pScreen->myNum]; + RADEONInfoPtr info = RADEONPTR(pScrn); + struct radeon_accel_state *accel_state = info->accel_state; +- int w = pPict->pDrawable->width; +- int h = pPict->pDrawable->height; +- unsigned int repeatType = pPict->repeat ? pPict->repeatType : RepeatNone; ++ unsigned int repeatType; + unsigned int i; + tex_resource_t tex_res; + tex_sampler_t tex_samp; +@@ -854,9 +850,17 @@ static Bool EVERGREENTextureSetup(PicturePtr pPict, PixmapPtr pPix, + } + + /* Texture */ ++ if (pPict->pDrawable) { ++ tex_res.w = pPict->pDrawable->width; ++ tex_res.h = pPict->pDrawable->height; ++ repeatType = pPict->repeat ? pPict->repeatType : RepeatNone; ++ } else { ++ tex_res.w = 1; ++ tex_res.h = 1; ++ repeatType = RepeatNormal; ++ } ++ + tex_res.id = unit; +- tex_res.w = w; +- tex_res.h = h; + tex_res.pitch = accel_state->src_obj[unit].pitch; + tex_res.depth = 0; + tex_res.dim = SQ_TEX_DIM_2D; +@@ -1054,33 +1058,30 @@ static Bool EVERGREENCheckComposite(int op, PicturePtr pSrcPicture, + { + uint32_t tmp1; + PixmapPtr pSrcPixmap, pDstPixmap; +- int max_tex_w, max_tex_h, max_dst_w, max_dst_h; + + /* Check for unsupported compositing operations. */ + if (op >= (int) (sizeof(EVERGREENBlendOp) / sizeof(EVERGREENBlendOp[0]))) + RADEON_FALLBACK(("Unsupported Composite op 0x%x\n", op)); + +- if (!pSrcPicture->pDrawable) +- RADEON_FALLBACK(("Solid or gradient pictures not supported yet\n")); ++ if (pSrcPicture->pDrawable) { ++ pSrcPixmap = RADEONGetDrawablePixmap(pSrcPicture->pDrawable); + +- pSrcPixmap = RADEONGetDrawablePixmap(pSrcPicture->pDrawable); +- +- max_tex_w = 8192; +- max_tex_h = 8192; +- max_dst_w = 8192; +- max_dst_h = 8192; ++ if (pSrcPixmap->drawable.width >= 16384 || ++ pSrcPixmap->drawable.height >= 16384) { ++ RADEON_FALLBACK(("Source w/h too large (%d,%d).\n", ++ pSrcPixmap->drawable.width, ++ pSrcPixmap->drawable.height)); ++ } + +- if (pSrcPixmap->drawable.width >= max_tex_w || +- pSrcPixmap->drawable.height >= max_tex_h) { +- RADEON_FALLBACK(("Source w/h too large (%d,%d).\n", +- pSrcPixmap->drawable.width, +- pSrcPixmap->drawable.height)); +- } ++ if (!EVERGREENCheckCompositeTexture(pSrcPicture, pDstPicture, op, 0)) ++ return FALSE; ++ } else if (pSrcPicture->pSourcePict->type != SourcePictTypeSolidFill) ++ RADEON_FALLBACK(("Gradient pictures not supported yet\n")); + + pDstPixmap = RADEONGetDrawablePixmap(pDstPicture->pDrawable); + +- if (pDstPixmap->drawable.width >= max_dst_w || +- pDstPixmap->drawable.height >= max_dst_h) { ++ if (pDstPixmap->drawable.width >= 16384 || ++ pDstPixmap->drawable.height >= 16384) { + RADEON_FALLBACK(("Dest w/h too large (%d,%d).\n", + pDstPixmap->drawable.width, + pDstPixmap->drawable.height)); +@@ -1089,38 +1090,35 @@ static Bool EVERGREENCheckComposite(int op, PicturePtr pSrcPicture, + if (pMaskPicture) { + PixmapPtr pMaskPixmap; + +- if (!pMaskPicture->pDrawable) +- RADEON_FALLBACK(("Solid or gradient pictures not supported yet\n")); +- +- pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); ++ if (pMaskPicture->pDrawable) { ++ pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); + +- if (pMaskPixmap->drawable.width >= max_tex_w || +- pMaskPixmap->drawable.height >= max_tex_h) { +- RADEON_FALLBACK(("Mask w/h too large (%d,%d).\n", +- pMaskPixmap->drawable.width, +- pMaskPixmap->drawable.height)); +- } ++ if (pMaskPixmap->drawable.width >= 16384 || ++ pMaskPixmap->drawable.height >= 16384) { ++ RADEON_FALLBACK(("Mask w/h too large (%d,%d).\n", ++ pMaskPixmap->drawable.width, ++ pMaskPixmap->drawable.height)); ++ } + +- if (pMaskPicture->componentAlpha) { +- /* Check if it's component alpha that relies on a source alpha and +- * on the source value. We can only get one of those into the +- * single source value that we get to blend with. +- */ +- if (EVERGREENBlendOp[op].src_alpha && +- (EVERGREENBlendOp[op].blend_cntl & COLOR_SRCBLEND_mask) != +- (BLEND_ZERO << COLOR_SRCBLEND_shift)) { +- RADEON_FALLBACK(("Component alpha not supported with source " +- "alpha and source value blending.\n")); ++ if (pMaskPicture->componentAlpha) { ++ /* Check if it's component alpha that relies on a source alpha and ++ * on the source value. We can only get one of those into the ++ * single source value that we get to blend with. ++ */ ++ if (EVERGREENBlendOp[op].src_alpha && ++ (EVERGREENBlendOp[op].blend_cntl & COLOR_SRCBLEND_mask) != ++ (BLEND_ZERO << COLOR_SRCBLEND_shift)) { ++ RADEON_FALLBACK(("Component alpha not supported with source " ++ "alpha and source value blending.\n")); ++ } + } +- } + +- if (!EVERGREENCheckCompositeTexture(pMaskPicture, pDstPicture, op, 1)) +- return FALSE; ++ if (!EVERGREENCheckCompositeTexture(pMaskPicture, pDstPicture, op, 1)) ++ return FALSE; ++ } else if (pMaskPicture->pSourcePict->type != SourcePictTypeSolidFill) ++ RADEON_FALLBACK(("Gradient pictures not supported yet\n")); + } + +- if (!EVERGREENCheckCompositeTexture(pSrcPicture, pDstPicture, op, 0)) +- return FALSE; +- + if (!EVERGREENGetDestFormat(pDstPicture, &tmp1)) + return FALSE; + +@@ -1132,7 +1130,8 @@ static Bool EVERGREENPrepareComposite(int op, PicturePtr pSrcPicture, + PicturePtr pMaskPicture, PicturePtr pDstPicture, + PixmapPtr pSrc, PixmapPtr pMask, PixmapPtr pDst) + { +- ScrnInfoPtr pScrn = xf86Screens[pSrc->drawable.pScreen->myNum]; ++ ScreenPtr pScreen = pDst->drawable.pScreen; ++ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + RADEONInfoPtr info = RADEONPTR(pScrn); + struct radeon_accel_state *accel_state = info->accel_state; + uint32_t dst_format; +@@ -1142,13 +1141,19 @@ static Bool EVERGREENPrepareComposite(int op, PicturePtr pSrcPicture, + struct r600_accel_object src_obj, mask_obj, dst_obj; + float *cbuf; + +- if (pDst->drawable.bitsPerPixel < 8 || pSrc->drawable.bitsPerPixel < 8) ++ if (pDst->drawable.bitsPerPixel < 8 || (pSrc && pSrc->drawable.bitsPerPixel < 8)) + return FALSE; + ++ if (!pSrc) { ++ pSrc = RADEONSolidPixmap(pScreen, pSrcPicture->pSourcePict->solidFill.color); ++ if (!pSrc) ++ RADEON_FALLBACK("Failed to create solid scratch pixmap\n"); ++ } ++ + src_obj.offset = 0; + dst_obj.offset = 0; +- src_obj.bo = radeon_get_pixmap_bo(pSrc); + dst_obj.bo = radeon_get_pixmap_bo(pDst); ++ src_obj.bo = radeon_get_pixmap_bo(pSrc); + dst_obj.surface = radeon_get_pixmap_surface(pDst); + src_obj.surface = radeon_get_pixmap_surface(pSrc); + dst_obj.tiling_flags = radeon_get_pixmap_tiling(pDst); +@@ -1166,7 +1171,15 @@ static Bool EVERGREENPrepareComposite(int op, PicturePtr pSrcPicture, + dst_obj.bpp = pDst->drawable.bitsPerPixel; + dst_obj.domain = RADEON_GEM_DOMAIN_VRAM; + +- if (pMask) { ++ if (pMaskPicture) { ++ if (!pMask) { ++ pMask = RADEONSolidPixmap(pScreen, pMaskPicture->pSourcePict->solidFill.color); ++ if (!pMask) { ++ if (!pSrcPicture->pDrawable) ++ pScreen->DestroyPixmap(pSrc); ++ RADEON_FALLBACK("Failed to create solid scratch pixmap\n"); ++ } ++ } + mask_obj.offset = 0; + mask_obj.bo = radeon_get_pixmap_bo(pMask); + mask_obj.tiling_flags = radeon_get_pixmap_tiling(pMask); +@@ -1363,11 +1376,9 @@ static Bool EVERGREENPrepareComposite(int op, PicturePtr pSrcPicture, + return TRUE; + } + +-static void EVERGREENDoneComposite(PixmapPtr pDst) ++static void EVERGREENFinishComposite(ScrnInfoPtr pScrn, PixmapPtr pDst, ++ struct radeon_accel_state *accel_state) + { +- ScrnInfoPtr pScrn = xf86Screens[pDst->drawable.pScreen->myNum]; +- RADEONInfoPtr info = RADEONPTR(pScrn); +- struct radeon_accel_state *accel_state = info->accel_state; + int vtx_size; + + if (accel_state->vsync) +@@ -1381,6 +1392,22 @@ static void EVERGREENDoneComposite(PixmapPtr pDst) + evergreen_finish_op(pScrn, vtx_size); + } + ++static void EVERGREENDoneComposite(PixmapPtr pDst) ++{ ++ ScreenPtr pScreen = pDst->drawable.pScreen; ++ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ RADEONInfoPtr info = RADEONPTR(pScrn); ++ struct radeon_accel_state *accel_state = info->accel_state; ++ ++ EVERGREENFinishComposite(pScrn, pDst, accel_state); ++ ++ if (!accel_state->src_pic->pDrawable) ++ pScreen->DestroyPixmap(accel_state->src_pix); ++ ++ if (accel_state->msk_pic && !accel_state->msk_pic->pDrawable) ++ pScreen->DestroyPixmap(accel_state->msk_pix); ++} ++ + static void EVERGREENComposite(PixmapPtr pDst, + int srcX, int srcY, + int maskX, int maskY, +@@ -1393,7 +1420,7 @@ static void EVERGREENComposite(PixmapPtr pDst, + float *vb; + + if (CS_FULL(info->cs)) { +- EVERGREENDoneComposite(info->accel_state->dst_pix); ++ EVERGREENFinishComposite(pScrn, pDst, info->accel_state); + radeon_cs_flush_indirect(pScrn); + EVERGREENPrepareComposite(info->accel_state->composite_op, + info->accel_state->src_pic, +-- +1.7.7.5 + diff --git a/staging/xf86-video-ati/0002-poor-man-s-solid-picture-support-for-r100.patch b/staging/xf86-video-ati/0002-poor-man-s-solid-picture-support-for-r100.patch new file mode 100644 index 000000000..3a2779446 --- /dev/null +++ b/staging/xf86-video-ati/0002-poor-man-s-solid-picture-support-for-r100.patch @@ -0,0 +1,182 @@ +From f36b911ecc31f689ddceeeb11d10eb7cb4a3428d Mon Sep 17 00:00:00 2001 +From: Alex Deucher <alexander.deucher@amd.com> +Date: Fri, 13 Apr 2012 13:24:46 -0400 +Subject: [PATCH 2/3] poor man's solid picture support for r100 + +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + src/radeon_exa_render.c | 101 +++++++++++++++++++++++++++-------------------- + 1 files changed, 58 insertions(+), 43 deletions(-) + +diff --git a/src/radeon_exa_render.c b/src/radeon_exa_render.c +index b6cc9e4..451a625 100644 +--- a/src/radeon_exa_render.c ++++ b/src/radeon_exa_render.c +@@ -338,17 +338,8 @@ static Bool R100CheckCompositeTexture(PicturePtr pPict, + int unit) + { + unsigned int repeatType = pPict->repeat ? pPict->repeatType : RepeatNone; +- int w = pPict->pDrawable->width; +- int h = pPict->pDrawable->height; + int i; + +- /* r100 limit should be 2048, there are issues with 2048 +- * see 197a62704742a4a19736c2637ac92d1dc5ab34ed +- */ +- +- if ((w > 2047) || (h > 2047)) +- RADEON_FALLBACK(("Picture w/h too large (%dx%d)\n", w, h)); +- + for (i = 0; i < sizeof(R100TexFormats) / sizeof(R100TexFormats[0]); i++) { + if (R100TexFormats[i].fmt == pPict->format) + break; +@@ -357,7 +348,7 @@ static Bool R100CheckCompositeTexture(PicturePtr pPict, + RADEON_FALLBACK(("Unsupported picture format 0x%x\n", + (int)pPict->format)); + +- if (!RADEONCheckTexturePOT(pPict, unit == 0)) ++ if (pPict->pDrawable && !RADEONCheckTexturePOT(pPict, unit == 0)) + return FALSE; + + if (pPict->filter != PictFilterNearest && +@@ -392,15 +383,24 @@ static Bool FUNC_NAME(R100TextureSetup)(PicturePtr pPict, PixmapPtr pPix, + { + RINFO_FROM_SCREEN(pPix->drawable.pScreen); + uint32_t txfilter, txformat, txoffset, txpitch; +- int w = pPict->pDrawable->width; +- int h = pPict->pDrawable->height; +- unsigned int repeatType = pPict->repeat ? pPict->repeatType : RepeatNone; +- Bool repeat = (repeatType == RepeatNormal || repeatType == RepeatReflect) && +- !(unit == 0 && (info->accel_state->need_src_tile_x || info->accel_state->need_src_tile_y)); +- int i; ++ unsigned int repeatType; ++ Bool repeat; ++ int i, w, h; + struct radeon_exa_pixmap_priv *driver_priv; + ACCEL_PREAMBLE(); + ++ if (pPict->pDrawable) { ++ w = pPict->pDrawable->width; ++ h = pPict->pDrawable->height; ++ repeatType = pPict->repeat ? pPict->repeatType : RepeatNone; ++ } else { ++ w = h = 1; ++ repeatType = RepeatNormal; ++ } ++ ++ repeat = (repeatType == RepeatNormal || repeatType == RepeatReflect) && ++ !(unit == 0 && (info->accel_state->need_src_tile_x || info->accel_state->need_src_tile_y)); ++ + txpitch = exaGetPixmapPitch(pPix); + txoffset = 0; + +@@ -510,22 +510,6 @@ static Bool R100CheckComposite(int op, PicturePtr pSrcPicture, + if (op >= sizeof(RadeonBlendOp) / sizeof(RadeonBlendOp[0])) + RADEON_FALLBACK(("Unsupported Composite op 0x%x\n", op)); + +- if (!pSrcPicture->pDrawable) +- RADEON_FALLBACK(("Solid or gradient pictures not supported yet\n")); +- +- /* r100 limit should be 2048, there are issues with 2048 +- * see 197a62704742a4a19736c2637ac92d1dc5ab34ed +- */ +- +- pSrcPixmap = RADEONGetDrawablePixmap(pSrcPicture->pDrawable); +- +- if (pSrcPixmap->drawable.width > 2047 || +- pSrcPixmap->drawable.height > 2047) { +- RADEON_FALLBACK(("Source w/h too large (%d,%d).\n", +- pSrcPixmap->drawable.width, +- pSrcPixmap->drawable.height)); +- } +- + pDstPixmap = RADEONGetDrawablePixmap(pDstPicture->pDrawable); + + if (pDstPixmap->drawable.width > 2047 || +@@ -535,20 +519,35 @@ static Bool R100CheckComposite(int op, PicturePtr pSrcPicture, + pDstPixmap->drawable.height)); + } + ++ if (pSrcPicture->pDrawable) { ++ /* r100 limit should be 2048, there are issues with 2048 ++ * see 197a62704742a4a19736c2637ac92d1dc5ab34ed ++ */ ++ pSrcPixmap = RADEONGetDrawablePixmap(pSrcPicture->pDrawable); ++ ++ if (pSrcPixmap->drawable.width > 2047 || ++ pSrcPixmap->drawable.height > 2047) { ++ RADEON_FALLBACK(("Source w/h too large (%d,%d).\n", ++ pSrcPixmap->drawable.width, ++ pSrcPixmap->drawable.height)); ++ } ++ } else if (pSrcPicture->pSourcePict->type != SourcePictTypeSolidFill) ++ RADEON_FALLBACK(("Gradient pictures not supported yet\n")); ++ + if (pMaskPicture) { + PixmapPtr pMaskPixmap; + +- if (!pMaskPicture->pDrawable) +- RADEON_FALLBACK(("Solid or gradient pictures not supported yet\n")); +- +- pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); ++ if (pMaskPicture->pDrawable) { ++ pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); + +- if (pMaskPixmap->drawable.width > 2047 || +- pMaskPixmap->drawable.height > 2047) { +- RADEON_FALLBACK(("Mask w/h too large (%d,%d).\n", +- pMaskPixmap->drawable.width, +- pMaskPixmap->drawable.height)); +- } ++ if (pMaskPixmap->drawable.width > 2047 || ++ pMaskPixmap->drawable.height > 2047) { ++ RADEON_FALLBACK(("Mask w/h too large (%d,%d).\n", ++ pMaskPixmap->drawable.width, ++ pMaskPixmap->drawable.height)); ++ } ++ } else if (pMaskPicture->pSourcePict->type != SourcePictTypeSolidFill) ++ RADEON_FALLBACK(("Gradient pictures not supported yet\n")); + + if (pMaskPicture->componentAlpha) { + /* Check if it's component alpha that relies on a source alpha and +@@ -624,7 +623,8 @@ static Bool FUNC_NAME(R100PrepareComposite)(int op, + PixmapPtr pMask, + PixmapPtr pDst) + { +- RINFO_FROM_SCREEN(pDst->drawable.pScreen); ++ ScreenPtr pScreen = pDst->drawable.pScreen; ++ RINFO_FROM_SCREEN(pScreen); + uint32_t dst_format, dst_pitch, colorpitch; + uint32_t pp_cntl, blendcntl, cblend, ablend; + int pixel_shift; +@@ -648,12 +648,27 @@ static Bool FUNC_NAME(R100PrepareComposite)(int op, + + CHECK_OFFSET(pDst, 0x0f, "destination"); + ++ if (!pSrc) { ++ pSrc = RADEONSolidPixmap(pScreen, cpu_to_le32(pSrcPicture->pSourcePict->solidFill.color)); ++ if (!pSrc) ++ RADEON_FALLBACK("Failed to create solid scratch pixmap\n"); ++ } ++ + if (((dst_pitch >> pixel_shift) & 0x7) != 0) + RADEON_FALLBACK(("Bad destination pitch 0x%x\n", (int)dst_pitch)); + + if (!RADEONSetupSourceTile(pSrcPicture, pSrc, FALSE, TRUE)) + return FALSE; + ++ if (pMaskPicture && !pMask) { ++ pMask = RADEONSolidPixmap(pScreen, cpu_to_le32(pMaskPicture->pSourcePict->solidFill.color)); ++ if (!pMask) { ++ if (!pSrcPicture->pDrawable) ++ pScreen->DestroyPixmap(pSrc); ++ RADEON_FALLBACK("Failed to create solid scratch pixmap\n"); ++ } ++ } ++ + RADEONPrepareCompositeCS(op, pSrcPicture, pMaskPicture, pDstPicture, + pSrc, pMask, pDst); + +-- +1.7.7.5 + diff --git a/staging/xf86-video-ati/0003-poor-man-s-solid-picture-support-for-r200.patch b/staging/xf86-video-ati/0003-poor-man-s-solid-picture-support-for-r200.patch new file mode 100644 index 000000000..0a448fc93 --- /dev/null +++ b/staging/xf86-video-ati/0003-poor-man-s-solid-picture-support-for-r200.patch @@ -0,0 +1,179 @@ +From c5c8310858f8018a1754f2457d7b102dc7d62b23 Mon Sep 17 00:00:00 2001 +From: Alex Deucher <alexander.deucher@amd.com> +Date: Fri, 13 Apr 2012 13:28:10 -0400 +Subject: [PATCH 3/3] poor man's solid picture support for r200 + +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + src/radeon_exa_render.c | 101 +++++++++++++++++++++++++++-------------------- + 1 files changed, 58 insertions(+), 43 deletions(-) + +diff --git a/src/radeon_exa_render.c b/src/radeon_exa_render.c +index 451a625..7f1a3ff 100644 +--- a/src/radeon_exa_render.c ++++ b/src/radeon_exa_render.c +@@ -756,17 +756,8 @@ static Bool R200CheckCompositeTexture(PicturePtr pPict, + int unit) + { + unsigned int repeatType = pPict->repeat ? pPict->repeatType : RepeatNone; +- int w = pPict->pDrawable->width; +- int h = pPict->pDrawable->height; + int i; + +- /* r200 limit should be 2048, there are issues with 2048 +- * see bug 19269 +- */ +- +- if ((w > 2047) || (h > 2047)) +- RADEON_FALLBACK(("Picture w/h too large (%dx%d)\n", w, h)); +- + for (i = 0; i < sizeof(R200TexFormats) / sizeof(R200TexFormats[0]); i++) + { + if (R200TexFormats[i].fmt == pPict->format) +@@ -776,7 +767,7 @@ static Bool R200CheckCompositeTexture(PicturePtr pPict, + RADEON_FALLBACK(("Unsupported picture format 0x%x\n", + (int)pPict->format)); + +- if (!RADEONCheckTexturePOT(pPict, unit == 0)) ++ if (pPict->pDrawable && !RADEONCheckTexturePOT(pPict, unit == 0)) + return FALSE; + + if (pPict->filter != PictFilterNearest && +@@ -809,15 +800,24 @@ static Bool FUNC_NAME(R200TextureSetup)(PicturePtr pPict, PixmapPtr pPix, + { + RINFO_FROM_SCREEN(pPix->drawable.pScreen); + uint32_t txfilter, txformat, txoffset, txpitch; +- int w = pPict->pDrawable->width; +- int h = pPict->pDrawable->height; +- unsigned int repeatType = pPict->repeat ? pPict->repeatType : RepeatNone; +- Bool repeat = (repeatType == RepeatNormal || repeatType == RepeatReflect) && +- !(unit == 0 && (info->accel_state->need_src_tile_x || info->accel_state->need_src_tile_y)); +- int i; ++ unsigned int repeatType; ++ Bool repeat; ++ int i, w, h; + struct radeon_exa_pixmap_priv *driver_priv; + ACCEL_PREAMBLE(); + ++ if (pPict->pDrawable) { ++ w = pPict->pDrawable->width; ++ h = pPict->pDrawable->height; ++ repeatType = pPict->repeat ? pPict->repeatType : RepeatNone; ++ } else { ++ w = h = 1; ++ repeatType = RepeatNormal; ++ } ++ ++ repeat = (repeatType == RepeatNormal || repeatType == RepeatReflect) && ++ !(unit == 0 && (info->accel_state->need_src_tile_x || info->accel_state->need_src_tile_y)); ++ + txpitch = exaGetPixmapPitch(pPix); + + txoffset = 0; +@@ -926,22 +926,6 @@ static Bool R200CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP + if (op >= sizeof(RadeonBlendOp) / sizeof(RadeonBlendOp[0])) + RADEON_FALLBACK(("Unsupported Composite op 0x%x\n", op)); + +- if (!pSrcPicture->pDrawable) +- RADEON_FALLBACK(("Solid or gradient pictures not supported yet\n")); +- +- /* r200 limit should be 2048, there are issues with 2048 +- * see bug 19269 +- */ +- +- pSrcPixmap = RADEONGetDrawablePixmap(pSrcPicture->pDrawable); +- +- if (pSrcPixmap->drawable.width > 2047 || +- pSrcPixmap->drawable.height > 2047) { +- RADEON_FALLBACK(("Source w/h too large (%d,%d).\n", +- pSrcPixmap->drawable.width, +- pSrcPixmap->drawable.height)); +- } +- + pDstPixmap = RADEONGetDrawablePixmap(pDstPicture->pDrawable); + + if (pDstPixmap->drawable.width > 2047 || +@@ -951,20 +935,35 @@ static Bool R200CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP + pDstPixmap->drawable.height)); + } + ++ if (pSrcPicture->pDrawable) { ++ /* r200 limit should be 2048, there are issues with 2048 ++ * see 197a62704742a4a19736c2637ac92d1dc5ab34ed ++ */ ++ pSrcPixmap = RADEONGetDrawablePixmap(pSrcPicture->pDrawable); ++ ++ if (pSrcPixmap->drawable.width > 2047 || ++ pSrcPixmap->drawable.height > 2047) { ++ RADEON_FALLBACK(("Source w/h too large (%d,%d).\n", ++ pSrcPixmap->drawable.width, ++ pSrcPixmap->drawable.height)); ++ } ++ } else if (pSrcPicture->pSourcePict->type != SourcePictTypeSolidFill) ++ RADEON_FALLBACK(("Gradient pictures not supported yet\n")); ++ + if (pMaskPicture) { + PixmapPtr pMaskPixmap; + +- if (!pMaskPicture->pDrawable) +- RADEON_FALLBACK(("Solid or gradient pictures not supported yet\n")); +- +- pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); ++ if (pMaskPicture->pDrawable) { ++ pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); + +- if (pMaskPixmap->drawable.width > 2047 || +- pMaskPixmap->drawable.height > 2047) { +- RADEON_FALLBACK(("Mask w/h too large (%d,%d).\n", +- pMaskPixmap->drawable.width, +- pMaskPixmap->drawable.height)); +- } ++ if (pMaskPixmap->drawable.width > 2047 || ++ pMaskPixmap->drawable.height > 2047) { ++ RADEON_FALLBACK(("Mask w/h too large (%d,%d).\n", ++ pMaskPixmap->drawable.width, ++ pMaskPixmap->drawable.height)); ++ } ++ } else if (pMaskPicture->pSourcePict->type != SourcePictTypeSolidFill) ++ RADEON_FALLBACK(("Gradient pictures not supported yet\n")); + + if (pMaskPicture->componentAlpha) { + /* Check if it's component alpha that relies on a source alpha and +@@ -997,7 +996,8 @@ static Bool FUNC_NAME(R200PrepareComposite)(int op, PicturePtr pSrcPicture, + PicturePtr pMaskPicture, PicturePtr pDstPicture, + PixmapPtr pSrc, PixmapPtr pMask, PixmapPtr pDst) + { +- RINFO_FROM_SCREEN(pDst->drawable.pScreen); ++ ScreenPtr pScreen = pDst->drawable.pScreen; ++ RINFO_FROM_SCREEN(pScreen); + uint32_t dst_format, dst_pitch; + uint32_t pp_cntl, blendcntl, cblend, ablend, colorpitch; + int pixel_shift; +@@ -1024,9 +1024,24 @@ static Bool FUNC_NAME(R200PrepareComposite)(int op, PicturePtr pSrcPicture, + if (((dst_pitch >> pixel_shift) & 0x7) != 0) + RADEON_FALLBACK(("Bad destination pitch 0x%x\n", (int)dst_pitch)); + ++ if (!pSrc) { ++ pSrc = RADEONSolidPixmap(pScreen, cpu_to_le32(pSrcPicture->pSourcePict->solidFill.color)); ++ if (!pSrc) ++ RADEON_FALLBACK("Failed to create solid scratch pixmap\n"); ++ } ++ + if (!RADEONSetupSourceTile(pSrcPicture, pSrc, FALSE, TRUE)) + return FALSE; + ++ if (pMaskPicture && !pMask) { ++ pMask = RADEONSolidPixmap(pScreen, cpu_to_le32(pMaskPicture->pSourcePict->solidFill.color)); ++ if (!pMask) { ++ if (!pSrcPicture->pDrawable) ++ pScreen->DestroyPixmap(pSrc); ++ RADEON_FALLBACK("Failed to create solid scratch pixmap\n"); ++ } ++ } ++ + RADEONPrepareCompositeCS(op, pSrcPicture, pMaskPicture, pDstPicture, + pSrc, pMask, pDst); + +-- +1.7.7.5 + diff --git a/staging/xf86-video-ati/PKGBUILD b/staging/xf86-video-ati/PKGBUILD new file mode 100644 index 000000000..4b8173027 --- /dev/null +++ b/staging/xf86-video-ati/PKGBUILD @@ -0,0 +1,61 @@ +# $Id: PKGBUILD 159723 2012-05-26 09:58:25Z andyrtr $ +# Maintainer: Jan de Groot <jgc@archlinux.org> +# Contributor: Alexander Baldeck <alexander@archlinux.org> + +pkgname=xf86-video-ati +pkgver=6.14.99 +_gitdate=20120517 +pkgrel=1.${_gitdate} # UMS/EXA: Add reminder for potential solid picture performance issue. +pkgdesc="X.org ati video driver" +arch=('i686' 'x86_64') +url="http://xorg.freedesktop.org/" +license=('custom') +depends=('libpciaccess' 'libdrm>=2.4.33' 'udev>=183' 'pixman' 'ati-dri') +makedepends=('xorg-server-devel>=1.11.99.902' 'xf86driproto' 'mesa' 'glproto') +conflicts=('xorg-server<1.11.99.902') +groups=('xorg-drivers' 'xorg') +options=('!libtool') +source=(#${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 + ${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2::http://cgit.freedesktop.org/xorg/driver/xf86-video-ati/snapshot/xf86-video-ati-3fb694b308ebadd1b849836059b6b56bb19385f7.tar.gz + git_fixes.diff + 0000-poor-man-s-solid-picture-support-for-r300-r600.patch + 0001-poor-man-s-solid-picture-support-for-evergreen.patch + 0002-poor-man-s-solid-picture-support-for-r100.patch + 0003-poor-man-s-solid-picture-support-for-r200.patch) +sha1sums=('75ad000bc00599e1797134f2d20d3094cba6af92' + '8b774e2f0310075cff2b7d874b0bed38d6245769' + '787f88c428f56ca6e96ba5eaf043a30bddfd0e23' + '69359a6623fe0f2214790c8ad40cac1a680a3825' + 'c0709ab82728e34838a8aeead7d1b79b7faf09bd' + '77a519e250c27a9fb94eeb52da655eed7c5f2eca') +sha1sums=('80c12b88e193354af204b13689b2fae922922c6c' + '8b774e2f0310075cff2b7d874b0bed38d6245769' + '787f88c428f56ca6e96ba5eaf043a30bddfd0e23' + '69359a6623fe0f2214790c8ad40cac1a680a3825' + 'c0709ab82728e34838a8aeead7d1b79b7faf09bd' + '77a519e250c27a9fb94eeb52da655eed7c5f2eca') + +build() { + #cd ${srcdir}/${pkgname}-${pkgver} + cd ${srcdir}/${pkgname}* + #patch -Np1 -i ${srcdir}/git_fixes.diff + + # fix rendering issues with recent cairo - testing attemp taken from https://bugs.freedesktop.org/show_bug.cgi?id=47266 + # and http://lists.x.org/archives/xorg-driver-ati/2012-April/022724.html +# patch -Np1 -i ${srcdir}/0000-poor-man-s-solid-picture-support-for-r300-r600.patch +# patch -Np1 -i ${srcdir}/0001-poor-man-s-solid-picture-support-for-evergreen.patch +# patch -Np1 -i ${srcdir}/0002-poor-man-s-solid-picture-support-for-r100.patch +# patch -Np1 -i ${srcdir}/0003-poor-man-s-solid-picture-support-for-r200.patch + + ./autogen.sh --prefix=/usr --enable-dri +# ./configure --prefix=/usr --enable-dri + make +} + +package() { + #cd "${srcdir}/${pkgname}-${pkgver}" + cd ${srcdir}/${pkgname}* + make "DESTDIR=${pkgdir}" install + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" +} diff --git a/staging/xf86-video-ati/git_fixes.diff b/staging/xf86-video-ati/git_fixes.diff new file mode 100644 index 000000000..0c4518319 --- /dev/null +++ b/staging/xf86-video-ati/git_fixes.diff @@ -0,0 +1,33 @@ +From d282719a9c2fb0ee32830aa75b8dfbb9392954ed Mon Sep 17 00:00:00 2001 +From: Jerome Glisse <jglisse@redhat.com> +Date: Wed, 04 Apr 2012 21:08:30 +0000 +Subject: r6xx-r9xx: force 1D tiling for buffer with height < 64 + +Due to some old kernel issue, height is 8 aligned insided the ddx +For buffer with height btw 57 & 63 this lead ddx to believe it can +allocate a 2D tiled surface while mesa will not align height and +will assume 1D tiled leading to disagreement and rendering issue. +This patch force buffer with height < 64 to be 1D tiled. + +Signed-off-by: Jerome Glisse <jglisse@redhat.com> +--- +diff --git a/src/radeon_exa.c b/src/radeon_exa.c +index 99a5806..270dad4 100644 +--- a/src/radeon_exa.c ++++ b/src/radeon_exa.c +@@ -511,6 +511,13 @@ void *RADEONEXACreatePixmap2(ScreenPtr pScreen, int width, int height, + surface.last_level = 0; + surface.bpe = cpp; + surface.nsamples = 1; ++ if (height < 64) { ++ /* disable 2d tiling for small surface to work around ++ * the fact that ddx align height to 8 pixel for old ++ * obscure reason i can't remember ++ */ ++ tiling &= ~RADEON_TILING_MACRO; ++ } + surface.flags = RADEON_SURF_SCANOUT; + surface.flags |= RADEON_SURF_SET(RADEON_SURF_TYPE_2D, TYPE); + surface.flags |= RADEON_SURF_SET(RADEON_SURF_MODE_LINEAR, MODE); +-- +cgit v0.9.0.2-2-gbebe diff --git a/staging/xf86-video-intel/PKGBUILD b/staging/xf86-video-intel/PKGBUILD new file mode 100644 index 000000000..d57f65c68 --- /dev/null +++ b/staging/xf86-video-intel/PKGBUILD @@ -0,0 +1,30 @@ +# $Id: PKGBUILD 159725 2012-05-26 10:02:38Z andyrtr $ +# Maintainer: Jan de Groot <jgc@archlinux.org> + +pkgname=xf86-video-intel +pkgver=2.19.0 +pkgrel=2 +pkgdesc="X.org Intel i810/i830/i915/945G/G965+ video drivers" +arch=(i686 x86_64) +url="http://xorg.freedesktop.org/" +license=('custom') +depends=('intel-dri' 'libxvmc' 'libpciaccess' 'libdrm' 'xcb-util>=0.3.8' 'libxfixes' 'udev>=183') +makedepends=('xorg-server-devel>=1.12.0' 'libx11' 'libdrm' 'xf86driproto' 'glproto' 'mesa' 'libxvmc' 'libxrender') +conflicts=('xorg-server<1.12.0' 'xf86-video-i810' 'xf86-video-intel-legacy') +options=('!libtool') +groups=('xorg-drivers' 'xorg') +source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +sha1sums=('131934cf5e90bd48c883804cc644c4cb8b1de100') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --enable-dri + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make DESTDIR="${pkgdir}" install + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" +} diff --git a/staging/xf86-video-nouveau/PKGBUILD b/staging/xf86-video-nouveau/PKGBUILD new file mode 100644 index 000000000..6e5c8d562 --- /dev/null +++ b/staging/xf86-video-nouveau/PKGBUILD @@ -0,0 +1,41 @@ +# $Id: PKGBUILD 159753 2012-05-26 15:02:22Z ibiru $ +# Maintainer: Andreas Radke <andyrtr@archlinux.org> +# Contributor: buddabrod <buddabrod@gmail.com> + +pkgname=xf86-video-nouveau +_gitdate=20120512 +pkgver=0.0.16_git${_gitdate} # see configure.ac +pkgrel=2 +pkgdesc="Open Source 2D acceleration driver for nVidia cards (experimental)" +arch=('i686' 'x86_64') +url="http://nouveau.freedesktop.org/wiki/" +license=('GPL') #and MIT, not yet a license file, see http://nouveau.freedesktop.org/wiki/FAQ#head-09f75d03eb30011c754038a3893119a70745de4e +depends=('libdrm-nouveau' 'udev') +optdepends=('nouveau-dri: experimental gallium3d features') +makedepends=('xorg-server-devel' 'libdrm-new' 'xf86driproto') +conflicts=('xorg-server<1.11.99.902') +options=('!libtool') +install=$pkgname.install +source=(ftp://ftp.archlinux.org/other/$pkgname/xf86-video-nouveau-${_gitdate}.tar.bz2) +md5sums=('3e27e283219936d64c194eca24cd81cd') + +# source PKGBUILD && mksource +mksource() { + mkdir /tmp/$pkgname-${_gitdate} + pushd /tmp/$pkgname-${_gitdate} + git clone -v --depth 1 git://anongit.freedesktop.org/nouveau/xf86-video-nouveau + cd xf86-video-nouveau + git archive --prefix=xf86-video-nouveau-${_gitdate}/ --format=tar HEAD | bzip2 > /tmp/$pkgname-${_gitdate}/$pkgname-${_gitdate}.tar.bz2 + popd +} + +build() { + cd $srcdir/xf86-video-nouveau-${_gitdate} + ./autogen.sh --prefix=/usr + make +} + +package() { + cd $srcdir/xf86-video-nouveau-${_gitdate} + make DESTDIR=$pkgdir install +} diff --git a/staging/xf86-video-nouveau/xf86-video-nouveau.install b/staging/xf86-video-nouveau/xf86-video-nouveau.install new file mode 100644 index 000000000..027154ff3 --- /dev/null +++ b/staging/xf86-video-nouveau/xf86-video-nouveau.install @@ -0,0 +1,16 @@ +post_install () { + cat << _EOF + ==> make sure you use KernelModeSetting (KMS) + ==> see http://wiki.archlinux.org/index.php/Nouveau#KMS for more +_EOF +} + +post_upgrade() { + if [ "`vercmp $2 0.0.15_git20100117-1`" -lt 0 ]; then + cat << _EOF + ==> ATTENTION: Usermode support has been dropped + ==> make sure you use KernelModeSetting (KMS) + ==> see http://wiki.archlinux.org/index.php/Nouveau#KMS for more +_EOF + fi +} diff --git a/staging/xfconf/PKGBUILD b/staging/xfconf/PKGBUILD new file mode 100644 index 000000000..757bcc41d --- /dev/null +++ b/staging/xfconf/PKGBUILD @@ -0,0 +1,49 @@ +# $Id: PKGBUILD 159773 2012-05-26 18:14:15Z foutrelis $ +# Maintainer: Evangelos Foutras <evangelos@foutrelis.com> +# Contributor: tobias <tobias funnychar archlinux.org> + +pkgname=xfconf +pkgver=4.10.0 +pkgrel=2 +pkgdesc="A simple client-server configuration storage and query system" +arch=('i686' 'x86_64') +url="http://www.xfce.org/" +license=('GPL2') +groups=('xfce4') +# http://www.xfce.org/documentation/requirements +# keep dbus, see also http://bugs.archlinux.org/task/14536 +depends=('libxfce4util' 'dbus-glib' 'dbus') +makedepends=('pkgconfig' 'perl-extutils-depends' 'perl-extutils-pkgconfig' + 'glib-perl' 'intltool' 'gtk-doc' 'chrpath') +options=('!libtool' '!emptydirs') +source=(http://archive.xfce.org/src/xfce/$pkgname/4.10/$pkgname-$pkgver.tar.bz2) +sha256sums=('175219a441cc7d0f210bbd1a3b0abba41598627cd9db27235811400c3e100576') + +build() { + cd "$srcdir/$pkgname-$pkgver" + + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --libexecdir=/usr/lib/xfce4 \ + --localstatedir=/var \ + --disable-static \ + --enable-gtk-doc \ + --with-perl-options=INSTALLDIRS="vendor" \ + --disable-debug + make +} + +package() { + cd "$srcdir/$pkgname-$pkgver" + + make DESTDIR="$pkgdir" install + + # remove unneeded dynloader bootstrap file + rm "$pkgdir/usr/lib/perl5/vendor_perl/auto/Xfce4/Xfconf/Xfconf.bs" + + # fix insecure rpath, http://bugs.archlinux.org/task/19980 + chrpath -d "$pkgdir/usr/lib/perl5/vendor_perl/auto/Xfce4/Xfconf/Xfconf.so" +} + +# vim:set ts=2 sw=2 et: diff --git a/staging/xorg-server/10-quirks.conf b/staging/xorg-server/10-quirks.conf new file mode 100644 index 000000000..7afad22dc --- /dev/null +++ b/staging/xorg-server/10-quirks.conf @@ -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 diff --git a/staging/xorg-server/EXA_Fall_back_earlier_and_more_thoroughly_from_exaGlyphsV2.diff b/staging/xorg-server/EXA_Fall_back_earlier_and_more_thoroughly_from_exaGlyphsV2.diff new file mode 100644 index 000000000..12c110151 --- /dev/null +++ b/staging/xorg-server/EXA_Fall_back_earlier_and_more_thoroughly_from_exaGlyphsV2.diff @@ -0,0 +1,116 @@ +--- xorg-server-1.12.1/exa/exa_glyphs.c 2012-03-30 04:57:25.000000000 +0200 ++++ xorg-server-1.12.1/exa_glyphs.c.new 2012-04-15 11:48:51.683214230 +0200 +@@ -686,6 +686,7 @@ + PixmapPtr pMaskPixmap = 0; + PicturePtr pMask = NULL; + ScreenPtr pScreen = pDst->pDrawable->pScreen; ++ ExaScreenPriv(pScreen); + int width = 0, height = 0; + int x, y; + int first_xOff = list->xOff, first_yOff = list->yOff; +@@ -697,7 +698,6 @@ + ExaGlyphBuffer buffer; + + if (maskFormat) { +- ExaScreenPriv(pScreen); + GCPtr pGC; + xRectangle rect; + +@@ -719,22 +719,20 @@ + maskFormat->depth, + CREATE_PIXMAP_USAGE_SCRATCH); + if (!pMaskPixmap) +- return; ++ goto fallback; + component_alpha = NeedsComponent(maskFormat->format); + pMask = CreatePicture(0, &pMaskPixmap->drawable, + maskFormat, CPComponentAlpha, &component_alpha, + serverClient, &error); +- if (!pMask || +- (!component_alpha && pExaScr->info->CheckComposite && +- !(*pExaScr->info->CheckComposite) (PictOpAdd, pSrc, NULL, pMask))) ++ (*pScreen->DestroyPixmap) (pMaskPixmap); ++ if (!pMask) ++ goto fallback; ++ ++ if (!component_alpha && pExaScr->info->CheckComposite && ++ !(*pExaScr->info->CheckComposite) (PictOpAdd, pSrc, NULL, pMask)) + { + PictFormatPtr argbFormat; + +- (*pScreen->DestroyPixmap) (pMaskPixmap); +- +- if (!pMask) +- return; +- + /* The driver can't seem to composite to a8, let's try argb (but + * without component-alpha) */ + FreePicture((pointer) pMask, (XID) 0); +@@ -748,15 +746,25 @@ + maskFormat->depth, + CREATE_PIXMAP_USAGE_SCRATCH); + if (!pMaskPixmap) +- return; ++ goto fallback; + + pMask = CreatePicture(0, &pMaskPixmap->drawable, maskFormat, 0, 0, + serverClient, &error); +- if (!pMask) { +- (*pScreen->DestroyPixmap) (pMaskPixmap); +- return; +- } ++ (*pScreen->DestroyPixmap) (pMaskPixmap); ++ if (!pMask) ++ goto fallback; + } ++ ++ if (pExaScr->info->CheckComposite && ++ (!(*pExaScr->info->CheckComposite) (PictOpAdd, pSrc, NULL, pMask) || ++ (!(*pExaScr->info->CheckComposite) (op, pSrc, pMask, pDst) && ++ (op != PictOpOver || ++ !(*pExaScr->info->CheckComposite) (PictOpOutReverse, pSrc, pMask, pDst) || ++ !(*pExaScr->info->CheckComposite) (PictOpOver, pSrc, pMask, pDst))))) { ++ FreePicture ((pointer) pMask, (XID) 0); ++ goto fallback; ++ } ++ + pGC = GetScratchGC(pMaskPixmap->drawable.depth, pScreen); + ValidateGC(&pMaskPixmap->drawable, pGC); + rect.x = 0; +@@ -769,6 +777,13 @@ + y = -extents.y1; + } + else { ++ if (pExaScr->info->CheckComposite && ++ !(*pExaScr->info->CheckComposite) (op, pSrc, NULL, pDst) && ++ (op != PictOpOver || ++ !(*pExaScr->info->CheckComposite) (PictOpOutReverse, pSrc, NULL, pDst) || ++ !(*pExaScr->info->CheckComposite) (PictOpOver, pSrc, NULL, pDst))) ++ goto fallback; ++ + x = 0; + y = 0; + } +@@ -834,6 +849,10 @@ + xSrc + x - first_xOff, + ySrc + y - first_yOff, 0, 0, x, y, width, height); + FreePicture((pointer) pMask, (XID) 0); +- (*pScreen->DestroyPixmap) (pMaskPixmap); + } ++ ++ return; ++ ++fallback: ++ ExaCheckGlyphs(op, pSrc, pDst, maskFormat, xSrc, ySrc, nlist, list, glyphs); + } +--- xorg-server-1.12.1/exa/exa_render.c 2012-03-30 04:57:25.000000000 +0200 ++++ xorg-server-1.12.1/exa_render.c.new 2012-04-15 11:50:35.272482047 +0200 +@@ -878,7 +878,7 @@ + Bool saveMaskRepeat = pMask ? pMask->repeat : 0; + RegionRec region; + +- if (pExaScr->swappedOut) ++ if (pExaScr->fallback_counter || pExaScr->swappedOut) + goto fallback; + + /* Remove repeat in source if useless */ diff --git a/staging/xorg-server/PKGBUILD b/staging/xorg-server/PKGBUILD new file mode 100644 index 000000000..78b533fe1 --- /dev/null +++ b/staging/xorg-server/PKGBUILD @@ -0,0 +1,200 @@ +# $Id: PKGBUILD 159720 2012-05-26 09:47:01Z andyrtr $ +# 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.12.1.902 +pkgrel=2 +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' 'udev>=183' 'libgcrypt') +options=('!libtool') +source=(${url}/releases/individual/xserver/${pkgbase}-${pkgver}.tar.bz2 + autoconfig-nvidia.patch + autoconfig-sis.patch + #EXA_Fall_back_earlier_and_more_thoroughly_from_exaGlyphsV2.diff + #git-fixes.patch + xvfb-run + xvfb-run.1 + 10-quirks.conf) +sha256sums=('052efb01c47348b4138c89ad5654be022a4d952acc6129b2ad2659bc1ff4d509' + '66e25f76a7496c429e0aff4b0670f168719bb0ceaeb88c6f2272f2bf3ed21162' + 'd027776fac1f7675b0a9ee817502290b1c45f9c09b0f0a6bb058c35f92361e84' + 'ff0156309470fc1d378fd2e104338020a884295e285972cc88e250e031cc35b9' + '2460adccd3362fefd4cdc5f1c70f332d7b578091fb9167bf88b5f91265bbd776' + '94612f5c0d34a3b7152915c2e285c7b462e9d8e38d3539bd551a339498eac166') + +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" + + # fix glitches and crashes with EXA and cairo 1.12 + # taken from https://bugs.freedesktop.org/show_bug.cgi?id=47266 + # and reworked for 1.12.1 changes +# patch -Np1 -i ${srcdir}/EXA_Fall_back_earlier_and_more_thoroughly_from_exaGlyphsV2.diff + + # Add post-release patches from 1.12 branch +# patch -Np1 -i ${srcdir}/git-fixes.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 udev 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') + provides=('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 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 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 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 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=(xproto randrproto renderproto xextproto inputproto kbproto fontsproto videoproto dri2proto xineramaproto xorg-util-macros pixman libpciaccess) + + 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" +} diff --git a/staging/xorg-server/autoconfig-nvidia.patch b/staging/xorg-server/autoconfig-nvidia.patch new file mode 100644 index 000000000..6d5220ac7 --- /dev/null +++ b/staging/xorg-server/autoconfig-nvidia.patch @@ -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; diff --git a/staging/xorg-server/autoconfig-sis.patch b/staging/xorg-server/autoconfig-sis.patch new file mode 100644 index 000000000..0b50049db --- /dev/null +++ b/staging/xorg-server/autoconfig-sis.patch @@ -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; diff --git a/staging/xorg-server/git-fixes.patch b/staging/xorg-server/git-fixes.patch new file mode 100644 index 000000000..f6ca2426b --- /dev/null +++ b/staging/xorg-server/git-fixes.patch @@ -0,0 +1,1717 @@ +From b5bf0ac5405eab77f26bb2f8726644232af17178 Mon Sep 17 00:00:00 2001 +From: Keith Packard <keithp@keithp.com> +Date: Wed, 11 Apr 2012 16:28:21 +0000 +Subject: hw/xfree86: Spurious ');' in xf86vmode.c messed up indentation badly + +Inside the unfinished XF86VIDMODE_EVENTS #ifdef block the +function definition for xf86VidModeNotifyEvent had an extra ');' +before the prototype argument declarations. This was harmless for the +compiler as the code never gets used, but completely messed up the +file re-indentation. This patch removes the spurious characters in +preparation for re-indenting the file. + +Signed-off-by: Keith Packard <keithp@keithp.com> +(cherry picked from commit 592bd0ae2b60cd6f6afd3efc40f5f659b12900b4) +--- +diff --git a/hw/xfree86/dixmods/extmod/xf86vmode.c b/hw/xfree86/dixmods/extmod/xf86vmode.c +index 6e2a8e9..9f64f8e 100644 +--- a/hw/xfree86/dixmods/extmod/xf86vmode.c ++++ b/hw/xfree86/dixmods/extmod/xf86vmode.c +@@ -75,7 +75,7 @@ static unsigned char XF86VidModeReqCode = 0; + #ifdef XF86VIDMODE_EVENTS + static int XF86VidModeEventBase = 0; + +-static void SXF86VidModeNotifyEvent(); ++static void SXF86VidModeNotifyEvent( + xXF86VidModeNotifyEvent * /* from */ , xXF86VidModeNotifyEvent * /* to */ + ); + +-- +cgit v0.9.0.2-2-gbebe +From 3ad72a80088fe3236f38bd0696b04f399e24fe3d Mon Sep 17 00:00:00 2001 +From: Keith Packard <keithp@keithp.com> +Date: Wed, 11 Apr 2012 16:33:54 +0000 +Subject: hw/xfree86: Re-indent xf86vmode.c + +This is the result of re-running the 'x-indent.sh' script over +xf86vmode.c to clean up the disaster caused by broken syntax in the +file. + +Signed-off-by: Keith Packard <keithp@keithp.com> +(cherry picked from commit 9779b904c7c0b49c74054c22c420012c40595cdc) +--- +diff --git a/hw/xfree86/dixmods/extmod/xf86vmode.c b/hw/xfree86/dixmods/extmod/xf86vmode.c +index 9f64f8e..68c4b58 100644 +--- a/hw/xfree86/dixmods/extmod/xf86vmode.c ++++ b/hw/xfree86/dixmods/extmod/xf86vmode.c +@@ -75,8 +75,7 @@ static unsigned char XF86VidModeReqCode = 0; + #ifdef XF86VIDMODE_EVENTS + static int XF86VidModeEventBase = 0; + +-static void SXF86VidModeNotifyEvent( +-xXF86VidModeNotifyEvent * /* from */ , xXF86VidModeNotifyEvent * /* to */ ++static void SXF86VidModeNotifyEvent(xXF86VidModeNotifyEvent * /* from */ , xXF86VidModeNotifyEvent * /* to */ + ); + + static RESTYPE EventType; /* resource type for event masks */ +@@ -117,20 +116,22 @@ static DevPrivateKeyRec ScreenPrivateKeyRec; + #define DEBUG_P(x) /**/ + #endif + static int +- ClientMajorVersion(ClientPtr client) { ++ClientMajorVersion(ClientPtr client) ++{ + VidModePrivPtr pPriv; + +- pPriv = VM_GETPRIV(client); ++ pPriv = VM_GETPRIV(client); + if (!pPriv) +- return 0; ++ return 0; + else +- return pPriv->major; ++ return pPriv->major; + } ++ + #ifdef XF86VIDMODE_EVENTS + static void +- CheckScreenPrivate(pScreen) ++CheckScreenPrivate(pScreen) + ScreenPtr +- pScreen; ++ pScreen; + { + SetupScreen(pScreen); + +@@ -142,9 +143,10 @@ ScreenPtr + } + } + +-static XF86VidModeScreenPrivatePtr MakeScreenPrivate(pScreen) ++static XF86VidModeScreenPrivatePtr ++MakeScreenPrivate(pScreen) + ScreenPtr +- pScreen; ++ pScreen; + { + SetupScreen(pScreen); + +@@ -160,18 +162,22 @@ ScreenPtr + } + + static unsigned long +- getEventMask(ScreenPtr pScreen, ClientPtr client) { ++getEventMask(ScreenPtr pScreen, ClientPtr client) ++{ + SetupScreen(pScreen); + XF86VidModeEventPtr pEv; + + if (!pPriv) +- return 0; ++ return 0; + for (pEv = pPriv->events; pEv; pEv = pEv->next) + if (pEv->client == client) + return pEv->mask; +- return 0; +-} static Bool +- setEventMask(ScreenPtr pScreen, ClientPtr client, unsigned long mask) { ++ return 0; ++} ++ ++static Bool ++setEventMask(ScreenPtr pScreen, ClientPtr client, unsigned long mask) ++{ + SetupScreen(pScreen); + XF86VidModeEventPtr pEv, *pPrev; + +@@ -181,7 +187,8 @@ static unsigned long + pPriv = MakeScreenPrivate(pScreen); + if (!pPriv) + return FALSE; +- } for (pPrev = &pPriv->events; pEv = *pPrev; pPrev = &pEv->next) ++ } ++ for (pPrev = &pPriv->events; pEv = *pPrev; pPrev = &pEv->next) + if (pEv->client == client) + break; + if (mask == 0) { +@@ -208,38 +215,43 @@ static unsigned long + } + + static int +- XF86VidModeFreeEvents(pointer value, XID id) { ++XF86VidModeFreeEvents(pointer value, XID id) ++{ + XF86VidModeEventPtr pOld = (XF86VidModeEventPtr) value; + ScreenPtr pScreen = pOld->screen; +- SetupScreen(pScreen); ++ ++ SetupScreen(pScreen); + XF86VidModeEventPtr pEv, *pPrev; + + if (!pPriv) +- return TRUE; ++ return TRUE; + for (pPrev = &pPriv->events; pEv = *pPrev; pPrev = &pEv->next) + if (pEv == pOld) + break; + if (!pEv) +- return TRUE; ++ return TRUE; + *pPrev = pEv->next; +- free(pEv); +- CheckScreenPrivate(pScreen); +- return TRUE; +-} static void +- SendXF86VidModeNotify(ScreenPtr pScreen, int state, Bool forced) { ++ free(pEv); ++ CheckScreenPrivate(pScreen); ++ return TRUE; ++} ++ ++static void ++SendXF86VidModeNotify(ScreenPtr pScreen, int state, Bool forced) ++{ + XF86VidModeScreenPrivatePtr pPriv; + XF86VidModeEventPtr pEv; + unsigned long mask; + xXF86VidModeNotifyEvent ev; + int kind; + +- UpdateCurrentTimeIf(); +- mask = XF86VidModeNotifyMask; +- pScreen = screenInfo.screens[pScreen->myNum]; +- pPriv = GetScreenPrivate(pScreen); ++ UpdateCurrentTimeIf(); ++ mask = XF86VidModeNotifyMask; ++ pScreen = screenInfo.screens[pScreen->myNum]; ++ pPriv = GetScreenPrivate(pScreen); + if (!pPriv) +- return; +- kind = XF86VidModeModeChange; ++ return; ++ kind = XF86VidModeModeChange; + for (pEv = pPriv->events; pEv; pEv = pEv->next) { + if (!(pEv->mask & mask)) + continue; +@@ -251,8 +263,10 @@ static int + ev.forced = forced; + WriteEventsToClient(pEv->client, 1, (xEvent *) &ev); + }} static void +- SXF86VidModeNotifyEvent(xXF86VidModeNotifyEvent * from, +- xXF86VidModeNotifyEvent * to) { ++ ++SXF86VidModeNotifyEvent(xXF86VidModeNotifyEvent * from, ++ xXF86VidModeNotifyEvent * to) ++{ + to->type = from->type; + to->state = from->state; + cpswaps(from->sequenceNumber, to->sequenceNumber); +@@ -264,29 +278,31 @@ static int + #endif + + static int +- ProcXF86VidModeQueryVersion(ClientPtr client) { ++ProcXF86VidModeQueryVersion(ClientPtr client) ++{ + xXF86VidModeQueryVersionReply rep; + +- DEBUG_P("XF86VidModeQueryVersion"); ++ DEBUG_P("XF86VidModeQueryVersion"); + +- REQUEST_SIZE_MATCH(xXF86VidModeQueryVersionReq); +- rep.type = X_Reply; +- rep.length = 0; +- rep.sequenceNumber = client->sequence; +- rep.majorVersion = SERVER_XF86VIDMODE_MAJOR_VERSION; +- rep.minorVersion = SERVER_XF86VIDMODE_MINOR_VERSION; ++ REQUEST_SIZE_MATCH(xXF86VidModeQueryVersionReq); ++ rep.type = X_Reply; ++ rep.length = 0; ++ rep.sequenceNumber = client->sequence; ++ rep.majorVersion = SERVER_XF86VIDMODE_MAJOR_VERSION; ++ rep.minorVersion = SERVER_XF86VIDMODE_MINOR_VERSION; + if (client->swapped) { + swaps(&rep.sequenceNumber); + swapl(&rep.length); + swaps(&rep.majorVersion); + swaps(&rep.minorVersion); +- } WriteToClient(client, sizeof(xXF86VidModeQueryVersionReply), +- (char *) &rep); ++ } ++ WriteToClient(client, sizeof(xXF86VidModeQueryVersionReply), (char *) &rep); + return Success; + } + + static int +- ProcXF86VidModeGetModeLine(ClientPtr client) { ++ProcXF86VidModeGetModeLine(ClientPtr client) ++{ + REQUEST(xXF86VidModeGetModeLineReq); + xXF86VidModeGetModeLineReply rep; + xXF86OldVidModeGetModeLineReply oldrep; +@@ -294,11 +310,11 @@ static int + int dotClock; + int ver; + +- DEBUG_P("XF86VidModeGetModeline"); ++ DEBUG_P("XF86VidModeGetModeline"); + +- ver = ClientMajorVersion(client); +- REQUEST_SIZE_MATCH(xXF86VidModeGetModeLineReq); +- rep.type = X_Reply; ++ ver = ClientMajorVersion(client); ++ REQUEST_SIZE_MATCH(xXF86VidModeGetModeLineReq); ++ rep.type = X_Reply; + if (ver < 2) { + rep.length = bytes_to_int32(SIZEOF(xXF86OldVidModeGetModeLineReply) - + SIZEOF(xGenericReply)); +@@ -386,7 +402,8 @@ static int + } + + static int +- ProcXF86VidModeGetAllModeLines(ClientPtr client) { ++ProcXF86VidModeGetAllModeLines(ClientPtr client) ++{ + REQUEST(xXF86VidModeGetAllModeLinesReq); + xXF86VidModeGetAllModeLinesReply rep; + xXF86VidModeModeInfo mdinf; +@@ -395,38 +412,39 @@ static int + int modecount, dotClock; + int ver; + +- DEBUG_P("XF86VidModeGetAllModelines"); ++ DEBUG_P("XF86VidModeGetAllModelines"); + +- REQUEST_SIZE_MATCH(xXF86VidModeGetAllModeLinesReq); ++ REQUEST_SIZE_MATCH(xXF86VidModeGetAllModeLinesReq); + + if (stuff->screen >= screenInfo.numScreens) +- return BadValue; ++ return BadValue; + +- ver = ClientMajorVersion(client); ++ ver = ClientMajorVersion(client); + +- modecount = VidModeGetNumOfModes(stuff->screen); ++ modecount = VidModeGetNumOfModes(stuff->screen); + if (modecount < 1) +- return VidModeErrorBase + XF86VidModeExtensionDisabled; ++ return VidModeErrorBase + XF86VidModeExtensionDisabled; + + if (!VidModeGetFirstModeline(stuff->screen, &mode, &dotClock)) +- return BadValue; ++ return BadValue; + +- rep.type = X_Reply; +- rep.length = SIZEOF(xXF86VidModeGetAllModeLinesReply) - ++ rep.type = X_Reply; ++ rep.length = SIZEOF(xXF86VidModeGetAllModeLinesReply) - + SIZEOF(xGenericReply); + if (ver < 2) +- rep.length += modecount * sizeof(xXF86OldVidModeModeInfo); ++ rep.length += modecount * sizeof(xXF86OldVidModeModeInfo); + else +- rep.length += modecount * sizeof(xXF86VidModeModeInfo); +- rep.length >>= 2; +- rep.sequenceNumber = client->sequence; +- rep.modecount = modecount; ++ rep.length += modecount * sizeof(xXF86VidModeModeInfo); ++ rep.length >>= 2; ++ rep.sequenceNumber = client->sequence; ++ rep.modecount = modecount; + if (client->swapped) { + swaps(&rep.sequenceNumber); + swapl(&rep.length); + swapl(&rep.modecount); +- } WriteToClient(client, sizeof(xXF86VidModeGetAllModeLinesReply), +- (char *) &rep); ++ } ++ WriteToClient(client, sizeof(xXF86VidModeGetAllModeLinesReply), ++ (char *) &rep); + + do { + mdinf.dotclock = dotClock; +@@ -492,7 +510,8 @@ static int + && VidModeGetModeValue(mode, VIDMODE_FLAGS) == stuff->flags ) + + static int +- ProcXF86VidModeAddModeLine(ClientPtr client) { ++ProcXF86VidModeAddModeLine(ClientPtr client) ++{ + REQUEST(xXF86VidModeAddModeLineReq); + xXF86OldVidModeAddModeLineReq *oldstuff = + (xXF86OldVidModeAddModeLineReq *) client->requestBuffer; +@@ -502,9 +521,9 @@ static int + int dotClock; + int ver; + +- DEBUG_P("XF86VidModeAddModeline"); ++ DEBUG_P("XF86VidModeAddModeline"); + +- ver = ClientMajorVersion(client); ++ ver = ClientMajorVersion(client); + if (ver < 2) { + /* convert from old format */ + stuff = &newstuff; +@@ -533,7 +552,8 @@ static int + stuff->after_vsyncend = oldstuff->after_vsyncend; + stuff->after_vtotal = oldstuff->after_vtotal; + stuff->after_flags = oldstuff->after_flags; +- } if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) { ++ } ++ if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) { + ErrorF("AddModeLine - scrn: %d clock: %ld\n", + (int) stuff->screen, (unsigned long) stuff->dotclock); + ErrorF("AddModeLine - hdsp: %d hbeg: %d hend: %d httl: %d\n", +@@ -654,7 +674,8 @@ static int + } + + static int +- ProcXF86VidModeDeleteModeLine(ClientPtr client) { ++ProcXF86VidModeDeleteModeLine(ClientPtr client) ++{ + REQUEST(xXF86VidModeDeleteModeLineReq); + xXF86OldVidModeDeleteModeLineReq *oldstuff = + (xXF86OldVidModeDeleteModeLineReq *) client->requestBuffer; +@@ -663,9 +684,9 @@ static int + int len, dotClock; + int ver; + +- DEBUG_P("XF86VidModeDeleteModeline"); ++ DEBUG_P("XF86VidModeDeleteModeline"); + +- ver = ClientMajorVersion(client); ++ ver = ClientMajorVersion(client); + if (ver < 2) { + /* convert from old format */ + stuff = &newstuff; +@@ -683,7 +704,8 @@ static int + stuff->vtotal = oldstuff->vtotal; + stuff->flags = oldstuff->flags; + stuff->privsize = oldstuff->privsize; +- } if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) { ++ } ++ if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) { + ErrorF("DeleteModeLine - scrn: %d clock: %ld\n", + (int) stuff->screen, (unsigned long) stuff->dotclock); + ErrorF(" hdsp: %d hbeg: %d hend: %d httl: %d\n", +@@ -777,7 +799,8 @@ static int + } + + static int +- ProcXF86VidModeModModeLine(ClientPtr client) { ++ProcXF86VidModeModModeLine(ClientPtr client) ++{ + REQUEST(xXF86VidModeModModeLineReq); + xXF86OldVidModeModModeLineReq *oldstuff = + (xXF86OldVidModeModModeLineReq *) client->requestBuffer; +@@ -786,9 +809,9 @@ static int + int len, dotClock; + int ver; + +- DEBUG_P("XF86VidModeModModeline"); ++ DEBUG_P("XF86VidModeModModeline"); + +- ver = ClientMajorVersion(client); ++ ver = ClientMajorVersion(client); + if (ver < 2) { + /* convert from old format */ + stuff = &newstuff; +@@ -805,7 +828,8 @@ static int + stuff->vtotal = oldstuff->vtotal; + stuff->flags = oldstuff->flags; + stuff->privsize = oldstuff->privsize; +- } if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) { ++ } ++ if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) { + ErrorF("ModModeLine - scrn: %d hdsp: %d hbeg: %d hend: %d httl: %d\n", + (int) stuff->screen, stuff->hdisplay, stuff->hsyncstart, + stuff->hsyncend, stuff->htotal); +@@ -903,7 +927,8 @@ static int + } + + static int +- ProcXF86VidModeValidateModeLine(ClientPtr client) { ++ProcXF86VidModeValidateModeLine(ClientPtr client) ++{ + REQUEST(xXF86VidModeValidateModeLineReq); + xXF86OldVidModeValidateModeLineReq *oldstuff = + (xXF86OldVidModeValidateModeLineReq *) client->requestBuffer; +@@ -913,9 +938,9 @@ static int + int len, status, dotClock; + int ver; + +- DEBUG_P("XF86VidModeValidateModeline"); ++ DEBUG_P("XF86VidModeValidateModeline"); + +- ver = ClientMajorVersion(client); ++ ver = ClientMajorVersion(client); + if (ver < 2) { + /* convert from old format */ + stuff = &newstuff; +@@ -933,7 +958,8 @@ static int + stuff->vtotal = oldstuff->vtotal; + stuff->flags = oldstuff->flags; + stuff->privsize = oldstuff->privsize; +- } if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) { ++ } ++ if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) { + ErrorF("ValidateModeLine - scrn: %d clock: %ld\n", + (int) stuff->screen, (unsigned long) stuff->dotclock); + ErrorF(" hdsp: %d hbeg: %d hend: %d httl: %d\n", +@@ -1022,7 +1048,8 @@ static int + } + + static int +- ProcXF86VidModeSwitchMode(ClientPtr client) { ++ProcXF86VidModeSwitchMode(ClientPtr client) ++{ + REQUEST(xXF86VidModeSwitchModeReq); + + DEBUG_P("XF86VidModeSwitchMode"); +@@ -1035,8 +1062,11 @@ static int + VidModeZoomViewport(stuff->screen, (short) stuff->zoom); + + return Success; +-} static int +- ProcXF86VidModeSwitchToMode(ClientPtr client) { ++} ++ ++static int ++ProcXF86VidModeSwitchToMode(ClientPtr client) ++{ + REQUEST(xXF86VidModeSwitchToModeReq); + xXF86OldVidModeSwitchToModeReq *oldstuff = + (xXF86OldVidModeSwitchToModeReq *) client->requestBuffer; +@@ -1045,9 +1075,9 @@ static int + int len, dotClock; + int ver; + +- DEBUG_P("XF86VidModeSwitchToMode"); ++ DEBUG_P("XF86VidModeSwitchToMode"); + +- ver = ClientMajorVersion(client); ++ ver = ClientMajorVersion(client); + if (ver < 2) { + /* convert from old format */ + stuff = &newstuff; +@@ -1065,7 +1095,8 @@ static int + stuff->vtotal = oldstuff->vtotal; + stuff->flags = oldstuff->flags; + stuff->privsize = oldstuff->privsize; +- } if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) { ++ } ++ if (xf86GetVerbosity() > DEFAULT_XF86VIDMODE_VERBOSITY) { + ErrorF("SwitchToMode - scrn: %d clock: %ld\n", + (int) stuff->screen, (unsigned long) stuff->dotclock); + ErrorF(" hdsp: %d hbeg: %d hend: %d httl: %d\n", +@@ -1138,7 +1169,8 @@ static int + } + + static int +- ProcXF86VidModeLockModeSwitch(ClientPtr client) { ++ProcXF86VidModeLockModeSwitch(ClientPtr client) ++{ + REQUEST(xXF86VidModeLockModeSwitchReq); + + REQUEST_SIZE_MATCH(xXF86VidModeLockModeSwitchReq); +@@ -1152,53 +1184,57 @@ static int + return VidModeErrorBase + XF86VidModeZoomLocked; + + return Success; +-} static int +- ProcXF86VidModeGetMonitor(ClientPtr client) { ++} ++ ++static int ++ProcXF86VidModeGetMonitor(ClientPtr client) ++{ + REQUEST(xXF86VidModeGetMonitorReq); + xXF86VidModeGetMonitorReply rep; + CARD32 *hsyncdata, *vsyncdata; + int i, nHsync, nVrefresh; + pointer monitor; + +- DEBUG_P("XF86VidModeGetMonitor"); ++ DEBUG_P("XF86VidModeGetMonitor"); + +- REQUEST_SIZE_MATCH(xXF86VidModeGetMonitorReq); ++ REQUEST_SIZE_MATCH(xXF86VidModeGetMonitorReq); + + if (stuff->screen >= screenInfo.numScreens) +- return BadValue; ++ return BadValue; + + if (!VidModeGetMonitor(stuff->screen, &monitor)) +- return BadValue; ++ return BadValue; + +- nHsync = VidModeGetMonitorValue(monitor, VIDMODE_MON_NHSYNC, 0).i; +- nVrefresh = VidModeGetMonitorValue(monitor, VIDMODE_MON_NVREFRESH, 0).i; ++ nHsync = VidModeGetMonitorValue(monitor, VIDMODE_MON_NHSYNC, 0).i; ++ nVrefresh = VidModeGetMonitorValue(monitor, VIDMODE_MON_NVREFRESH, 0).i; + +- rep.type = X_Reply; ++ rep.type = X_Reply; + if ((char *) (VidModeGetMonitorValue(monitor, VIDMODE_MON_VENDOR, 0)).ptr) +- rep.vendorLength = strlen((char *) (VidModeGetMonitorValue(monitor, +- VIDMODE_MON_VENDOR, +- 0)).ptr); ++ rep.vendorLength = strlen((char *) (VidModeGetMonitorValue(monitor, ++ VIDMODE_MON_VENDOR, ++ 0)).ptr); + else +- rep.vendorLength = 0; ++ rep.vendorLength = 0; + if ((char *) (VidModeGetMonitorValue(monitor, VIDMODE_MON_MODEL, 0)).ptr) +- rep.modelLength = strlen((char *) (VidModeGetMonitorValue(monitor, +- VIDMODE_MON_MODEL, +- 0)).ptr); ++ rep.modelLength = strlen((char *) (VidModeGetMonitorValue(monitor, ++ VIDMODE_MON_MODEL, ++ 0)).ptr); + else +- rep.modelLength = 0; +- rep.length = ++ rep.modelLength = 0; ++ rep.length = + bytes_to_int32(SIZEOF(xXF86VidModeGetMonitorReply) - + SIZEOF(xGenericReply) + (nHsync + + nVrefresh) * sizeof(CARD32) + + pad_to_int32(rep.vendorLength) + + pad_to_int32(rep.modelLength)); +- rep.sequenceNumber = client->sequence; +- rep.nhsync = nHsync; +- rep.nvsync = nVrefresh; +- hsyncdata = malloc(nHsync * sizeof(CARD32)); ++ rep.sequenceNumber = client->sequence; ++ rep.nhsync = nHsync; ++ rep.nvsync = nVrefresh; ++ hsyncdata = malloc(nHsync * sizeof(CARD32)); + if (!hsyncdata) { + return BadAlloc; +- } vsyncdata = malloc(nVrefresh * sizeof(CARD32)); ++ } ++ vsyncdata = malloc(nVrefresh * sizeof(CARD32)); + + if (!vsyncdata) { + free(hsyncdata); +@@ -1208,19 +1244,18 @@ static int + for (i = 0; i < nHsync; i++) { + hsyncdata[i] = (unsigned short) (VidModeGetMonitorValue(monitor, + VIDMODE_MON_HSYNC_LO, +- i)). +- f | (unsigned +- short) (VidModeGetMonitorValue(monitor, VIDMODE_MON_HSYNC_HI, +- i)).f << 16; ++ i)).f | ++ (unsigned ++ short) (VidModeGetMonitorValue(monitor, VIDMODE_MON_HSYNC_HI, ++ i)).f << 16; + } + for (i = 0; i < nVrefresh; i++) { + vsyncdata[i] = (unsigned short) (VidModeGetMonitorValue(monitor, + VIDMODE_MON_VREFRESH_LO, +- i)). +- f | (unsigned +- short) (VidModeGetMonitorValue(monitor, +- VIDMODE_MON_VREFRESH_HI, +- i)).f << 16; ++ i)).f | ++ (unsigned ++ short) (VidModeGetMonitorValue(monitor, VIDMODE_MON_VREFRESH_HI, ++ i)).f << 16; + } + + if (client->swapped) { +@@ -1249,38 +1284,40 @@ static int + } + + static int +- ProcXF86VidModeGetViewPort(ClientPtr client) { ++ProcXF86VidModeGetViewPort(ClientPtr client) ++{ + REQUEST(xXF86VidModeGetViewPortReq); + xXF86VidModeGetViewPortReply rep; + int x, y; + +- DEBUG_P("XF86VidModeGetViewPort"); ++ DEBUG_P("XF86VidModeGetViewPort"); + +- REQUEST_SIZE_MATCH(xXF86VidModeGetViewPortReq); ++ REQUEST_SIZE_MATCH(xXF86VidModeGetViewPortReq); + + if (stuff->screen >= screenInfo.numScreens) +- return BadValue; ++ return BadValue; + +- rep.type = X_Reply; +- rep.length = 0; +- rep.sequenceNumber = client->sequence; ++ rep.type = X_Reply; ++ rep.length = 0; ++ rep.sequenceNumber = client->sequence; + +- VidModeGetViewPort(stuff->screen, &x, &y); +- rep.x = x; +- rep.y = y; ++ VidModeGetViewPort(stuff->screen, &x, &y); ++ rep.x = x; ++ rep.y = y; + + if (client->swapped) { + swaps(&rep.sequenceNumber); + swapl(&rep.length); + swapl(&rep.x); + swapl(&rep.y); +- } WriteToClient(client, SIZEOF(xXF86VidModeGetViewPortReply), +- (char *) &rep); ++ } ++ WriteToClient(client, SIZEOF(xXF86VidModeGetViewPortReply), (char *) &rep); + return Success; + } + + static int +- ProcXF86VidModeSetViewPort(ClientPtr client) { ++ProcXF86VidModeSetViewPort(ClientPtr client) ++{ + REQUEST(xXF86VidModeSetViewPortReq); + + DEBUG_P("XF86VidModeSetViewPort"); +@@ -1294,8 +1331,11 @@ static int + return BadValue; + + return Success; +-} static int +- ProcXF86VidModeGetDotClocks(ClientPtr client) { ++} ++ ++static int ++ProcXF86VidModeGetDotClocks(ClientPtr client) ++{ + REQUEST(xXF86VidModeGetDotClocksReq); + xXF86VidModeGetDotClocksReply rep; + int n; +@@ -1304,31 +1344,33 @@ static int + int *Clocks = NULL; + Bool ClockProg; + +- DEBUG_P("XF86VidModeGetDotClocks"); ++ DEBUG_P("XF86VidModeGetDotClocks"); + +- REQUEST_SIZE_MATCH(xXF86VidModeGetDotClocksReq); ++ REQUEST_SIZE_MATCH(xXF86VidModeGetDotClocksReq); + + if (stuff->screen >= screenInfo.numScreens) +- return BadValue; ++ return BadValue; + +- numClocks = VidModeGetNumOfClocks(stuff->screen, &ClockProg); ++ numClocks = VidModeGetNumOfClocks(stuff->screen, &ClockProg); + +- rep.type = X_Reply; +- rep.length = bytes_to_int32(SIZEOF(xXF86VidModeGetDotClocksReply) +- - SIZEOF(xGenericReply) + numClocks); +- rep.sequenceNumber = client->sequence; +- rep.clocks = numClocks; +- rep.maxclocks = MAXCLOCKS; +- rep.flags = 0; ++ rep.type = X_Reply; ++ rep.length = bytes_to_int32(SIZEOF(xXF86VidModeGetDotClocksReply) ++ - SIZEOF(xGenericReply) + numClocks); ++ rep.sequenceNumber = client->sequence; ++ rep.clocks = numClocks; ++ rep.maxclocks = MAXCLOCKS; ++ rep.flags = 0; + + if (!ClockProg) { + Clocks = malloc(numClocks * sizeof(int)); + if (!Clocks) +- return BadValue; ++ return BadValue; + if (!VidModeGetClocks(stuff->screen, Clocks)) { + free(Clocks); + return BadValue; +- }} if (ClockProg) { ++ } ++ } ++ if (ClockProg) { + rep.flags |= CLKFLAG_PROGRAMABLE; + } + if (client->swapped) { +@@ -1356,7 +1398,8 @@ static int + } + + static int +- ProcXF86VidModeSetGamma(ClientPtr client) { ++ProcXF86VidModeSetGamma(ClientPtr client) ++{ + REQUEST(xXF86VidModeSetGammaReq); + + DEBUG_P("XF86VidModeSetGamma"); +@@ -1372,79 +1415,89 @@ static int + return BadValue; + + return Success; +-} static int +- ProcXF86VidModeGetGamma(ClientPtr client) { ++} ++ ++static int ++ProcXF86VidModeGetGamma(ClientPtr client) ++{ + REQUEST(xXF86VidModeGetGammaReq); + xXF86VidModeGetGammaReply rep; + float red, green, blue; + +- DEBUG_P("XF86VidModeGetGamma"); ++ DEBUG_P("XF86VidModeGetGamma"); + +- REQUEST_SIZE_MATCH(xXF86VidModeGetGammaReq); ++ REQUEST_SIZE_MATCH(xXF86VidModeGetGammaReq); + + if (stuff->screen >= screenInfo.numScreens) +- return BadValue; ++ return BadValue; + +- rep.type = X_Reply; +- rep.length = 0; +- rep.sequenceNumber = client->sequence; ++ rep.type = X_Reply; ++ rep.length = 0; ++ rep.sequenceNumber = client->sequence; + if (!VidModeGetGamma(stuff->screen, &red, &green, &blue)) +- return BadValue; +- rep.red = (CARD32) (red * 10000.); +- rep.green = (CARD32) (green * 10000.); +- rep.blue = (CARD32) (blue * 10000.); ++ return BadValue; ++ rep.red = (CARD32) (red * 10000.); ++ rep.green = (CARD32) (green * 10000.); ++ rep.blue = (CARD32) (blue * 10000.); + if (client->swapped) { + swaps(&rep.sequenceNumber); + swapl(&rep.length); + swapl(&rep.red); + swapl(&rep.green); + swapl(&rep.blue); +- } WriteToClient(client, sizeof(xXF86VidModeGetGammaReply), (char *) &rep); ++ } ++ WriteToClient(client, sizeof(xXF86VidModeGetGammaReply), (char *) &rep); + + return Success; + } + + static int +- ProcXF86VidModeSetGammaRamp(ClientPtr client) { ++ProcXF86VidModeSetGammaRamp(ClientPtr client) ++{ + CARD16 *r, *g, *b; + int length; +- REQUEST(xXF86VidModeSetGammaRampReq); ++ ++ REQUEST(xXF86VidModeSetGammaRampReq); + + if (stuff->screen >= screenInfo.numScreens) +- return BadValue; ++ return BadValue; + + if (stuff->size != VidModeGetGammaRampSize(stuff->screen)) +- return BadValue; ++ return BadValue; + +- length = (stuff->size + 1) & ~1; ++ length = (stuff->size + 1) & ~1; + +- REQUEST_FIXED_SIZE(xXF86VidModeSetGammaRampReq, length * 6); ++ REQUEST_FIXED_SIZE(xXF86VidModeSetGammaRampReq, length * 6); + +- r = (CARD16 *) &stuff[1]; +- g = r + length; +- b = g + length; ++ r = (CARD16 *) &stuff[1]; ++ g = r + length; ++ b = g + length; + + if (!VidModeSetGammaRamp(stuff->screen, stuff->size, r, g, b)) +- return BadValue; ++ return BadValue; + +- return Success; +-} static int +- ProcXF86VidModeGetGammaRamp(ClientPtr client) { ++ return Success; ++} ++ ++static int ++ProcXF86VidModeGetGammaRamp(ClientPtr client) ++{ + CARD16 *ramp = NULL; + int length; + size_t ramplen = 0; + xXF86VidModeGetGammaRampReply rep; +- REQUEST(xXF86VidModeGetGammaRampReq); ++ ++ REQUEST(xXF86VidModeGetGammaRampReq); + + if (stuff->screen >= screenInfo.numScreens) +- return BadValue; ++ return BadValue; + + if (stuff->size != VidModeGetGammaRampSize(stuff->screen)) +- return BadValue; ++ return BadValue; + +- REQUEST_SIZE_MATCH(xXF86VidModeGetGammaRampReq); ++ REQUEST_SIZE_MATCH(xXF86VidModeGetGammaRampReq); + +- length = (stuff->size + 1) & ~1; ++ length = (stuff->size + 1) & ~1; + + if (stuff->size) { + ramplen = length * 3 * sizeof(CARD16); +@@ -1455,7 +1508,9 @@ static int + ramp, ramp + length, ramp + (length * 2))) { + free(ramp); + return BadValue; +- }} rep.type = X_Reply; ++ } ++ } ++ rep.type = X_Reply; + rep.length = (length >> 1) * 3; + rep.sequenceNumber = client->sequence; + rep.size = stuff->size; +@@ -1476,47 +1531,53 @@ static int + } + + static int +- ProcXF86VidModeGetGammaRampSize(ClientPtr client) { ++ProcXF86VidModeGetGammaRampSize(ClientPtr client) ++{ + xXF86VidModeGetGammaRampSizeReply rep; +- REQUEST(xXF86VidModeGetGammaRampSizeReq); ++ ++ REQUEST(xXF86VidModeGetGammaRampSizeReq); + + if (stuff->screen >= screenInfo.numScreens) +- return BadValue; ++ return BadValue; + +- REQUEST_SIZE_MATCH(xXF86VidModeGetGammaRampSizeReq); ++ REQUEST_SIZE_MATCH(xXF86VidModeGetGammaRampSizeReq); + +- rep.type = X_Reply; +- rep.length = 0; +- rep.sequenceNumber = client->sequence; +- rep.size = VidModeGetGammaRampSize(stuff->screen); ++ rep.type = X_Reply; ++ rep.length = 0; ++ rep.sequenceNumber = client->sequence; ++ rep.size = VidModeGetGammaRampSize(stuff->screen); + if (client->swapped) { + swaps(&rep.sequenceNumber); + swapl(&rep.length); + swaps(&rep.size); +- } WriteToClient(client, sizeof(xXF86VidModeGetGammaRampSizeReply), +- (char *) &rep); ++ } ++ WriteToClient(client, sizeof(xXF86VidModeGetGammaRampSizeReply), ++ (char *) &rep); + + return Success; + } + + static int +- ProcXF86VidModeGetPermissions(ClientPtr client) { ++ProcXF86VidModeGetPermissions(ClientPtr client) ++{ + xXF86VidModeGetPermissionsReply rep; +- REQUEST(xXF86VidModeGetPermissionsReq); ++ ++ REQUEST(xXF86VidModeGetPermissionsReq); + + if (stuff->screen >= screenInfo.numScreens) +- return BadValue; ++ return BadValue; + +- REQUEST_SIZE_MATCH(xXF86VidModeGetPermissionsReq); ++ REQUEST_SIZE_MATCH(xXF86VidModeGetPermissionsReq); + +- rep.type = X_Reply; +- rep.length = 0; +- rep.sequenceNumber = client->sequence; +- rep.permissions = XF86VM_READ_PERMISSION; ++ rep.type = X_Reply; ++ rep.length = 0; ++ rep.sequenceNumber = client->sequence; ++ rep.permissions = XF86VM_READ_PERMISSION; + if (xf86GetVidModeEnabled() && + (xf86GetVidModeAllowNonLocal() || LocalClient(client))) { + rep.permissions |= XF86VM_WRITE_PERMISSION; +- } if (client->swapped) { ++ } ++ if (client->swapped) { + swaps(&rep.sequenceNumber); + swapl(&rep.length); + swapl(&rep.permissions); +@@ -1528,21 +1589,23 @@ static int + } + + static int +- ProcXF86VidModeSetClientVersion(ClientPtr client) { ++ProcXF86VidModeSetClientVersion(ClientPtr client) ++{ + REQUEST(xXF86VidModeSetClientVersionReq); + + VidModePrivPtr pPriv; + +- DEBUG_P("XF86VidModeSetClientVersion"); ++ DEBUG_P("XF86VidModeSetClientVersion"); + +- REQUEST_SIZE_MATCH(xXF86VidModeSetClientVersionReq); ++ REQUEST_SIZE_MATCH(xXF86VidModeSetClientVersionReq); + + if ((pPriv = VM_GETPRIV(client)) == NULL) { + pPriv = malloc(sizeof(VidModePrivRec)); + if (!pPriv) + return BadAlloc; + VM_SETPRIV(client, pPriv); +- } pPriv->major = stuff->major; ++ } ++ pPriv->major = stuff->major; + + pPriv->minor = stuff->minor; + +@@ -1550,85 +1613,103 @@ static int + } + + static int +- ProcXF86VidModeDispatch(ClientPtr client) { ++ProcXF86VidModeDispatch(ClientPtr client) ++{ + REQUEST(xReq); + switch (stuff->data) { + case X_XF86VidModeQueryVersion: + return ProcXF86VidModeQueryVersion(client); +- case X_XF86VidModeGetModeLine:return ProcXF86VidModeGetModeLine(client); +- case X_XF86VidModeGetMonitor:return ProcXF86VidModeGetMonitor(client); +- case X_XF86VidModeGetAllModeLines:return +- ProcXF86VidModeGetAllModeLines(client); +- case X_XF86VidModeValidateModeLine:return +- ProcXF86VidModeValidateModeLine(client); +- case X_XF86VidModeGetViewPort:return ProcXF86VidModeGetViewPort(client); +- case X_XF86VidModeGetDotClocks:return +- ProcXF86VidModeGetDotClocks(client); +- case X_XF86VidModeSetClientVersion:return +- ProcXF86VidModeSetClientVersion(client); +- case X_XF86VidModeGetGamma:return ProcXF86VidModeGetGamma(client); +- case X_XF86VidModeGetGammaRamp:return +- ProcXF86VidModeGetGammaRamp(client); +- case X_XF86VidModeGetGammaRampSize:return +- ProcXF86VidModeGetGammaRampSize(client); +- case X_XF86VidModeGetPermissions:return +- ProcXF86VidModeGetPermissions(client); +- default:if (!xf86GetVidModeEnabled()) ++ case X_XF86VidModeGetModeLine: ++ return ProcXF86VidModeGetModeLine(client); ++ case X_XF86VidModeGetMonitor: ++ return ProcXF86VidModeGetMonitor(client); ++ case X_XF86VidModeGetAllModeLines: ++ return ProcXF86VidModeGetAllModeLines(client); ++ case X_XF86VidModeValidateModeLine: ++ return ProcXF86VidModeValidateModeLine(client); ++ case X_XF86VidModeGetViewPort: ++ return ProcXF86VidModeGetViewPort(client); ++ case X_XF86VidModeGetDotClocks: ++ return ProcXF86VidModeGetDotClocks(client); ++ case X_XF86VidModeSetClientVersion: ++ return ProcXF86VidModeSetClientVersion(client); ++ case X_XF86VidModeGetGamma: ++ return ProcXF86VidModeGetGamma(client); ++ case X_XF86VidModeGetGammaRamp: ++ return ProcXF86VidModeGetGammaRamp(client); ++ case X_XF86VidModeGetGammaRampSize: ++ return ProcXF86VidModeGetGammaRampSize(client); ++ case X_XF86VidModeGetPermissions: ++ return ProcXF86VidModeGetPermissions(client); ++ default: ++ if (!xf86GetVidModeEnabled()) + return VidModeErrorBase + XF86VidModeExtensionDisabled; + if (xf86GetVidModeAllowNonLocal() || LocalClient(client)) { + switch (stuff->data) { + case X_XF86VidModeAddModeLine: + return ProcXF86VidModeAddModeLine(client); +- case X_XF86VidModeDeleteModeLine:return +- ProcXF86VidModeDeleteModeLine(client); +- case X_XF86VidModeModModeLine:return +- ProcXF86VidModeModModeLine(client); +- case X_XF86VidModeSwitchMode:return +- ProcXF86VidModeSwitchMode(client); +- case X_XF86VidModeSwitchToMode:return +- ProcXF86VidModeSwitchToMode(client); +- case X_XF86VidModeLockModeSwitch:return +- ProcXF86VidModeLockModeSwitch(client); +- case X_XF86VidModeSetViewPort:return +- ProcXF86VidModeSetViewPort(client); +- case X_XF86VidModeSetGamma:return +- ProcXF86VidModeSetGamma(client); +- case X_XF86VidModeSetGammaRamp:return +- ProcXF86VidModeSetGammaRamp(client); +- default:return BadRequest; +- }} ++ case X_XF86VidModeDeleteModeLine: ++ return ProcXF86VidModeDeleteModeLine(client); ++ case X_XF86VidModeModModeLine: ++ return ProcXF86VidModeModModeLine(client); ++ case X_XF86VidModeSwitchMode: ++ return ProcXF86VidModeSwitchMode(client); ++ case X_XF86VidModeSwitchToMode: ++ return ProcXF86VidModeSwitchToMode(client); ++ case X_XF86VidModeLockModeSwitch: ++ return ProcXF86VidModeLockModeSwitch(client); ++ case X_XF86VidModeSetViewPort: ++ return ProcXF86VidModeSetViewPort(client); ++ case X_XF86VidModeSetGamma: ++ return ProcXF86VidModeSetGamma(client); ++ case X_XF86VidModeSetGammaRamp: ++ return ProcXF86VidModeSetGammaRamp(client); ++ default: ++ return BadRequest; ++ } ++ } + else +- return VidModeErrorBase + XF86VidModeClientNotLocal; ++ return VidModeErrorBase + XF86VidModeClientNotLocal; + } + } + + static int +- SProcXF86VidModeQueryVersion(ClientPtr client) { ++SProcXF86VidModeQueryVersion(ClientPtr client) ++{ + REQUEST(xXF86VidModeQueryVersionReq); + swaps(&stuff->length); + return ProcXF86VidModeQueryVersion(client); +-} static int +- SProcXF86VidModeGetModeLine(ClientPtr client) { ++} ++ ++static int ++SProcXF86VidModeGetModeLine(ClientPtr client) ++{ + REQUEST(xXF86VidModeGetModeLineReq); + swaps(&stuff->length); + REQUEST_SIZE_MATCH(xXF86VidModeGetModeLineReq); + swaps(&stuff->screen); + return ProcXF86VidModeGetModeLine(client); +-} static int +- SProcXF86VidModeGetAllModeLines(ClientPtr client) { ++} ++ ++static int ++SProcXF86VidModeGetAllModeLines(ClientPtr client) ++{ + REQUEST(xXF86VidModeGetAllModeLinesReq); + swaps(&stuff->length); + REQUEST_SIZE_MATCH(xXF86VidModeGetAllModeLinesReq); + swaps(&stuff->screen); + return ProcXF86VidModeGetAllModeLines(client); +-} static int +- SProcXF86VidModeAddModeLine(ClientPtr client) { ++} ++ ++static int ++SProcXF86VidModeAddModeLine(ClientPtr client) ++{ + xXF86OldVidModeAddModeLineReq *oldstuff = + (xXF86OldVidModeAddModeLineReq *) client->requestBuffer; + int ver; + +- REQUEST(xXF86VidModeAddModeLineReq); +- ver = ClientMajorVersion(client); ++ REQUEST(xXF86VidModeAddModeLineReq); ++ ver = ClientMajorVersion(client); + if (ver < 2) { + swaps(&oldstuff->length); + REQUEST_AT_LEAST_SIZE(xXF86OldVidModeAddModeLineReq); +@@ -1666,13 +1747,14 @@ static int + } + + static int +- SProcXF86VidModeDeleteModeLine(ClientPtr client) { ++SProcXF86VidModeDeleteModeLine(ClientPtr client) ++{ + xXF86OldVidModeDeleteModeLineReq *oldstuff = + (xXF86OldVidModeDeleteModeLineReq *) client->requestBuffer; + int ver; + +- REQUEST(xXF86VidModeDeleteModeLineReq); +- ver = ClientMajorVersion(client); ++ REQUEST(xXF86VidModeDeleteModeLineReq); ++ ver = ClientMajorVersion(client); + if (ver < 2) { + swaps(&oldstuff->length); + REQUEST_AT_LEAST_SIZE(xXF86OldVidModeDeleteModeLineReq); +@@ -1710,13 +1792,14 @@ static int + } + + static int +- SProcXF86VidModeModModeLine(ClientPtr client) { ++SProcXF86VidModeModModeLine(ClientPtr client) ++{ + xXF86OldVidModeModModeLineReq *oldstuff = + (xXF86OldVidModeModModeLineReq *) client->requestBuffer; + int ver; + +- REQUEST(xXF86VidModeModModeLineReq); +- ver = ClientMajorVersion(client); ++ REQUEST(xXF86VidModeModModeLineReq); ++ ver = ClientMajorVersion(client); + if (ver < 2) { + swaps(&oldstuff->length); + REQUEST_AT_LEAST_SIZE(xXF86OldVidModeModModeLineReq); +@@ -1754,13 +1837,14 @@ static int + } + + static int +- SProcXF86VidModeValidateModeLine(ClientPtr client) { ++SProcXF86VidModeValidateModeLine(ClientPtr client) ++{ + xXF86OldVidModeValidateModeLineReq *oldstuff = + (xXF86OldVidModeValidateModeLineReq *) client->requestBuffer; + int ver; + +- REQUEST(xXF86VidModeValidateModeLineReq); +- ver = ClientMajorVersion(client); ++ REQUEST(xXF86VidModeValidateModeLineReq); ++ ver = ClientMajorVersion(client); + if (ver < 2) { + swaps(&oldstuff->length); + REQUEST_AT_LEAST_SIZE(xXF86OldVidModeValidateModeLineReq); +@@ -1798,44 +1882,60 @@ static int + } + + static int +- SProcXF86VidModeSwitchMode(ClientPtr client) { ++SProcXF86VidModeSwitchMode(ClientPtr client) ++{ + REQUEST(xXF86VidModeSwitchModeReq); + swaps(&stuff->length); + REQUEST_SIZE_MATCH(xXF86VidModeSwitchModeReq); + swaps(&stuff->screen); + swaps(&stuff->zoom); + return ProcXF86VidModeSwitchMode(client); +-} static int +- SProcXF86VidModeSwitchToMode(ClientPtr client) { ++} ++ ++static int ++SProcXF86VidModeSwitchToMode(ClientPtr client) ++{ + REQUEST(xXF86VidModeSwitchToModeReq); + swaps(&stuff->length); + REQUEST_SIZE_MATCH(xXF86VidModeSwitchToModeReq); + swapl(&stuff->screen); + return ProcXF86VidModeSwitchToMode(client); +-} static int +- SProcXF86VidModeLockModeSwitch(ClientPtr client) { ++} ++ ++static int ++SProcXF86VidModeLockModeSwitch(ClientPtr client) ++{ + REQUEST(xXF86VidModeLockModeSwitchReq); + swaps(&stuff->length); + REQUEST_SIZE_MATCH(xXF86VidModeLockModeSwitchReq); + swaps(&stuff->screen); + swaps(&stuff->lock); + return ProcXF86VidModeLockModeSwitch(client); +-} static int +- SProcXF86VidModeGetMonitor(ClientPtr client) { ++} ++ ++static int ++SProcXF86VidModeGetMonitor(ClientPtr client) ++{ + REQUEST(xXF86VidModeGetMonitorReq); + swaps(&stuff->length); + REQUEST_SIZE_MATCH(xXF86VidModeGetMonitorReq); + swaps(&stuff->screen); + return ProcXF86VidModeGetMonitor(client); +-} static int +- SProcXF86VidModeGetViewPort(ClientPtr client) { ++} ++ ++static int ++SProcXF86VidModeGetViewPort(ClientPtr client) ++{ + REQUEST(xXF86VidModeGetViewPortReq); + swaps(&stuff->length); + REQUEST_SIZE_MATCH(xXF86VidModeGetViewPortReq); + swaps(&stuff->screen); + return ProcXF86VidModeGetViewPort(client); +-} static int +- SProcXF86VidModeSetViewPort(ClientPtr client) { ++} ++ ++static int ++SProcXF86VidModeSetViewPort(ClientPtr client) ++{ + REQUEST(xXF86VidModeSetViewPortReq); + swaps(&stuff->length); + REQUEST_SIZE_MATCH(xXF86VidModeSetViewPortReq); +@@ -1843,23 +1943,32 @@ static int + swapl(&stuff->x); + swapl(&stuff->y); + return ProcXF86VidModeSetViewPort(client); +-} static int +- SProcXF86VidModeGetDotClocks(ClientPtr client) { ++} ++ ++static int ++SProcXF86VidModeGetDotClocks(ClientPtr client) ++{ + REQUEST(xXF86VidModeGetDotClocksReq); + swaps(&stuff->length); + REQUEST_SIZE_MATCH(xXF86VidModeGetDotClocksReq); + swaps(&stuff->screen); + return ProcXF86VidModeGetDotClocks(client); +-} static int +- SProcXF86VidModeSetClientVersion(ClientPtr client) { ++} ++ ++static int ++SProcXF86VidModeSetClientVersion(ClientPtr client) ++{ + REQUEST(xXF86VidModeSetClientVersionReq); + swaps(&stuff->length); + REQUEST_SIZE_MATCH(xXF86VidModeSetClientVersionReq); + swaps(&stuff->major); + swaps(&stuff->minor); + return ProcXF86VidModeSetClientVersion(client); +-} static int +- SProcXF86VidModeSetGamma(ClientPtr client) { ++} ++ ++static int ++SProcXF86VidModeSetGamma(ClientPtr client) ++{ + REQUEST(xXF86VidModeSetGammaReq); + swaps(&stuff->length); + REQUEST_SIZE_MATCH(xXF86VidModeSetGammaReq); +@@ -1868,120 +1977,145 @@ static int + swapl(&stuff->green); + swapl(&stuff->blue); + return ProcXF86VidModeSetGamma(client); +-} static int +- SProcXF86VidModeGetGamma(ClientPtr client) { ++} ++ ++static int ++SProcXF86VidModeGetGamma(ClientPtr client) ++{ + REQUEST(xXF86VidModeGetGammaReq); + swaps(&stuff->length); + REQUEST_SIZE_MATCH(xXF86VidModeGetGammaReq); + swaps(&stuff->screen); + return ProcXF86VidModeGetGamma(client); +-} static int +- SProcXF86VidModeSetGammaRamp(ClientPtr client) { ++} ++ ++static int ++SProcXF86VidModeSetGammaRamp(ClientPtr client) ++{ + int length; +- REQUEST(xXF86VidModeSetGammaRampReq); +- swaps(&stuff->length); +- REQUEST_AT_LEAST_SIZE(xXF86VidModeSetGammaRampReq); +- swaps(&stuff->size); +- swaps(&stuff->screen); +- length = ((stuff->size + 1) & ~1) * 6; +- REQUEST_FIXED_SIZE(xXF86VidModeSetGammaRampReq, length); +- SwapRestS(stuff); +- return ProcXF86VidModeSetGammaRamp(client); +-} static int +- SProcXF86VidModeGetGammaRamp(ClientPtr client) { ++ ++ REQUEST(xXF86VidModeSetGammaRampReq); ++ swaps(&stuff->length); ++ REQUEST_AT_LEAST_SIZE(xXF86VidModeSetGammaRampReq); ++ swaps(&stuff->size); ++ swaps(&stuff->screen); ++ length = ((stuff->size + 1) & ~1) * 6; ++ REQUEST_FIXED_SIZE(xXF86VidModeSetGammaRampReq, length); ++ SwapRestS(stuff); ++ return ProcXF86VidModeSetGammaRamp(client); ++} ++ ++static int ++SProcXF86VidModeGetGammaRamp(ClientPtr client) ++{ + REQUEST(xXF86VidModeGetGammaRampReq); + swaps(&stuff->length); + REQUEST_SIZE_MATCH(xXF86VidModeGetGammaRampReq); + swaps(&stuff->size); + swaps(&stuff->screen); + return ProcXF86VidModeGetGammaRamp(client); +-} static int +- SProcXF86VidModeGetGammaRampSize(ClientPtr client) { ++} ++ ++static int ++SProcXF86VidModeGetGammaRampSize(ClientPtr client) ++{ + REQUEST(xXF86VidModeGetGammaRampSizeReq); + swaps(&stuff->length); + REQUEST_SIZE_MATCH(xXF86VidModeGetGammaRampSizeReq); + swaps(&stuff->screen); + return ProcXF86VidModeGetGammaRampSize(client); +-} static int +- SProcXF86VidModeGetPermissions(ClientPtr client) { ++} ++ ++static int ++SProcXF86VidModeGetPermissions(ClientPtr client) ++{ + REQUEST(xXF86VidModeGetPermissionsReq); + swaps(&stuff->length); + REQUEST_SIZE_MATCH(xXF86VidModeGetPermissionsReq); + swaps(&stuff->screen); + return ProcXF86VidModeGetPermissions(client); +-} static int +- SProcXF86VidModeDispatch(ClientPtr client) { ++} ++ ++static int ++SProcXF86VidModeDispatch(ClientPtr client) ++{ + REQUEST(xReq); + switch (stuff->data) { + case X_XF86VidModeQueryVersion: + return SProcXF86VidModeQueryVersion(client); +- case X_XF86VidModeGetModeLine:return +- SProcXF86VidModeGetModeLine(client); +- case X_XF86VidModeGetMonitor:return SProcXF86VidModeGetMonitor(client); +- case X_XF86VidModeGetAllModeLines:return +- SProcXF86VidModeGetAllModeLines(client); +- case X_XF86VidModeGetViewPort:return +- SProcXF86VidModeGetViewPort(client); +- case X_XF86VidModeValidateModeLine:return +- SProcXF86VidModeValidateModeLine(client); +- case X_XF86VidModeGetDotClocks:return +- SProcXF86VidModeGetDotClocks(client); +- case X_XF86VidModeSetClientVersion:return +- SProcXF86VidModeSetClientVersion(client); +- case X_XF86VidModeGetGamma:return SProcXF86VidModeGetGamma(client); +- case X_XF86VidModeGetGammaRamp:return +- SProcXF86VidModeGetGammaRamp(client); +- case X_XF86VidModeGetGammaRampSize:return +- SProcXF86VidModeGetGammaRampSize(client); +- case X_XF86VidModeGetPermissions:return +- SProcXF86VidModeGetPermissions(client); +- default:if (!xf86GetVidModeEnabled()) ++ case X_XF86VidModeGetModeLine: ++ return SProcXF86VidModeGetModeLine(client); ++ case X_XF86VidModeGetMonitor: ++ return SProcXF86VidModeGetMonitor(client); ++ case X_XF86VidModeGetAllModeLines: ++ return SProcXF86VidModeGetAllModeLines(client); ++ case X_XF86VidModeGetViewPort: ++ return SProcXF86VidModeGetViewPort(client); ++ case X_XF86VidModeValidateModeLine: ++ return SProcXF86VidModeValidateModeLine(client); ++ case X_XF86VidModeGetDotClocks: ++ return SProcXF86VidModeGetDotClocks(client); ++ case X_XF86VidModeSetClientVersion: ++ return SProcXF86VidModeSetClientVersion(client); ++ case X_XF86VidModeGetGamma: ++ return SProcXF86VidModeGetGamma(client); ++ case X_XF86VidModeGetGammaRamp: ++ return SProcXF86VidModeGetGammaRamp(client); ++ case X_XF86VidModeGetGammaRampSize: ++ return SProcXF86VidModeGetGammaRampSize(client); ++ case X_XF86VidModeGetPermissions: ++ return SProcXF86VidModeGetPermissions(client); ++ default: ++ if (!xf86GetVidModeEnabled()) + return VidModeErrorBase + XF86VidModeExtensionDisabled; + if (xf86GetVidModeAllowNonLocal() || LocalClient(client)) { + switch (stuff->data) { + case X_XF86VidModeAddModeLine: + return SProcXF86VidModeAddModeLine(client); +- case X_XF86VidModeDeleteModeLine:return +- SProcXF86VidModeDeleteModeLine(client); +- case X_XF86VidModeModModeLine:return +- SProcXF86VidModeModModeLine(client); +- case X_XF86VidModeSwitchMode:return +- SProcXF86VidModeSwitchMode(client); +- case X_XF86VidModeSwitchToMode:return +- SProcXF86VidModeSwitchToMode(client); +- case X_XF86VidModeLockModeSwitch:return +- SProcXF86VidModeLockModeSwitch(client); +- case X_XF86VidModeSetViewPort:return +- SProcXF86VidModeSetViewPort(client); +- case X_XF86VidModeSetGamma:return +- SProcXF86VidModeSetGamma(client); +- case X_XF86VidModeSetGammaRamp:return +- SProcXF86VidModeSetGammaRamp(client); +- default:return BadRequest; +- }} ++ case X_XF86VidModeDeleteModeLine: ++ return SProcXF86VidModeDeleteModeLine(client); ++ case X_XF86VidModeModModeLine: ++ return SProcXF86VidModeModModeLine(client); ++ case X_XF86VidModeSwitchMode: ++ return SProcXF86VidModeSwitchMode(client); ++ case X_XF86VidModeSwitchToMode: ++ return SProcXF86VidModeSwitchToMode(client); ++ case X_XF86VidModeLockModeSwitch: ++ return SProcXF86VidModeLockModeSwitch(client); ++ case X_XF86VidModeSetViewPort: ++ return SProcXF86VidModeSetViewPort(client); ++ case X_XF86VidModeSetGamma: ++ return SProcXF86VidModeSetGamma(client); ++ case X_XF86VidModeSetGammaRamp: ++ return SProcXF86VidModeSetGammaRamp(client); ++ default: ++ return BadRequest; ++ } ++ } + else +- return VidModeErrorBase + XF86VidModeClientNotLocal; ++ return VidModeErrorBase + XF86VidModeClientNotLocal; + } + } + + void +- XFree86VidModeExtensionInit(void) { ++XFree86VidModeExtensionInit(void) ++{ + ExtensionEntry *extEntry; + ScreenPtr pScreen; + int i; + Bool enabled = FALSE; + +- DEBUG_P("XFree86VidModeExtensionInit"); ++ DEBUG_P("XFree86VidModeExtensionInit"); + + if (!dixRegisterPrivateKey(&VidModeClientPrivateKeyRec, PRIVATE_CLIENT, 0)) +- return; ++ return; + #ifdef XF86VIDMODE_EVENTS + if (!dixRegisterPrivateKey(&ScreenPrivateKeyRec, PRIVATE_SCREEN, 0)) +- return; ++ return; + #endif + + #ifdef XF86VIDMODE_EVENTS +- EventType = CreateNewResourceType(XF86VidModeFreeEvents, "VidModeEvent"); ++ EventType = CreateNewResourceType(XF86VidModeFreeEvents, "VidModeEvent"); + #endif + + for (i = 0; i < screenInfo.numScreens; i++) { +@@ -1990,8 +2124,8 @@ void + enabled = TRUE; + } + /* This means that the DDX doesn't want the vidmode extension enabled */ +- if (!enabled) +- return; ++ if (!enabled) ++ return; + + if ( + #ifdef XF86VIDMODE_EVENTS +-- +cgit v0.9.0.2-2-gbebe +From 15607cf2dc87405606b20113011f1ebd97637d32 Mon Sep 17 00:00:00 2001 +From: Daniel Kurtz <djkurtz@chromium.org> +Date: Thu, 12 Apr 2012 00:11:10 +0000 +Subject: dix: don't BUG_WARN for button events from button-only device + +Events from button-only devices still need coordinates, and they get them +from scale_to_desktop(). Therefore, a dev without valuators is not a bug. +However, a dev with valuators, but less than two of them still is a bug. + +This was noticed when unplugging a "Creative Technology SB Arena Headset", +which has some BTNs and some KEYs, but no REL or ABS valuators. +It emits [BTN_3] = 0 on unplug, which would trigger the BUG_WARN. + +Signed-off-by: Daniel Kurtz <djkurtz@chromium.org> +Reviewed-by: Chase Douglas <chase.douglas@canonical.com> +Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> +(cherry picked from commit c5a45b0f7658c77725adce2b64a0fbd62f208328) +--- +diff --git a/dix/getevents.c b/dix/getevents.c +index 4e0af45..9dc9617 100644 +--- a/dix/getevents.c ++++ b/dix/getevents.c +@@ -842,7 +842,7 @@ scale_to_desktop(DeviceIntPtr dev, ValuatorMask *mask, + ScreenPtr scr = miPointerGetScreen(dev); + double x, y; + +- BUG_WARN(!dev->valuator || dev->valuator->numAxes < 2); ++ BUG_WARN(dev->valuator && dev->valuator->numAxes < 2); + if (!dev->valuator || dev->valuator->numAxes < 2) { + /* if we have no axes, last.valuators must be in screen coords + * anyway */ +-- +cgit v0.9.0.2-2-gbebe +From f8d2ca759ad37d5e99d462f21a2259ce17bb1a00 Mon Sep 17 00:00:00 2001 +From: Peter Hutterer <peter.hutterer@who-t.net> +Date: Wed, 18 Apr 2012 05:56:37 +0000 +Subject: dix: indentation fix + +Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> +(cherry picked from commit ebf214876a4885a98ded4f5525925b69005fae05) +--- +diff --git a/dix/dispatch.c b/dix/dispatch.c +index 9a2e22f..d971805 100644 +--- a/dix/dispatch.c ++++ b/dix/dispatch.c +@@ -416,8 +416,8 @@ Dispatch(void) + if (XSERVER_REQUEST_START_ENABLED()) + XSERVER_REQUEST_START(LookupMajorName(client->majorOp), + client->majorOp, +- ((xReq *) client->requestBuffer)-> +- length, client->index, ++ ((xReq *) client->requestBuffer)->length, ++ client->index, + client->requestBuffer); + #endif + if (result > (maxBigRequestSize << 2)) +-- +cgit v0.9.0.2-2-gbebe +From f012f0c48dedba4df69cc1a1ecdf8ee5d37daca9 Mon Sep 17 00:00:00 2001 +From: Michal Suchanek <hramrach@gmail.com> +Date: Thu, 26 Apr 2012 13:11:20 +0000 +Subject: dmx: Annotate dmxlog.c with _X_ATTRIBUTE_PRINTF and _X_NORETURN + +and fix resulting printf warning in dmxLogVisual + +Signed-off-by: Michal Suchanek <hramrach@gmail.com> +Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> +Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> +(cherry picked from commit d662fa2450856777b59c4b62b912395a8bfd52fd) +--- +diff --git a/hw/dmx/dmxlog.c b/hw/dmx/dmxlog.c +index b56bb93..151f672 100644 +--- a/hw/dmx/dmxlog.c ++++ b/hw/dmx/dmxlog.c +@@ -86,6 +86,8 @@ ErrorF(const char *format, ...) + + /** Provide an VFatalError function when used stand-alone. */ + static void ++VFatalError(const char *format, va_list args) _X_ATTRIBUTE_PRINTF(1, 0) _X_NORETURN; ++static void + VFatalError(const char *format, va_list args) + { + vfprintf(stderr, format, args); /* RATS: We assume the format string +@@ -104,7 +106,9 @@ VErrorF(const char *format, va_list args) + } + #else + /** This function was removed between XFree86 4.3.0 and XFree86 4.4.0. */ +-extern void AbortServer(void); ++extern void AbortServer(void) _X_NORETURN; ++static void ++VFatalError(const char *format, va_list args) _X_ATTRIBUTE_PRINTF(1, 0) _X_NORETURN; + static void + VFatalError(const char *format, va_list args) + { +@@ -166,6 +170,8 @@ dmxHeader(dmxLogLevel logLevel, DMXInputInfo * dmxInput, + /* Prints the error message with the appropriate low-level X output + * routine. */ + static void ++dmxMessage(dmxLogLevel logLevel, const char *format, va_list args) _X_ATTRIBUTE_PRINTF(2, 0); ++static void + dmxMessage(dmxLogLevel logLevel, const char *format, va_list args) + { + if (logLevel == dmxFatal || logLevel >= dmxCurrentLogLevel) { +@@ -303,10 +309,11 @@ dmxLogVisual(DMXScreenInfo * dmxScreen, XVisualInfo * vi, int defaultVisual) + class = "DirectColor"; + break; + } ++#define VisualLogFormat "0x%02lx %s %2db %db/rgb %3d 0x%04lx 0x%04lx 0x%04lx%s\n" + + if (dmxScreen) { + dmxLogOutput(dmxScreen, +- "0x%02x %s %2db %db/rgb %3d 0x%04x 0x%04x 0x%04x%s\n", ++ VisualLogFormat, + vi->visualid, class, vi->depth, vi->bits_per_rgb, + vi->colormap_size, + vi->red_mask, vi->green_mask, vi->blue_mask, +@@ -314,7 +321,7 @@ dmxLogVisual(DMXScreenInfo * dmxScreen, XVisualInfo * vi, int defaultVisual) + } + else { + dmxLog(dmxInfo, +- " 0x%02x %s %2db %db/rgb %3d 0x%04x 0x%04x 0x%04x%s\n", ++ " " VisualLogFormat, + vi->visualid, class, vi->depth, vi->bits_per_rgb, + vi->colormap_size, + vi->red_mask, vi->green_mask, vi->blue_mask, +diff --git a/hw/dmx/dmxlog.h b/hw/dmx/dmxlog.h +index 4d4cd26..162484b 100644 +--- a/hw/dmx/dmxlog.h ++++ b/hw/dmx/dmxlog.h +@@ -55,18 +55,23 @@ typedef enum { + /* Logging functions used by Xserver/hw/dmx routines. */ + extern dmxLogLevel dmxSetLogLevel(dmxLogLevel newLevel); + extern dmxLogLevel dmxGetLogLevel(void); +-extern void dmxLog(dmxLogLevel logLevel, const char *format, ...); +-extern void dmxLogCont(dmxLogLevel logLevel, const char *format, ...); ++extern void dmxLog(dmxLogLevel logLevel, const char *format, ++ ...) _X_ATTRIBUTE_PRINTF(2, 3); ++extern void dmxLogCont(dmxLogLevel logLevel, const char *format, ++ ...) _X_ATTRIBUTE_PRINTF(2, 3); + extern const char *dmxEventName(int type); + + #ifndef DMX_LOG_STANDALONE +-extern void dmxLogOutput(DMXScreenInfo * dmxScreen, const char *format, ...); ++extern void dmxLogOutput(DMXScreenInfo * dmxScreen, const char *format, ++ ...) _X_ATTRIBUTE_PRINTF(2, 3); + extern void dmxLogOutputCont(DMXScreenInfo * dmxScreen, const char *format, +- ...); ++ ...) _X_ATTRIBUTE_PRINTF(2, 3); + extern void dmxLogOutputWarning(DMXScreenInfo * dmxScreen, const char *format, +- ...); +-extern void dmxLogInput(DMXInputInfo * dmxInput, const char *format, ...); +-extern void dmxLogInputCont(DMXInputInfo * dmxInput, const char *format, ...); ++ ...) _X_ATTRIBUTE_PRINTF(2, 3); ++extern void dmxLogInput(DMXInputInfo * dmxInput, const char *format, ++ ...) _X_ATTRIBUTE_PRINTF(2, 3); ++extern void dmxLogInputCont(DMXInputInfo * dmxInput, const char *format, ++ ...) _X_ATTRIBUTE_PRINTF(2, 3); + extern void dmxLogArgs(dmxLogLevel logLevel, int argc, char **argv); + extern void dmxLogVisual(DMXScreenInfo * dmxScreen, XVisualInfo * vi, + int defaultVisual); +-- +cgit v0.9.0.2-2-gbebe +From 58dfb13953af71021317b9d85230b1163198f031 Mon Sep 17 00:00:00 2001 +From: Jeremy Huddleston <jeremyhu@apple.com> +Date: Thu, 10 May 2012 07:53:20 +0000 +Subject: Revert "dix: when disabling a device, release all buttons and keys" + +This reverts commit 90299556db24543bb7365e8c2897deca3aa219e7. + +The commit being reverted triggered a segfault on server shutdown when a +device posts raw events after the root windows are forced to NULL. + +https://lists.debian.org/debian-x/2012/05/msg00240.html + +Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com> +--- +diff --git a/dix/devices.c b/dix/devices.c +index d0e99bd..0125504 100644 +--- a/dix/devices.c ++++ b/dix/devices.c +@@ -432,8 +432,6 @@ DisableDevice(DeviceIntPtr dev, BOOL sendevent) + if (*prev != dev) + return FALSE; + +- ReleaseButtonsAndKeys(dev); +- + /* float attached devices */ + if (IsMaster(dev)) { + for (other = inputInfo.devices; other; other = other->next) { +-- +cgit v0.9.0.2-2-gbebe diff --git a/staging/xorg-server/xvfb-run b/staging/xorg-server/xvfb-run new file mode 100644 index 000000000..4c2f4e0d3 --- /dev/null +++ b/staging/xorg-server/xvfb-run @@ -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: diff --git a/staging/xorg-server/xvfb-run.1 b/staging/xorg-server/xvfb-run.1 new file mode 100644 index 000000000..137d3a196 --- /dev/null +++ b/staging/xorg-server/xvfb-run.1 @@ -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: |