diff options
100 files changed, 9148 insertions, 98 deletions
diff --git a/community-testing/cegui/PKGBUILD b/community-testing/cegui/PKGBUILD new file mode 100644 index 000000000..36ec36e3b --- /dev/null +++ b/community-testing/cegui/PKGBUILD @@ -0,0 +1,43 @@ +# $Id: PKGBUILD 47894 2011-05-26 00:25:26Z svenstaro $ +# Maintainer: Sven-Hendrik Haase <sh@lutzhaase.com> +# Contributor: Juergen Hoetzel <juergen@archlinux.org> +# Contributor: William Rea <sillywilly@gmail.com>, +# Contributor: Bjorn Lindeijer <bjorn@lindeijer.nl> + +pkgname=cegui +pkgver=0.7.5 +pkgrel=3 +pkgdesc="A free library providing windowing and widgets for graphics APIs/engines" +arch=('i686' 'x86_64') +url="http://crayzedsgui.sourceforge.net" +#options=('!libtool') +license=("MIT") +depends=('pcre' 'glew' 'expat' 'freetype2' 'libxml2' 'devil' 'freeglut' 'lua' 'silly') +makedepends=('python2' 'doxygen') +source=(http://downloads.sourceforge.net/crayzedsgui/CEGUI-$pkgver.tar.gz) +md5sums=('38c79d1fdfaaa10f481c99a2ac479516') + +build() { + cd $srcdir/CEGUI-${pkgver} + + sed -i '1i#include <cstddef>' cegui/include/CEGUIString.h + ./configure --prefix=/usr \ + --sysconfdir=/etc \ + --disable-xerces-c \ + --enable-null-renderer + + make +} + +package() { + cd $srcdir/CEGUI-${pkgver} + + make DESTDIR=${pkgdir} install + + #build docs + cd doc/doxygen && doxygen + cd .. && make DESTDIR=${pkgdir} install-html + + install -Dm644 COPYING ${pkgdir}/usr/share/licenses/$pkgname/LICENSE +} + diff --git a/community-testing/clementine/PKGBUILD b/community-testing/clementine/PKGBUILD new file mode 100644 index 000000000..c276ec0d6 --- /dev/null +++ b/community-testing/clementine/PKGBUILD @@ -0,0 +1,35 @@ +# $Id: PKGBUILD 47879 2011-05-25 20:42:25Z stephane $ +#Maintainer: Stéphane Gaudreault <stephane@archlinux.org> +#Contributor: BlackEagle < ike DOT devolder AT gmail DOT com > +#Contributor: Dany Martineau <dany.luc.martineau@gmail.com> + +pkgname=clementine +pkgver=0.7.1 +pkgrel=4 +pkgdesc="A music player and library organizer" +url="http://www.clementine-player.org/" +license=('GPL') +arch=('i686' 'x86_64') +depends=('gstreamer0.10' 'taglib' 'glew' 'liblastfm' 'libgpod' 'libmtp' 'libplist' 'hicolor-icon-theme' 'qt' 'libimobiledevice') +makedepends=('cmake' 'boost') +optdepends=('gstreamer0.10-base-plugins: for more open formats' + 'gstreamer0.10-good-plugins: for use with "Good" plugin libraries' + 'gstreamer0.10-bad-plugins: for use with "Bad" plugin libraries' + 'gstreamer0.10-ugly-plugins: for use with "Ugly" plugin libraries') +source=(http://clementine-player.googlecode.com/files/${pkgname}-${pkgver}.tar.gz + clementine-0.7.1-fix-devicekit.patch) +sha1sums=('8b2025b8876f9f3fe33ef5001e0621f3a5d0f142' + 'd595e2746949363680e0d64fe2fb97b524c8d27c') +install=clementine.install + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + patch -Np1 -i ../clementine-0.7.1-fix-devicekit.patch + cmake . -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DSTATIC_SQLITE=0 -DENABLE_GIO=OFF + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make DESTDIR="${pkgdir}" install +} diff --git a/community-testing/clementine/clementine-0.7.1-fix-devicekit.patch b/community-testing/clementine/clementine-0.7.1-fix-devicekit.patch new file mode 100644 index 000000000..797a2c864 --- /dev/null +++ b/community-testing/clementine/clementine-0.7.1-fix-devicekit.patch @@ -0,0 +1,11 @@ +diff -Naur clementine-0.7.1.ori/src/config.h.in clementine-0.7.1/src/config.h.in +--- clementine-0.7.1.ori/src/config.h.in 2011-03-29 12:16:15.000000000 -0700 ++++ clementine-0.7.1/src/config.h.in 2011-05-09 16:00:26.505080057 -0700 +@@ -29,6 +29,7 @@ + #cmakedefine HAVE_STATIC_SQLITE + + #cmakedefine HAVE_DBUS ++#cmakedefine HAVE_DEVICEKIT + #cmakedefine HAVE_GIO + #cmakedefine HAVE_IMOBILEDEVICE + #cmakedefine HAVE_LIBARCHIVE diff --git a/community-testing/clementine/clementine.install b/community-testing/clementine/clementine.install new file mode 100644 index 000000000..2d71a7563 --- /dev/null +++ b/community-testing/clementine/clementine.install @@ -0,0 +1,12 @@ +post_install() { + gtk-update-icon-cache -q -t -f usr/share/icons/hicolor +} + +post_upgrade() { + post_install $1 +} + + +post_remove() { + post_install $1 +} diff --git a/community-testing/csfml/PKGBUILD b/community-testing/csfml/PKGBUILD new file mode 100644 index 000000000..d0920b18d --- /dev/null +++ b/community-testing/csfml/PKGBUILD @@ -0,0 +1,60 @@ +# $Id: PKGBUILD 47932 2011-05-26 06:40:32Z svenstaro $ +# Maintainer: Sven-Hendrik Haase <sh@lutzhaase.com> + +pkgname=csfml + +_git=true + +if [[ "${_git}" = "true" ]]; then + pkgver=1.99.git20110526 +fi + +pkgrel=1 +pkgdesc='C bindings for sfml' +arch=('i686' 'x86_64') +url='http://www.sfml-dev.org/' +license=('zlib') +depends=('sfml') +makedepends=('git' 'cmake' 'doxygen') + +_gitroot='https://github.com/LaurentGomila/SFML.git' +_gitname='SFML' + +build() { + cd "$srcdir" + msg "Connecting to GIT server...." + + if [ -d $_gitname ] ; then + cd $_gitname && git pull origin + msg "The local files are updated." + else + git clone $_gitroot + cd $_gitname + fi + + msg "GIT checkout done or server timeout" + msg "Starting make..." + + rm -rf "$srcdir/$_gitname-build" + cp -r "$srcdir/$_gitname" "$srcdir/$_gitname-build" + cd "$srcdir/$_gitname-build" + + cd bindings/c/ + mkdir build && cd build + cmake -DCMAKE_INSTALL_PREFIX=/usr .. \ + -DBUILD_DOC=true + make + make doc +} + +package() { + cd "$srcdir/$_gitname-build/bindings/c/build/" + + make DESTDIR="$pkgdir/" install + + install -Dm644 ../license.txt \ + ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE + + make clean +} + diff --git a/community-testing/frogatto/PKGBUILD b/community-testing/frogatto/PKGBUILD new file mode 100644 index 000000000..434ddd9fb --- /dev/null +++ b/community-testing/frogatto/PKGBUILD @@ -0,0 +1,46 @@ +# $Id: PKGBUILD 47897 2011-05-26 00:34:36Z svenstaro $ +# Maintainer: Sven-Hendrik Haase <sh@lutzhaase.com> +# Contributor: Tom Wambold <tom5760@gmail.com> + +pkgname='frogatto' +arch=('i686' 'x86_64') +pkgver=1.1 +pkgrel=3 +pkgdesc="An old-school 2d platformer game, starring a certain quixotic frog" +url="http://www.frogatto.com" +license=('GPL') +depends=('libgl' 'mesa' 'glew' 'sdl' 'sdl_image' 'sdl_ttf' 'sdl_mixer' 'libpng' 'boost-libs' 'frogatto-data') +makedepends=('boost') +source=(http://www.frogatto.com/files/$pkgname-$pkgver.tar.bz2 + frogatto + frogatto.desktop) +md5sums=('8c01c8a1d7ecf820a682eb684d8bf739' + '9ed2c9ea59e95fe3c0b3ad49e58f8890' + 'e31563b04748a39292a59aaad633ff58') + +build() { + cd "$srcdir/$pkgname-$pkgver" + + sed -i 's/ccache //g' Makefile + sed -i 's/-lprofiler//g' Makefile + sed -i 's/-lboost_regex-mt/-lboost_regex/g' Makefile + sed -i 's/-lboost_system-mt/-lboost_system/g' Makefile + sed -i 's/-lboost_thread-mt/-lboost_thread/g' Makefile + sed -i 's/-lboost_iostreams-mt/-lboost_iostreams/g' Makefile + make game server +} + +package() { + cd "$srcdir/$pkgname-$pkgver" + + install -D -m755 game $pkgdir/opt/frogatto/game + install -D -m755 server $pkgdir/opt/frogatto/server + + install -D -m644 LICENSE $pkgdir/usr/share/licenses/frogatto/LICENSE + + cd $srcdir + install -DT -m755 frogatto $pkgdir/usr/bin/frogatto + install -D -m644 frogatto.desktop $pkgdir/usr/share/applications/frogatto.desktop +} + +# vim:set ts=2 sw=2 et: diff --git a/community-testing/frogatto/frogatto b/community-testing/frogatto/frogatto new file mode 100644 index 000000000..0d741e0de --- /dev/null +++ b/community-testing/frogatto/frogatto @@ -0,0 +1,3 @@ +#!/bin/sh +cd /opt/frogatto +exec /opt/frogatto/game $* diff --git a/community-testing/frogatto/frogatto.desktop b/community-testing/frogatto/frogatto.desktop new file mode 100644 index 000000000..b0795467a --- /dev/null +++ b/community-testing/frogatto/frogatto.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Encoding=UTF-8 +Name=Frogatto +GenericName=Old-school 2D platformer +Comment=Old-school 2D platformer +Exec=/usr/bin/frogatto +Terminal=false +MultipleArgs=false +Type=Application +Icon=/opt/frogatto/images/window-icon.png +Categories=Game;ArcadeGame diff --git a/community-testing/gambas3/PKGBUILD b/community-testing/gambas3/PKGBUILD new file mode 100644 index 000000000..45dee93f7 --- /dev/null +++ b/community-testing/gambas3/PKGBUILD @@ -0,0 +1,1080 @@ +# Maintainer: Laurent Carlier <lordheavym@gmail.com> + +pkgbase=gambas3 +pkgname=('gambas3-runtime' 'gambas3-devel' 'gambas3-ide' 'gambas3-script' 'gambas3-examples' 'gambas3-gb-cairo' 'gambas3-gb-chart' + 'gambas3-gb-dbus' 'gambas3-gb-compress' 'gambas3-gb-crypt' 'gambas3-gb-db' 'gambas3-gb-db-form' 'gambas3-gb-db-mysql' + 'gambas3-gb-db-odbc' 'gambas3-gb-db-postgresql' 'gambas3-gb-db-sqlite2' 'gambas3-gb-db-sqlite3' + 'gambas3-gb-desktop' 'gambas3-gb-eval-highlight' 'gambas3-gb-form' + 'gambas3-gb-form-dialog' 'gambas3-gb-form-mdi' 'gambas3-gb-form-stock' 'gambas3-gb-gtk' 'gambas3-gb-gui' 'gambas3-gb-image' + 'gambas3-gb-image-effect' 'gambas3-gb-image-imlib' 'gambas3-gb-image-io' 'gambas3-gb-net' 'gambas3-gb-net-curl' + 'gambas3-gb-net-smtp' 'gambas3-gb-opengl' 'gambas3-gb-opengl-glu' 'gambas3-gb-opengl-glsl' 'gambas3-gb-option' 'gambas3-gb-pcre' + 'gambas3-gb-pdf' 'gambas3-gb-qt4' 'gambas3-gb-qt4-ext' 'gambas3-gb-qt4-opengl' 'gambas3-gb-qt4-webkit' + 'gambas3-gb-report' 'gambas3-gb-sdl' 'gambas3-gb-sdl-sound' 'gambas3-gb-settings' 'gambas3-gb-signal' + 'gambas3-gb-v4l' 'gambas3-gb-vb' 'gambas3-gb-xml' 'gambas3-gb-xml-rpc' 'gambas3-gb-xml-xslt' 'gambas3-gb-web') +pkgver=2.99.1 +pkgrel=3 +pkgdesc="A free development environment based on a Basic interpreter." +arch=('i686' 'x86_64') +url="http://gambas.sourceforge.net/" +license=('GPL') +groups=('gambas3') +makedepends=('intltool' 'mysql' 'postgresql' 'libffi' 'bzip2' 'glib2' 'v4l-utils' + 'zlib' 'mesa' 'libgl' 'glew' 'xdg-utils' 'qt' 'gtk2' 'imlib2' 'gdk-pixbuf2' + 'postgresql-libs' 'libmysqlclient' 'unixodbc' 'sqlite2' 'sqlite3' 'librsvg' + 'curl' 'poppler' 'sdl_mixer' 'sdl_ttf' 'libxtst' 'pcre' + 'libxcursor' 'libsm' 'dbus-core' 'libxml2' 'libxslt' 'libgnome-keyring') +options=('!emptydirs' '!makeflags') +source=("http://downloads.sourceforge.net/gambas/${pkgbase}-${pkgver}.tar.bz2" + 'gambas3-script.install' 'gambas3-runtime.install') +md5sums=('ab4c182b9d7dfec06b3a42bb002a779a' + 'b284be39d147ec799f1116a6abc068b4' + 'a8ec8e5a6aba7a7e453ce7a35c1800a9') + +build() { + cd ${srcdir}/${pkgbase}-${pkgver} + + ./reconf-all + ./configure --prefix=/usr -C + + make bindir=${pkgdir}/usr/bin +} + +package_gambas3-runtime() { + depends=('libffi' 'xdg-utils') + pkgdesc="Gambas3 runtime environment" + install=gambas3-runtime.install + + cd ${srcdir}/${pkgbase}-${pkgver}/main/gbc + make DESTDIR="${pkgdir}" install + + cd ../gbx + make DESTDIR="${pkgdir}" install + cd ../lib/debug + make DESTDIR="${pkgdir}" install + cd ../eval + make DESTDIR="${pkgdir}" install + cd ../draw + make DESTDIR="${pkgdir}" install + install -D -m644 ../gb.component \ + ${pkgdir}/usr/lib/gambas3 + + cd ${srcdir}/${pkgbase}-${pkgver}/main + ln -s gbx3 ${pkgdir}/usr/bin/gbr3 + gbc/gbi3 -r ${pkgdir}/usr gb + rm -f ${pkgdir}/usr/lib/gambas3/gb.{so*,la} + + ## needed for postinst with xdg-utils + install -d -m755 ${pkgdir}/usr/share/gambas3/mime + install -D -m644 mime/* \ + ${pkgdir}/usr/share/gambas3/mime/ + install -d -m755 ${pkgdir}/usr/share/gambas3/icons + install -D -m644 mime/application-x-gambas.png \ + ${pkgdir}/usr/share/gambas3/icons/application-x-gambas.png + + cd gbc + make DESTDIR="${pkgdir}" uninstall +} + +package_gambas3-devel() { + depends=('gambas3-runtime') + pkgdesc="Gambas3 development environment" + + cd ${srcdir}/${pkgbase}-${pkgver}/main/gbc + make DESTDIR="${pkgdir}" install +} + +package_gambas3-ide() { + depends=('gambas3-devel' 'gambas3-gb-db-form' 'gambas3-gb-desktop' 'gambas3-gb-eval-highlight' + 'gambas3-gb-form-dialog' 'gambas3-gb-settings' 'gambas3-gb-form-mdi' 'gambas3-gb-image-effect' + 'gambas3-gb-qt4-ext' 'gambas3-gb-qt4-webkit') + pkgdesc="Gambas3 Integrated Development Environment" + + cd ${srcdir}/${pkgbase}-${pkgver} + make XDG_UTILS='' DESTDIR="${pkgdir}" install + +#!! with the ide !! + install -D -m644 ${srcdir}/${pkgbase}-${pkgver}/app/desktop/gambas3.desktop \ + ${pkgdir}/usr/share/applications/gambas3.desktop + install -D -m644 ${srcdir}/${pkgbase}-${pkgver}/app/desktop/gambas3.png \ + ${pkgdir}/usr/share/pixmaps/gambas3.png + + rm -r ${pkgdir}/usr/bin/gb* + rm -r ${pkgdir}/usr/lib + rm -r ${pkgdir}/usr/share/gambas3 +} + +package_gambas3-script() { + depends=('gambas3-devel') + pkgdesc="Gambas3 scripter and server programs support" + install=gambas3-script.install + + cd ${srcdir}/${pkgbase}-${pkgver} + make XDG_UTILS='' DESTDIR="${pkgdir}" install + + ## needed for postinst with xdg-utils + cd ${srcdir}/${pkgbase}-${pkgver}/app/mime + install -d -m755 ${pkgdir}/usr/share/gambas3/mime + install -D -m644 *.xml ${pkgdir}/usr/share/gambas3/mime/ + install -D -m644 *.png ${pkgdir}/usr/share/gambas3/mime/ + ## + + rm -r ${pkgdir}/usr/bin/{gambas*,gb{[a-r]*,x*}} + rm -r ${pkgdir}/usr/lib + rm -r ${pkgdir}/usr/share/gambas3/[c-i]* +} + +package_gambas3-examples() { + depends=('gambas3-gb-cairo' 'gambas3-gb-chart' 'gambas3-gb-dbus' 'gambas3-gb-compress' 'gambas3-gb-crypt' 'gambas3-gb-db' + 'gambas3-gb-db-form' 'gambas3-gb-db-mysql' 'gambas3-gb-db-odbc' 'gambas3-gb-db-postgresql' 'gambas3-gb-db-sqlite2' + 'gambas3-gb-db-sqlite3' 'gambas3-gb-desktop' 'gambas3-gb-eval-highlight' 'gambas3-gb-form' 'gambas3-gb-form-dialog' + 'gambas3-gb-form-mdi' 'gambas3-gb-gtk' 'gambas3-gb-gui' 'gambas3-gb-image' 'gambas3-gb-image-effect' 'gambas3-gb-image-imlib' + 'gambas3-gb-image-io' 'gambas3-gb-net' 'gambas3-gb-net-curl' 'gambas3-gb-net-smtp' 'gambas3-gb-opengl' 'gambas3-gb-opengl-glsl' + 'gambas3-gb-option' 'gambas3-gb-pcre' 'gambas3-gb-pdf' 'gambas3-gb-qt4' 'gambas3-gb-qt4-ext' 'gambas3-gb-qt4-opengl' + 'gambas3-gb-qt4-webkit' 'gambas3-gb-report' 'gambas3-gb-sdl' 'gambas3-gb-sdl-sound' 'gambas3-gb-settings' 'gambas3-gb-signal' + 'gambas3-gb-v4l' 'gambas3-gb-vb' 'gambas3-gb-xml' 'gambas3-gb-xml-rpc' 'gambas3-gb-xml-xslt' 'gambas3-gb-web') + pkgdesc="Gambas3 examples" + + cd ${srcdir}/${pkgbase}-${pkgver} + make XDG_UTILS='' DESTDIR="${pkgdir}" install + + rm -r ${pkgdir}/usr/{bin,lib} + rm -r ${pkgdir}/usr/share/gambas3/{info,control,gb.sdl} +} + +package_gambas3-gb-cairo() { + depends=('gambas3-runtime' 'cairo') + pkgdesc="Gambas3 cairo component" + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/gb.cairo + make DESTDIR="${pkgdir}" install + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + ## +} + +package_gambas3-gb-chart() { + depends=('gambas3-gb-form') + pkgdesc="Gambas3 chart component" + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + cd ${srcdir}/${pkgbase}-${pkgver}/gb.qt4 + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/comp + make DESTDIR="${pkgdir}" install + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + cd ${srcdir}/${pkgbase}-${pkgver}/gb.qt4 + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + rm -r ${pkgdir}/usr/share/gambas3/control + rm -r ${pkgdir}/usr/lib/gambas3/gb.[d-w]* + rm -r ${pkgdir}/usr/share/gambas3/info/gb.[d-w]* + ## +} + +package_gambas3-gb-compress() { + depends=('gambas3-runtime' 'bzip2' 'zlib') + pkgdesc="Gambas3 compression support component" + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/gb.compress.bzlib2 + make DESTDIR="${pkgdir}" install + cd ${srcdir}/${pkgbase}-${pkgver}/gb.compress.zlib + make DESTDIR="${pkgdir}" install + + ## Workaround for splitting + rm -r ${pkgdir}/usr/bin + rm -r ${pkgdir}/usr/lib/gambas3/{gb.component,gb.[d-v]*} + rm -r ${pkgdir}/usr/share/gambas3/info/gb.[d-v]* + ## +} + +package_gambas3-gb-crypt() { + depends=('gambas3-runtime') + pkgdesc="Gambas3 MD5/DES crypting component" + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/gb.crypt + make XDG_UTILS='' DESTDIR="${pkgdir}" install + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + ## +} + +package_gambas3-gb-db() { + depends=('gambas3-runtime') + pkgdesc="Gambas3 database access component" + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + ## Workaround for splitting + rm -r ${pkgdir}/usr/bin + rm -r ${pkgdir}/usr/lib/gambas3/{gb.comp*,gb.d{e,r}*,gb.[e-z]*} + rm -r ${pkgdir}/usr/share/gambas3/info/{gb.comp*,gb.de*,gb.[e-z]*} + ## +} + +package_gambas3-gb-db-form() { + depends=('gambas3-gb-db' 'gambas3-gb-form') + pkgdesc="Gambas3 database form component" + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + cd ${srcdir}/${pkgbase}-${pkgver}/gb.qt4 + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/comp + make DESTDIR="${pkgdir}" install + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + cd ${srcdir}/${pkgbase}-${pkgver}/gb.qt4 + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + rm -r ${pkgdir}/usr/share/gambas3/control + rm -r ${pkgdir}/usr/lib/gambas3/gb.{chart*,[e-z]*} + rm -r ${pkgdir}/usr/share/gambas3/info/gb.{chart*,[e-z]*} + ## +} + +package_gambas3-gb-db-mysql() { + depends=('gambas3-gb-db' 'libmysqlclient') + pkgdesc="Gambas3 MySQL database access component" + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/gb.db.mysql + make XDG_UTILS='' DESTDIR="${pkgdir}" install + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + ## +} + +package_gambas3-gb-db-odbc() { + depends=('gambas3-gb-db' 'unixodbc') + pkgdesc="Gambas3 ODBC database access component" + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/gb.db.odbc + make XDG_UTILS='' DESTDIR="${pkgdir}" install + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + ## +} + +package_gambas3-gb-db-postgresql() { + depends=('gambas3-gb-db' 'postgresql-libs') + pkgdesc="Gambas3 PostgreSQL database access component" + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/gb.db.postgresql + make XDG_UTILS='' DESTDIR="${pkgdir}" install + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + ## +} + +package_gambas3-gb-db-sqlite2() { + depends=('gambas3-gb-db' 'sqlite2') + pkgdesc="Gambas3 Sqlite2 database access component" + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/gb.db.sqlite2 + make XDG_UTILS='' DESTDIR="${pkgdir}" install + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + ## +} + +package_gambas3-gb-db-sqlite3() { + depends=('gambas3-gb-db' 'sqlite3') + pkgdesc="Gambas3 Sqlite3 database access component" + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/gb.db.sqlite3 + make XDG_UTILS='' DESTDIR="${pkgdir}" install + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + ## +} + +package_gambas3-gb-desktop() { + depends=('gambas3-gb-image' 'libsm' 'libxtst' 'libgnome-keyring') + pkgdesc="Gambas3 desktop component" + + ## workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + cd ${srcdir}/${pkgbase}-${pkgver}/gb.qt4 + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/gb.desktop + make DESTDIR="${pkgdir}" install + + ## cleanup the workaround + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + cd ${srcdir}/${pkgbase}-${pkgver}/gb.qt4 + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + ## +} + +package_gambas3-gb-dbus() { + depends=('gambas3-runtime' 'dbus-core') + pkgdesc="Gambas3 DBUS component" + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/gb.dbus + make DESTDIR="${pkgdir}" install + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + ## +} + +package_gambas3-gb-eval-highlight() { + depends=('gambas3-runtime') + pkgdesc="Gambas3 expression evaluator highlight component" + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/comp + make DESTDIR="${pkgdir}" install + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + rm -r ${pkgdir}/usr/lib/gambas3/gb.[f-z]* + rm -r ${pkgdir}/usr/share/gambas3/info/gb.[f-z]* + ## +} + +package_gambas3-gb-form() { + depends=('gambas3-gb-gui') + pkgdesc="Gambas3 form component" + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + cd ${srcdir}/${pkgbase}-${pkgver}/gb.qt4 + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/comp + make DESTDIR="${pkgdir}" install + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + cd ${srcdir}/${pkgbase}-${pkgver}/gb.qt4 + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + rm -r ${pkgdir}/usr/share/gambas3/control/{gb.db*,gb.form.*,gb.report} + rm -r ${pkgdir}/usr/lib/gambas3/gb.{[c-e]*,[m-w]*,form.{d*,m*,s*}} + rm -r ${pkgdir}/usr/share/gambas3/info/gb.{[c-e]*,[m-w]*,form.{d*,m*,s*}} + ## +} + +package_gambas3-gb-form-dialog() { + depends=('gambas3-gb-form') + pkgdesc="Gambas3 form dialog component" + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + cd ${srcdir}/${pkgbase}-${pkgver}/gb.qt4 + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/comp + make DESTDIR="${pkgdir}" install + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + cd ${srcdir}/${pkgbase}-${pkgver}/gb.qt4 + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + rm -r ${pkgdir}/usr/share/gambas3/control + rm -r ${pkgdir}/usr/lib/gambas3/gb.{[c-e]*,[m-w]*,form.{c*,g*,m*,s*}} + rm -r ${pkgdir}/usr/share/gambas3/info/gb.{[c-e]*,[m-w]*,form.{i*,l*,m*,s*}} + ## +} + +package_gambas3-gb-form-mdi() { + depends=('gambas3-gb-form') + pkgdesc="Gambas3 form MDI component" + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + cd ${srcdir}/${pkgbase}-${pkgver}/gb.qt4 + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/comp + make DESTDIR="${pkgdir}" install + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + cd ${srcdir}/${pkgbase}-${pkgver}/gb.qt4 + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + rm -r ${pkgdir}/usr/share/gambas3/control/{gb.db*,gb.form,gb.report} + rm -r ${pkgdir}/usr/lib/gambas3/gb.{[c-e]*,[m-w]*,form.{c*,d*,g*,s*}} + rm -r ${pkgdir}/usr/share/gambas3/info/gb.{[c-e]*,[m-w]*,form.{i*,l*,d*,s*}} + ## +} + +package_gambas3-gb-form-stock() { + depends=('gambas3-runtime') + pkgdesc="Gambas3 default stock icons component" + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/comp + make DESTDIR="${pkgdir}" install + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + cd ${srcdir}/${pkgbase}-${pkgver}/gb.qt4 + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + rm -r ${pkgdir}/usr/lib/gambas3/gb.{eval*,[m-w]*} + rm -r ${pkgdir}/usr/share/gambas3/info/gb.{eval*,[m-w]*} + ## +} + +package_gambas3-gb-gtk() { + depends=('gambas3-gb-image' 'gtk2' 'librsvg') + pkgdesc="Gambas3 graphical GTK+ toolkit component" + + ## workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/gb.gtk + make XDG_UTILS='' DESTDIR="${pkgdir}" install + + ## cleanup the workaround + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + ## +} + +package_gambas3-gb-gui() { + depends=('gambas3-gb-qt4' 'gambas3-gb-gtk') + pkgdesc="Gambas3 automatic gui toolkit chooser" + + ## workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + cd ${srcdir}/${pkgbase}-${pkgver}/gb.qt4 + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/main/lib/gui + make XDG_UTILS='' DESTDIR="${pkgdir}" install + + ## cleanup the workaround + cd ${srcdir}/${pkgbase}-${pkgver}/gb.qt4 + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + rm -r ${pkgdir}/usr/bin + rm -r ${pkgdir}/usr/lib/gambas3/{gb.[c-e]*,gb.[i-z]*} + rm -r ${pkgdir}/usr/share/gambas3/info/{gb.[c-e]*,gb.[i-z]*} + ## +} + +package_gambas3-gb-image() { + depends=('gambas3-runtime') + pkgdesc="Gambas3 image component" + + ## workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + ## cleanup the workaround + rm -r ${pkgdir}/usr/bin + rm -r ${pkgdir}/usr/lib/gambas3/{gb.[c-g]*,gb.image.e*,gb.[j-z]*} + rm -r ${pkgdir}/usr/share/gambas3/info/{gb.[c-g]*,gb.info,gb.image.e*,gb.[j-z]*} + ## +} + +package_gambas3-gb-image-effect() { + depends=('gambas3-gb-image') + pkgdesc="Gambas3 image effect component" + + ## workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + ## cleanup the workaround + rm -r ${pkgdir}/usr/bin + rm -r ${pkgdir}/usr/lib/gambas3/{gb.[c-g]*,gb.image.{c*,l*,s*},gb.[j-z]*} + rm -r ${pkgdir}/usr/share/gambas3/info/{gb.[c-g]*,gb.info,gb.image.{i*,l*},gb.[j-z]*} + ## +} + +package_gambas3-gb-image-imlib() { + depends=('gambas3-gb-image' 'imlib2') + pkgdesc="Gambas3 imlib component" + + ## workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/gb.image.imlib + make XDG_UTILS='' DESTDIR="${pkgdir}" install + + ## cleanup the workaround + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + ## +} + +package_gambas3-gb-image-io() { + depends=('gambas3-gb-image' 'gdk-pixbuf2') + pkgdesc="Gambas3 input/output component" + + ## workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/gb.image.io + make XDG_UTILS='' DESTDIR="${pkgdir}" install + + ## cleanup the workaround + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + ## +} + +package_gambas3-gb-net() { + depends=('gambas3-runtime') + pkgdesc="Gambas3 network component" + + ## workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/gb.net + make XDG_UTILS='' DESTDIR="${pkgdir}" install + + ## cleanup the workaround + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + ## +} + +package_gambas3-gb-net-curl() { + depends=('gambas3-gb-net' 'curl') + pkgdesc="Gambas3 curl component" + + ## workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/gb.net.curl + make XDG_UTILS='' DESTDIR="${pkgdir}" install + + ## cleanup the workaround + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + ## +} + +package_gambas3-gb-net-smtp() { + depends=('gambas3-runtime' 'glib2') + pkgdesc="Gambas3 SMTP component" + + ## workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/gb.net.smtp + make XDG_UTILS='' DESTDIR="${pkgdir}" install + + ## cleanup the workaround + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + ## +} + +package_gambas3-gb-opengl() { + depends=('gambas3-runtime' 'libgl' 'glew') + pkgdesc="Gambas3 OpenGL component" + + ## workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/gb.opengl + make XDG_UTILS='' DESTDIR="${pkgdir}" install + + ## cleanup the workaround + cd ${srcdir}/${pkgbase}-${pkgver}/gb.opengl/src/glsl + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + ## +} + +package_gambas3-gb-opengl-glu() { + depends=('gambas3-gb-opengl') + pkgdesc="Gambas3 GL Utility component" + + ## workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/gb.opengl/src/glu + make XDG_UTILS='' DESTDIR="${pkgdir}" install + + ## cleanup the workaround + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + ## +} + +package_gambas3-gb-opengl-glsl() { + depends=('gambas3-gb-opengl') + pkgdesc="Gambas3 GLSL component" + + ## workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/gb.opengl/src/glsl + make XDG_UTILS='' DESTDIR="${pkgdir}" install + + ## cleanup the workaround + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + ## +} + +package_gambas3-gb-option() { + depends=('gambas3-runtime') + pkgdesc="Gambas3 getopt component" + + ## workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + ## cleanup the workaround + rm -r ${pkgdir}/usr/bin + rm -r ${pkgdir}/usr/lib/gambas3/{gb.[a-n]*,gb.[p-z]*} + rm -r ${pkgdir}/usr/share/gambas3/info/{gb.[a-n]*,gb.[p-z]*} + ## +} + +package_gambas3-gb-pcre() { + depends=('gambas3-runtime' 'pcre') + pkgdesc="Gambas3 PCRE component" + + ## workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/gb.pcre + make XDG_UTILS='' DESTDIR="${pkgdir}" install + + ## cleanup the workaround + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + ## +} + +package_gambas3-gb-pdf() { + depends=('gambas3-runtime' 'poppler') + pkgdesc="Gambas3 PDF component" + + ## workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/gb.pdf + make XDG_UTILS='' DESTDIR="${pkgdir}" install + + ## cleanup the workaround + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + ## +} + +package_gambas3-gb-qt4() { + depends=('gambas3-gb-image' 'qt') + pkgdesc="Gambas3 Qt4 toolkit component" + + ## workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/gb.qt4 + make XDG_UTILS='' DESTDIR="${pkgdir}" install + + ## cleanup the workaround + cd ${srcdir}/${pkgbase}-${pkgver}/gb.qt4/src/ext + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + cd ${srcdir}/${pkgbase}-${pkgver}/gb.qt4/src/opengl + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + cd ${srcdir}/${pkgbase}-${pkgver}/gb.qt4/src/webkit + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + ## +} + +package_gambas3-gb-qt4-ext() { + depends=('gambas3-gb-qt4') + pkgdesc="Gambas3 Qt4 toolkit extended component" + + ## workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/gb.qt4/src/ext + make XDG_UTILS='' DESTDIR="${pkgdir}" install + + ## cleanup the workaround + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + ## +} + +package_gambas3-gb-qt4-opengl() { + depends=('gambas3-gb-qt4' 'libgl') + pkgdesc="Gambas3 Qt4 toolkit OpenGL component" + + ## workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/gb.qt4/src/opengl + make XDG_UTILS='' DESTDIR="${pkgdir}" install + + ## cleanup the workaround + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + ## +} + +package_gambas3-gb-qt4-webkit() { + depends=('gambas3-gb-qt4') + pkgdesc="Gambas3 Qt4 toolkit webkit component" + + ## workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/gb.qt4/src/webkit + make XDG_UTILS='' DESTDIR="${pkgdir}" install + + ## cleanup the workaround + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + ## +} + +package_gambas3-gb-report() { + depends=('gambas3-gb-form' 'gambas3-gb-image-io') + pkgdesc="Gambas3 report component" + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + cd ${srcdir}/${pkgbase}-${pkgver}/gb.qt4 + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/comp + make DESTDIR="${pkgdir}" install + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + cd ${srcdir}/${pkgbase}-${pkgver}/gb.qt4 + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + rm -r ${pkgdir}/usr/share/gambas3/control/gb.[d-f]* + rm -r ${pkgdir}/usr/lib/gambas3/gb.{[c-m]*,[s-w]*} + rm -r ${pkgdir}/usr/share/gambas3/info/gb.{[c-m]*,[s-w]*} + ## +} + +package_gambas3-gb-sdl() { + depends=('gambas3-gb-image-io' 'sdl_ttf' 'libxcursor' 'glew' 'libgl') + pkgdesc="Gambas3 SDL component" + + ## workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/gb.sdl + make XDG_UTILS='' DESTDIR="${pkgdir}" install + + ## cleanup the workaround + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + ## +} + +package_gambas3-gb-sdl-sound() { + depends=('gambas3-runtime' 'sdl_mixer') + pkgdesc="Gambas3 SDL sound component" + + ## workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/gb.sdl.sound + make XDG_UTILS='' DESTDIR="${pkgdir}" install + + ## cleanup the workaround + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + ## +} + +package_gambas3-gb-settings() { + depends=('gambas3-runtime') + pkgdesc="Gambas3 setting component" + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/comp + make DESTDIR="${pkgdir}" install + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + rm -r ${pkgdir}/usr/lib/gambas3/gb.{[c-r]*,[t-w]*} + rm -r ${pkgdir}/usr/share/gambas3/info/gb.{[c-r]*,[t-w]*} + ## +} + +package_gambas3-gb-signal() { + depends=('gambas3-runtime') + pkgdesc="Gambas3 signal component" + + ## workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + ## cleanup the workaround + rm -r ${pkgdir}/usr/bin + rm -r ${pkgdir}/usr/lib/gambas3/{gb.[c-r]*,gb.[t-z]*,gb.so*} + rm -r ${pkgdir}/usr/share/gambas3/info/{gb.[c-r]*,gb.[t-z]*} + ## +} + +package_gambas3-gb-v4l() { + depends=('gambas3-runtime' 'v4l-utils' 'libjpeg' 'libpng') + pkgdesc="Gambas3 video4linux component" + + ## workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/gb.v4l + make XDG_UTILS='' DESTDIR="${pkgdir}" install + + ## cleanup the workaround + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + ## +} + +package_gambas3-gb-vb() { + depends=('gambas3-runtime') + pkgdesc="Gambas3 VB transitional component" + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + ## Workaround for splitting + rm -r ${pkgdir}/usr/bin + rm -r ${pkgdir}/usr/lib/gambas3/gb.[a-u]* + rm -r ${pkgdir}/usr/share/gambas3/info/gb.[a-u]* + ## +} + +package_gambas3-gb-xml() { + depends=('gambas3-runtime' 'libxml2') + pkgdesc="Gambas3 XML component" + + ## workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/gb.xml + make XDG_UTILS='' DESTDIR="${pkgdir}" install + + ## cleanup the workaround + cd ${srcdir}/${pkgbase}-${pkgver}/gb.xml/src/xslt + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + cd ${srcdir}/${pkgbase}-${pkgver}/gb.xml/src/rpc + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + ## +} + +package_gambas3-gb-xml-rpc() { + depends=('gambas3-gb-xml' 'gambas3-gb-net' 'gambas3-gb-net-curl') + pkgdesc="Gambas3 XML-RPC component" + + ## workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + cd ${srcdir}/${pkgbase}-${pkgver}/gb.net + make XDG_UTILS='' DESTDIR="${pkgdir}" install + cd ${srcdir}/${pkgbase}-${pkgver}/gb.net.curl + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/gb.xml + make XDG_UTILS='' DESTDIR="${pkgdir}" install + + ## cleanup the workaround + cd ${srcdir}/${pkgbase}-${pkgver}/gb.net + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + cd ${srcdir}/${pkgbase}-${pkgver}/gb.net.curl + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + rm -r ${pkgdir}/usr/lib/gambas3/gb.xml.{[c-l]*,xslt*,so*} + rm -r ${pkgdir}/usr/share/gambas3/info/gb.xml.{[i-l]*,x*} + ## +} + +package_gambas3-gb-xml-xslt() { + depends=('gambas3-gb-xml' 'libxslt') + pkgdesc="Gambas3 XML-XSLT component" + + ## workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/gb.xml/src/xslt + make XDG_UTILS='' DESTDIR="${pkgdir}" install + + ## cleanup the workaround + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + ## +} + +package_gambas3-gb-web() { + depends=('gambas3-runtime') + pkgdesc="Gambas3 CGI component" + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" install + ## + + cd ${srcdir}/${pkgbase}-${pkgver}/comp + make DESTDIR="${pkgdir}" install + + ## Workaround for splitting + cd ${srcdir}/${pkgbase}-${pkgver}/main + make XDG_UTILS='' DESTDIR="${pkgdir}" uninstall + rm -r ${pkgdir}/usr/lib/gambas3/gb.[c-v]* + rm -r ${pkgdir}/usr/share/gambas3/info/gb.[c-v]* + ## +} diff --git a/community-testing/gambas3/gambas3-runtime.install b/community-testing/gambas3/gambas3-runtime.install new file mode 100644 index 000000000..c6aad0d55 --- /dev/null +++ b/community-testing/gambas3/gambas3-runtime.install @@ -0,0 +1,12 @@ +post_install() { + xdg-icon-resource install --context mimetypes --size 64 \ + /usr/share/gambas3/mime/application-x-gambas.png application-x-gambas + xdg-mime install /usr/share/gambas3/mime/application-x-gambas.xml +} + +pre_remove() { + xdg-icon-resource uninstall --context mimetypes --size 64 application-x-gambas + xdg-mime uninstall /usr/share/gambas3/mime/application-x-gambas.xml +} + +# vim:set ts=2 sw=2 et: diff --git a/community-testing/gambas3/gambas3-script.install b/community-testing/gambas3/gambas3-script.install new file mode 100644 index 000000000..77c1aa52f --- /dev/null +++ b/community-testing/gambas3/gambas3-script.install @@ -0,0 +1,15 @@ +post_install() { + xdg-icon-resource install --context mimetypes --size 64 \ + /usr/share/gambas3/mime/application-x-gambasscript.png application-x-gambasscript + xdg-icon-resource install --context mimetypes --size 64 \ + /usr/share/gambas3/mime/application-x-gambasserverpage.png application-x-gambasserverpage + xdg-mime install /usr/share/gambas3/mime/application-x-gambasscript.xml + xdg-mime install /usr/share/gambas3/mime/application-x-gambasserverpage.xml +} + +pre_remove() { + xdg-icon-resource uninstall --context mimetypes --size 64 application-x-gambasscript + xdg-icon-resource uninstall --context mimetypes --size 64 application-x-gambasserverpage + xdg-mime uninstall /usr/share/gambas3/mime/application-x-gambasscript.xml + xdg-mime uninstall /usr/share/gambas3/mime/application-x-gambasserverpage.xml +} diff --git a/community-testing/gambas3/gambas3.install b/community-testing/gambas3/gambas3.install new file mode 100644 index 000000000..c6aad0d55 --- /dev/null +++ b/community-testing/gambas3/gambas3.install @@ -0,0 +1,12 @@ +post_install() { + xdg-icon-resource install --context mimetypes --size 64 \ + /usr/share/gambas3/mime/application-x-gambas.png application-x-gambas + xdg-mime install /usr/share/gambas3/mime/application-x-gambas.xml +} + +pre_remove() { + xdg-icon-resource uninstall --context mimetypes --size 64 application-x-gambas + xdg-mime uninstall /usr/share/gambas3/mime/application-x-gambas.xml +} + +# vim:set ts=2 sw=2 et: diff --git a/community-testing/gource/PKGBUILD b/community-testing/gource/PKGBUILD new file mode 100644 index 000000000..2c357a634 --- /dev/null +++ b/community-testing/gource/PKGBUILD @@ -0,0 +1,28 @@ +# $Id: PKGBUILD 47914 2011-05-26 01:27:25Z svenstaro $ +# Maintainer: Sven-Hendrik Haase <sh@lutzhaase.com> +# Contributor: Jose Valecillos <valecillosjg (at) gmail (dot) com> +# Contributor: Olivier Ramonat <olivier at ramonat dot fr> +pkgname=gource +pkgver=0.34 +pkgrel=2 +pkgdesc="software version control visualization" +license=(GPL3) +arch=(i686 x86_64) +url=http://code.google.com/p/gource/ +depends=('ftgl' 'sdl' 'sdl_image' 'pcre' 'glew') +source=(http://gource.googlecode.com/files/$pkgname-$pkgver.tar.gz) +md5sums=('292a62d687874e871067e985d717d71a') + +build() { + cd "$srcdir/$pkgname-$pkgver" + + ./configure --prefix=/usr + make +} + +package() { + cd "$srcdir/$pkgname-$pkgver" + + make DESTDIR=$pkgdir install +} +# vim: ts=2:sw=2 et: diff --git a/community-testing/lightspark/PKGBUILD b/community-testing/lightspark/PKGBUILD new file mode 100644 index 000000000..d583b36bb --- /dev/null +++ b/community-testing/lightspark/PKGBUILD @@ -0,0 +1,38 @@ +# Maintainer: Thomas Dziedzic < gostrc at gmail > +# Contributor: Jan "heftig" Steffens <jan.steffens@gmail.com> + +pkgname=lightspark +pkgver=0.4.8.1 +pkgrel=2 +pkgdesc='An alternative Flash Player for Linux.' +arch=('i686' 'x86_64') +url='http://lightspark.sourceforge.net' +license=('LGPL3') +conflicts=('lightspark-git') +depends=('mesa' 'ftgl' 'sdl' 'gtk2' 'curl' 'zlib' 'ffmpeg' 'glew' 'pcre' 'libpulse' 'libffi' 'boost-libs' 'glibmm' 'gtkglext' 'desktop-file-utils' 'libxml++' 'libxml2') +makedepends=('cmake' 'nasm' 'xulrunner' 'llvm' 'glproto' 'boost' 'pkgconfig' 'fontconfig') +optdepends=('gnash-gtk: fallback support') +install="lightspark.install" +source=("http://launchpad.net/lightspark/trunk/lightspark-${pkgver:0:5}/+download/lightspark-${pkgver}.tar.gz") +md5sums=('296b859ea2b5c126e899e609014f2786') + +build() { + rm -rf build + mkdir build + cd build + + cmake \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCOMPILE_PLUGIN=1 \ + -DCMAKE_BUILD_TYPE=Release \ + -DGNASH_EXE_PATH=/usr/bin/gtk-gnash \ + ../lightspark-${pkgver} + + make +} + +package() { + cd build + + make DESTDIR=${pkgdir} install +} diff --git a/community-testing/lightspark/lightspark.install b/community-testing/lightspark/lightspark.install new file mode 100644 index 000000000..75e2b7b55 --- /dev/null +++ b/community-testing/lightspark/lightspark.install @@ -0,0 +1,13 @@ +post_install() { + update-desktop-database -q + gtk-update-icon-cache -q -t -f usr/share/icons/hicolor +} + +post_upgrade() { + post_install $1 +} + +post_remove() { + update-desktop-database -q + gtk-update-icon-cache -q -t -f usr/share/icons/hicolor +} diff --git a/community-testing/performous/PKGBUILD b/community-testing/performous/PKGBUILD new file mode 100644 index 000000000..01aab85d1 --- /dev/null +++ b/community-testing/performous/PKGBUILD @@ -0,0 +1,40 @@ +# $Id: PKGBUILD 47952 2011-05-26 11:21:56Z lcarlier $ +# Maintainer : Laurent Carlier <lordheavym@gmail.com> +# Contributor: Christoph Zeiler <archNOSPAM_at_moonblade.dot.org> + +pkgname=performous +pkgver=0.6.1 +pkgrel=6 +pkgdesc='A free game like "Singstar", "Rockband" or "Stepmania"' +arch=('i686' 'x86_64') +url="http://performous.org/" +license=('GPL') +depends=('boost-libs>=1.46' 'sdl' 'jack' 'imagemagick' 'ffmpeg' 'glew' 'libxml++' 'portaudio' 'portmidi' \ + 'opencv' 'librsvg' 'libjpeg' 'libpng' 'cairo') +makedepends=('cmake' 'pkgconfig' 'help2man' 'boost>=1.46') +optdepends=('performous-freesongs: free songs for performous') +source=(http://sourceforge.net/projects/$pkgname/files/$pkgname/$pkgver/Performous-$pkgver-Source.tar.bz2) +md5sums=('451a759de77984b5a699e91107fe52e2') + +build() { + cd ${srcdir}/Performous-${pkgver}-Source + + mkdir -p build + cd build + + # fix config loading with libxml++ + export LDFLAGS=${LDFLAGS/-Wl,--as-needed/} + # fix to built against boost 1.46, upstream (git) now support v3 + export CXXFLAGS="${CXXFLAGS} -DBOOST_FILESYSTEM_VERSION=2" + + cmake -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr .. + + make +} + +package() { + cd ${srcdir}/Performous-${pkgver}-Source/build + + make DESTDIR="$pkgdir" install +} diff --git a/community-testing/root/PKGBUILD b/community-testing/root/PKGBUILD new file mode 100644 index 000000000..4f46232cf --- /dev/null +++ b/community-testing/root/PKGBUILD @@ -0,0 +1,78 @@ +# Maintainer: Thomas Dziedzic < gostrc at gmail > +# Contributor: Sebastian Voecking <voeck@web.de> + +pkgname=root +pkgver=5.28.00d +pkgrel=2 +pkgdesc='C++ data analysis framework and interpreter from CERN.' +arch=('i686' 'x86_64') +url='http://root.cern.ch' +license=('LGPL2.1') +depends=('avahi' 'desktop-file-utils' 'ftgl' 'giflib' 'glew' 'graphviz' 'gsl' 'libldap' 'libmysqlclient' + 'libxft' 'postgresql-libs' 'python2' 'unixodbc' 'shared-mime-info' 'xmlrpc-c' 'xorg-fonts-75dpi' 'mesa' 'gcc-fortran') +makedepends=('fftw') +install='root.install' +source=("ftp://root.cern.ch/root/root_v${pkgver}.source.tar.gz" + 'root.sh' + 'rootd' + 'root.desktop' + 'root.xml') +md5sums=('53505fcb256df38526d446916e6efc15' + '0e883ad44f99da9bc7c23bc102800b62' + 'efd06bfa230cc2194b38e0c8939e72af' + 'ac61b17395d75a2705fefa2ef841a6bf' + 'e2cf69b204192b5889ceb5b4dedc66f7') + +build() { + cd ${pkgname} + + if [ ${CARCH} == 'i686' ]; then + TARGET=linux; + else + TARGET=linuxx8664gcc; + fi + + # python2 switch + find . -type f -exec sed -i -e 's/python -O/python2 -O/g' -e 's/python -c/python2 -c/g' {} \; + sed -i 's/python 2/python2 2/g' configure + + ./configure \ + ${TARGET} \ + --prefix=/usr \ + --disable-builtin-glew \ + --disable-builtin-freetype \ + --disable-builtin-ftgl \ + --disable-builtin-pcre \ + --disable-builtin-zlib \ + --enable-gdml \ + --enable-gsl-shared \ + --enable-minuit2 \ + --enable-soversion \ + --enable-roofit \ + --enable-python \ + --with-python-incdir=/usr/include/python2.7 \ + --with-python-libdir=/usr/lib + #--disable-krb5 + # disable krb5 because of compile error + + # move from aur + #--disable-builtin-afterimage \ + + #--with-python-incdir=/usr/include/python2.7/Python.h \ + #--with-python-libdir=/usr/lib/libpython2.7.so + + make +} + +package() { + cd ${pkgname} + + make DESTDIR=${pkgdir} install + + install -D ${srcdir}/root.sh ${pkgdir}/etc/profile.d/root.sh + install -D ${srcdir}/rootd ${pkgdir}/etc/rc.d/rootd + install -D -m644 ${srcdir}/root.desktop ${pkgdir}/usr/share/applications/root.desktop + install -D -m644 ${srcdir}/root.xml ${pkgdir}/usr/share/mime/packages/root.xml + + rm -rf ${pkgdir}/etc/root/daemons +} diff --git a/community-testing/root/root.desktop b/community-testing/root/root.desktop new file mode 100644 index 000000000..ca382111c --- /dev/null +++ b/community-testing/root/root.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Application +Exec=root +Terminal=true +Name=ROOT +Name[de]=ROOT +Comment=An object-oriented data analysis framework +Comment[de]=Ein objektorientiertes Framework zur Datenanalyse +StartupNotify=true +MimeType=application/x-root;text/x-c++src +Categories=Science;Development;Application; diff --git a/community-testing/root/root.install b/community-testing/root/root.install new file mode 100644 index 000000000..457af7314 --- /dev/null +++ b/community-testing/root/root.install @@ -0,0 +1,17 @@ +post_install() { + if ! [ `grep '/usr/lib/root' etc/ld.so.conf` ]; then + echo "/usr/lib/root" >> etc/ld.so.conf + sbin/ldconfig -r . + fi + + update-desktop-database >/dev/null + + update-mime-database /usr/share/mime >/dev/null +} + +pre_remove() { + cat etc/ld.so.conf | grep -v '/usr/lib/root' >/tmp/.pacroot + mv /tmp/.pacroot etc/ld.so.conf + chmod 644 etc/ld.so.conf + sbin/ldconfig -r . +} diff --git a/community-testing/root/root.sh b/community-testing/root/root.sh new file mode 100644 index 000000000..685e6036b --- /dev/null +++ b/community-testing/root/root.sh @@ -0,0 +1,5 @@ +if [ $PYTHONPATH ]; then + export PYTHONPATH=$PYTHONPATH:/usr/lib/root; +else + export PYTHONPATH=/usr/lib/root; +fi diff --git a/community-testing/root/root.xml b/community-testing/root/root.xml new file mode 100644 index 000000000..af8dd69c5 --- /dev/null +++ b/community-testing/root/root.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info"> + <mime-type type="application/x-root"> + <comment>ROOT file</comment> + <comment xml:lang="de">ROOT-Datei</comment> + <glob pattern="*.root"/> + <magic priority="80"> + <match value="root" type="string" offset="0:64"/> + </magic> + </mime-type> +</mime-info> diff --git a/community-testing/root/rootd b/community-testing/root/rootd new file mode 100755 index 000000000..fb2c3388c --- /dev/null +++ b/community-testing/root/rootd @@ -0,0 +1,37 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +PID=`pidof -o %PPID /usr/sbin/rootd` +case "$1" in + start) + stat_busy "Starting ROOT file server daemon" + [ -z "$PID" ] && /usr/bin/rootd >>/var/log/root.log 2>&1 + if [ $? -gt 0 ]; then + stat_fail + else + PID=`pidof -o %PPID /usr/sbin/rootd` + echo $PID >/var/run/rootd.pid + add_daemon rootd + stat_done + fi + ;; + stop) + stat_busy "Stopping ROOT file server daemon" + [ ! -z "$PID" ] && kill $PID &>/dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon rootd + stat_done + fi + ;; + restart) + $0 stop + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac +exit 0 diff --git a/community-testing/rss-glx/PKGBUILD b/community-testing/rss-glx/PKGBUILD new file mode 100644 index 000000000..37c440cf4 --- /dev/null +++ b/community-testing/rss-glx/PKGBUILD @@ -0,0 +1,45 @@ +# $Id: PKGBUILD 48037 2011-05-27 16:21:40Z spupykin $ +# Maintainer : Ionut Biru <ibiru@archlinux.org> +# Contributor: Corrado 'bardo' Primier <corrado.primier@mail.polimi.it> +# Contributor: Tate "Tatey" Johnson <tatey86@tpg.com.au> + +pkgname=rss-glx +pkgver=0.9.1 +pkgrel=6 +pkgdesc="The Really Slick Screensavers port to GLX" +arch=('i686' 'x86_64') +url="http://rss-glx.sourceforge.net/" +license=('GPL') +depends=('desktop-file-utils' 'freealut' 'glew' 'imagemagick') +optdepends=('xscreensaver: xscreensaver integration') +install=rss-glx.install +options=('!libtool') +source=(http://downloads.sourceforge.net/rss-glx/${pkgname}_${pkgver}.tar.bz2 + rss-glx-desktops.tar.bz2) +md5sums=('a772bd143cd8d141edf4d9eff9860ab3' + '4211215c9a4918b0dff30a7000647dd9') + +build() { + cd ${srcdir}/${pkgname}_${pkgver} + + [ "$CARCH" = "x86_64" ] && (sed -i -e 's|@LIBS@|@LIBS@ -fopenmp|g' src/Makefile.in) + + ./configure --prefix=/usr \ + --mandir=/usr/share/man \ + --program-transform-name='s/plasma/plasma_rss/' \ + --with-configdir=/usr/share/xscreensaver/config \ + --with-kdessconfigdir=/usr/share/applnk/System/ScreenSavers \ + --enable-shared=yes --enable-static=no + make CFLAGS="$CFLAGS -I/usr/include/ImageMagick" + make DESTDIR=${pkgdir} install + + # FS#18300 + install -d ${pkgdir}/usr/lib/xscreensaver/ + list=$(ls ${pkgdir}/usr/bin --ignore rss-glx_install.pl) + for i in $list; do + ln -s "/usr/bin/$i" "$pkgdir/usr/lib/xscreensaver/" + done + + install -d ${pkgdir}/usr/share/applications/screensavers + install -m644 ${srcdir}/${pkgname}-desktops/*.desktop ${pkgdir}/usr/share/applications/screensavers +} diff --git a/community-testing/rss-glx/rss-glx-desktops.tar.bz2 b/community-testing/rss-glx/rss-glx-desktops.tar.bz2 Binary files differnew file mode 100644 index 000000000..940fd5277 --- /dev/null +++ b/community-testing/rss-glx/rss-glx-desktops.tar.bz2 diff --git a/community-testing/rss-glx/rss-glx.install b/community-testing/rss-glx/rss-glx.install new file mode 100644 index 000000000..758642618 --- /dev/null +++ b/community-testing/rss-glx/rss-glx.install @@ -0,0 +1,12 @@ +post_install() { + cat << 'EOM' + --> If you want to integrate the RSS screen savers with xscreensaver + --> for your user, then install the xscreensaver package and launch + --> the command "rss-glx_install.pl" +EOM + update-desktop-database -q +} + +post_remove() { + update-desktop-database -q +} diff --git a/community-testing/sfml/PKGBUILD b/community-testing/sfml/PKGBUILD new file mode 100644 index 000000000..806e373d4 --- /dev/null +++ b/community-testing/sfml/PKGBUILD @@ -0,0 +1,60 @@ +# $Id: PKGBUILD 47923 2011-05-26 03:12:35Z svenstaro $ +# Maintainer: Sven-Hendrik Haase <sh@lutzhaase.com> +# Contributor: Ondrej Martinak <omartinak@gmail.com> + +pkgname=sfml + +_git=true + +if [[ "${_git}" = "true" ]]; then + pkgver=1.99.git20110526 +fi + +pkgrel=1 +pkgdesc='A simple, fast, cross-platform, and object-oriented multimedia API' +arch=('i686' 'x86_64') +url='http://www.sfml-dev.org/' +license=('zlib') +depends=('libsndfile' 'libxrandr' 'libjpeg' 'openal' 'glew' 'freetype2') +makedepends=('git' 'mesa' 'cmake' 'doxygen') + +_gitroot='https://github.com/LaurentGomila/SFML.git' +_gitname='SFML' + +build() { + cd "$srcdir" + msg "Connecting to GIT server...." + + if [ -d $_gitname ] ; then + cd $_gitname && git pull origin + msg "The local files are updated." + else + git clone $_gitroot + cd $_gitname + fi + + msg "GIT checkout done or server timeout" + msg "Starting make..." + + rm -rf "$srcdir/$_gitname-build" + cp -r "$srcdir/$_gitname" "$srcdir/$_gitname-build" + cd "$srcdir/$_gitname-build" + + mkdir build && cd build + cmake -DCMAKE_INSTALL_PREFIX=/usr .. \ + -DBUILD_DOC=true \ + -DBUILD_EXAMPLES=true + make + make doc +} + +package() { + cd "$srcdir/$_gitname-build/build" + make DESTDIR="$pkgdir/" install + + install -Dm644 ../license.txt \ + ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE + + make clean +} + diff --git a/community-testing/sfml/sfml.install b/community-testing/sfml/sfml.install new file mode 100644 index 000000000..9d18b5251 --- /dev/null +++ b/community-testing/sfml/sfml.install @@ -0,0 +1,3 @@ +post_install() { + echo "To view the SFML samples, go to /opt/SFML/samples/bin and run them individually" +} diff --git a/community-testing/sfml/use-system-libs.patch b/community-testing/sfml/use-system-libs.patch new file mode 100644 index 000000000..5d3200225 --- /dev/null +++ b/community-testing/sfml/use-system-libs.patch @@ -0,0 +1,70 @@ +Only in SFML-1.6-old/lib: libsfml-graphics.so.1.6 +Binary files SFML-1.6-old/lib/libsfml-network.so.1.6 and SFML-1.6/lib/libsfml-network.so.1.6 differ +Binary files SFML-1.6-old/lib/libsfml-system.so.1.6 and SFML-1.6/lib/libsfml-system.so.1.6 differ +Binary files SFML-1.6-old/lib/libsfml-window.so.1.6 and SFML-1.6/lib/libsfml-window.so.1.6 differ +diff -ur SFML-1.6-old/src/SFML/Graphics/ImageLoader.cpp SFML-1.6/src/SFML/Graphics/ImageLoader.cpp +--- SFML-1.6-old/src/SFML/Graphics/ImageLoader.cpp 2010-01-27 15:00:05.000000000 +0100 ++++ SFML-1.6/src/SFML/Graphics/ImageLoader.cpp 2010-08-16 12:27:33.983627625 +0200 +@@ -28,10 +28,10 @@ + #include <SFML/Graphics/ImageLoader.hpp>
+ extern "C"
+ {
+- #include <SFML/Graphics/libjpeg/jpeglib.h>
+- #include <SFML/Graphics/libjpeg/jerror.h>
++ #include <jpeglib.h>
++ #include <jerror.h>
+ }
+-#include <SFML/Graphics/libpng/png.h>
++#include <png.h>
+ #include <SFML/Graphics/SOIL/SOIL.h>
+ #include <iostream>
+
+Only in SFML-1.6-old/src/SFML/Graphics: ImageLoader.cpp.rej +diff -ur SFML-1.6-old/src/SFML/Graphics/Makefile SFML-1.6/src/SFML/Graphics/Makefile +--- SFML-1.6-old/src/SFML/Graphics/Makefile 2010-01-27 15:00:05.000000000 +0100 ++++ SFML-1.6/src/SFML/Graphics/Makefile 2010-08-16 12:25:13.663501212 +0200 +@@ -1,15 +1,5 @@ + SRC = $(wildcard *.cpp)
+-SRCGLEW = $(wildcard ./GLEW/*.c)
+-SRCJPEG = $(wildcard ./libjpeg/*.c)
+-SRCPNG = $(wildcard ./libpng/*.c)
+-SRCSOIL = $(wildcard ./SOIL/*.c)
+-SRCZLIB = $(wildcard ./zlib/*.c)
+ OBJ = $(SRC:.cpp=.o)
+-OBJGLEW = $(SRCGLEW:.c=.o)
+-OBJJPEG = $(SRCJPEG:.c=.o)
+-OBJPNG = $(SRCPNG:.c=.o)
+-OBJSOIL = $(SRCSOIL:.c=.o)
+-OBJZLIB = $(SRCZLIB:.c=.o)
+
+ ifeq ($(STATIC), yes)
+ LIB = libsfml-graphics-s.a
+@@ -23,22 +13,19 @@ +
+ all: $(LIB)
+
+-libsfml-graphics-s.a: $(OBJ) $(OBJGLEW) $(OBJJPEG) $(OBJPNG) $(OBJSOIL) $(OBJZLIB)
+- $(AR) $(ARFLAGS) $(LIBNAME) $(OBJ) $(OBJGLEW) $(OBJJPEG) $(OBJPNG) $(OBJSOIL) $(OBJZLIB)
++libsfml-graphics-s.a: $(OBJ)
++ $(AR) $(ARFLAGS) $(LIBNAME) $(OBJ) -static -lGLEW -ljpeg -lpng -lsoil -lz -lSOIL
+
+-libsfml-graphics.so: $(OBJ) $(OBJGLEW) $(OBJJPEG) $(OBJPNG) $(OBJSOIL) $(OBJZLIB)
+- $(CPP) $(LDFLAGS) -Wl,-soname,$(LIB).$(VERSION) -o $(LIBNAME) $(OBJ) $(OBJGLEW) $(OBJJPEG) $(OBJPNG) $(OBJSOIL) $(OBJZLIB) -lfreetype -lX11 -lGL
++libsfml-graphics.so: $(OBJ)
++ $(CPP) $(LDFLAGS) -Wl,-soname,$(LIB).$(VERSION) -o $(LIBNAME) $(OBJ) -lGLEW -ljpeg -lpng -lSOIL -lz -lfreetype -lX11 -lGL
+
+ $(OBJ): %.o: %.cpp
+ $(CPP) -o $@ -c $< $(CFLAGS) -I/usr/include/freetype2
+
+-$(OBJGLEW) $(OBJJPEG) $(OBJPNG) $(OBJSOIL) $(OBJZLIB): %.o: %.c
+- $(CC) -o $@ -c $< $(CFLAGSEXT) -DSTBI_FAILURE_USERMSG
+-
+ .PHONY: clean mrproper
+
+ clean:
+- @rm -rf $(OBJ) $(OBJGLEW) $(OBJJPEG) $(OBJPNG) $(OBJSOIL) $(OBJZLIB)
++ @rm -rf $(OBJ)
+
+ mrproper: clean
+ @rm -rf $(LIBNAME)
+Only in SFML-1.6-old/src/SFML/Graphics: Makefile.rej diff --git a/community-testing/spring/PKGBUILD b/community-testing/spring/PKGBUILD new file mode 100644 index 000000000..38ce61979 --- /dev/null +++ b/community-testing/spring/PKGBUILD @@ -0,0 +1,45 @@ +# $Id: PKGBUILD 47908 2011-05-26 01:20:52Z svenstaro $ +# Maintainer: Sven-Hendrik Haase <sh@lutzhaase.com> +# Contributor: Arkham <arkham at archlinux dot us> +# Contributor: Christoph Zeiler <archNOSPAM_at_moonblade.dot.org> + +pkgname=spring +pkgver=0.82.7.1 +pkgrel=4 +pkgdesc='A free 3D real-time-strategy (RTS) game engine' +arch=('i686' 'x86_64') +url="http://springrts.com/" +license=('GPL') +depends=('openal' 'glew' 'boost-libs' 'freetype2' 'devil' 'libvorbis') +makedepends=('boost' 'cmake' 'zip' 'lzma-utils' 'p7zip' 'python' 'java-environment') +optdepends=('python: python-based bots' + 'java-runtime: java-based bots') +source=(http://downloads.sourceforge.net/sourceforge/springrts/${pkgname}_${pkgver}_src.tar.lzma + gcc46.patch) +md5sums=('378cf0b18a5dd5b840964e5945778503' + 'e9586b611db1ed04fe4f0c5982fda7d2') + +build() { + bsdtar -xf ${pkgname}_${pkgver}_src.tar.lzma + + cd spring_$pkgver + + sed -i '1i\ + #include <list>' rts/lib/lobby/Connection.h + patch -Np1 < $srcdir/gcc46.patch + cmake . \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DDATADIR=share/spring + make +} + +package() { + cd spring_$pkgver + + make DESTDIR=$pkgdir install + + install -d $pkgdir/etc/spring + echo '$HOME/.spring' > $pkgdir/etc/spring/datadir +} + +# vim sw=2:ts=2 et: diff --git a/community-testing/spring/gcc46.patch b/community-testing/spring/gcc46.patch new file mode 100644 index 000000000..4f6865cac --- /dev/null +++ b/community-testing/spring/gcc46.patch @@ -0,0 +1,67 @@ +From: Jan Dittberner <jandd@debian.org> +Subject: Patch for FTBFS with g++ 4.6.0 +Bug-Debian: http://bugs.debian.org/625097 +Bug: http://springrts.com/mantis/view.php?id=2415 +--- a/AI/Skirmish/E323AI/AAStar.h ++++ b/AI/Skirmish/E323AI/AAStar.h +@@ -4,6 +4,7 @@ + #include <queue> + #include <vector> + #include <list> ++#include <cstddef> // for NULL + + class AAStar { + public: +--- a/rts/Rendering/ShadowHandler.cpp ++++ b/rts/Rendering/ShadowHandler.cpp +@@ -318,6 +318,11 @@ + xmid = 1.0f - (sqrt(fabs(x2)) / (sqrt(fabs(x2)) + sqrt(fabs(x1)))); + ymid = 1.0f - (sqrt(fabs(y2)) / (sqrt(fabs(y2)) + sqrt(fabs(y1)))); + ++ shadowParams.x = xmid; ++ shadowParams.y = ymid; ++ shadowParams.z = p17; ++ shadowParams.w = p18; ++ + shadowMatrix[ 0] = cross1.x / maxLengthX; + shadowMatrix[ 4] = cross1.y / maxLengthX; + shadowMatrix[ 8] = cross1.z / maxLengthX; +--- a/rts/Rendering/ShadowHandler.h ++++ b/rts/Rendering/ShadowHandler.h +@@ -38,7 +38,7 @@ + CMatrix44f shadowMatrix; + void CalcMinMaxView(void); + +- const float4 GetShadowParams() const { return float4(xmid, ymid, p17, p18); } ++ const float4& GetShadowParams() const { return shadowParams; } + + enum ShadowGenProgram { + SHADOWGEN_PROGRAM_MODEL = 0, +@@ -76,6 +76,7 @@ + //! to write the (FBO) depth-buffer texture + std::vector<Shader::IProgramObject*> shadowGenProgs; + ++ float4 shadowParams; + float x1, x2, y1, y2; + float xmid, ymid; + float p17, p18; +--- a/rts/Rendering/GLContext.cpp ++++ b/rts/Rendering/GLContext.cpp +@@ -9,6 +9,7 @@ + #include "GLContext.h" + + #include <list> ++#include <cstddef> // for NULL + + + using namespace std; +--- a/rts/System/MemPool.h ++++ b/rts/System/MemPool.h +@@ -4,6 +4,7 @@ + #define _MEM_POOL_H_ + + #include <new> ++#include <cstddef> // for NULL + + const size_t MAX_MEM_SIZE=200; + diff --git a/community-testing/supertux/PKGBUILD b/community-testing/supertux/PKGBUILD new file mode 100644 index 000000000..dbcd690af --- /dev/null +++ b/community-testing/supertux/PKGBUILD @@ -0,0 +1,30 @@ +# Contributor: Jaroslaw Swierczynski <swiergot@aur.archlinux.org> +# Contributor: Eric Belanger <belanger@astro.umontreal.ca> +# Contributor: vande198 +# Maintainer: Daniel J Griffiths <ghost1227@archlinux.us> + +pkgname=supertux +pkgver=0.3.3 +pkgrel=3 +pkgdesc="A classic 2D jump'n run sidescroller game in a style similar to the original SuperMario games" +arch=('i686' 'x86_64') +url="http://super-tux.sourceforge.net/" +license=('GPL') +depends=('sdl_image' 'curl' 'physfs' 'openal' 'libvorbis' 'libgl' 'glew') +makedepends=('cmake' 'boost') +source=(http://download.berlios.de/supertux/${pkgname}-${pkgver}.tar.bz2) +md5sums=('f3f803e629ee51a9de0b366a036e393d') + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + + sed -i '1i#include <cstddef>' src/supertux/screen_manager.hpp + cmake -D CMAKE_INSTALL_PREFIX=/usr -D INSTALL_SUBDIR_BIN=bin . + make +} + +package() { + cd ${srcdir}/${pkgname}-${pkgver} + + make DESTDIR=${pkgdir} install +} diff --git a/community-testing/supertux/compile.patch b/community-testing/supertux/compile.patch new file mode 100644 index 000000000..05376fe91 --- /dev/null +++ b/community-testing/supertux/compile.patch @@ -0,0 +1,67 @@ +diff -ruN supertux-0.3.1.orig/src/console.hpp supertux-0.3.1/src/console.hpp +--- supertux-0.3.1.orig/src/console.hpp 2008-01-03 21:59:27.000000000 +0100 ++++ supertux-0.3.1/src/console.hpp 2008-08-23 11:57:47.000000000 +0200 +@@ -27,6 +27,8 @@ + #include <sstream> + #include <iostream> + #include <squirrel.h> ++#include <memory> ++#include <cstdlib> + + class Console; + class ConsoleStreamBuffer; +diff -ruN supertux-0.3.1.orig/src/lisp/lexer.cpp supertux-0.3.1/src/lisp/lexer.cpp +--- supertux-0.3.1.orig/src/lisp/lexer.cpp 2008-01-03 21:59:26.000000000 +0100 ++++ supertux-0.3.1/src/lisp/lexer.cpp 2008-08-23 13:45:58.000000000 +0200 +@@ -21,6 +21,7 @@ + #include <sstream> + #include <stdexcept> + #include <iostream> ++#include <cstring> + + #include "lexer.hpp" + +diff -ruN supertux-0.3.1.orig/src/sprite/sprite_manager.hpp supertux-0.3.1/src/sprite/sprite_manager.hpp +--- supertux-0.3.1.orig/src/sprite/sprite_manager.hpp 2008-01-03 21:59:26.000000000 +0100 ++++ supertux-0.3.1/src/sprite/sprite_manager.hpp 2008-08-23 13:29:34.000000000 +0200 +@@ -21,6 +21,7 @@ + #define SUPERTUX_SPRITE_MANAGER_H + + #include <map> ++#include <string> + + class SpriteData; + class Sprite; +diff -ruN supertux-0.3.1.orig/src/textscroller.hpp supertux-0.3.1/src/textscroller.hpp +--- supertux-0.3.1.orig/src/textscroller.hpp 2008-01-03 21:59:27.000000000 +0100 ++++ supertux-0.3.1/src/textscroller.hpp 2008-08-23 13:34:35.000000000 +0200 +@@ -24,6 +24,7 @@ + #include <vector> + #include <string> + #include <map> ++#include <memory> + + #include "screen.hpp" + #include "math/vector.hpp" +diff -ruN supertux-0.3.1.orig/src/title.cpp supertux-0.3.1/src/title.cpp +--- supertux-0.3.1.orig/src/title.cpp 2008-01-03 21:59:28.000000000 +0100 ++++ supertux-0.3.1/src/title.cpp 2008-08-23 12:05:19.000000000 +0200 +@@ -32,6 +32,7 @@ + #include <SDL.h> + #include <SDL_image.h> + #include <physfs.h> ++#include <algorithm> + + #include "title.hpp" + #include "mainloop.hpp" +diff -ruN supertux-0.3.1.orig/src/video/sdl_texture.hpp supertux-0.3.1/src/video/sdl_texture.hpp +--- supertux-0.3.1.orig/src/video/sdl_texture.hpp 2008-01-03 21:59:22.000000000 +0100 ++++ supertux-0.3.1/src/video/sdl_texture.hpp 2008-08-23 13:37:14.000000000 +0200 +@@ -23,6 +23,7 @@ + #include <config.h> + + #include <SDL.h> ++#include <algorithm> + + #include "texture.hpp" + #include "color.hpp" diff --git a/community-testing/supertux/gcc44.patch b/community-testing/supertux/gcc44.patch new file mode 100644 index 000000000..b58d9c29d --- /dev/null +++ b/community-testing/supertux/gcc44.patch @@ -0,0 +1,90 @@ +diff -ruN supertux-0.3.1.orig/src/console.hpp supertux-0.3.1/src/console.hpp +--- supertux-0.3.1.orig/src/console.hpp 2008-01-03 20:59:27.000000000 +0000 ++++ supertux-0.3.1/src/console.hpp 2009-05-17 19:43:26.914307646 +0000 +@@ -27,6 +27,8 @@ + #include <sstream> + #include <iostream> + #include <squirrel.h> ++#include <memory> ++#include <cstdlib> + + class Console; + class ConsoleStreamBuffer; +diff -ruN supertux-0.3.1.orig/src/lisp/lexer.cpp supertux-0.3.1/src/lisp/lexer.cpp +--- supertux-0.3.1.orig/src/lisp/lexer.cpp 2008-01-03 20:59:26.000000000 +0000 ++++ supertux-0.3.1/src/lisp/lexer.cpp 2009-05-17 19:43:27.037705317 +0000 +@@ -21,6 +21,7 @@ + #include <sstream> + #include <stdexcept> + #include <iostream> ++#include <cstring> + + #include "lexer.hpp" + +diff -ruN supertux-0.3.1.orig/src/lisp/lisp.cpp supertux-0.3.1/src/lisp/lisp.cpp +--- supertux-0.3.1.orig/src/lisp/lisp.cpp 2008-01-03 20:59:26.000000000 +0000 ++++ supertux-0.3.1/src/lisp/lisp.cpp 2009-05-17 19:44:29.305165638 +0000 +@@ -18,7 +18,7 @@ + // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + #include <config.h> +- ++#include <cstdio> + #include "lisp.hpp" + + namespace lisp +diff -ruN supertux-0.3.1.orig/src/random_generator.cpp supertux-0.3.1/src/random_generator.cpp +--- supertux-0.3.1.orig/src/random_generator.cpp 2008-01-03 20:59:27.000000000 +0000 ++++ supertux-0.3.1/src/random_generator.cpp 2009-05-17 19:44:05.851002254 +0000 +@@ -39,6 +39,7 @@ + #include <stdexcept> + #include <time.h> + #include <cassert> ++#include <cstdio> + #include "random_generator.hpp" + + RandomGenerator systemRandom; // global random number generator +diff -ruN supertux-0.3.1.orig/src/sprite/sprite_manager.hpp supertux-0.3.1/src/sprite/sprite_manager.hpp +--- supertux-0.3.1.orig/src/sprite/sprite_manager.hpp 2008-01-03 20:59:26.000000000 +0000 ++++ supertux-0.3.1/src/sprite/sprite_manager.hpp 2009-05-17 19:43:27.037705317 +0000 +@@ -21,6 +21,7 @@ + #define SUPERTUX_SPRITE_MANAGER_H + + #include <map> ++#include <string> + + class SpriteData; + class Sprite; +diff -ruN supertux-0.3.1.orig/src/textscroller.hpp supertux-0.3.1/src/textscroller.hpp +--- supertux-0.3.1.orig/src/textscroller.hpp 2008-01-03 20:59:27.000000000 +0000 ++++ supertux-0.3.1/src/textscroller.hpp 2009-05-17 19:43:27.037705317 +0000 +@@ -24,6 +24,7 @@ + #include <vector> + #include <string> + #include <map> ++#include <memory> + + #include "screen.hpp" + #include "math/vector.hpp" +diff -ruN supertux-0.3.1.orig/src/title.cpp supertux-0.3.1/src/title.cpp +--- supertux-0.3.1.orig/src/title.cpp 2008-01-03 20:59:28.000000000 +0000 ++++ supertux-0.3.1/src/title.cpp 2009-05-17 19:43:27.041000359 +0000 +@@ -32,6 +32,7 @@ + #include <SDL.h> + #include <SDL_image.h> + #include <physfs.h> ++#include <algorithm> + + #include "title.hpp" + #include "mainloop.hpp" +diff -ruN supertux-0.3.1.orig/src/video/sdl_texture.hpp supertux-0.3.1/src/video/sdl_texture.hpp +--- supertux-0.3.1.orig/src/video/sdl_texture.hpp 2008-01-03 20:59:22.000000000 +0000 ++++ supertux-0.3.1/src/video/sdl_texture.hpp 2009-05-17 19:43:27.041000359 +0000 +@@ -23,6 +23,7 @@ + #include <config.h> + + #include <SDL.h> ++#include <algorithm> + + #include "texture.hpp" + #include "color.hpp" diff --git a/community-testing/vdrift/PKGBUILD b/community-testing/vdrift/PKGBUILD new file mode 100644 index 000000000..41dab8d90 --- /dev/null +++ b/community-testing/vdrift/PKGBUILD @@ -0,0 +1,66 @@ +# $Id: PKGBUILD 47904 2011-05-26 00:55:30Z svenstaro $ +# Maintainer: Sven-Hendrik Haase <sh@lutzhaase.com> +# Contributor: Anton Bazhenov <anton.bazhenov at gmail> +# Contributor: Lone_Wolf lonewolf@xs4all.nl + +pkgname=vdrift +pkgver=2010.06.30 +pkgrel=3 +pkgdesc="An open source driving simulation made with drift racing in mind" +arch=('i686' 'x86_64') +url="http://vdrift.net/" +license=('GPL') +depends=('sdl_gfx' 'sdl_image' 'glew' 'libvorbis' 'vdrift-data') +makedepends=('scons' 'boost' 'asio') +source=(http://downloads.sourceforge.net/project/$pkgname/$pkgname/$pkgname-${pkgver//./-}/$pkgname-${pkgver//./-}.tar.bz2 + $pkgname.desktop) +md5sums=('ddcaf90bb25f9ce9cc084d7f467d7b56' + '8bb429f37bcb4aed5e7ab1d80c5a4f93') + +build() { + cd "$srcdir"/$pkgname-${pkgver//./-} + + # select arch + if [ `uname -m` = "x86_64" ]; then + _sconsarch="a64" + else + _sconsarch="686" + fi + + # patch for crashing with bad drivers + sed -i 's/glGenerateMipmap/glGenerateMipmapEXT/g' src/texture.cpp + + # build and install + scons \ + "destdir"="$pkgdir" \ + "arch"=$_sconsarch \ + "release"=1 \ + "force_feedback"=1 \ + "prefix"=/usr \ + "datadir"=share/$pkgname/data || return 1 +} + +package() { + cd "$srcdir"/$pkgname-${pkgver//./-} + + scons install || return 1 + + # remove some unneeded files + find "$pkgdir"/usr/share/$pkgname -name SConscript -delete + + # install icons + install -Dm644 data/textures/icons/$pkgname-16x16.png \ + "$pkgdir"/usr/share/icons/hicolor/16x16/apps/$pkgname.png + install -Dm644 data/textures/icons/$pkgname-32x32.png \ + "$pkgdir"/usr/share/icons/hicolor/32x32/apps/$pkgname.png + install -Dm644 data/textures/icons/$pkgname-64x64.png \ + "$pkgdir"/usr/share/icons/hicolor/64x64/apps/$pkgname.png + + # install .desktop file + install -Dm644 ../$pkgname.desktop \ + "$pkgdir"/usr/share/applications/$pkgname.desktop + + # delete installed data (will be provided by -data package) + rm -r "$pkgdir"/usr/share/$pkgname +} +# vim: sw=2:ts=2 et: diff --git a/community-testing/vdrift/vdrift.desktop b/community-testing/vdrift/vdrift.desktop new file mode 100644 index 000000000..7078f0d9c --- /dev/null +++ b/community-testing/vdrift/vdrift.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Encoding=UTF-8 +Type=Application +Name=VDrift +Version=2009-06-15 +GenericName=Racing Simulation +Comment=An open source driving simulation made with drift racing in mind +Exec=vdrift +Icon=vdrift.png +Terminal=false +Categories=Game;Simulation; diff --git a/community-testing/widelands/PKGBUILD b/community-testing/widelands/PKGBUILD new file mode 100644 index 000000000..e2a882999 --- /dev/null +++ b/community-testing/widelands/PKGBUILD @@ -0,0 +1,48 @@ +# $Id: PKGBUILD 47900 2011-05-26 00:39:20Z svenstaro $ +# Maintainer: Sven-Hendrik Haase <sh@lutzhaase.com> +# Contributor: Arkham <arkham at archlinux dot us> +# Contributor: Christoph Zeiler <rabyte*gmail> + +pkgname=widelands +pkgver=16 +_realver=build16 +pkgrel=2 +pkgdesc="A realtime strategy game with emphasis on economy and transport" +arch=('i686' 'x86_64') +url="http://widelands.org/" +license=('GPL') +depends=('sdl_mixer' 'sdl_image' 'sdl_net' 'sdl_ttf' 'sdl_gfx' 'ggz-client-libs' 'lua' 'glew' 'python2') +makedepends=('cmake' 'boost') +source=(http://launchpad.net/$pkgname/build16/$_realver/+download/$pkgname-$_realver-src.tar.bz2 + $pkgname.desktop + $pkgname.png + $pkgname.sh) +md5sums=('3d8c28e145b73c64d8ed1625319d25a2' + '15820bf099fd6f16251fe70a75c534bb' + '3dfda7e9ca76ca00dd98d745d0ceb328' + '7cae50aba5ed0cd2cfeea79124637b46') + +build() { + cd $srcdir/$pkgname-$_realver-src + + mkdir -p build/compile && cd build/compile + + cmake ../.. -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DWL_INSTALL_PREFIX=/usr \ + -DWL_INSTALL_DATADIR=share/$pkgname \ + -DWL_INSTALL_BINDIR=bin + make +} + +package() { + cd $srcdir/$pkgname-$_realver-src/build/compile + + make DESTDIR="$pkgdir" install + + # Install bin, icon and desktop file + #install -Dm 755 src/$pkgname $pkgdir/usr/share/$pkgname/$pkgname + #install -Dm 755 $srcdir/$pkgname.sh $pkgdir/usr/bin/$pkgname + install -Dm644 $srcdir/$pkgname.png $pkgdir/usr/share/pixmaps/$pkgname.png + install -Dm644 $srcdir/$pkgname.desktop $pkgdir/usr/share/applications/$pkgname.desktop +} diff --git a/community-testing/widelands/widelands-build15-gcc-4.5-patch b/community-testing/widelands/widelands-build15-gcc-4.5-patch new file mode 100644 index 000000000..6ba313358 --- /dev/null +++ b/community-testing/widelands/widelands-build15-gcc-4.5-patch @@ -0,0 +1,51 @@ +diff -Naur widelands-from/src/editor/ui_menus/editor_main_menu_new_map.cc widelands-to/src/editor/ui_menus/editor_main_menu_new_map.cc +--- widelands-from/src/editor/ui_menus/editor_main_menu_new_map.cc 2010-04-16 15:41:22.000000000 +0000 ++++ widelands-to/src/editor/ui_menus/editor_main_menu_new_map.cc 2010-07-01 21:15:56.000000000 +0000 +@@ -113,7 +113,7 @@ + posx, posy, width, height, + g_gr->get_picture(PicMod_UI, "pics/but1.png"), + &Main_Menu_New_Map::button_clicked, *this, 4, +- Widelands::World::World(m_worlds[m_currentworld].c_str()).get_name()); ++ Widelands::World(m_worlds[m_currentworld].c_str()).get_name()); + + posy += height + spacing + spacing + spacing; + +@@ -142,7 +142,7 @@ + if (m_currentworld == m_worlds.size()) + m_currentworld = 0; + m_world->set_title +- (Widelands::World::World(m_worlds[m_currentworld].c_str()).get_name ++ (Widelands::World(m_worlds[m_currentworld].c_str()).get_name + ()); + break; + } +diff -Naur widelands-from/src/editor/ui_menus/editor_main_menu_random_map.cc widelands-to/src/editor/ui_menus/editor_main_menu_random_map.cc +--- widelands-from/src/editor/ui_menus/editor_main_menu_random_map.cc 2010-04-16 15:41:22.000000000 +0000 ++++ widelands-to/src/editor/ui_menus/editor_main_menu_random_map.cc 2010-07-01 21:17:39.000000000 +0000 +@@ -272,7 +272,7 @@ + posx, posy, width, height, + g_gr->get_picture(PicMod_UI, "pics/but1.png"), + &Main_Menu_New_Random_Map::button_clicked, *this, 8, +- Widelands::World::World(m_worlds[m_currentworld].c_str()).get_name()); ++ Widelands::World(m_worlds[m_currentworld].c_str()).get_name()); + + posy += height + spacing + spacing + spacing; + +@@ -343,7 +343,7 @@ + if (m_currentworld == m_worlds.size()) + m_currentworld = 0; + m_world->set_title +- (Widelands::World::World(m_worlds[m_currentworld].c_str()).get_name()); ++ (Widelands::World(m_worlds[m_currentworld].c_str()).get_name()); + break; + case 9: + break; +@@ -476,7 +476,7 @@ + (strcmp(mapInfo.worldName.c_str(), m_worlds[m_currentworld].c_str())) + ++m_currentworld; + m_world->set_title +- (Widelands::World::World(m_worlds[m_currentworld].c_str()).get_name()); ++ (Widelands::World(m_worlds[m_currentworld].c_str()).get_name()); + + button_clicked(-1); // Update other values in UI as well + diff --git a/community-testing/widelands/widelands.desktop b/community-testing/widelands/widelands.desktop new file mode 100644 index 000000000..9715d816c --- /dev/null +++ b/community-testing/widelands/widelands.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Name=Widelands +GenericName=Widelands +Comment=Realtime strategy game +Icon=widelands +Exec=widelands +Type=Application +Categories=Game;StrategyGame; diff --git a/community-testing/widelands/widelands.png b/community-testing/widelands/widelands.png Binary files differnew file mode 100644 index 000000000..c329cf667 --- /dev/null +++ b/community-testing/widelands/widelands.png diff --git a/community-testing/widelands/widelands.sh b/community-testing/widelands/widelands.sh new file mode 100644 index 000000000..0b21a1694 --- /dev/null +++ b/community-testing/widelands/widelands.sh @@ -0,0 +1,3 @@ +#!/bin/sh +cd /usr/share/widelands +./widelands $* diff --git a/community/go/PKGBUILD b/community/go/PKGBUILD index 97495a871..274a492fa 100644 --- a/community/go/PKGBUILD +++ b/community/go/PKGBUILD @@ -6,7 +6,7 @@ pkgname=go pkgver=r57.1 -pkgrel=1 +pkgrel=3 epoch=1 pkgdesc='Google Go compiler and tools (release version)' arch=('i686' 'x86_64') @@ -60,13 +60,18 @@ package() { install -Dm644 misc/bash/go $pkgdir/etc/bash_completion.d/go install -Dm644 misc/emacs/go-mode-load.el $pkgdir/usr/share/emacs/site-lisp/go-mode-load.el install -Dm644 misc/emacs/go-mode.el $pkgdir/usr/share/emacs/site-lisp/go-mode.el + install -Dm644 misc/vim/ftdetect/gofiletype.vim $pkgdir/usr/share/vim/vimfiles/ftdetect/gofiletype.vim install -Dm644 misc/vim/syntax/go.vim $pkgdir/usr/share/vim/vimfiles/syntax/go.vim mkdir -p $pkgdir/{etc/profile.d,usr/{share/go,lib/go,lib/go/src}} cp -r bin $pkgdir/usr cp -r doc misc -t $pkgdir/usr/share/go + ln -s /usr/share/go/doc $pkgdir/usr/lib/go/doc cp -r pkg $pkgdir/usr/lib/go + cp -r $GOROOT/src/pkg $pkgdir/usr/lib/go/src/ + cp -r $GOROOT/src/lib9 $pkgdir/usr/lib/go/src/ + cp -r $GOROOT/lib $pkgdir/usr/lib/go/ install -Dm644 src/Make.* $pkgdir/usr/lib/go/src diff --git a/community/mhwaveedit/PKGBUILD b/community/mhwaveedit/PKGBUILD index 83a9a86f2..ce2e82aea 100644 --- a/community/mhwaveedit/PKGBUILD +++ b/community/mhwaveedit/PKGBUILD @@ -1,22 +1,18 @@ -# $Id $ # Maintainer: Loui Chang <louipc.ist@gmail.com> -# Contributor: Andrea Scarpino <bash.lnx@gmail.com> # Contributor: Robert Emil Berge <robert@rebi.no> pkgname=mhwaveedit -pkgver=1.4.20 -pkgrel=2 -pkgdesc="A graphical program for editing, playing and recording sound files." +pkgver=1.4.21 +pkgrel=1 +pkgdesc="A graphical program for editing, playing and recording sound files" arch=('i686' 'x86_64') url="http://gna.org/projects/mhwaveedit" license=('GPL') -depends=('libsamplerate' 'gtk2' 'jack') +depends=('libsamplerate' 'libpulse' 'gtk2' 'jack') source=(http://download.gna.org/$pkgname/$pkgname-$pkgver.tar.bz2) -md5sums=('979ac5776a57268aed0afa74d50c70a2') build() { cd $srcdir/$pkgname-$pkgver - sed -i "s|Icon=mhwaveedit.xpm|Icon=mhwaveedit|" share/applications/mhwaveedit.desktop ./configure --without-check-casts --without-arts --without-esound \ --without-portaudio --without-sun --without-sdl --prefix=/usr make @@ -26,3 +22,4 @@ package() { cd $srcdir/$pkgname-$pkgver make DESTDIR=$pkgdir install } +md5sums=('02d4dddcb19731ff1fca961ed7d507dc') diff --git a/community/nbd/PKGBUILD b/community/nbd/PKGBUILD index 5a43aea69..f2cd3e776 100644 --- a/community/nbd/PKGBUILD +++ b/community/nbd/PKGBUILD @@ -1,27 +1,33 @@ -# $Id: PKGBUILD 48022 2011-05-27 15:14:57Z svenstaro $ +# $Id: PKGBUILD 48213 2011-05-30 08:16:09Z svenstaro $ # Maintainer: Sven-Hendrik Haase <sh@lutzhaase.com> -# Contributor : Ionut Biru <ibiru@archlinux.org> +# Contributor: Christian Hesse <mail@eworm.de> +# Contributor: Ionut Biru <ibiru@archlinux.org> # Contributor: Gerhard Brauer <gerbra@archlinux.de> + pkgname=nbd -pkgver=2.9.21a +pkgver=2.9.22 pkgrel=1 pkgdesc="Tools for network block devices, allowing you to use remote block devices over TCP/IP." arch=('i686' 'x86_64') url="http://nbd.sourceforge.net" license=('GPL') source=(http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.bz2 - nbd.conf.d nbd) + config nbd) +backup=('etc/nbd-server/config') depends=('glib2') -md5sums=('4028c77d52a13f16be5e9bf3d3bab27d' - '6d746f377a28b92dd2c80f01176cb811' - 'ab9c431881f5e3c98a8f6c04016f0e00') +install=nbd.install +md5sums=('ff79803165a349a84d526bfcea820b12' + '075be420c3d7d7fc9408def3cb8c470d' + 'e7b13a8b3369e11927d9917664557efa') build(){ cd "${srcdir}/${pkgname}-${pkgver}" - ./configure --prefix=/usr + ./configure --prefix=/usr --sysconfdir=/etc make make DESTDIR="${pkgdir}" install - install -D -m644 "${srcdir}"/nbd.conf.d "${pkgdir}"/etc/conf.d/nbd + install -D -m644 "${srcdir}"/config "${pkgdir}"/etc/nbd-server/config install -D -m755 "${srcdir}"/nbd "${pkgdir}"/etc/rc.d/nbd + + install -D -m644 README "${pkgdir}"/usr/share/doc/nbd/README } diff --git a/community/nbd/config b/community/nbd/config new file mode 100644 index 000000000..f90c36b23 --- /dev/null +++ b/community/nbd/config @@ -0,0 +1,24 @@ +# This is a comment +[generic] + # The [generic] section is required, even if nothing is specified + # there. + # When either of these options are specified, nbd-server drops + # privileges to the given user and group after opening ports, but + # _before_ opening files. + user = nbd + group = nbd +[export1] + exportname = /export/nbd/export1-file + port = 12345 + authfile = /export/nbd/export1-authfile + timeout = 30 + filesize = 10000000 + readonly = false + multifile = false + copyonwrite = false + prerun = dd if=/dev/zero of=%s bs=1k count=500 + postrun = rm -f %s +[otherexport] + exportname = /export/nbd/experiment + port = 12346 + # The other options are all optional. diff --git a/community/nbd/nbd b/community/nbd/nbd index b2643196b..76d16c779 100644 --- a/community/nbd/nbd +++ b/community/nbd/nbd @@ -2,15 +2,14 @@ . /etc/rc.conf . /etc/rc.d/functions -. /etc/conf.d/nbd -PIDFILE="/var/run/nbd-server.$NBD_PORT.pid" +PIDFILE="/var/run/nbd-server.pid" PID=`cat $PIDFILE 2>/dev/null` case "$1" in start) stat_busy "Starting Network Block Device Server" if [ "$PID" = "" ]; then - /usr/bin/nbd-server $NBD_PORT $NBD_DEV $NBD_ARGS + /usr/bin/nbd-server fi if [ "$PID" != "" -o $? -gt 0 ]; then stat_fail diff --git a/community/nbd/nbd.install b/community/nbd/nbd.install new file mode 100644 index 000000000..9e7a01e98 --- /dev/null +++ b/community/nbd/nbd.install @@ -0,0 +1,13 @@ +post_install() { + getent group "nbd" &>/dev/null || groupadd -r -g 44 nbd 1>/dev/null + getent passwd "nbd" &>/dev/null || useradd -r -u 44 -g nbd -d "/var/empty" -s "/bin/false" nbd 1>/dev/null +} + +post_upgrade() { + post_install +} + +pre_remove() { + getent passwd "nbd" &>/dev/null && userdel nbd 1>/dev/null + getent group "nbd" &>/dev/null && groupdel nbd 1>/dev/null +} diff --git a/community/scite/PKGBUILD b/community/scite/PKGBUILD index 472b84759..93fdbfd05 100644 --- a/community/scite/PKGBUILD +++ b/community/scite/PKGBUILD @@ -4,7 +4,7 @@ # Contributor: Daniel J Griffiths <ghost1227@archlinux.us> pkgname=scite -pkgver=2.25 +pkgver=2.26 pkgrel=1 pkgdesc='A generally useful editor with facilities for building and running programs.' arch=('i686' 'x86_64') @@ -16,7 +16,7 @@ install=scite.install source=("http://downloads.sourceforge.net/sourceforge/scintilla/${pkgname}${pkgver/\./}.tgz" 'SciTE.desktop' 'makefile.patch') -md5sums=('58767cfbdcb4ad99cc9460f36f958995' +md5sums=('328865585758aca73292083ab4552af4' '48526532ef677982a4b156ae90f25b6f' '87005d4c7262a1a698cde0628dc7e2a2') diff --git a/community/sxiv/PKGBUILD b/community/sxiv/PKGBUILD index 04e771c57..c24491033 100644 --- a/community/sxiv/PKGBUILD +++ b/community/sxiv/PKGBUILD @@ -3,7 +3,7 @@ pkgname=sxiv pkgver=0.8.1 -pkgrel=2 +pkgrel=3 pkgdesc='simple x image viewer' arch=('i686' 'x86_64') license=('GPL2') @@ -14,7 +14,7 @@ source=("https://github.com/downloads/muennich/sxiv/sxiv-${pkgver}.tar.gz" 'sxiv.desktop' 'config.h') md5sums=('23006a1900690d46c0ff126c76cdbd02' - '0b6d43bd356aadc12537c010950e2272' + '1dda85ff6bed4de337f8fb303075ed11' '8018e9f2f63b155098428be9dbaf8b5c') build() { diff --git a/community/sxiv/sxiv.desktop b/community/sxiv/sxiv.desktop index f510d49ea..a981171c5 100644 --- a/community/sxiv/sxiv.desktop +++ b/community/sxiv/sxiv.desktop @@ -2,6 +2,6 @@ Type=Application Name=sxiv GenericName=Image Viewer -Exec=sxiv %f +Exec=sxiv %F MimeType=image/bmp;image/gif;image/jpeg;image/jpg;image/png;image/tiff;image/x-bmp; NoDisplay=true diff --git a/community/xdotool/PKGBUILD b/community/xdotool/PKGBUILD index 85ee141ea..0ce58a37a 100644 --- a/community/xdotool/PKGBUILD +++ b/community/xdotool/PKGBUILD @@ -1,17 +1,17 @@ -# $Id: PKGBUILD 29296 2010-10-12 16:34:27Z foutrelis $ +# $Id: PKGBUILD 48265 2011-05-30 19:01:31Z foutrelis $ # Maintainer: Evangelos Foutras <foutrelis@gmail.com> # Contributor: Rttommy <rttommy@gmail.com> pkgname=xdotool -pkgver=2.20101012.3049 +pkgver=2.20110530.1 pkgrel=1 pkgdesc="Command-line X11 automation tool" arch=('i686' 'x86_64') url="http://www.semicomplete.com/projects/xdotool/" license=('BSD') -depends=('libxtst') +depends=('libxtst' 'libxinerama') source=(http://semicomplete.googlecode.com/files/$pkgname-$pkgver.tar.gz) -sha1sums=('b57e9b63123f326f0d1c8c43ff66678753d3da0c') +sha1sums=('bf8372b2e76e8ee3884763cee6e8b3f66bf29aa6') build() { cd "$srcdir/$pkgname-$pkgver" diff --git a/extra/apache/PKGBUILD b/extra/apache/PKGBUILD index 41b26cd97..15820f05f 100644 --- a/extra/apache/PKGBUILD +++ b/extra/apache/PKGBUILD @@ -1,11 +1,11 @@ -# $Id: PKGBUILD 123392 2011-05-10 21:15:00Z foutrelis $ +# $Id: PKGBUILD 125827 2011-05-30 09:46:57Z jgc $ # Maintainer: Jan de Groot <jgc@archlinux.org> # Contributor: Andrea Scarpino <andrea@archlinux.org> # Contributor: Pierre Schmitz <pierre@archlinux.de> pkgname=apache -pkgver=2.2.17 -pkgrel=3 +pkgver=2.2.19 +pkgrel=1 pkgdesc='A high performance Unix-based HTTP server' arch=('i686' 'x86_64') options=('!libtool') @@ -35,7 +35,7 @@ source=(http://www.apache.org/dist/httpd/httpd-${pkgver}.tar.bz2 httpd.logrotate httpd arch.layout) -md5sums=('16eadc59ea6b38af33874d300973202e' +md5sums=('832f96a6ec4b8fc7cf49b9efd4e89060' 'f1d9d41360908ceb2374da55ae99197a' 'cdfa04985a0efa850976aef01c2a0c40' '0930d2d0612eb0a53a0d00aea7e8687f' @@ -66,6 +66,9 @@ build() { for mpm in prefork worker itk; do if [ "${mpm}" = "itk" ]; then + # Fix patch to apply with latest Apache version + sed -i -e 's/mpmt_os2}/mpmt_os2|winnt}/g' "${srcdir}/03-add-mpm-to-build-system.patch" + mkdir -p server/mpm/experimental/itk cp -r server/mpm/prefork/* server/mpm/experimental/itk/ mv server/mpm/experimental/itk/prefork.c server/mpm/experimental/itk/itk.c diff --git a/extra/apr-util/PKGBUILD b/extra/apr-util/PKGBUILD index c40bdaf6c..e9f8b7189 100644 --- a/extra/apr-util/PKGBUILD +++ b/extra/apr-util/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 123397 2011-05-10 22:24:40Z foutrelis $ +# $Id: PKGBUILD 125819 2011-05-30 09:26:18Z jgc $ # Maintainer: Jan de Groot <jgc@archlinux.org> # Maintainer: Pierre Schmitz <pierre@archlinux.de> pkgname=apr-util -pkgver=1.3.11 +pkgver=1.3.12 pkgrel=1 pkgdesc="The Apache Portable Runtime" arch=('i686' 'x86_64') @@ -12,14 +12,13 @@ depends=('apr' 'gdbm' 'expat' 'db' 'libldap' 'unixodbc') options=('!libtool') license=('APACHE') source=("http://www.apache.org/dist/apr/apr-util-${pkgver}.tar.bz2") -md5sums=('2aeddb384b03f3f73107770724d5c97b') +md5sums=('0f671b037ca62751a8a7005578085560') build() { - cd "${srcdir}/apr-util-${pkgver}" - - ./configure --prefix=/usr --with-apr=/usr \ - --without-pgsql --without-mysql --without-sqlite2 --without-sqlite3 \ - --with-berkeley-db=/usr --with-gdbm=/usr --with-ldap - make - make DESTDIR="${pkgdir}" install + cd "${srcdir}/apr-util-${pkgver}" + ./configure --prefix=/usr --with-apr=/usr \ + --without-pgsql --without-mysql --without-sqlite2 --without-sqlite3 \ + --with-berkeley-db=/usr --with-gdbm=/usr --with-ldap + make + make DESTDIR="${pkgdir}" install } diff --git a/extra/apr/PKGBUILD b/extra/apr/PKGBUILD index 4bd4ae012..3f18110f0 100644 --- a/extra/apr/PKGBUILD +++ b/extra/apr/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 123387 2011-05-10 21:11:03Z foutrelis $ +# $Id: PKGBUILD 125814 2011-05-30 09:11:42Z jgc $ # Maintainer: Jan de Groot <jgc@archlinux.org> # Contributor: Andrea Scarpino <andrea@archlinux.org> # Contributor: Pierre Schmitz <pierre@archlinux.de> pkgname=apr -pkgver=1.4.4 +pkgver=1.4.5 pkgrel=1 pkgdesc="The Apache Portable Runtime" arch=('i686' 'x86_64') @@ -13,19 +13,16 @@ depends=('util-linux-ng>=2.16') options=('!libtool') license=('APACHE') source=(http://www.apache.org/dist/apr/apr-${pkgver}.tar.bz2) -md5sums=('daf5487c82dd7bec9c005c96f8cb01b1') +md5sums=('8b53f5a5669d0597f2da889a2f576eb6') build() { cd "${srcdir}/apr-${pkgver}" - export apr_cv_epoll_create1=no - export apr_cv_dup3=no export apr_cv_accept4=no - export apr_cv_sock_cloexec=no ./configure --prefix=/usr --includedir=/usr/include/apr-1 \ --with-installbuilddir=/usr/share/apr-1/build \ --enable-nonportable-atomics \ - --with-devrandom=/dev/urandom || return 1 - make || return 1 - make DESTDIR="${pkgdir}" install || return 1 + --with-devrandom=/dev/urandom + make + make DESTDIR="${pkgdir}" install } diff --git a/extra/ccache/PKGBUILD b/extra/ccache/PKGBUILD index 09a7487fb..7fd538159 100644 --- a/extra/ccache/PKGBUILD +++ b/extra/ccache/PKGBUILD @@ -1,26 +1,32 @@ -# $Id: PKGBUILD 105538 2011-01-10 11:06:14Z giovanni $ +# $Id: PKGBUILD 125865 2011-05-30 17:15:51Z giovanni $ # Maintainer: Giovanni Scafora <giovanni@archlinux.org> # Contributor: Tom Newsom <Jeepster@gmx.co.uk> pkgname=ccache -pkgver=3.1.4 +pkgver=3.1.5 pkgrel=1 pkgdesc="A compiler cache" url="http://ccache.samba.org/" -source=(http://samba.org/ftp/${pkgname}/$pkgname-$pkgver.tar.bz2) +source=("http://samba.org/ftp/${pkgname}/$pkgname-$pkgver.tar.bz2") license=('GPL') arch=('i686' 'x86_64') depends=('zlib') -md5sums=('676fda8a9a5e02574435c32b22942abd') +md5sums=('f652bd20253bb4aa1440ae50bea3c9e3') build() { cd ${srcdir}/${pkgname}-${pkgver} ./configure --prefix=/usr - make || return 1 + + make +} + +package() { + cd ${srcdir}/${pkgname}-${pkgver} + install -Dm 755 ccache ${pkgdir}/usr/bin/ccache install -Dm 644 ccache.1 ${pkgdir}/usr/share/man/man1/ccache.1 - mkdir -p ${pkgdir}/usr/lib/ccache/bin + install -d ${pkgdir}/usr/lib/ccache/bin ln -sf /usr/bin/ccache ${pkgdir}/usr/lib/ccache/bin/cc ln -sf /usr/bin/ccache ${pkgdir}/usr/lib/ccache/bin/gcc ln -sf /usr/bin/ccache ${pkgdir}/usr/lib/ccache/bin/g++ diff --git a/extra/libgadu/PKGBUILD b/extra/libgadu/PKGBUILD index da245d5d6..eb86b103d 100644 --- a/extra/libgadu/PKGBUILD +++ b/extra/libgadu/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 114618 2011-03-14 16:59:52Z andrea $ +# $Id: PKGBUILD 125846 2011-05-30 12:25:37Z andrea $ # Maintainer: Andrea Scarpino <andrea@archlinux.org> # Contributor: Mateusz Herych <heniekk@gmail.com> pkgname=libgadu -pkgver=1.10.1 +pkgver=1.11.0 pkgrel=1 pkgdesc="This library implements the client side of the Gadu-Gadu protocol" arch=('i686' 'x86_64') @@ -12,10 +12,10 @@ license=('GPL') depends=('openssl') options=('!libtool') source=("http://toxygen.net/${pkgname}/files/${pkgname}-${pkgver}.tar.gz") -md5sums=('4dd528bc0627e4bd59f79b07f0e8cdbc') +md5sums=('c779891298ce5d081c1e871e1e5b256d') build() { - cd ${srcdir}/${pkgname}-${pkgver} + cd "${srcdir}"/${pkgname}-${pkgver} ./configure --prefix=/usr \ --disable-static \ --enable-shared \ @@ -24,6 +24,6 @@ build() { } package() { - cd ${srcdir}/${pkgname}-${pkgver} - make DESTDIR=${pkgdir} install + cd "${srcdir}"/${pkgname}-${pkgver} + make DESTDIR="${pkgdir}" install } diff --git a/extra/network-manager-applet/PKGBUILD b/extra/network-manager-applet/PKGBUILD index 5d2be4407..60394a46b 100644 --- a/extra/network-manager-applet/PKGBUILD +++ b/extra/network-manager-applet/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 122476 2011-05-04 09:08:28Z ibiru $ +# $Id: PKGBUILD 125653 2011-05-27 18:09:01Z ibiru $ # Maintainer: Jan de Groot <jgc@archlinux.org> # Contributor: Arjan Timmerman <arjan@archlinux.org> # Contributor: Wael Nasreddine <gandalf@siemens-mobiles.org> @@ -6,7 +6,7 @@ # Contributor: Will Rea <sillywilly@gmail.com> pkgname=network-manager-applet -pkgver=0.8.999 +pkgver=0.8.9997 pkgrel=1 pkgdesc="GNOME frontends to NetWorkmanager" arch=('i686' 'x86_64') @@ -20,7 +20,7 @@ optdepends=('gnome-bluetooth: for PAN/DUN support') options=('!libtool') install=network-manager-applet.install source=(http://ftp.gnome.org/pub/GNOME/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.bz2) -sha256sums=('95249953fad924240fbe85ae7742405622c7edc3c6391dcb823346d5c37fd63b') +sha256sums=('1620e52bfdba18f3640e57a3d450e913ad73a6e529dd0bad895d4c07700018ab') build() { cd "${srcdir}/${pkgname}-${pkgver}" diff --git a/extra/networkmanager/PKGBUILD b/extra/networkmanager/PKGBUILD index 3cb0ddabf..ecfc88f0a 100644 --- a/extra/networkmanager/PKGBUILD +++ b/extra/networkmanager/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 122462 2011-05-04 08:30:18Z ibiru $ +# $Id: PKGBUILD 125645 2011-05-27 17:39:58Z ibiru $ # Maintainer: Jan de Groot <jgc@archlinxu.org> # Contri-butor: Wael Nasreddine <gandalf@siemens-mobiles.org> # Contributor: Tor Krill <tor@krill.nu> @@ -6,7 +6,7 @@ # Contributor: Valentine Sinitsyn <e_val@inbox.ru> pkgname=networkmanager -pkgver=0.8.999 +pkgver=0.8.9997 pkgrel=1 pkgdesc="Network Management daemon" arch=('i686' 'x86_64') @@ -24,7 +24,7 @@ backup=('etc/NetworkManager/NetworkManager.conf') install=networkmanager.install source=(http://ftp.gnome.org/pub/gnome/sources/NetworkManager/0.8/NetworkManager-${pkgver}.tar.bz2 NetworkManager.conf disable_set_hostname.patch) -sha256sums=('fc2430e4babe1f53ac071746cd3f662f064a7d338f0e324f42f82fe9512968cd' +sha256sums=('af2e08546cfcd51731be8f4d944b77876ba2eca93cf4f15509caf5572cac6596' '44b048804c7c0b8b3b0c29b8632b6ad613c397d0a1635ec918e10c0fbcdadf21' '1e4586991bc96ef004dc520c794047a336c54433e0bd4edc3879fb6e7ab0e553') diff --git a/extra/xf86-video-intel/PKGBUILD b/extra/xf86-video-intel/PKGBUILD index 333096f8f..2f845c4d8 100644 --- a/extra/xf86-video-intel/PKGBUILD +++ b/extra/xf86-video-intel/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 119757 2011-04-14 20:01:07Z andyrtr $ +# $Id: PKGBUILD 125851 2011-05-30 12:49:55Z jgc $ # Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=xf86-video-intel pkgver=2.15.0 -pkgrel=1 +pkgrel=2 pkgdesc="X.org Intel i810/i830/i915/945G/G965+ video drivers" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" @@ -13,11 +13,16 @@ makedepends=('xorg-server-devel' 'libx11' 'libdrm' 'xf86driproto' 'glproto' 'mes conflicts=('xorg-server<1.10.0' 'xf86-video-i810' 'xf86-video-intel-legacy') options=('!libtool') groups=('xorg-drivers' 'xorg') -source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -sha1sums=('78ec39a4470cfc0bf13d269fb915f6c5a498ee62') +source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 + git-fixes.patch) +sha1sums=('78ec39a4470cfc0bf13d269fb915f6c5a498ee62' + 'd7a9102e58c1d6c1bcb99ff6836146bd54a18161') build() { cd "${srcdir}/${pkgname}-${pkgver}" + patch -Np1 -i "${srcdir}/git-fixes.patch" + + autoreconf ./configure --prefix=/usr --enable-dri make } diff --git a/extra/xf86-video-intel/git-fixes.patch b/extra/xf86-video-intel/git-fixes.patch new file mode 100644 index 000000000..7ee0d50bb --- /dev/null +++ b/extra/xf86-video-intel/git-fixes.patch @@ -0,0 +1,1050 @@ +diff --git a/NEWS b/NEWS +index ea92bcf..61866b0 100644 +--- a/NEWS ++++ b/NEWS +@@ -2,9 +2,9 @@ Release 2.15.0 (2011-04-14) + ============================== + We are pleased to announce this major release of the xf86-video-intel + driver, roughly on schedule at 3 months since 2.14.0. With the many bug +-fixes in this release, we encourage everyone to upgrade to 2.14. ++fixes in this release, we encourage everyone to upgrade to 2.15. + +-The priority for this quarter has been simply to unexciting and stabilise ++The priority for this quarter has been simply to be unexciting and stabilise + the driver further, seeking to capitalise upon the improvements elsewhere + in the stack. + +diff --git a/configure.ac b/configure.ac +index fd5a3cf..9449e56 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -77,9 +77,7 @@ AC_ARG_WITH(xorg-module-dir, + [moduledir="$libdir/xorg/modules"]) + + AC_ARG_ENABLE(dri, AS_HELP_STRING([--disable-dri], +- [Disable DRI support [[default=auto]]]), +- [DRI="$enableval"], +- [DRI=auto]) ++ [Disable DRI support [[default=auto]]])) + + AC_ARG_ENABLE(xvmc, AS_HELP_STRING([--disable-xvmc], + [Disable XvMC support [[default=yes]]]), +@@ -106,40 +104,48 @@ XORG_DRIVER_CHECK_EXT(DPMSExtension, xextproto) + # Obtain compiler/linker options for the driver dependencies + PKG_CHECK_MODULES(XORG, [xorg-server >= 1.6 xproto fontsproto $REQUIRED_MODULES]) + PKG_CHECK_MODULES(DRM, [libdrm >= 2.4.23]) ++PKG_CHECK_MODULES(DRI, [xf86driproto], , DRI=no) + PKG_CHECK_MODULES(PCIACCESS, [pciaccess >= 0.10]) + + sdkdir=`$PKG_CONFIG --variable=sdkdir xorg-server` + +-save_CFLAGS="$CFLAGS" +-CFLAGS="$XORG_CFLAGS $DRI_CFLAGS $DRM_CFLAGS" +-CPPFLAGS="$XORG_CFLAGS $DRI_CFLAGS $DRM_CFLAGS" +-AC_MSG_CHECKING([whether to include DRI support]) +-if test x$DRI != xno; then +- AC_CHECK_FILE([${sdkdir}/dri.h], +- [have_dri_h="yes"], [have_dri_h="no"]) +- AC_CHECK_FILE([${sdkdir}/sarea.h], +- [have_sarea_h="yes"], [have_sarea_h="no"]) +- AC_CHECK_FILE([${sdkdir}/dristruct.h], +- [have_dristruct_h="yes"], [have_dristruct_h="no"]) ++if test "x$enable_dri" != "xno"; then ++ save_CFLAGS="$CFLAGS" ++ save_CPPFLAGS="$CPPFLAGS" ++ CFLAGS="$XORG_CFLAGS $DRI_CFLAGS $DRM_CFLAGS" ++ CPPFLAGS="$XORG_CFLAGS $DRI_CFLAGS $DRM_CFLAGS" ++ AC_CHECK_HEADERS([dri.h sarea.h dristruct.h],, [DRI=no], ++ [/* for dri.h */ ++ #include <xf86str.h> ++ /* for dristruct.h */ ++ #include <xorg-server.h> ++ #ifdef HAVE_DRI_H ++ # include <dri.h> ++ #endif ++ #ifdef HAVE_SAREA_H ++ # include <sarea.h> ++ #endif ++ ]) ++ CFLAGS="$save_CFLAGS $DEBUGFLAGS" ++ CPPFLAGS="$save_CPPFLAGS" ++else ++ DRI=no + fi ++ + AC_MSG_CHECKING([whether to include DRI support]) +-if test x$DRI = xauto; then +- if test "$have_dri_h" = yes -a \ +- "$have_sarea_h" = yes -a \ +- "$have_dristruct_h" = yes; then +- DRI="yes" +- else +- DRI="no" +- fi +-fi +-AC_MSG_RESULT([$DRI]) +-CFLAGS="$save_CFLAGS $DEBUGFLAGS" ++AC_MSG_RESULT([${DRI-yes}]) + +-AM_CONDITIONAL(DRI, test x$DRI = xyes) +-if test "$DRI" = yes; then +- PKG_CHECK_MODULES(DRI, [xf86driproto]) ++AM_CONDITIONAL(DRI, test x$DRI != xno) ++if test "x$DRI" != "xno"; then + AC_DEFINE(XF86DRI,1,[Enable DRI driver support]) + AC_DEFINE(XF86DRI_DEVEL,1,[Enable developmental DRI driver support]) ++else ++ DRI_CFLAGS="" ++ DRI_LIBS="" ++ ++ if test "x$enable_dri" = "xyes"; then ++ AC_MSG_ERROR([DRI requested but prerequisites not found]) ++ fi + fi + + if test "$XVMC" = yes; then +diff --git a/src/i965_render.c b/src/i965_render.c +index bfcd3f2..b76107d 100644 +--- a/src/i965_render.c ++++ b/src/i965_render.c +@@ -182,6 +182,10 @@ i965_check_composite(int op, + int width, int height) + { + ScrnInfoPtr scrn = xf86Screens[dest_picture->pDrawable->pScreen->myNum]; ++ intel_screen_private *intel = intel_get_screen_private(scrn); ++ ++ if (IS_GEN7(intel)) ++ return FALSE; + + /* Check for unsupported compositing operations. */ + if (op >= sizeof(i965_blend_op) / sizeof(i965_blend_op[0])) { +diff --git a/src/i965_video.c b/src/i965_video.c +index c757681..53a9394 100644 +--- a/src/i965_video.c ++++ b/src/i965_video.c +@@ -1210,7 +1210,7 @@ I965DisplayVideoTextured(ScrnInfoPtr scrn, + intel_batch_submit(scrn); + } + +- intel_batch_start_atomic(scrn, 100); ++ intel_batch_start_atomic(scrn, 150); + + i965_emit_video_setup(scrn, surface_state_binding_table_bo, n_src_surf, pixmap); + +diff --git a/src/intel_batchbuffer.c b/src/intel_batchbuffer.c +index 289ed2b..d0a41aa 100644 +--- a/src/intel_batchbuffer.c ++++ b/src/intel_batchbuffer.c +@@ -175,13 +175,6 @@ void intel_batch_emit_flush(ScrnInfoPtr scrn) + intel_batch_do_flush(scrn); + } + +-static Bool intel_batch_needs_flush(intel_screen_private *intel) +-{ +- ScreenPtr screen = intel->scrn->pScreen; +- PixmapPtr pixmap = screen->GetScreenPixmap(screen); +- return intel_get_pixmap_private(pixmap)->batch_write; +-} +- + void intel_batch_submit(ScrnInfoPtr scrn) + { + intel_screen_private *intel = intel_get_screen_private(scrn); +@@ -218,7 +211,9 @@ void intel_batch_submit(ScrnInfoPtr scrn) + ret = drm_intel_bo_mrb_exec(intel->batch_bo, + intel->batch_used*4, + NULL, 0, 0xffffffff, +- IS_GEN6(intel) ? intel->current_batch: I915_EXEC_DEFAULT); ++ (HAS_BLT(intel) ? ++ intel->current_batch: ++ I915_EXEC_DEFAULT)); + } + + if (ret != 0) { +@@ -241,8 +236,6 @@ void intel_batch_submit(ScrnInfoPtr scrn) + } + } + +- intel->needs_flush |= intel_batch_needs_flush(intel); +- + while (!list_is_empty(&intel->batch_pixmaps)) { + struct intel_pixmap *entry; + +diff --git a/src/intel_batchbuffer.h b/src/intel_batchbuffer.h +index 605932a..f5f118e 100644 +--- a/src/intel_batchbuffer.h ++++ b/src/intel_batchbuffer.h +@@ -50,14 +50,14 @@ static inline int intel_vertex_space(intel_screen_private *intel) + } + + static inline void +-intel_batch_require_space(ScrnInfoPtr scrn, intel_screen_private *intel, unsigned int sz) ++intel_batch_require_space(ScrnInfoPtr scrn, intel_screen_private *intel, int sz) + { + assert(sz < intel->batch_bo->size - 8); + if (intel_batch_space(intel) < sz) + intel_batch_submit(scrn); + } + +-static inline void intel_batch_start_atomic(ScrnInfoPtr scrn, unsigned int sz) ++static inline void intel_batch_start_atomic(ScrnInfoPtr scrn, int sz) + { + intel_screen_private *intel = intel_get_screen_private(scrn); + +@@ -137,6 +137,8 @@ intel_batch_mark_pixmap_domains(intel_screen_private *intel, + + priv->batch_write |= write_domain != 0; + priv->busy = 1; ++ ++ intel->needs_flush |= write_domain != 0; + } + + static inline void +diff --git a/src/intel_display.c b/src/intel_display.c +index b6592c4..b55b110 100644 +--- a/src/intel_display.c ++++ b/src/intel_display.c +@@ -1607,7 +1607,7 @@ Bool intel_mode_pre_init(ScrnInfoPtr scrn, int fd, int cpp) + gp.value = &has_flipping; + (void)drmCommandWriteRead(intel->drmSubFD, DRM_I915_GETPARAM, &gp, + sizeof(gp)); +- if (has_flipping) { ++ if (has_flipping && intel->swapbuffers_wait) { + xf86DrvMsg(scrn->scrnIndex, X_INFO, + "Kernel page flipping support detected, enabling\n"); + intel->use_pageflipping = TRUE; +diff --git a/src/intel_dri.c b/src/intel_dri.c +index a39b512..48d0f56 100644 +--- a/src/intel_dri.c ++++ b/src/intel_dri.c +@@ -182,6 +182,8 @@ static PixmapPtr fixup_shadow(DrawablePtr drawable, PixmapPtr pixmap) + /* And redirect the pixmap to the new bo (for 3D). */ + intel_set_pixmap_private(old, priv); + old->refcnt++; ++ ++ intel_get_screen_private(xf86Screens[screen->myNum])->needs_flush = TRUE; + return old; + } + +@@ -425,7 +427,7 @@ I830DRI2CopyRegion(DrawablePtr drawable, RegionPtr pRegion, + + /* Wait for the scanline to be outside the region to be copied */ + if (pixmap_is_scanout(get_drawable_pixmap(dst)) && +- intel->swapbuffers_wait) { ++ intel->swapbuffers_wait && INTEL_INFO(intel)->gen < 60) { + BoxPtr box; + BoxRec crtcbox; + int y1, y2; +diff --git a/src/intel_driver.c b/src/intel_driver.c +index e867351..8666421 100644 +--- a/src/intel_driver.c ++++ b/src/intel_driver.c +@@ -84,7 +84,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + typedef enum { +- OPTION_ACCELMETHOD, + OPTION_DRI, + OPTION_VIDEO_KEY, + OPTION_COLOR_KEY, +@@ -105,7 +104,6 @@ typedef enum { + } I830Opts; + + static OptionInfoRec I830Options[] = { +- {OPTION_ACCELMETHOD, "AccelMethod", OPTV_ANYSTR, {0}, FALSE}, + {OPTION_DRI, "DRI", OPTV_BOOLEAN, {0}, TRUE}, + {OPTION_COLOR_KEY, "ColorKey", OPTV_INTEGER, {0}, FALSE}, + {OPTION_VIDEO_KEY, "VideoKey", OPTV_INTEGER, {0}, FALSE}, +@@ -328,10 +326,10 @@ static void intel_check_dri_option(ScrnInfoPtr scrn) + if (!xf86ReturnOptValBool(intel->Options, OPTION_DRI, TRUE)) + intel->directRenderingType = DRI_DISABLED; + +- if (scrn->depth != 16 && scrn->depth != 24) { ++ if (scrn->depth != 16 && scrn->depth != 24 && scrn->depth != 30) { + xf86DrvMsg(scrn->scrnIndex, X_CONFIG, + "DRI is disabled because it " +- "runs only at depths 16 and 24.\n"); ++ "runs only at depths 16, 24, and 30.\n"); + intel->directRenderingType = DRI_DISABLED; + } + } +@@ -586,6 +584,7 @@ static Bool I830PreInit(ScrnInfoPtr scrn, int flags) + case 15: + case 16: + case 24: ++ case 30: + break; + default: + xf86DrvMsg(scrn->scrnIndex, X_ERROR, +@@ -658,8 +657,6 @@ static Bool I830PreInit(ScrnInfoPtr scrn, int flags) + intel->swapbuffers_wait = xf86ReturnOptValBool(intel->Options, + OPTION_SWAPBUFFERS_WAIT, + TRUE); +- if (IS_GEN6(intel)) +- intel->swapbuffers_wait = FALSE; + + xf86DrvMsg(scrn->scrnIndex, X_CONFIG, "Framebuffer %s\n", + intel->tiling & INTEL_TILING_FB ? "tiled" : "linear"); +diff --git a/src/intel_driver.h b/src/intel_driver.h +index 2e72177..4a584fe 100644 +--- a/src/intel_driver.h ++++ b/src/intel_driver.h +@@ -184,6 +184,13 @@ + #define PCI_CHIP_SANDYBRIDGE_M_GT2_PLUS 0x0126 + #define PCI_CHIP_SANDYBRIDGE_BRIDGE_S 0x0108 /* Server */ + #define PCI_CHIP_SANDYBRIDGE_S_GT 0x010A ++ ++#define PCI_CHIP_IVYBRIDGE_M_GT1 0x0156 ++#define PCI_CHIP_IVYBRIDGE_M_GT2 0x0166 ++#define PCI_CHIP_IVYBRIDGE_D_GT1 0x0152 ++#define PCI_CHIP_IVYBRIDGE_D_GT2 0x0162 ++#define PCI_CHIP_IVYBRIDGE_S_GT1 0x015a ++ + #endif + + #define I85X_CAPID 0x44 +@@ -209,6 +216,7 @@ + #define IS_GEN4(intel) IS_GENx(intel, 4) + #define IS_GEN5(intel) IS_GENx(intel, 5) + #define IS_GEN6(intel) IS_GENx(intel, 6) ++#define IS_GEN7(intel) IS_GENx(intel, 7) + + /* Some chips have specific errata (or limits) that we need to workaround. */ + #define IS_I830(intel) (DEVICE_ID((intel)->PciInfo) == PCI_CHIP_I830_M) +@@ -222,6 +230,7 @@ + + /* supports Y tiled surfaces (pre-965 Mesa isn't ready yet) */ + #define SUPPORTS_YTILING(pI810) (INTEL_INFO(intel)->gen >= 40) ++#define HAS_BLT(pI810) (INTEL_INFO(intel)->gen >= 60) + + extern SymTabRec *intel_chipsets; + +diff --git a/src/intel_module.c b/src/intel_module.c +index 8416544..9468e72 100644 +--- a/src/intel_module.c ++++ b/src/intel_module.c +@@ -39,6 +39,8 @@ + + #include <xf86drmMode.h> + ++static struct intel_device_info *chipset_info; ++ + static const struct intel_device_info intel_i81x_info = { + .gen = 10, + }; +@@ -71,329 +73,148 @@ static const struct intel_device_info intel_sandybridge_info = { + .gen = 60, + }; + ++static const struct intel_device_info intel_ivybridge_info = { ++ .gen = 70, ++}; ++ + static const SymTabRec _intel_chipsets[] = { +- {PCI_CHIP_I810, "i810"}, +- {PCI_CHIP_I810_DC100, "i810-dc100"}, +- {PCI_CHIP_I810_E, "i810e"}, +- {PCI_CHIP_I815, "i815"}, +- {PCI_CHIP_I830_M, "i830M"}, +- {PCI_CHIP_845_G, "845G"}, +- {PCI_CHIP_I854, "854"}, +- {PCI_CHIP_I855_GM, "852GM/855GM"}, +- {PCI_CHIP_I865_G, "865G"}, +- {PCI_CHIP_I915_G, "915G"}, +- {PCI_CHIP_E7221_G, "E7221 (i915)"}, +- {PCI_CHIP_I915_GM, "915GM"}, +- {PCI_CHIP_I945_G, "945G"}, +- {PCI_CHIP_I945_GM, "945GM"}, +- {PCI_CHIP_I945_GME, "945GME"}, +- {PCI_CHIP_PINEVIEW_M, "Pineview GM"}, +- {PCI_CHIP_PINEVIEW_G, "Pineview G"}, +- {PCI_CHIP_I965_G, "965G"}, +- {PCI_CHIP_G35_G, "G35"}, +- {PCI_CHIP_I965_Q, "965Q"}, +- {PCI_CHIP_I946_GZ, "946GZ"}, +- {PCI_CHIP_I965_GM, "965GM"}, +- {PCI_CHIP_I965_GME, "965GME/GLE"}, +- {PCI_CHIP_G33_G, "G33"}, +- {PCI_CHIP_Q35_G, "Q35"}, +- {PCI_CHIP_Q33_G, "Q33"}, +- {PCI_CHIP_GM45_GM, "GM45"}, +- {PCI_CHIP_G45_E_G, "4 Series"}, +- {PCI_CHIP_G45_G, "G45/G43"}, +- {PCI_CHIP_Q45_G, "Q45/Q43"}, +- {PCI_CHIP_G41_G, "G41"}, +- {PCI_CHIP_B43_G, "B43"}, +- {PCI_CHIP_B43_G1, "B43"}, +- {PCI_CHIP_IRONLAKE_D_G, "Clarkdale"}, +- {PCI_CHIP_IRONLAKE_M_G, "Arrandale"}, +- {PCI_CHIP_SANDYBRIDGE_GT1, "Sandybridge" }, +- {PCI_CHIP_SANDYBRIDGE_GT2, "Sandybridge" }, +- {PCI_CHIP_SANDYBRIDGE_GT2_PLUS, "Sandybridge" }, +- {PCI_CHIP_SANDYBRIDGE_M_GT1, "Sandybridge" }, +- {PCI_CHIP_SANDYBRIDGE_M_GT2, "Sandybridge" }, +- {PCI_CHIP_SANDYBRIDGE_M_GT2_PLUS, "Sandybridge" }, +- {PCI_CHIP_SANDYBRIDGE_S_GT, "Sandybridge" }, +- {-1, NULL} ++ {PCI_CHIP_I810, "i810"}, ++ {PCI_CHIP_I810_DC100, "i810-dc100"}, ++ {PCI_CHIP_I810_E, "i810e"}, ++ {PCI_CHIP_I815, "i815"}, ++ {PCI_CHIP_I830_M, "i830M"}, ++ {PCI_CHIP_845_G, "845G"}, ++ {PCI_CHIP_I854, "854"}, ++ {PCI_CHIP_I855_GM, "852GM/855GM"}, ++ {PCI_CHIP_I865_G, "865G"}, ++ {PCI_CHIP_I915_G, "915G"}, ++ {PCI_CHIP_E7221_G, "E7221 (i915)"}, ++ {PCI_CHIP_I915_GM, "915GM"}, ++ {PCI_CHIP_I945_G, "945G"}, ++ {PCI_CHIP_I945_GM, "945GM"}, ++ {PCI_CHIP_I945_GME, "945GME"}, ++ {PCI_CHIP_PINEVIEW_M, "Pineview GM"}, ++ {PCI_CHIP_PINEVIEW_G, "Pineview G"}, ++ {PCI_CHIP_I965_G, "965G"}, ++ {PCI_CHIP_G35_G, "G35"}, ++ {PCI_CHIP_I965_Q, "965Q"}, ++ {PCI_CHIP_I946_GZ, "946GZ"}, ++ {PCI_CHIP_I965_GM, "965GM"}, ++ {PCI_CHIP_I965_GME, "965GME/GLE"}, ++ {PCI_CHIP_G33_G, "G33"}, ++ {PCI_CHIP_Q35_G, "Q35"}, ++ {PCI_CHIP_Q33_G, "Q33"}, ++ {PCI_CHIP_GM45_GM, "GM45"}, ++ {PCI_CHIP_G45_E_G, "4 Series"}, ++ {PCI_CHIP_G45_G, "G45/G43"}, ++ {PCI_CHIP_Q45_G, "Q45/Q43"}, ++ {PCI_CHIP_G41_G, "G41"}, ++ {PCI_CHIP_B43_G, "B43"}, ++ {PCI_CHIP_B43_G1, "B43"}, ++ {PCI_CHIP_IRONLAKE_D_G, "Clarkdale"}, ++ {PCI_CHIP_IRONLAKE_M_G, "Arrandale"}, ++ {PCI_CHIP_SANDYBRIDGE_GT1, "Sandybridge Desktop (GT1)" }, ++ {PCI_CHIP_SANDYBRIDGE_GT2, "Sandybridge Desktop (GT2)" }, ++ {PCI_CHIP_SANDYBRIDGE_GT2_PLUS, "Sandybridge Desktop (GT2+)" }, ++ {PCI_CHIP_SANDYBRIDGE_M_GT1, "Sandybridge Mobile (GT1)" }, ++ {PCI_CHIP_SANDYBRIDGE_M_GT2, "Sandybridge Mobile (GT2)" }, ++ {PCI_CHIP_SANDYBRIDGE_M_GT2_PLUS, "Sandybridge Mobile (GT2+)" }, ++ {PCI_CHIP_SANDYBRIDGE_S_GT, "Sandybridge Server" }, ++ {PCI_CHIP_IVYBRIDGE_M_GT1, "Ivybridge Mobile (GT1)" }, ++ {PCI_CHIP_IVYBRIDGE_M_GT2, "Ivybridge Mobile (GT2)" }, ++ {PCI_CHIP_IVYBRIDGE_D_GT1, "Ivybridge Desktop (GT1)" }, ++ {PCI_CHIP_IVYBRIDGE_D_GT2, "Ivybridge Desktop (GT2)" }, ++ {PCI_CHIP_IVYBRIDGE_S_GT1, "Ivybridge Server" }, ++ {-1, NULL} + }; + SymTabRec *intel_chipsets = (SymTabRec *) _intel_chipsets; + + #define INTEL_DEVICE_MATCH(d,i) \ +-{ 0x8086, (d), PCI_MATCH_ANY, PCI_MATCH_ANY, 0, 0, (i) } ++ { 0x8086, (d), PCI_MATCH_ANY, PCI_MATCH_ANY, 0, 0, (intptr_t)(i) } + + static const struct pci_id_match intel_device_match[] = { +- INTEL_DEVICE_MATCH (PCI_CHIP_I810, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_I810_DC100, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_I810_E, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_I815, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_I830_M, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_845_G, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_I854, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_I855_GM, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_I865_G, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_I915_G, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_E7221_G, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_I915_GM, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_I945_G, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_I945_GM, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_I945_GME, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_PINEVIEW_M, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_PINEVIEW_G, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_I965_G, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_G35_G, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_I965_Q, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_I946_GZ, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_I965_GM, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_I965_GME, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_G33_G, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_Q35_G, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_Q33_G, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_GM45_GM, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_G45_E_G, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_G45_G, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_Q45_G, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_G41_G, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_B43_G, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_IRONLAKE_D_G, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_IRONLAKE_M_G, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_SANDYBRIDGE_GT1, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_SANDYBRIDGE_GT2, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_SANDYBRIDGE_GT2_PLUS, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_SANDYBRIDGE_M_GT1, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_SANDYBRIDGE_M_GT2, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_SANDYBRIDGE_M_GT2_PLUS, 0 ), +- INTEL_DEVICE_MATCH (PCI_CHIP_SANDYBRIDGE_S_GT, 0 ), +- { 0, 0, 0 }, +-}; +- +-static PciChipsets intel_pci_chipsets[] = { +- {PCI_CHIP_I810, PCI_CHIP_I810, NULL}, +- {PCI_CHIP_I810_DC100, PCI_CHIP_I810_DC100, NULL}, +- {PCI_CHIP_I810_E, PCI_CHIP_I810_E, NULL}, +- {PCI_CHIP_I815, PCI_CHIP_I815, NULL}, +- {PCI_CHIP_I830_M, PCI_CHIP_I830_M, NULL}, +- {PCI_CHIP_845_G, PCI_CHIP_845_G, NULL}, +- {PCI_CHIP_I854, PCI_CHIP_I854, NULL}, +- {PCI_CHIP_I855_GM, PCI_CHIP_I855_GM, NULL}, +- {PCI_CHIP_I865_G, PCI_CHIP_I865_G, NULL}, +- {PCI_CHIP_I915_G, PCI_CHIP_I915_G, NULL}, +- {PCI_CHIP_E7221_G, PCI_CHIP_E7221_G, NULL}, +- {PCI_CHIP_I915_GM, PCI_CHIP_I915_GM, NULL}, +- {PCI_CHIP_I945_G, PCI_CHIP_I945_G, NULL}, +- {PCI_CHIP_I945_GM, PCI_CHIP_I945_GM, NULL}, +- {PCI_CHIP_I945_GME, PCI_CHIP_I945_GME, NULL}, +- {PCI_CHIP_PINEVIEW_M, PCI_CHIP_PINEVIEW_M, NULL}, +- {PCI_CHIP_PINEVIEW_G, PCI_CHIP_PINEVIEW_G, NULL}, +- {PCI_CHIP_I965_G, PCI_CHIP_I965_G, NULL}, +- {PCI_CHIP_G35_G, PCI_CHIP_G35_G, NULL}, +- {PCI_CHIP_I965_Q, PCI_CHIP_I965_Q, NULL}, +- {PCI_CHIP_I946_GZ, PCI_CHIP_I946_GZ, NULL}, +- {PCI_CHIP_I965_GM, PCI_CHIP_I965_GM, NULL}, +- {PCI_CHIP_I965_GME, PCI_CHIP_I965_GME, NULL}, +- {PCI_CHIP_G33_G, PCI_CHIP_G33_G, NULL}, +- {PCI_CHIP_Q35_G, PCI_CHIP_Q35_G, NULL}, +- {PCI_CHIP_Q33_G, PCI_CHIP_Q33_G, NULL}, +- {PCI_CHIP_GM45_GM, PCI_CHIP_GM45_GM, NULL}, +- {PCI_CHIP_G45_E_G, PCI_CHIP_G45_E_G, NULL}, +- {PCI_CHIP_G45_G, PCI_CHIP_G45_G, NULL}, +- {PCI_CHIP_Q45_G, PCI_CHIP_Q45_G, NULL}, +- {PCI_CHIP_G41_G, PCI_CHIP_G41_G, NULL}, +- {PCI_CHIP_B43_G, PCI_CHIP_B43_G, NULL}, +- {PCI_CHIP_IRONLAKE_D_G, PCI_CHIP_IRONLAKE_D_G, NULL}, +- {PCI_CHIP_IRONLAKE_M_G, PCI_CHIP_IRONLAKE_M_G, NULL}, +- {PCI_CHIP_SANDYBRIDGE_GT1, PCI_CHIP_SANDYBRIDGE_GT1, NULL}, +- {PCI_CHIP_SANDYBRIDGE_GT2, PCI_CHIP_SANDYBRIDGE_GT2, NULL}, +- {PCI_CHIP_SANDYBRIDGE_GT2_PLUS, PCI_CHIP_SANDYBRIDGE_GT2_PLUS, NULL}, +- {PCI_CHIP_SANDYBRIDGE_M_GT1, PCI_CHIP_SANDYBRIDGE_M_GT1, NULL}, +- {PCI_CHIP_SANDYBRIDGE_M_GT2, PCI_CHIP_SANDYBRIDGE_M_GT2, NULL}, +- {PCI_CHIP_SANDYBRIDGE_M_GT2_PLUS, PCI_CHIP_SANDYBRIDGE_M_GT2_PLUS, NULL}, +- {PCI_CHIP_SANDYBRIDGE_S_GT, PCI_CHIP_SANDYBRIDGE_S_GT, NULL}, +- {-1, -1, NULL } ++ INTEL_DEVICE_MATCH (PCI_CHIP_I810, &intel_i81x_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_I810_DC100, &intel_i81x_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_I810_E, &intel_i81x_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_I815, &intel_i81x_info ), ++ ++ INTEL_DEVICE_MATCH (PCI_CHIP_I830_M, &intel_i8xx_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_845_G, &intel_i8xx_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_I854, &intel_i8xx_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_I855_GM, &intel_i8xx_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_I865_G, &intel_i8xx_info ), ++ ++ INTEL_DEVICE_MATCH (PCI_CHIP_I915_G, &intel_i915_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_E7221_G, &intel_i915_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_I915_GM, &intel_i915_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_I945_G, &intel_i915_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_I945_GM, &intel_i915_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_I945_GME, &intel_i915_info ), ++ ++ INTEL_DEVICE_MATCH (PCI_CHIP_PINEVIEW_M, &intel_g33_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_PINEVIEW_G, &intel_g33_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_G33_G, &intel_g33_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_Q33_G, &intel_g33_info ), ++ /* Another marketing win: Q35 is another g33 device not a gen4 part ++ * like its G35 brethren. ++ */ ++ INTEL_DEVICE_MATCH (PCI_CHIP_Q35_G, &intel_g33_info ), ++ ++ INTEL_DEVICE_MATCH (PCI_CHIP_I965_G, &intel_i965_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_G35_G, &intel_i965_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_I965_Q, &intel_i965_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_I946_GZ, &intel_i965_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_I965_GM, &intel_i965_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_I965_GME, &intel_i965_info ), ++ ++ INTEL_DEVICE_MATCH (PCI_CHIP_GM45_GM, &intel_g4x_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_G45_E_G, &intel_g4x_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_G45_G, &intel_g4x_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_Q45_G, &intel_g4x_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_G41_G, &intel_g4x_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_B43_G, &intel_g4x_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_B43_G1, &intel_g4x_info ), ++ ++ INTEL_DEVICE_MATCH (PCI_CHIP_IRONLAKE_D_G, &intel_ironlake_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_IRONLAKE_M_G, &intel_ironlake_info ), ++ ++ INTEL_DEVICE_MATCH (PCI_CHIP_SANDYBRIDGE_GT1, &intel_sandybridge_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_SANDYBRIDGE_GT2, &intel_sandybridge_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_SANDYBRIDGE_GT2_PLUS, &intel_sandybridge_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_SANDYBRIDGE_M_GT1, &intel_sandybridge_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_SANDYBRIDGE_M_GT2, &intel_sandybridge_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_SANDYBRIDGE_M_GT2_PLUS, &intel_sandybridge_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_SANDYBRIDGE_S_GT, &intel_sandybridge_info ), ++ ++ INTEL_DEVICE_MATCH (PCI_CHIP_IVYBRIDGE_M_GT1, &intel_ivybridge_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_IVYBRIDGE_M_GT2, &intel_ivybridge_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_IVYBRIDGE_D_GT1, &intel_ivybridge_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_IVYBRIDGE_D_GT2, &intel_ivybridge_info ), ++ INTEL_DEVICE_MATCH (PCI_CHIP_IVYBRIDGE_S_GT1, &intel_ivybridge_info ), ++ ++ { 0, 0, 0 }, + }; + + void intel_detect_chipset(ScrnInfoPtr scrn, + struct pci_device *pci, + struct intel_chipset *chipset) + { +- uint32_t capid; +- +- switch (DEVICE_ID(pci)) { +- case PCI_CHIP_I810: +- chipset->name = "i810"; +- chipset->info = &intel_i81x_info; +- break; +- case PCI_CHIP_I810_DC100: +- chipset->name = "i810-dc100"; +- chipset->info = &intel_i81x_info; +- break; +- case PCI_CHIP_I810_E: +- chipset->name = "i810e"; +- chipset->info = &intel_i81x_info; +- break; +- case PCI_CHIP_I815: +- chipset->name = "i815"; +- chipset->info = &intel_i81x_info; +- break; +- case PCI_CHIP_I830_M: +- chipset->name = "830M"; +- chipset->info = &intel_i8xx_info; +- break; +- case PCI_CHIP_845_G: +- chipset->name = "845G"; +- chipset->info = &intel_i8xx_info; +- break; +- case PCI_CHIP_I854: +- chipset->name = "854"; +- chipset->info = &intel_i8xx_info; +- break; +- case PCI_CHIP_I855_GM: +- /* Check capid register to find the chipset variant */ +- pci_device_cfg_read_u32(pci, &capid, I85X_CAPID); +- chipset->variant = +- (capid >> I85X_VARIANT_SHIFT) & I85X_VARIANT_MASK; +- switch (chipset->variant) { +- case I855_GM: +- chipset->name = "855GM"; +- break; +- case I855_GME: +- chipset->name = "855GME"; +- break; +- case I852_GM: +- chipset->name = "852GM"; +- break; +- case I852_GME: +- chipset->name = "852GME"; +- break; +- default: +- xf86DrvMsg(scrn->scrnIndex, X_INFO, +- "Unknown 852GM/855GM variant: 0x%x)\n", +- chipset->variant); +- chipset->name = "852GM/855GM (unknown variant)"; +- break; ++ int i; ++ ++ chipset->info = chipset_info; ++ ++ for (i = 0; intel_chipsets[i].name != NULL; i++) { ++ if (DEVICE_ID(pci) == intel_chipsets[i].token) { ++ chipset->name = intel_chipsets[i].name; ++ break; ++ } ++ } ++ if (intel_chipsets[i].name == NULL) { ++ chipset->name = "unknown chipset"; + } +- chipset->info = &intel_i8xx_info; +- break; +- case PCI_CHIP_I865_G: +- chipset->name = "865G"; +- chipset->info = &intel_i8xx_info; +- break; +- case PCI_CHIP_I915_G: +- chipset->name = "915G"; +- chipset->info = &intel_i915_info; +- break; +- case PCI_CHIP_E7221_G: +- chipset->name = "E7221 (i915)"; +- chipset->info = &intel_i915_info; +- break; +- case PCI_CHIP_I915_GM: +- chipset->name = "915GM"; +- chipset->info = &intel_i915_info; +- break; +- case PCI_CHIP_I945_G: +- chipset->name = "945G"; +- chipset->info = &intel_i915_info; +- break; +- case PCI_CHIP_I945_GM: +- chipset->name = "945GM"; +- chipset->info = &intel_i915_info; +- break; +- case PCI_CHIP_I945_GME: +- chipset->name = "945GME"; +- chipset->info = &intel_i915_info; +- break; +- case PCI_CHIP_PINEVIEW_M: +- chipset->name = "Pineview GM"; +- chipset->info = &intel_g33_info; +- break; +- case PCI_CHIP_PINEVIEW_G: +- chipset->name = "Pineview G"; +- chipset->info = &intel_g33_info; +- break; +- case PCI_CHIP_I965_G: +- chipset->name = "965G"; +- chipset->info = &intel_i965_info; +- break; +- case PCI_CHIP_G35_G: +- chipset->name = "G35"; +- chipset->info = &intel_i965_info; +- break; +- case PCI_CHIP_I965_Q: +- chipset->name = "965Q"; +- chipset->info = &intel_i965_info; +- break; +- case PCI_CHIP_I946_GZ: +- chipset->name = "946GZ"; +- chipset->info = &intel_i965_info; +- break; +- case PCI_CHIP_I965_GM: +- chipset->name = "965GM"; +- chipset->info = &intel_i965_info; +- break; +- case PCI_CHIP_I965_GME: +- chipset->name = "965GME/GLE"; +- chipset->info = &intel_i965_info; +- break; +- case PCI_CHIP_G33_G: +- chipset->name = "G33"; +- chipset->info = &intel_g33_info; +- break; +- case PCI_CHIP_Q35_G: +- chipset->name = "Q35"; +- chipset->info = &intel_g33_info; +- break; +- case PCI_CHIP_Q33_G: +- chipset->name = "Q33"; +- chipset->info = &intel_g33_info; +- break; +- case PCI_CHIP_GM45_GM: +- chipset->name = "GM45"; +- chipset->info = &intel_g4x_info; +- break; +- case PCI_CHIP_G45_E_G: +- chipset->name = "4 Series"; +- chipset->info = &intel_g4x_info; +- break; +- case PCI_CHIP_G45_G: +- chipset->name = "G45/G43"; +- chipset->info = &intel_g4x_info; +- break; +- case PCI_CHIP_Q45_G: +- chipset->name = "Q45/Q43"; +- chipset->info = &intel_g4x_info; +- break; +- case PCI_CHIP_G41_G: +- chipset->name = "G41"; +- chipset->info = &intel_g4x_info; +- break; +- case PCI_CHIP_B43_G: +- chipset->name = "B43"; +- chipset->info = &intel_g4x_info; +- break; +- case PCI_CHIP_IRONLAKE_D_G: +- chipset->name = "Clarkdale"; +- chipset->info = &intel_ironlake_info; +- break; +- case PCI_CHIP_IRONLAKE_M_G: +- chipset->name = "Arrandale"; +- chipset->info = &intel_ironlake_info; +- break; +- case PCI_CHIP_SANDYBRIDGE_GT1: +- case PCI_CHIP_SANDYBRIDGE_GT2: +- case PCI_CHIP_SANDYBRIDGE_GT2_PLUS: +- case PCI_CHIP_SANDYBRIDGE_M_GT1: +- case PCI_CHIP_SANDYBRIDGE_M_GT2: +- case PCI_CHIP_SANDYBRIDGE_M_GT2_PLUS: +- case PCI_CHIP_SANDYBRIDGE_S_GT: +- chipset->name = "Sandybridge"; +- chipset->info = &intel_sandybridge_info; +- break; +- default: +- chipset->name = "unknown chipset"; +- break; +- } +- +- xf86DrvMsg(scrn->scrnIndex, X_INFO, +- "Integrated Graphics Chipset: Intel(R) %s\n", chipset->name); ++ ++ xf86DrvMsg(scrn->scrnIndex, X_INFO, ++ "Integrated Graphics Chipset: Intel(R) %s\n", chipset->name); + } + + /* +@@ -404,30 +225,30 @@ void intel_detect_chipset(ScrnInfoPtr scrn, + */ + static void intel_identify(int flags) + { +- xf86PrintChipsets(INTEL_NAME, +- "Driver for Intel Integrated Graphics Chipsets", +- intel_chipsets); ++ xf86PrintChipsets(INTEL_NAME, ++ "Driver for Intel Integrated Graphics Chipsets", ++ intel_chipsets); + } + + static Bool intel_driver_func(ScrnInfoPtr pScrn, + xorgDriverFuncOp op, + pointer ptr) + { +- xorgHWFlags *flag; ++ xorgHWFlags *flag; + +- switch (op) { +- case GET_REQUIRED_HW_INTERFACES: +- flag = (CARD32*)ptr; ++ switch (op) { ++ case GET_REQUIRED_HW_INTERFACES: ++ flag = (CARD32*)ptr; + #ifdef KMS_ONLY +- (*flag) = 0; ++ (*flag) = 0; + #else +- (*flag) = HW_IO | HW_MMIO; ++ (*flag) = HW_IO | HW_MMIO; + #endif +- return TRUE; +- default: +- /* Unknown or deprecated function */ +- return FALSE; +- } ++ return TRUE; ++ default: ++ /* Unknown or deprecated function */ ++ return FALSE; ++ } + } + + static Bool has_kernel_mode_setting(struct pci_device *dev) +@@ -458,55 +279,65 @@ static Bool has_kernel_mode_setting(struct pci_device *dev) + * Setup the dispatch table for the rest of the driver functions. + * + */ +-static Bool intel_pci_probe (DriverPtr driver, +- int entity_num, +- struct pci_device *device, +- intptr_t match_data) ++static Bool intel_pci_probe(DriverPtr driver, ++ int entity_num, ++ struct pci_device *device, ++ intptr_t match_data) + { +- ScrnInfoPtr scrn; ++ ScrnInfoPtr scrn; ++ PciChipsets intel_pci_chipsets[ARRAY_SIZE(intel_chipsets)]; ++ int i; ++ ++ chipset_info = (void *)match_data; + +- if (!has_kernel_mode_setting(device)) { ++ if (!has_kernel_mode_setting(device)) { + #if KMS_ONLY +- return FALSE; ++ return FALSE; + #else +- switch (DEVICE_ID(device)) { +- case PCI_CHIP_I810: +- case PCI_CHIP_I810_DC100: +- case PCI_CHIP_I810_E: +- case PCI_CHIP_I815: +- break; +- default: +- return FALSE; +- } ++ switch (DEVICE_ID(device)) { ++ case PCI_CHIP_I810: ++ case PCI_CHIP_I810_DC100: ++ case PCI_CHIP_I810_E: ++ case PCI_CHIP_I815: ++ break; ++ default: ++ return FALSE; ++ } + #endif +- } ++ } + +- scrn = xf86ConfigPciEntity(NULL, 0, entity_num, intel_pci_chipsets, +- NULL, NULL, NULL, NULL, NULL); +- if (scrn != NULL) { +- scrn->driverVersion = INTEL_VERSION; +- scrn->driverName = INTEL_DRIVER_NAME; +- scrn->name = INTEL_NAME; +- scrn->Probe = NULL; ++ for (i = 0; i < ARRAY_SIZE(intel_chipsets); i++) { ++ intel_pci_chipsets[i].numChipset = intel_chipsets[i].token; ++ intel_pci_chipsets[i].PCIid = intel_chipsets[i].token; ++ intel_pci_chipsets[i].dummy = NULL; ++ } ++ ++ scrn = xf86ConfigPciEntity(NULL, 0, entity_num, intel_pci_chipsets, ++ NULL, NULL, NULL, NULL, NULL); ++ if (scrn != NULL) { ++ scrn->driverVersion = INTEL_VERSION; ++ scrn->driverName = INTEL_DRIVER_NAME; ++ scrn->name = INTEL_NAME; ++ scrn->Probe = NULL; + + #if KMS_ONLY +- intel_init_scrn(scrn); ++ intel_init_scrn(scrn); + #else +- switch (DEVICE_ID(device)) { +- case PCI_CHIP_I810: +- case PCI_CHIP_I810_DC100: +- case PCI_CHIP_I810_E: +- case PCI_CHIP_I815: +- lg_i810_init(scrn); +- break; +- +- default: +- intel_init_scrn(scrn); +- break; +- } ++ switch (DEVICE_ID(device)) { ++ case PCI_CHIP_I810: ++ case PCI_CHIP_I810_DC100: ++ case PCI_CHIP_I810_E: ++ case PCI_CHIP_I815: ++ lg_i810_init(scrn); ++ break; ++ ++ default: ++ intel_init_scrn(scrn); ++ break; ++ } + #endif +- } +- return scrn != NULL; ++ } ++ return scrn != NULL; + } + + #ifdef XFree86LOADER +@@ -514,16 +345,16 @@ static Bool intel_pci_probe (DriverPtr driver, + static MODULESETUPPROTO(intel_setup); + + static XF86ModuleVersionInfo intel_version = { +- "intel", +- MODULEVENDORSTRING, +- MODINFOSTRING1, +- MODINFOSTRING2, +- XORG_VERSION_CURRENT, +- INTEL_VERSION_MAJOR, INTEL_VERSION_MINOR, INTEL_VERSION_PATCH, +- ABI_CLASS_VIDEODRV, +- ABI_VIDEODRV_VERSION, +- MOD_CLASS_VIDEODRV, +- {0, 0, 0, 0} ++ "intel", ++ MODULEVENDORSTRING, ++ MODINFOSTRING1, ++ MODINFOSTRING2, ++ XORG_VERSION_CURRENT, ++ INTEL_VERSION_MAJOR, INTEL_VERSION_MINOR, INTEL_VERSION_PATCH, ++ ABI_CLASS_VIDEODRV, ++ ABI_VIDEODRV_VERSION, ++ MOD_CLASS_VIDEODRV, ++ {0, 0, 0, 0} + }; + + static const OptionInfoRec * +@@ -546,16 +377,16 @@ intel_available_options(int chipid, int busid) + } + + static DriverRec intel = { +- INTEL_VERSION, +- INTEL_DRIVER_NAME, +- intel_identify, +- NULL, +- intel_available_options, +- NULL, +- 0, +- intel_driver_func, +- intel_device_match, +- intel_pci_probe ++ INTEL_VERSION, ++ INTEL_DRIVER_NAME, ++ intel_identify, ++ NULL, ++ intel_available_options, ++ NULL, ++ 0, ++ intel_driver_func, ++ intel_device_match, ++ intel_pci_probe + }; + + static pointer intel_setup(pointer module, +@@ -563,24 +394,24 @@ static pointer intel_setup(pointer module, + int *errmaj, + int *errmin) + { +- static Bool setupDone = 0; +- +- /* This module should be loaded only once, but check to be sure. +- */ +- if (!setupDone) { +- setupDone = 1; +- xf86AddDriver(&intel, module, HaveDriverFuncs); +- +- /* +- * The return value must be non-NULL on success even though there +- * is no TearDownProc. +- */ +- return (pointer) 1; +- } else { +- if (errmaj) +- *errmaj = LDR_ONCEONLY; +- return NULL; +- } ++ static Bool setupDone = 0; ++ ++ /* This module should be loaded only once, but check to be sure. ++ */ ++ if (!setupDone) { ++ setupDone = 1; ++ xf86AddDriver(&intel, module, HaveDriverFuncs); ++ ++ /* ++ * The return value must be non-NULL on success even though there ++ * is no TearDownProc. ++ */ ++ return (pointer) 1; ++ } else { ++ if (errmaj) ++ *errmaj = LDR_ONCEONLY; ++ return NULL; ++ } + } + + _X_EXPORT XF86ModuleData intelModuleData = { &intel_version, intel_setup, NULL }; +diff --git a/src/intel_video.c b/src/intel_video.c +index 499614f..021ca5f 100644 +--- a/src/intel_video.c ++++ b/src/intel_video.c +@@ -1599,6 +1599,7 @@ I830PutImageTextured(ScrnInfoPtr scrn, + pixmap); + } + ++ intel_get_screen_private(scrn)->needs_flush = TRUE; + DamageDamageRegion(drawable, clipBoxes); + + return Success; diff --git a/extra/xorg-server/PKGBUILD b/extra/xorg-server/PKGBUILD index b48bbea7f..7448e3fb5 100644 --- a/extra/xorg-server/PKGBUILD +++ b/extra/xorg-server/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 119887 2011-04-16 12:07:45Z andyrtr $ +# $Id: PKGBUILD 125806 2011-05-30 08:22:14Z jgc $ # 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.10.1 +pkgver=1.10.2 pkgrel=1 arch=('i686' 'x86_64') license=('custom') @@ -11,18 +11,20 @@ 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') options=('!libtool') source=(${url}/releases/individual/xserver/${pkgbase}-${pkgver}.tar.bz2 + git-fixes.patch bg-none-revert.patch - glx-pixmap-crash.patch xserver-1.10-pointer-barriers.patch xorg-redhat-die-ugly-pattern-die-die-die.patch + autoconfig-nvidia.patch xvfb-run xvfb-run.1 10-quirks.conf) -sha1sums=('59ada4c9a59f7f1eb4b68c359e9cd58272aa4809' +sha1sums=('fd831b3c6297d1a68830c602d767752d87b9ca54' + '6dd2bcd9d8b17d1a50ed8c15eb1cba480558e695' '629c6d8d52126eab81ee1b72a9e4209535f8cb81' - '19e7164dcf9814ad64231b50a46f651b0e68a27a' '1b95e91384a57d966428c7db98ed06f4cc562f91' '0efcdf61bde3c0cd813072b94e2b30ab922775b9' + 'f9328fd7bc931bb02c8909ecfcef35403de33782' 'c94f742d3f9cabf958ae58e4015d9dd185aabedc' '6838fc00ef4618c924a77e0fb03c05346080908a' '993798f3d22ad672d769dae5f48d1fa068d5578f') @@ -37,7 +39,12 @@ build() { # Patches from ~ajax/xserver xserver-next branch patch -Np1 -i "${srcdir}/bg-none-revert.patch" - patch -Np1 -i "${srcdir}/glx-pixmap-crash.patch" + + # Upstream fixes from 1.10 branch + patch -Np1 -i "${srcdir}/git-fixes.patch" + + # Use nouveau/nv/nvidia drivers for nvidia devices + patch -Np1 -i "${srcdir}/autoconfig-nvidia.patch" autoreconf ./configure --prefix=/usr \ diff --git a/extra/xorg-server/autoconfig-nvidia.patch b/extra/xorg-server/autoconfig-nvidia.patch new file mode 100644 index 000000000..c56586d54 --- /dev/null +++ b/extra/xorg-server/autoconfig-nvidia.patch @@ -0,0 +1,104 @@ +From a685b5cf34532cef96fc9b05f735088ac0c0c7ad Mon Sep 17 00:00:00 2001 +From: Fedora X Ninjas <x@fedoraproject.org> +Date: Tue, 16 Feb 2010 11:38:17 +1000 +Subject: [PATCH 08/17] autoconfig: select nouveau by default for NVIDIA GPUs + +Also, don't treat DRI setup failure as an error for nouveau. + +Modified by Archlinux: +Append nvidia driver to the list of prefered drivers +--- + glx/glxdri.c | 7 +++++-- + glx/glxdri2.c | 7 +++++-- + hw/xfree86/common/xf86AutoConfig.c | 19 ++++++++++++++++++- + 3 files changed, 28 insertions(+), 5 deletions(-) + +--- a/glx/glxdri.c ++++ b/glx/glxdri.c +@@ -978,6 +978,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen) + const __DRIconfig **driConfigs; + const __DRIextension **extensions; + int i; ++ int from = X_ERROR; + + if (!xf86LoaderCheckSymbol("DRIQueryDirectRenderingCapable") || + !DRIQueryDirectRenderingCapable(pScreen, &isCapable) || +@@ -1057,7 +1058,9 @@ __glXDRIscreenProbe(ScreenPtr pScreen) + + screen->driver = dlopen(filename, RTLD_LAZY | RTLD_LOCAL); + if (screen->driver == NULL) { +- LogMessage(X_ERROR, "AIGLX error: dlopen of %s failed (%s)\n", ++ if (!strcmp(driverName, "nouveau")) ++ from = X_INFO; ++ LogMessage(from, "AIGLX error: dlopen of %s failed (%s)\n", + filename, dlerror()); + goto handle_error; + } +@@ -1193,7 +1196,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen) + + free(screen); + +- LogMessage(X_ERROR, "AIGLX: reverting to software rendering\n"); ++ LogMessage(from, "AIGLX: reverting to software rendering\n"); + + return NULL; + } +--- a/glx/glxdri2.c ++++ b/glx/glxdri2.c +@@ -708,6 +708,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen) + const __DRIextension **extensions; + const __DRIconfig **driConfigs; + int i; ++ int from = X_ERROR; + + screen = calloc(1, sizeof *screen); + if (screen == NULL) +@@ -734,7 +735,9 @@ __glXDRIscreenProbe(ScreenPtr pScreen) + + screen->driver = dlopen(filename, RTLD_LAZY | RTLD_LOCAL); + if (screen->driver == NULL) { +- LogMessage(X_ERROR, "AIGLX error: dlopen of %s failed (%s)\n", ++ if (!strcmp(driverName, "nouveau")) ++ from = X_INFO; ++ LogMessage(from, "AIGLX error: dlopen of %s failed (%s)\n", + filename, dlerror()); + goto handle_error; + } +@@ -826,7 +829,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen) + + free(screen); + +- LogMessage(X_ERROR, "AIGLX: reverting to software rendering\n"); ++ LogMessage(from, "AIGLX: reverting to software rendering\n"); + + return NULL; + } +--- a/hw/xfree86/common/xf86pciBus.c ++++ b/hw/xfree86/common/xf86pciBus.c +@@ -1123,7 +1123,25 @@ videoPtrToDriverList(struct pci_device * + break; + case 0x102b: driverList[0] = "mga"; break; + case 0x10c8: driverList[0] = "neomagic"; break; +- case 0x10de: case 0x12d2: driverList[0] = "nv"; break; ++ case 0x10de: case 0x12d2: ++ switch (dev->device_id) { ++ /* NV1 */ ++ case 0x0008: ++ case 0x0009: ++ driverList[0] = "vesa"; ++ break; ++ /* NV3 */ ++ case 0x0018: ++ case 0x0019: ++ driverList[0] = "nv"; ++ break; ++ default: ++ driverList[0] = "nouveau"; ++ driverList[1] = "nv"; ++ driverList[2] = "nvidia"; ++ break; ++ } ++ break; + case 0x1106: driverList[0] = "openchrome"; break; + case 0x1b36: driverList[0] = "qxl"; break; + case 0x1163: driverList[0] = "rendition"; break; diff --git a/extra/xorg-server/git-fixes.patch b/extra/xorg-server/git-fixes.patch new file mode 100644 index 000000000..3eadd81ba --- /dev/null +++ b/extra/xorg-server/git-fixes.patch @@ -0,0 +1,318 @@ +From 613e0e9ef74c4542ed458200165adbcdfdf3cd17 Mon Sep 17 00:00:00 2001 +From: Jeremy Huddleston <jeremyhu@apple.com> +Date: Wed, 13 Apr 2011 18:51:30 +0000 +Subject: Send events that were missing from RRSelectInput + +The RANDR spec (randrproto.txt) specifies that RRSelectInput will send out +events corresponding to the event mask, if there have been changes to +CRTCs or outputs. Only screen events were being generated, however. + +Fixes http://bugs.freedesktop.org/21760 + +Signed-off-by: Federico Mena Quintero <federico@novell.com> +Reviewd-by: Keith Packard <keithp@keithp.com> +Signed-off-by: Keith Packard <keithp@keithp.com> +(cherry picked from commit b2997431fd426ab318bc5dfd2cd43956d733ebec) +--- +diff --git a/randr/rrdispatch.c b/randr/rrdispatch.c +index ac4d2ac..2135504 100644 +--- a/randr/rrdispatch.c ++++ b/randr/rrdispatch.c +@@ -146,7 +146,7 @@ ProcRRSelectInput (ClientPtr client) + /* + * Now see if the client needs an event + */ +- if (pScrPriv && (pRREvent->mask & RRScreenChangeNotifyMask)) ++ if (pScrPriv) + { + pTimes = &((RRTimesPtr) (pRRClient + 1))[pScreen->myNum]; + if (CompareTimeStamps (pTimes->setTime, +@@ -154,7 +154,35 @@ ProcRRSelectInput (ClientPtr client) + CompareTimeStamps (pTimes->configTime, + pScrPriv->lastConfigTime) != 0) + { +- RRDeliverScreenEvent (client, pWin, pScreen); ++ if (pRREvent->mask & RRScreenChangeNotifyMask) ++ { ++ RRDeliverScreenEvent (client, pWin, pScreen); ++ } ++ ++ if (pRREvent->mask & RRCrtcChangeNotifyMask) ++ { ++ int i; ++ ++ for (i = 0; i < pScrPriv->numCrtcs; i++) ++ { ++ RRDeliverCrtcEvent (client, pWin, pScrPriv->crtcs[i]); ++ } ++ } ++ ++ if (pRREvent->mask & RROutputChangeNotifyMask) ++ { ++ int i; ++ ++ for (i = 0; i < pScrPriv->numOutputs; i++) ++ { ++ RRDeliverOutputEvent (client, pWin, pScrPriv->outputs[i]); ++ } ++ } ++ ++ /* We don't check for RROutputPropertyNotifyMask, as randrproto.txt doesn't ++ * say if there ought to be notifications of changes to output properties ++ * if those changes occurred before the time RRSelectInput is called. ++ */ + } + } + } +-- +cgit v0.8.3-6-g21f6 +From 50b9d3142ff90af2f7fa35b7b1bf9e5a07723dbd Mon Sep 17 00:00:00 2001 +From: Aaron Plattner <aplattner@nvidia.com> +Date: Tue, 24 May 2011 23:02:42 +0000 +Subject: randr: check rotated virtual size limits correctly + +Commit d1107918d4626268803b54033a07405122278e7f introduced checks to +the RandR path that cause RRSetScreenConfig requests to fail if the +size is too large. Unfortunately, when RandR 1.1 rotation is enabled +it compares the rotated screen dimensions to the unrotated limits, +which causes 90- and 270-degree rotation to fail unless your screen +happens to be square: + + X Error of failed request: BadValue (integer parameter out of range for operation) + Major opcode of failed request: 153 (RANDR) + Minor opcode of failed request: 2 (RRSetScreenConfig) + Value in failed request: 0x780 + Serial number of failed request: 14 + Current serial number in output stream: 14 + +Fix this by moving the check above the code that swaps the dimensions +based on the rotation. + +Signed-off-by: Aaron Plattner <aplattner@nvidia.com> +Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com> +Tested-by: Robert Hooker <robert.hooker@canonical.com> +Tested-by: Kent Baxley <kent.baxley@canonical.com> +Signed-off-by: Keith Packard <keithp@keithp.com> +(cherry picked from commit b6c7b9b2f39e970cedb6bc1e073f901e28cb0fa3) +--- +diff --git a/randr/rrscreen.c b/randr/rrscreen.c +index 1bc1a9e..da6d48d 100644 +--- a/randr/rrscreen.c ++++ b/randr/rrscreen.c +@@ -910,12 +910,6 @@ ProcRRSetScreenConfig (ClientPtr client) + */ + width = mode->mode.width; + height = mode->mode.height; +- if (rotation & (RR_Rotate_90|RR_Rotate_270)) +- { +- width = mode->mode.height; +- height = mode->mode.width; +- } +- + if (width < pScrPriv->minWidth || pScrPriv->maxWidth < width) { + client->errorValue = width; + free(pData); +@@ -927,6 +921,12 @@ ProcRRSetScreenConfig (ClientPtr client) + return BadValue; + } + ++ if (rotation & (RR_Rotate_90|RR_Rotate_270)) ++ { ++ width = mode->mode.height; ++ height = mode->mode.width; ++ } ++ + if (width != pScreen->width || height != pScreen->height) + { + int c; +-- +cgit v0.8.3-6-g21f6 +From 4bfb22e7667c4cd55da5e7a31af29ce5769ecc65 Mon Sep 17 00:00:00 2001 +From: Aaron Plattner <aplattner@nvidia.com> +Date: Mon, 18 Apr 2011 15:23:48 +0000 +Subject: linux: Retry VT ioctls while errno == EINTR + +When the smart scheduler is enabled, the VT ioctls (particularly +VT_WAITACTIVE) can be interrupted by the smart scheduler's SIGALRMs. +Previously, this caused the server to immediately continue on to +ScreenInit, almost certainly causing a crash or failure because the X +server that owned the VT hadn't finished cleaning up. As of commit +7ee965a300c9eddcc1acacf9414cfe3e589222a8, it causes a FatalError +instead. + +Retrying the ioctl as long as it fails with errno == EINTR fixes the +problem and allows server regenerations to trigger VT switches that +actually succeed. + +Signed-off-by: Aaron Plattner <aplattner@nvidia.com> +Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> +Reviewed-by: Cyril Brulebois <kibi@debian.org> +Signed-off-by: Keith Packard <keithp@keithp.com> +(cherry picked from commit 88c4622b594a1725d0cee86bc82ad640d241c520) +--- +diff --git a/hw/xfree86/os-support/linux/lnx_init.c b/hw/xfree86/os-support/linux/lnx_init.c +index 9c71a42..77dfb2f 100644 +--- a/hw/xfree86/os-support/linux/lnx_init.c ++++ b/hw/xfree86/os-support/linux/lnx_init.c +@@ -62,17 +62,21 @@ drain_console(int fd, void *closure) + static void + switch_to(int vt, const char *from) + { +- if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, vt) < 0) +- FatalError("%s: VT_ACTIVATE failed: %s\n", from, strerror(errno)); ++ int ret; + +- if (ioctl(xf86Info.consoleFd, VT_WAITACTIVE, vt) < 0) +- FatalError("%s: VT_WAITACTIVE failed: %s\n", from, strerror(errno)); ++ SYSCALL(ret = ioctl(xf86Info.consoleFd, VT_ACTIVATE, vt)); ++ if (ret < 0) ++ FatalError("%s: VT_ACTIVATE failed: %s\n", from, strerror(errno)); ++ ++ SYSCALL(ret = ioctl(xf86Info.consoleFd, VT_WAITACTIVE, vt)); ++ if (ret < 0) ++ FatalError("%s: VT_WAITACTIVE failed: %s\n", from, strerror(errno)); + } + + void + xf86OpenConsole(void) + { +- int i, fd = -1; ++ int i, fd = -1, ret; + struct vt_mode VT; + struct vt_stat vts; + MessageType from = X_PROBED; +@@ -107,17 +111,19 @@ xf86OpenConsole(void) + + if (ShareVTs) + { +- if (ioctl(fd, VT_GETSTATE, &vts) == 0) +- xf86Info.vtno = vts.v_active; +- else +- FatalError("xf86OpenConsole: Cannot find the current" +- " VT (%s)\n", strerror(errno)); ++ SYSCALL(ret = ioctl(fd, VT_GETSTATE, &vts)); ++ if (ret < 0) ++ FatalError("xf86OpenConsole: Cannot find the current" ++ " VT (%s)\n", strerror(errno)); ++ xf86Info.vtno = vts.v_active; + } else { +- if ((ioctl(fd, VT_OPENQRY, &xf86Info.vtno) < 0) || +- (xf86Info.vtno == -1)) +- FatalError("xf86OpenConsole: Cannot find a free VT: %s\n", +- strerror(errno)); +- } ++ SYSCALL(ret = ioctl(fd, VT_OPENQRY, &xf86Info.vtno)); ++ if (ret < 0) ++ FatalError("xf86OpenConsole: Cannot find a free VT: " ++ "%s\n", strerror(errno)); ++ if (xf86Info.vtno == -1) ++ FatalError("xf86OpenConsole: Cannot find a free VT\n"); ++ } + close(fd); + } + +@@ -159,7 +165,8 @@ xf86OpenConsole(void) + * Linux doesn't switch to an active vt after the last close of a vt, + * so we do this ourselves by remembering which is active now. + */ +- if (ioctl(xf86Info.consoleFd, VT_GETSTATE, &vts) < 0) ++ SYSCALL(ret = ioctl(xf86Info.consoleFd, VT_GETSTATE, &vts)); ++ if (ret < 0) + xf86Msg(X_WARNING,"xf86OpenConsole: VT_GETSTATE failed: %s\n", + strerror(errno)); + else +@@ -171,7 +178,7 @@ xf86OpenConsole(void) + * Detach from the controlling tty to avoid char loss + */ + if ((i = open("/dev/tty",O_RDWR)) >= 0) { +- ioctl(i, TIOCNOTTY, 0); ++ SYSCALL(ioctl(i, TIOCNOTTY, 0)); + close(i); + } + } +@@ -186,9 +193,10 @@ xf86OpenConsole(void) + */ + switch_to(xf86Info.vtno, "xf86OpenConsole"); + +- if (ioctl(xf86Info.consoleFd, VT_GETMODE, &VT) < 0) +- FatalError("xf86OpenConsole: VT_GETMODE failed %s\n", +- strerror(errno)); ++ SYSCALL(ret = ioctl(xf86Info.consoleFd, VT_GETMODE, &VT)); ++ if (ret < 0) ++ FatalError("xf86OpenConsole: VT_GETMODE failed %s\n", ++ strerror(errno)); + + signal(SIGUSR1, xf86VTRequest); + +@@ -196,20 +204,23 @@ xf86OpenConsole(void) + VT.relsig = SIGUSR1; + VT.acqsig = SIGUSR1; + +- if (ioctl(xf86Info.consoleFd, VT_SETMODE, &VT) < 0) +- FatalError("xf86OpenConsole: VT_SETMODE VT_PROCESS failed: %s\n", ++ SYSCALL(ret = ioctl(xf86Info.consoleFd, VT_SETMODE, &VT)); ++ if (ret < 0) ++ FatalError("xf86OpenConsole: VT_SETMODE VT_PROCESS failed: %s\n", + strerror(errno)); +- +- if (ioctl(xf86Info.consoleFd, KDSETMODE, KD_GRAPHICS) < 0) +- FatalError("xf86OpenConsole: KDSETMODE KD_GRAPHICS failed %s\n", +- strerror(errno)); ++ ++ SYSCALL(ret = ioctl(xf86Info.consoleFd, KDSETMODE, KD_GRAPHICS)); ++ if (ret < 0) ++ FatalError("xf86OpenConsole: KDSETMODE KD_GRAPHICS failed %s\n", ++ strerror(errno)); + + tcgetattr(xf86Info.consoleFd, &tty_attr); +- ioctl(xf86Info.consoleFd, KDGKBMODE, &tty_mode); ++ SYSCALL(ioctl(xf86Info.consoleFd, KDGKBMODE, &tty_mode)); + +- if (ioctl(xf86Info.consoleFd, KDSKBMODE, K_RAW) < 0) +- FatalError("xf86OpenConsole: KDSKBMODE K_RAW failed %s\n", +- strerror(errno)); ++ SYSCALL(ret = ioctl(xf86Info.consoleFd, KDSKBMODE, K_RAW)); ++ if (ret < 0) ++ FatalError("xf86OpenConsole: KDSKBMODE K_RAW failed %s\n", ++ strerror(errno)); + + nTty = tty_attr; + nTty.c_iflag = (IGNPAR | IGNBRK) & (~PARMRK) & (~ISTRIP); +@@ -241,6 +252,7 @@ void + xf86CloseConsole(void) + { + struct vt_mode VT; ++ int ret; + + if (ShareVTs) { + close(xf86Info.consoleFd); +@@ -253,20 +265,23 @@ xf86CloseConsole(void) + }; + + /* Back to text mode ... */ +- if (ioctl(xf86Info.consoleFd, KDSETMODE, KD_TEXT) < 0) ++ SYSCALL(ret = ioctl(xf86Info.consoleFd, KDSETMODE, KD_TEXT)); ++ if (ret < 0) + xf86Msg(X_WARNING, "xf86CloseConsole: KDSETMODE failed: %s\n", + strerror(errno)); + +- ioctl(xf86Info.consoleFd, KDSKBMODE, tty_mode); ++ SYSCALL(ioctl(xf86Info.consoleFd, KDSKBMODE, tty_mode)); + tcsetattr(xf86Info.consoleFd, TCSANOW, &tty_attr); + +- if (ioctl(xf86Info.consoleFd, VT_GETMODE, &VT) < 0) ++ SYSCALL(ret = ioctl(xf86Info.consoleFd, VT_GETMODE, &VT)); ++ if (ret < 0) + xf86Msg(X_WARNING, "xf86CloseConsole: VT_GETMODE failed: %s\n", + strerror(errno)); + else { + /* set dflt vt handling */ + VT.mode = VT_AUTO; +- if (ioctl(xf86Info.consoleFd, VT_SETMODE, &VT) < 0) ++ SYSCALL(ret = ioctl(xf86Info.consoleFd, VT_SETMODE, &VT)); ++ if (ret < 0) + xf86Msg(X_WARNING, "xf86CloseConsole: VT_SETMODE failed: %s\n", + strerror(errno)); + } +-- +cgit v0.8.3-6-g21f6 diff --git a/kde-unstable/calligra/PKGBUILD b/kde-unstable/calligra/PKGBUILD index f155259d7..8cf52c69f 100644 --- a/kde-unstable/calligra/PKGBUILD +++ b/kde-unstable/calligra/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 124312 2011-05-19 09:43:16Z andrea $ +# $Id: PKGBUILD 125856 2011-05-30 15:35:59Z andrea $ # Maintainer: Ronald van Haren <ronald.archlinux.org> # Contributor: Andrea Scarpino <andrea@archlinux.org> @@ -30,7 +30,7 @@ pkgname=('calligra-filters' 'calligra-braindump' 'calligra-flow') pkgver=2.3.71 -pkgrel=1 +pkgrel=2 arch=('i686' 'x86_64') url='http://www.calligra-suite.org' license=('FDL1.2' 'GPL2' 'LGPL') @@ -58,7 +58,7 @@ package_calligra-filters() { 'libwpd: WordPerfect document importer' 'libwpg: Corel WordPerfect Graphics image importer' 'pstoedit: Karbon EPS import filter' - 'kdegraphics-libs: support for raw images') + 'libkdcraw: support for raw images') conflicts=('koffice-filters') replaces=('koffice-filters') install=calligra-filters.install diff --git a/libre/crosstool-ng/PKGBUILD b/libre/crosstool-ng/PKGBUILD new file mode 100644 index 000000000..f7036e8ba --- /dev/null +++ b/libre/crosstool-ng/PKGBUILD @@ -0,0 +1,29 @@ +# Contributor: jwwolf <jwwolf+arch@gmail.com> +# Maintainer (Parabola): fauno <fauno@kiwwwi.com.ar> + +pkgname=crosstool-ng +pkgver=1.11.3 +pkgrel=2 +pkgdesc="A versatile cross toolchain generator (eglibc addons patch)" +arch=('i686' 'x86_64') +url="http://crosstool-ng.org/" +license=(GPL2) +depends=('cvs') +optdepends=('subversion: for retrieving eglibc sources') +source=(http://crosstool-ng.org/download/${pkgname}/${pkgname}-${pkgver}.tar.bz2 + libc_ports_short_name.patch) +md5sums=('3830cbdcc7e1a60c93caeaf98f718187' + '0a95af7e6ba35e02e38c71a3121b4448') + +build() { + cd $srcdir/$pkgname-$pkgver + patch -Np1 -i $srcdir/libc_ports_short_name.patch + + ./configure --prefix=/usr + make +} + +package() { + cd $srcdir/$pkgname-$pkgver + make DESTDIR=$pkgdir install +} diff --git a/libre/crosstool-ng/libc_ports_short_name.patch b/libre/crosstool-ng/libc_ports_short_name.patch new file mode 100644 index 000000000..b511fa183 --- /dev/null +++ b/libre/crosstool-ng/libc_ports_short_name.patch @@ -0,0 +1,102 @@ +comparing with http://ymorin.is-a-geek.org/hg/crosstool-ng +real URL is http://crosstool-ng.org/hg/crosstool-ng +searching for changes +changeset: 2482:a15a7b4ba12a +tag: libc_ports_short_name +tag: qbase +tag: qtip +tag: tip +user: "Nicolás Reynolds" <fauno@kiwwwi.com.ar> +date: Fri May 27 22:02:30 2011 -0300 +files: scripts/build/libc/eglibc.sh scripts/build/libc/glibc.sh +description: +Fixes the issue with {e,}libc addons having short and long names (such as +eglibc-ports-2_13 and ports), which caused configure scripts to run +through them twice and thus configuring incorrectly. + +For instance, the mips64el-n32-linux-gnu toolchain would be recognized +correctly first, but then the second pass would change it to mips32, +building a mixed MIPS-III N32 and MIPS-I libc. + + +diff -r 30644208c955 -r a15a7b4ba12a scripts/build/libc/eglibc.sh +--- a/scripts/build/libc/eglibc.sh Thu May 26 22:51:03 2011 +0200 ++++ b/scripts/build/libc/eglibc.sh Fri May 27 22:02:30 2011 -0300 +@@ -103,25 +103,36 @@ + CT_Extract "eglibc-${CT_LIBC_VERSION}" + CT_Patch "eglibc" "${CT_LIBC_VERSION}" + +- # C library addons ++ # C library addons + for addon in $(do_libc_add_ons_list " "); do + # NPTL addon is not to be extracted, in any case + [ "${addon}" = "nptl" ] && continue || true + CT_Pushd "${CT_SRC_DIR}/eglibc-${CT_LIBC_VERSION}" + CT_Extract nochdir "eglibc-${addon}-${CT_LIBC_VERSION}" ++ ++ CT_TestAndAbort "Error in add-on '${addon}': both short and long names in tarball" \ ++ -d "${addon}" -a -d "eglibc-${addon}-${CT_LIBC_VERSION}" ++ + # Some addons have the 'long' name, while others have the + # 'short' name, but patches are non-uniformly built with + # either the 'long' or 'short' name, whatever the addons name +- # so we have to make symlinks from the existing to the missing +- # Fortunately for us, [ -d foo ], when foo is a symlink to a +- # directory, returns true! +- [ -d "${addon}" ] || ln -s "eglibc-${addon}-${CT_LIBC_VERSION}" "${addon}" +- [ -d "eglibc-${addon}-${CT_LIBC_VERSION}" ] || ln -s "${addon}" "eglibc-${addon}-${CT_LIBC_VERSION}" ++ # but we prefer the 'short' name and avoid duplicates. ++ if [ -d "eglibc-${addon}-${CT_LIBC_VERSION}" ]; then ++ mv "eglibc-${addon}-${CT_LIBC_VERSION}" "${addon}" ++ fi ++ ++ ln -s "${addon}" "eglibc-${addon}-${CT_LIBC_VERSION}" ++ + CT_Patch nochdir "eglibc" "${addon}-${CT_LIBC_VERSION}" ++ ++ # Remove the long name since it can confuse configure scripts to run ++ # the same source twice. ++ rm "eglibc-${addon}-${CT_LIBC_VERSION}" ++ + CT_Popd + done + +- # The configure files may be older than the configure.in files ++ # The configure files may be older than the configure.in files + # if using a snapshot (or even some tarballs). Fake them being + # up to date. + find "${CT_SRC_DIR}/eglibc-${CT_LIBC_VERSION}" -type f -name configure -exec touch {} \; 2>&1 |CT_DoLog ALL +diff -r 30644208c955 -r a15a7b4ba12a scripts/build/libc/glibc.sh +--- a/scripts/build/libc/glibc.sh Thu May 26 22:51:03 2011 +0200 ++++ b/scripts/build/libc/glibc.sh Fri May 27 22:02:30 2011 -0300 +@@ -54,15 +54,24 @@ + [ "${addon}" = "nptl" ] && continue || true + CT_Extract nochdir "glibc-${addon}-${CT_LIBC_VERSION}" + ++ CT_TestAndAbort "Error in add-on '${addon}': both short and long names in tarball" \ ++ -d "${addon}" -a -d "glibc-${addon}-${CT_LIBC_VERSION}" ++ + # Some addons have the 'long' name, while others have the + # 'short' name, but patches are non-uniformly built with + # either the 'long' or 'short' name, whatever the addons name +- # so we have to make symlinks from the existing to the missing +- # Fortunately for us, [ -d foo ], when foo is a symlink to a +- # directory, returns true! +- [ -d "${addon}" ] || CT_DoExecLog ALL ln -s "glibc-${addon}-${CT_LIBC_VERSION}" "${addon}" +- [ -d "glibc-${addon}-${CT_LIBC_VERSION}" ] || CT_DoExecLog ALL ln -s "${addon}" "glibc-${addon}-${CT_LIBC_VERSION}" ++ # but we prefer the 'short' name and avoid duplicates. ++ if [ -d "glibc-${addon}-${CT_LIBC_VERSION}" ]; then ++ mv "glibc-${addon}-${CT_LIBC_VERSION}" "${addon}" ++ fi ++ ++ ln -s "${addon}" "glibc-${addon}-${CT_LIBC_VERSION}" ++ + CT_Patch nochdir "glibc" "${addon}-${CT_LIBC_VERSION}" ++ ++ # Remove the long name since it can confuse configure scripts to run ++ # the same source twice. ++ rm "glibc-${addon}-${CT_LIBC_VERSION}" + done + + # The configure files may be older than the configure.in files + diff --git a/libre/kernel26-libre-lts/PKGBUILD b/libre/kernel26-libre-lts/PKGBUILD index f3588dc77..63d0d83da 100644 --- a/libre/kernel26-libre-lts/PKGBUILD +++ b/libre/kernel26-libre-lts/PKGBUILD @@ -7,7 +7,7 @@ pkgname=('kernel26-libre-lts' 'kernel26-libre-lts-headers') # Build stock -lts k _kernelname=${pkgname#kernel26-libre} _basekernel=2.6.32 _preset=kernel26-lts.preset -pkgver=${_basekernel}.40 +pkgver=${_basekernel}.41 pkgrel=1 arch=('i686' 'x86_64') license=('GPL2') @@ -211,8 +211,8 @@ package_kernel26-libre-lts-headers() { # remove unneeded architectures rm -rf ${pkgdir}/usr/src/linux-${_kernver}/arch/{alpha,arm,arm26,avr32,blackfin,cris,frv,h8300,ia64,m32r,m68k,m68knommu,mips,microblaze,mn10300,parisc,powerpc,ppc,s390,sh,sh64,sparc,sparc64,um,v850,xtensa} } -md5sums=('eabd563bea84785dd74f3f694162ca69' +md5sums=('759ac16149fea3bca10a2d723c03e53a' '3298f542840c52a8b8abc1b3795e455b' - 'f0fcf2ca389e8997a88963d70153a479' + 'e9fd751f4e7c4bbce027aa83ea90202d' '2cbfeb3e2a18d45f82f613e97fc23355' 'fbfc7a1af3208c7b729055d91e1c149a') diff --git a/libre/kernel26-libre-lts/config b/libre/kernel26-libre-lts/config index fa7600cfb..fcf978f36 100644 --- a/libre/kernel26-libre-lts/config +++ b/libre/kernel26-libre-lts/config @@ -4366,11 +4366,11 @@ CONFIG_CIFS=m CONFIG_CIFS_STATS=y # CONFIG_CIFS_STATS2 is not set CONFIG_CIFS_WEAK_PW_HASH=y -# CONFIG_CIFS_UPCALL is not set +CONFIG_CIFS_UPCALL=y CONFIG_CIFS_XATTR=y CONFIG_CIFS_POSIX=y # CONFIG_CIFS_DEBUG2 is not set -# CONFIG_CIFS_DFS_UPCALL is not set +CONFIG_CIFS_DFS_UPCALL=y # CONFIG_CIFS_EXPERIMENTAL is not set CONFIG_NCP_FS=m # CONFIG_NCPFS_PACKET_SIGNING is not set diff --git a/libre/kernel26-libre-lts/config.x86_64 b/libre/kernel26-libre-lts/config.x86_64 index b0aadff4e..2202caeeb 100644 --- a/libre/kernel26-libre-lts/config.x86_64 +++ b/libre/kernel26-libre-lts/config.x86_64 @@ -4179,11 +4179,11 @@ CONFIG_CIFS=m CONFIG_CIFS_STATS=y # CONFIG_CIFS_STATS2 is not set CONFIG_CIFS_WEAK_PW_HASH=y -# CONFIG_CIFS_UPCALL is not set +CONFIG_CIFS_UPCALL=y CONFIG_CIFS_XATTR=y CONFIG_CIFS_POSIX=y # CONFIG_CIFS_DEBUG2 is not set -# CONFIG_CIFS_DFS_UPCALL is not set +CONFIG_CIFS_DFS_UPCALL=y # CONFIG_CIFS_EXPERIMENTAL is not set CONFIG_NCP_FS=m # CONFIG_NCPFS_PACKET_SIGNING is not set diff --git a/libre/unarchiver/PKGBUILD b/libre/unarchiver/PKGBUILD index dcab9e342..4a5cb737e 100644 --- a/libre/unarchiver/PKGBUILD +++ b/libre/unarchiver/PKGBUILD @@ -1,15 +1,14 @@ # Maintainer: Cedric Girard <girard.cedric@gmail.com> pkgname=unarchiver -pkgver=2.7 -pkgrel=2 +pkgver=2.7.1 +pkgrel=1 pkgdesc="An Objective-C application for uncompressing archive files" arch=('x86_64' 'i686') url="http://wakaba.c3.cx/s/apps/unarchiver.html" -license=('LGPL') +license=('LGPL2.1') depends=('gnustep-base' 'openssl' 'bzip2' 'icu' 'gcc-libs' 'zlib') makedepends=('gcc-objc') source=(http://theunarchiver.googlecode.com/files/TheUnarchiver"$pkgver"_src.zip) -md5sums=('c6aed2fcb2b68d86a9d9d4fc39c4ea41') replaces=('unrar') conflicts=('unrar') provides=('unrar') @@ -18,14 +17,14 @@ build() { cd "$srcdir/The Unarchiver/XADMaster" . /usr/share/GNUstep/Makefiles/GNUstep.sh - make -f Makefile.linux unar lsar + make -f Makefile.linux } package() { cd "$srcdir/The Unarchiver/XADMaster" install -d "$pkgdir/usr/bin/" - install -m755 unar ${pkgdir}/usr/bin - install -m755 lsar ${pkgdir}/usr/bin + install -m755 unar lsar "$pkgdir/usr/bin/" } # vim:set ts=2 sw=2 et: +md5sums=('498ea1c984d5783322e070a71922b422') diff --git a/staging/icu/PKGBUILD b/staging/icu/PKGBUILD new file mode 100644 index 000000000..8321c3e82 --- /dev/null +++ b/staging/icu/PKGBUILD @@ -0,0 +1,35 @@ +# $Id: PKGBUILD 125862 2011-05-30 16:53:31Z andyrtr $ +# Maintainer: Andreas Radke <andyrtr@archlinux.org> +# Contributor: Art Gramlich <art@gramlich-net.com> + +pkgname=icu +pkgver=4.8 +pkgrel=1 +pkgdesc="International Components for Unicode library" +arch=(i686 x86_64) +url="http://www.icu-project.org/" +license=('custom:"icu"') +depends=('gcc-libs' 'sh') +source=(http://download.icu-project.org/files/${pkgname}4c/${pkgver}/${pkgname}4c-${pkgver/./_}-src.tgz + #http://download.icu-project.org/files/${pkgname}4c/${pkgver}/${pkgname}4c-${pkgver//./_}-src.tgz + icu.8198.revert.icu5431.patch) +md5sums=('e78194c49d7fd8131353aa180d11b789' + 'ebd5470fc969c75e52baf4af94a9ee82') + +build() { + cd ${srcdir}/icu/source + # fix Malayalam encoding https://bugzilla.redhat.com/show_bug.cgi?id=654200 + patch -Rp3 -i ${srcdir}/icu.8198.revert.icu5431.patch + ./configure --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man + make +} + +package() { + cd ${srcdir}/icu/source + make -j1 DESTDIR=${pkgdir} install + + # Install license + install -Dm644 ${srcdir}/icu/license.html ${pkgdir}/usr/share/licenses/icu/license.html +} diff --git a/staging/icu/icu.8198.revert.icu5431.patch b/staging/icu/icu.8198.revert.icu5431.patch new file mode 100644 index 000000000..4c3e78b8e --- /dev/null +++ b/staging/icu/icu.8198.revert.icu5431.patch @@ -0,0 +1,129 @@ +Index: icu/trunk/source/layout/IndicReordering.cpp
+===================================================================
+--- icu/trunk/source/layout/IndicReordering.cpp (revision 25772)
++++ icu/trunk/source/layout/IndicReordering.cpp (revision 26090)
+@@ -126,4 +126,8 @@
+ FeatureMask fSMFeatures;
+
++ LEUnicode fPreBaseConsonant;
++ LEUnicode fPreBaseVirama;
++ le_int32 fPBCIndex;
++ FeatureMask fPBCFeatures;
+
+ void saveMatra(LEUnicode matra, le_int32 matraIndex, IndicClassTable::CharClass matraClass)
+@@ -172,5 +176,6 @@
+ fMatraFeatures(0), fMPreOutIndex(-1), fMPreFixups(mpreFixups),
+ fVMabove(0), fVMpost(0), fVMIndex(0), fVMFeatures(0),
+- fSMabove(0), fSMbelow(0), fSMIndex(0), fSMFeatures(0)
++ fSMabove(0), fSMbelow(0), fSMIndex(0), fSMFeatures(0),
++ fPreBaseConsonant(0), fPreBaseVirama(0), fPBCIndex(0), fPBCFeatures(0)
+ {
+ // nothing else to do...
+@@ -191,4 +196,6 @@
+ fVMabove = fVMpost = 0;
+ fSMabove = fSMbelow = 0;
++
++ fPreBaseConsonant = fPreBaseVirama = 0;
+ }
+
+@@ -386,4 +393,12 @@
+ }
+
++ void notePreBaseConsonant(le_uint32 index,LEUnicode PBConsonant, LEUnicode PBVirama, FeatureMask features)
++ {
++ fPBCIndex = index;
++ fPreBaseConsonant = PBConsonant;
++ fPreBaseVirama = PBVirama;
++ fPBCFeatures = features;
++ }
++
+ void noteBaseConsonant()
+ {
+@@ -465,4 +480,20 @@
+ }
+
++ void writePreBaseConsonant()
++ {
++ // The TDIL spec says that consonant + virama + RRA should produce a rakar in Malayalam. However,
++ // it seems that almost none of the fonts for Malayalam are set up to handle this.
++ // So, we're going to force the issue here by using the rakar as defined with RA in most fonts.
++
++ if (fPreBaseConsonant == 0x0d31) { // RRA
++ fPreBaseConsonant = 0x0d30; // RA
++ }
++
++ if (fPreBaseConsonant != 0) {
++ writeChar(fPreBaseConsonant, fPBCIndex, fPBCFeatures);
++ writeChar(fPreBaseVirama,fPBCIndex-1,fPBCFeatures);
++ }
++ }
++
+ le_int32 getOutputIndex()
+ {
+@@ -723,4 +754,5 @@
+ }
+
++
+ IndicClassTable::CharClass charClass = CC_RESERVED;
+ IndicClassTable::CharClass nextClass = CC_RESERVED;
+@@ -730,7 +762,9 @@
+ le_bool seenVattu = FALSE;
+ le_bool seenBelowBaseForm = FALSE;
++ le_bool seenPreBaseForm = FALSE;
+ le_bool hasNukta = FALSE;
+ le_bool hasBelowBaseForm = FALSE;
+ le_bool hasPostBaseForm = FALSE;
++ le_bool hasPreBaseForm = FALSE;
+
+ if (postBase < markStart && classTable->isNukta(chars[postBase])) {
+@@ -746,12 +780,20 @@
+ hasBelowBaseForm = IndicClassTable::hasBelowBaseForm(charClass) && !hasNukta;
+ hasPostBaseForm = IndicClassTable::hasPostBaseForm(charClass) && !hasNukta;
++ hasPreBaseForm = IndicClassTable::hasPreBaseForm(charClass) && !hasNukta;
+
+ if (IndicClassTable::isConsonant(charClass)) {
+ if (postBaseLimit == 0 || seenVattu ||
+ (baseConsonant > baseLimit && !classTable->isVirama(chars[baseConsonant - 1])) ||
+- !(hasBelowBaseForm || hasPostBaseForm)) {
++ !(hasBelowBaseForm || hasPostBaseForm || hasPreBaseForm)) {
+ break;
+ }
+
++ // Note any pre-base consonants
++ if ( baseConsonant == lastConsonant && lastConsonant > 0 &&
++ hasPreBaseForm && classTable->isVirama(chars[baseConsonant - 1])) {
++ output.notePreBaseConsonant(lastConsonant,chars[lastConsonant],chars[lastConsonant-1],tagArray2);
++ seenPreBaseForm = TRUE;
++
++ }
+ // consonants with nuktas are never vattus
+ seenVattu = IndicClassTable::isVattu(charClass) && !hasNukta;
+@@ -786,10 +828,12 @@
+
+ // write any pre-base consonants
++ output.writePreBaseConsonant();
++
+ le_bool supressVattu = TRUE;
+
+ for (i = baseLimit; i < baseConsonant; i += 1) {
+ LEUnicode ch = chars[i];
+- // Don't put 'blwf' on first consonant.
+- FeatureMask features = (i == baseLimit? tagArray2 : tagArray1);
++ // Don't put 'pstf' or 'blwf' on anything before the base consonant.
++ FeatureMask features = tagArray1 & ~( pstfFeatureMask | blwfFeatureMask );
+
+ charClass = classTable->getCharClass(ch);
+@@ -842,5 +886,5 @@
+
+ // write below-base consonants
+- if (baseConsonant != lastConsonant) {
++ if (baseConsonant != lastConsonant && !seenPreBaseForm) {
+ for (i = bcSpan + 1; i < postBase; i += 1) {
+ output.writeChar(chars[i], i, tagArray1);
+@@ -872,5 +916,5 @@
+ // write post-base consonants
+ // FIXME: does this put the right tags on post-base consonants?
+- if (baseConsonant != lastConsonant) {
++ if (baseConsonant != lastConsonant && !seenPreBaseForm) {
+ if (postBase <= lastConsonant) {
+ for (i = postBase; i <= lastConsonant; i += 1) {
diff --git a/testing/glew/PKGBUILD b/testing/glew/PKGBUILD new file mode 100644 index 000000000..6270e8c8f --- /dev/null +++ b/testing/glew/PKGBUILD @@ -0,0 +1,29 @@ +# $Id: PKGBUILD 125318 2011-05-25 20:28:27Z stephane $ +# Maintainer: Stéphane Gaudreault <stephane@archlinux.org> +# Contributor: SleepyDog + +pkgname=glew +pkgver=1.6.0 +pkgrel=1 +pkgdesc="The OpenGL Extension Wrangler Library" +arch=('i686' 'x86_64') +url="http://glew.sourceforge.net" +license=('BSD' 'MIT' 'GPL') +depends=('libxmu' 'libxi' 'mesa') +source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tgz) +sha1sums=('ed555d15d0f01239b262c4cf803e97d60d8a18b6') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + sed -i 's|lib64|lib|' config/Makefile.linux + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make GLEW_DEST="${pkgdir}/usr" install.all + install -D -m644 LICENSE.txt "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" + + rm "${pkgdir}"/usr/lib/{libGLEW,libGLEWmx}.a + chmod 0755 "${pkgdir}"/usr/lib/libGLEW*.so.${pkgver} +} diff --git a/testing/hugin/PKGBUILD b/testing/hugin/PKGBUILD new file mode 100644 index 000000000..d09e302dd --- /dev/null +++ b/testing/hugin/PKGBUILD @@ -0,0 +1,40 @@ +# $Id: PKGBUILD 125347 2011-05-26 02:15:23Z eric $ +# Maintainer: Tobias Kieslich <tobias@archlinux.org> +# Contributor: Giovanni Scafora <giovanni@archlinux.org> +# Contributor: Dominik Ryba <domryba@post.pl> + +pkgname=hugin +pkgver=2010.4.0 +pkgrel=4 +pkgdesc="A frontend to the panorama-tools" +arch=('i686' 'x86_64') +url="http://hugin.sourceforge.net/" +license=('LGPL') +depends=('wxgtk' 'libpano13' 'boost-libs' 'enblend-enfuse' 'exiv2' 'openexr' + 'autopano-sift-c' 'lapack' 'desktop-file-utils' 'make' 'perl-exiftool') +makedepends=('zip' 'cmake' 'boost') +install=${pkgname}.install +source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.bz2 hugin-gcc46.patch) +md5sums=('bfd716655461987312b2f2f00c90dcc5' + '4393c7b31da60f230c85e63a6a2e43a0') +sha1sums=('47f25c0a8b97c27108e567bcd22203c87f268d07' + '52798a155a037f853f41402f797e8a4cb6bb3e07') + +build() { + cd "${srcdir}" + (cd ${pkgname}-${pkgver}; patch -p1 -i ../hugin-gcc46.patch) + mkdir build && cd build + + cmake "${srcdir}/${pkgname}-${pkgver}" \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_EXE_LINKER_FLAGS="-lpthread" \ + -DENABLE_LAPACK=yes + + make +} + +package(){ + cd "${srcdir}/build" + make DESTDIR="${pkgdir}" install +} diff --git a/testing/hugin/hugin-gcc46.patch b/testing/hugin/hugin-gcc46.patch new file mode 100644 index 000000000..98a70ad50 --- /dev/null +++ b/testing/hugin/hugin-gcc46.patch @@ -0,0 +1,16 @@ + +diff -r 0377a1af6110 -r 1fc6ad6e7c7a src/foreign/vigra/vigra/multi_iterator.hxx +--- a/src/foreign/vigra/vigra/multi_iterator.hxx Mon Jun 25 16:36:21 2007 +0000 ++++ b/src/foreign/vigra/vigra/multi_iterator.hxx Tue Jan 25 21:14:13 2011 +0000 +@@ -41,6 +41,7 @@ + #define VIGRA_MULTI_ITERATOR_HXX + + #include <sys/types.h> ++#include <stddef.h> + #include "tinyvector.hxx" + #include "iteratortags.hxx" + + + + + diff --git a/testing/hugin/hugin.install b/testing/hugin/hugin.install new file mode 100644 index 000000000..362749233 --- /dev/null +++ b/testing/hugin/hugin.install @@ -0,0 +1,15 @@ +post_install() { + gtk-update-icon-cache -q -t -f usr/share/icons/gnome + update-desktop-database -q + update-mime-database usr/share/mime > /dev/null +} + +post_upgrade() { + post_install $1 +} + +post_remove() { + gtk-update-icon-cache -q -t -f usr/share/icons/gnome + update-desktop-database -q + update-mime-database usr/share/mime > /dev/null +} diff --git a/testing/koffice/PKGBUILD b/testing/koffice/PKGBUILD new file mode 100644 index 000000000..1884dd92c --- /dev/null +++ b/testing/koffice/PKGBUILD @@ -0,0 +1,301 @@ +# $Id: PKGBUILD 125678 2011-05-28 00:58:39Z andrea $ +# Maintainer: Ronald van Haren <ronald.archlinux.org> +# Contributor: Andrea Scarpino <andrea@archlinux.org> +# Contributor: BlackEagle < ike DOT devolder AT gmail DOT com > + +pkgbase=koffice +pkgname=( + 'koffice-filters' + 'koffice-interfaces' + 'koffice-libs' + 'koffice-plugins' + 'koffice-pics' + 'koffice-servicetypes' + 'koffice-templates' + 'koffice-tools' + 'koffice-karbon' + 'koffice-karbon-doc' +# 'koffice-kchart' +# 'koffice-kchart-doc' + 'koffice-kexi' + 'koffice-kexi-doc' + 'koffice-kformula' + 'koffice-kformula-doc' + 'koffice-kounavail' + 'koffice-kplato' +# 'koffice-kplato-doc' + 'koffice-kpresenter' + 'koffice-kpresenter-doc' + 'koffice-krita' +# 'koffice-krita-doc' # no krita-doc anymore upstream + 'koffice-kspread' + 'koffice-kspread-doc' + 'koffice-kword' +# 'koffice-kword-doc' # see http://userbase.kde.org/KWord/Manual for documentation (not supplied by upstream anymore in the sources) + 'koffice-handbook' + 'koffice-thesaurus-doc' +# 'koffice-kdgantt' # still an empty package +) +pkgver=2.3.3 +pkgrel=4 +arch=('i686' 'x86_64') +url='http://koffice.kde.org' +license=('GPL' 'LGPL' 'FDL') +makedepends=('pkg-config' 'cmake' 'automoc4' 'boost' 'eigen' 'gsl' 'lcms' + 'glew' 'qimageblitz' 'kdepimlibs' 'pstoedit' 'poppler-qt' 'libwpd' + 'libwpg' 'opengtl' 'kdegraphics-libs') +groups=('koffice') +source=("http://download.kde.org/stable/${pkgbase}-${pkgver}/${pkgbase}-${pkgver}.tar.bz2" + 'kde4-koffice-libwpg02.patch' 'gcc46.patch') +sha256sums=('31ba0d98c0d29c7b8ab97efdeb6c618b82177b2b0ec85da088178254da43c099' + '69106deb4081d71b5bd8f2e4f5af67ca689e4ce9f2bb49c11dbce5fb3409d612' + 'e095c0b2bbedf41da6535a68b2275464dafd3f194566028d0135322f596e4739') + +build() { + cd "${srcdir}/${pkgbase}-${pkgver}" + + patch -p1 -i "${srcdir}/kde4-koffice-libwpg02.patch" + patch -p1 -i "${srcdir}"/gcc46.patch + + cd "${srcdir}" + mkdir build + cd build + cmake ../${pkgbase}-${pkgver} \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_SKIP_RPATH=ON \ + -DCMAKE_INSTALL_PREFIX=/usr + make +} + +##### 1st package common files, depends, optdepends of the koffice applications ##### + +package_koffice-filters(){ + pkgdesc="Filters for the KDE office suite" + optdepends=('libgsf: Microsoft Word document importer' 'libwpd: WordPerfect document importer' + 'libwpg: Corel WordPerfect Graphics image importer' 'pstoedit: Karbon EPS import filter' + 'kdegraphics-libs: support for raw images') + install=filters.install + cd "${srcdir}/build/filters" + make DESTDIR="${pkgdir}" install +} + +package_koffice-interfaces(){ + pkgdesc="Interfaces for the KDE office suite" + depends=('kdelibs' 'koffice-libs') + cd "${srcdir}/build/interfaces" + make DESTDIR="${pkgdir}" install +} + +package_koffice-libs(){ + pkgdesc="Libs for the KDE office suite" + depends=('kdepimlibs' 'qca' 'lcms' 'koffice-servicetypes') + cd "${srcdir}/build/libs" + make DESTDIR="${pkgdir}" install +} + +package_koffice-plugins(){ + pkgdesc="Plugins for the KDE office suite" + depends=('koffice-libs') + replaces=('koffice-kchart') + conflicts=('koffice-kchart') + cd "${srcdir}/build/plugins" + make DESTDIR="${pkgdir}" install +} + +package_koffice-pics(){ + pkgdesc="Icons for the KDE office suite" + install=koffice.install + cd "${srcdir}/build/pics" + make DESTDIR="${pkgdir}" install +} + +package_koffice-servicetypes(){ + pkgdesc="Servicetypes for the KDE office suite" + cd "${srcdir}/build/servicetypes" + make DESTDIR="${pkgdir}" install +} + +package_koffice-templates(){ + pkgdesc="Templates for the KDE office suite" + cd "${srcdir}/build/templates" + make DESTDIR="${pkgdir}" install +} + +package_koffice-tools(){ + pkgdesc="Tools for the KDE office suite" + depends=('koffice-libs') + cd "${srcdir}/build/tools" + make DESTDIR="${pkgdir}" install +} + +#### package common files done ##### + +#### package apps and their docs ##### + +package_koffice-karbon(){ + pkgdesc="Vector drawing application for KDE" + depends=('hicolor-icon-theme' 'koffice-libs' 'koffice-templates') + optdepends=('koffice-filters: import/export filters') + install=koffice.install + cd "${srcdir}/build/karbon" + make DESTDIR="${pkgdir}" install +} + +package_koffice-karbon-doc(){ + pkgdesc="Documentation for karbon" + cd "${srcdir}/build/doc/karbon" + make DESTDIR="${pkgdir}" install +} + +package_koffice-kexi(){ + pkgdesc="Integrated data management application for the KDE office suite" + depends=('kdelibs' 'koffice-libs' 'koffice-kspread' 'sqlite3') + cd "${srcdir}/build/kexi" + make DESTDIR="${pkgdir}" install +} + +package_koffice-kexi-doc(){ + pkgdesc="Documentation for kexi" + cd "${srcdir}/build/doc/kexi" + make DESTDIR="${pkgdir}" install +} + +package_koffice-kformula(){ + pkgdesc="Formula editor for the KDE office suite" + depends=('kdelibs' 'koffice-libs') + cd "${srcdir}/build/kformula" + make DESTDIR="${pkgdir}" install +} + +package_koffice-kformula-doc() { + pkgdesc="Documentation for koffice-kformula" + cd "${srcdir}/build/doc/kformula" + make DESTDIR="${pkgdir}" install +} + + +package_koffice-kounavail(){ + pkgdesc="Kounavail for the KDE office suite" + depends=('kdelibs' 'koffice-libs') + cd "${srcdir}/build/kounavail" + make DESTDIR="${pkgdir}" install +} + +package_koffice-kplato(){ + pkgdesc="Project management application for KDE" + depends=('hicolor-icon-theme' 'koffice-libs' 'kdepimlibs' 'koffice-templates' \ + 'koffice-plugins' 'koffice-kword') + install=koffice.install + cd "${srcdir}/build/kplato" + make DESTDIR="${pkgdir}" install +} + +#package_koffice-kplato-doc(){ +# pkgdesc="Documentation for kplato" +# cd ${srcdir}/build/doc/kplato +# make DESTDIR="${pkgdir}" install +#} + +package_koffice-kpresenter(){ + pkgdesc="Presentation tool for KDE" + depends=('hicolor-icon-theme' 'koffice-libs' 'koffice-templates') + optdepends=('koffice-filters: import/export filters') + install=koffice.install + cd "${srcdir}/build/kpresenter" + make DESTDIR="${pkgdir}" install +} + +package_koffice-kpresenter-doc(){ + pkgdesc="Documentation for kpresenter" + cd "${srcdir}/build/doc/kpresenter" + make DESTDIR="${pkgdir}" install +} + +package_koffice-krita(){ + pkgdesc="Graphics editor for KDE" + depends=('hicolor-icon-theme' 'glew' 'qimageblitz' 'koffice-libs' \ + 'koffice-templates' 'koffice-plugins' 'poppler-qt' 'shared-mime-info' \ + 'openexr' 'opengtl') + optdepends=('koffice-filters: import/export filters') + install=krita.install + cd "${srcdir}/build/krita" + make DESTDIR="${pkgdir}" install +} + +#package_koffice-krita-doc(){ +# pkgdesc="Documentation for krita" +# cd ${srcdir}/build/doc/krita +# make DESTDIR="${pkgdir}" install +#} + + +package_koffice-kspread(){ + pkgdesc="Spreadsheet application for KDE" + depends=('hicolor-icon-theme' 'gsl' 'koffice-libs' 'koffice-templates' 'koffice-plugins') + optdepends=('koffice-filters: import/export filters') + install=koffice.install + cd "${srcdir}/build/kspread" + make DESTDIR="${pkgdir}" install +} + +package_koffice-kspread-doc(){ + pkgdesc="Documentation for kspread" + cd "${srcdir}/build/doc/kspread" + make DESTDIR="${pkgdir}" install +} + +package_koffice-kword(){ + pkgdesc="Wordprocessor for KDE" + depends=('hicolor-icon-theme' 'koffice-libs' 'koffice-templates' 'koffice-pics' \ + 'koffice-kounavail' 'koffice-plugins') + optdepends=('koffice-filters: import/export filters') + install=koffice.install + cd "${srcdir}/build/kword" + make DESTDIR="${pkgdir}" install + + # some sed lines to have python2 in extension scripts + sed -i "s|/usr/bin/env python|/usr/bin/env python2|" "${pkgdir}/usr/share/apps/kword/scripts/extensions/oouno.py" + sed -i "s|/usr/bin/env python|/usr/bin/env python2|" "${pkgdir}/usr/share/apps/kword/scripts/extensions/importdoxyxml.py" + sed -i "s|/usr/bin/env python|/usr/bin/env python2|" "${pkgdir}/usr/share/apps/kword/scripts/extensions/onlinehelp.py" +} + +#package_koffice-kword-doc(){ +# pkgdesc="Documentation for kword" +# cd ${srcdir}/build/doc/kword +# make DESTDIR="${pkgdir}" install +#} + +##### package apps done ##### + +#package_koffice-kchart(){ +# pkgdesc="Charting tool for KDE" +# depends=('hicolor-icon-theme' 'koffice-interfaces' 'koffice-templates') +# optdepends=('koffice-filters: import/export filters') +# install=koffice.install +# cd "${srcdir}/build/kchart" +# make DESTDIR="${pkgdir}" install +#} + +#package_koffice-kchart-doc(){ +# pkgdesc="Documentation for kchart" +# cd "${srcdir}/build/doc/kchart" +# make DESTDIR="${pkgdir}" install +#} + +#package_koffice-kdgantt(){ +# pkgdesc="Gantt for KDE" +# cd "${srcdir}/build/kdgantt" +# make DESTDIR="${pkgdir}" install +#} + +package_koffice-handbook() { + pkgdesc="Documentation for koffice" + cd "${srcdir}/build/doc/koffice" + make DESTDIR="${pkgdir}" install +} + +package_koffice-thesaurus-doc(){ + pkgdesc="Documentation for koffice-thesaurus" + cd "${srcdir}/build/doc/thesaurus" + make DESTDIR="${pkgdir}" install +} diff --git a/testing/koffice/filters.install b/testing/koffice/filters.install new file mode 100644 index 000000000..7c8a8bd2b --- /dev/null +++ b/testing/koffice/filters.install @@ -0,0 +1,11 @@ +post_install() { + update-mime-database usr/share/mime &> /dev/null +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} diff --git a/testing/koffice/gcc46.patch b/testing/koffice/gcc46.patch new file mode 100644 index 000000000..dcf8a4f85 --- /dev/null +++ b/testing/koffice/gcc46.patch @@ -0,0 +1,23 @@ +diff -up koffice-2.3.2/krita/plugins/formats/exr/exr_converter.cc.gcc46 koffice-2.3.2/krita/plugins/formats/exr/exr_converter.cc +--- koffice-2.3.2/krita/plugins/formats/exr/exr_converter.cc.gcc46 2011-02-17 06:13:40.000000000 -0600 ++++ koffice-2.3.2/krita/plugins/formats/exr/exr_converter.cc 2011-02-19 21:15:56.597142885 -0600 +@@ -80,6 +80,9 @@ ImageType imfTypeToKisType(Imf::PixelTyp + return IT_FLOAT16; + case Imf::FLOAT: + return IT_FLOAT32; ++ default: ++ // shouldn't reach here ++ return IT_UNSUPPORTED; + } + } + +@@ -93,6 +96,9 @@ const KoColorSpace* kisTypeToColorSpace( + case IT_UNKNOWN: + case IT_UNSUPPORTED: + return 0; ++ default: ++ // shouldn't reach here ++ return 0; + } + } + diff --git a/testing/koffice/kde4-koffice-libwpg02.patch b/testing/koffice/kde4-koffice-libwpg02.patch new file mode 100644 index 000000000..e2a55a216 --- /dev/null +++ b/testing/koffice/kde4-koffice-libwpg02.patch @@ -0,0 +1,1323 @@ +diff -Nur koffice-2.3.1/filters/karbon/wpg/import/CMakeLists.txt koffice-2.3.1-libwpg02/filters/karbon/wpg/import/CMakeLists.txt +--- koffice-2.3.1/filters/karbon/wpg/import/CMakeLists.txt 2011-01-15 21:05:35.000000000 +0100 ++++ koffice-2.3.1-libwpg02/filters/karbon/wpg/import/CMakeLists.txt 2011-01-18 07:40:25.000000000 +0100 +@@ -1,16 +1,11 @@ + +- + include_directories(${CMAKE_BINARY_DIR}/filters/ ${WPD_INCLUDE_DIR} ${LIBWPG_INCLUDE_DIR}/) + +-set(wpgimport_PART_SRCS +-WPGImport.cpp +-OdgExporter.cxx +-FileOutputHandler.cxx +-GraphicsElement.cxx) ++set(wpgimport_PART_SRCS WPGImport.cpp) + + kde4_add_plugin(wpgimport ${wpgimport_PART_SRCS}) + +-target_link_libraries(wpgimport komain ${LIBWPG_LIBRARIES} ${LIBWPG_STREAM_LIBRARIES}) ++target_link_libraries(wpgimport komain ${LIBWPG_LIBRARIES} ${LIBWPG_STREAM_LIBRARIES} ${WPD_LIBRARIES}) + + install(TARGETS wpgimport DESTINATION ${PLUGIN_INSTALL_DIR}) + install(FILES karbon_wpg_import.desktop DESTINATION ${SERVICES_INSTALL_DIR}) +diff -Nur koffice-2.3.1/filters/karbon/wpg/import/FileOutputHandler.cxx koffice-2.3.1-libwpg02/filters/karbon/wpg/import/FileOutputHandler.cxx +--- koffice-2.3.1/filters/karbon/wpg/import/FileOutputHandler.cxx 2011-01-15 21:05:35.000000000 +0100 ++++ koffice-2.3.1-libwpg02/filters/karbon/wpg/import/FileOutputHandler.cxx 1970-01-01 01:00:00.000000000 +0100 +@@ -1,95 +0,0 @@ +-/* libwpg +- * Copyright (C) 2006 Fridrich Strba (fridrich.strba@bluewin.ch) +- * +- * This library is free software; you can redistribute it and/or +- * modify it under the terms of the GNU Library General Public +- * License as published by the Free Software Foundation; either +- * version 2 of the License, or (at your option) any later version. +- * +- * This library 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 +- * Library General Public License for more details. +- * +- * You should have received a copy of the GNU Library General Public +- * License along with this library; if not, write to the +- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +- * Boston, MA 02111-1301 USA +- * +- * For further information visit http://libwpg.sourceforge.net +- */ +- +-/* "This product is not manufactured, approved, or supported by +- * Corel Corporation or Corel Corporation Limited." +- */ +- +-#include "FileOutputHandler.hxx" +- +-FileOutputHandler::FileOutputHandler(std::ostringstream &contentStream) : +- mbIsTagOpened(false), +- mContentStream(contentStream) +-{ +-} +- +-void FileOutputHandler::startDocument() +-{ +-} +- +-void FileOutputHandler::startElement(const char *psName, const std::vector<std::pair<std::string, std::string> > &xPropList) +-{ +- if (mbIsTagOpened) +- { +- mContentStream << ">"; +- mbIsTagOpened = false; +- } +- mContentStream << "<" << psName; +- +- for (std::vector<std::pair<std::string, std::string> >::const_iterator i = xPropList.begin(); i != xPropList.end(); i++) +- { +- mContentStream << " " << (*i).first.c_str() << "=\"" << (*i).second.c_str() << "\""; +- } +- mbIsTagOpened = true; +- msOpenedTagName = psName; +-} +- +-void FileOutputHandler::endElement(const char *psName) +-{ +- if (mbIsTagOpened) +- { +- if( msOpenedTagName == psName ) +- { +- mContentStream << "/>"; +- mbIsTagOpened = false; +- } +- else // should not happen, but handle it +- { +- mContentStream << ">"; +- mContentStream << "</" << psName << ">"; +- mbIsTagOpened = false; +- } +- } +- else +- { +- mContentStream << "</" << psName << ">"; +- mbIsTagOpened = false; +- } +-} +- +-void FileOutputHandler::characters(const std::string &sCharacters) +-{ +- if (mbIsTagOpened) +- { +- mContentStream << ">"; +- mbIsTagOpened = false; +- } +- mContentStream << sCharacters.c_str(); +-} +- +-void FileOutputHandler::endDocument() +-{ +- if (mbIsTagOpened) +- { +- mContentStream << ">"; +- mbIsTagOpened = false; +- } +-} +diff -Nur koffice-2.3.1/filters/karbon/wpg/import/FileOutputHandler.hxx koffice-2.3.1-libwpg02/filters/karbon/wpg/import/FileOutputHandler.hxx +--- koffice-2.3.1/filters/karbon/wpg/import/FileOutputHandler.hxx 2011-01-15 21:05:35.000000000 +0100 ++++ koffice-2.3.1-libwpg02/filters/karbon/wpg/import/FileOutputHandler.hxx 1970-01-01 01:00:00.000000000 +0100 +@@ -1,49 +0,0 @@ +-/* libwpg +- * Copyright (C) 2006 Fridrich Strba (fridrich.strba@bluewin.ch) +- * +- * This library is free software; you can redistribute it and/or +- * modify it under the terms of the GNU Library General Public +- * License as published by the Free Software Foundation; either +- * version 2 of the License, or (at your option) any later version. +- * +- * This library 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 +- * Library General Public License for more details. +- * +- * You should have received a copy of the GNU Library General Public +- * License along with this library; if not, write to the +- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +- * Boston, MA 02111-1301 USA +- * +- * For further information visit http://libwpg.sourceforge.net +- */ +- +-/* "This product is not manufactured, approved, or supported by +- * Corel Corporation or Corel Corporation Limited." +- */ +- +-#ifndef FILEOUTPUTHANDLER_H +-#define FILEOUTPUTHANDLER_H +- +-#include <iostream> +-#include <sstream> +-#include <string> +-#include "GraphicsHandler.hxx" +- +-class FileOutputHandler : public GraphicsHandler +-{ +- public: +- explicit FileOutputHandler(std::ostringstream &contentStream); +- virtual void startDocument(); +- virtual void endDocument(); +- virtual void startElement(const char *psName, const std::vector<std::pair<std::string, std::string> > &xPropList); +- virtual void endElement(const char *psName); +- virtual void characters(const std::string &sCharacters); +- +- private: +- bool mbIsTagOpened; +- std::string msOpenedTagName; +- std::ostringstream &mContentStream; +-}; +-#endif +diff -Nur koffice-2.3.1/filters/karbon/wpg/import/GraphicsElement.cxx koffice-2.3.1-libwpg02/filters/karbon/wpg/import/GraphicsElement.cxx +--- koffice-2.3.1/filters/karbon/wpg/import/GraphicsElement.cxx 2011-01-15 21:05:35.000000000 +0100 ++++ koffice-2.3.1-libwpg02/filters/karbon/wpg/import/GraphicsElement.cxx 1970-01-01 01:00:00.000000000 +0100 +@@ -1,66 +0,0 @@ +-/* GraphicsElement: The items we are collecting to be put into the Writer +- * document: paragraph and spans of text, as well as section breaks. +- * +- * Copyright (C) 2002-2003 William Lachance (william.lachance@sympatico.ca) +- * +- * This program is free software; you can redistribute it and/or +- * modify it under the terms of the GNU Lesser General Public +- * License as published by the Free Software Foundation; either +- * version 2 of the License, or (at your option) any later version. +- * +- * This program 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 +- * Library General Public License for more details. +- * +- * You should have received a copy of the GNU Library General Public +- * License along with this library; if not, write to the +- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +- * Boston, MA 02111-1301 USA +- * +- * For further information visit http://libwpg.sourceforge.net +- * +- */ +- +-/* "This product is not manufactured, approved, or supported by +- * Corel Corporation or Corel Corporation Limited." +- */ +- +-#include "GraphicsElement.hxx" +-#include "GraphicsHandler.hxx" +-#include <string.h> +- +-#define ASCII_SPACE 0x0020 +- +-void TagGraphicsElement::print() const +-{ +-} +- +-void OpenTagGraphicsElement::write(GraphicsHandler *pHandler) const +-{ +- pHandler->startElement(getTagName().c_str(), maAttrList); +-} +- +-void OpenTagGraphicsElement::print() const +-{ +- TagGraphicsElement::print(); +-} +- +-void OpenTagGraphicsElement::addAttribute(const std::string &szAttributeName, const std::string &sAttributeValue) +-{ +- std::pair<std::string, std::string> tmpAttribute; +- tmpAttribute.first = szAttributeName; +- tmpAttribute.second = sAttributeValue; +- maAttrList.push_back(tmpAttribute); +-} +- +-void CloseTagGraphicsElement::write(GraphicsHandler *pHandler) const +-{ +- +- pHandler->endElement(getTagName().c_str()); +-} +- +-void CharDataGraphicsElement::write(GraphicsHandler *pHandler) const +-{ +- pHandler->characters(msData); +-} +diff -Nur koffice-2.3.1/filters/karbon/wpg/import/GraphicsElement.hxx koffice-2.3.1-libwpg02/filters/karbon/wpg/import/GraphicsElement.hxx +--- koffice-2.3.1/filters/karbon/wpg/import/GraphicsElement.hxx 2011-01-15 21:05:35.000000000 +0100 ++++ koffice-2.3.1-libwpg02/filters/karbon/wpg/import/GraphicsElement.hxx 1970-01-01 01:00:00.000000000 +0100 +@@ -1,84 +0,0 @@ +-/* GraphicsElement: The items we are collecting to be put into the Writer +- * document: paragraph and spans of text, as well as section breaks. +- * +- * Copyright (C) 2002-2003 William Lachance (william.lachance@sympatico.ca) +- * +- * This program is free software; you can redistribute it and/or +- * modify it under the terms of the GNU Lesser General Public +- * License as published by the Free Software Foundation; either +- * version 2 of the License, or (at your option) any later version. +- * +- * This program 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 +- * Library General Public License for more details. +- * +- * You should have received a copy of the GNU Library General Public +- * License along with this library; if not, write to the +- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +- * Boston, MA 02111-1301 USA +- * +- * For further information visit http://libwpd.sourceforge.net +- * +- */ +- +-/* "This product is not manufactured, approved, or supported by +- * Corel Corporation or Corel Corporation Limited." +- */ +- +-#ifndef _GRAPHICSELEMENT_H +-#define _GRAPHICSELEMENT_H +-#include <string> +-#include <map> +-#include <vector> +- +-#include "GraphicsHandler.hxx" +- +-class GraphicsElement +-{ +-public: +- virtual ~GraphicsElement() {} +- virtual void write(GraphicsHandler *pHandler) const = 0; +- virtual void print() const {} +-}; +- +-class TagGraphicsElement : public GraphicsElement +-{ +-public: +- explicit TagGraphicsElement(const char *szTagName) : msTagName(szTagName) {} +- const std::string &getTagName() const { return msTagName; } +- virtual void print() const; +-private: +- const std::string msTagName; +-}; +- +-class OpenTagGraphicsElement : public TagGraphicsElement +-{ +-public: +- explicit OpenTagGraphicsElement(const char *szTagName) : TagGraphicsElement(szTagName) {} +- ~OpenTagGraphicsElement() {} +- void addAttribute(const std::string &szAttributeName, const std::string &sAttributeValue); +- virtual void write(GraphicsHandler *pHandler) const; +- virtual void print () const; +-private: +- std::vector<std::pair<std::string, std::string> > maAttrList; +-}; +- +-class CloseTagGraphicsElement : public TagGraphicsElement +-{ +-public: +- explicit CloseTagGraphicsElement(const char *szTagName) : TagGraphicsElement(szTagName) {} +- virtual void write(GraphicsHandler *pHandler) const; +-}; +- +-class CharDataGraphicsElement : public GraphicsElement +-{ +-public: +- CharDataGraphicsElement(const char *sData) : GraphicsElement(), msData(sData) {} +- virtual void write(GraphicsHandler *pHandler) const; +-private: +- std::string msData; +-}; +- +- +-#endif +diff -Nur koffice-2.3.1/filters/karbon/wpg/import/GraphicsHandler.hxx koffice-2.3.1-libwpg02/filters/karbon/wpg/import/GraphicsHandler.hxx +--- koffice-2.3.1/filters/karbon/wpg/import/GraphicsHandler.hxx 2011-01-15 21:05:35.000000000 +0100 ++++ koffice-2.3.1-libwpg02/filters/karbon/wpg/import/GraphicsHandler.hxx 1970-01-01 01:00:00.000000000 +0100 +@@ -1,43 +0,0 @@ +-/* +- * Copyright (C) 2004 William Lachance (wlach@interlog.com) +- * Copyright (C) 2004 Net Integration Technologies (http://www.net-itech.com) +- * +- * This program is free software; you can 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 +- * of the License, or (at your option) any later version. +- * +- * This program 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 Library General Public +- * License along with this library; if not, write to the +- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +- * Boston, MA 02111-1301 USA +- * +- * Contributor(s): Martin Gallwey (gallwey@sun.com) +- * +- */ +- +-/* "This product is not manufactured, approved, or supported by +- * Corel Corporation or Corel Corporation Limited." +- */ +-#ifndef _GRAPHICSHANDLER_H +-#define _GRAPHICSHANDLER_H +-#include <string> +-#include <map> +-#include <vector> +- +-class GraphicsHandler +-{ +-public: +- virtual ~GraphicsHandler() {} +- virtual void startDocument() = 0; +- virtual void endDocument() = 0; +- virtual void startElement(const char *psName, const std::vector< std::pair <std::string, std::string> > &xPropList) = 0; +- virtual void endElement(const char *psName) = 0; +- virtual void characters(const std::string &sCharacters) = 0; +-}; +-#endif +diff -Nur koffice-2.3.1/filters/karbon/wpg/import/OdgExporter.cxx koffice-2.3.1-libwpg02/filters/karbon/wpg/import/OdgExporter.cxx +--- koffice-2.3.1/filters/karbon/wpg/import/OdgExporter.cxx 2011-01-15 21:05:35.000000000 +0100 ++++ koffice-2.3.1-libwpg02/filters/karbon/wpg/import/OdgExporter.cxx 1970-01-01 01:00:00.000000000 +0100 +@@ -1,662 +0,0 @@ +-/* libwpg +- * Copyright (C) 2006 Ariya Hidayat (ariya@kde.org) +- * Copyright (C) 2006 Fridrich Strba (fridrich.strba@bluewin.ch) +- * +- * This library is free software; you can redistribute it and/or +- * modify it under the terms of the GNU Library General Public +- * License as published by the Free Software Foundation; either +- * version 2 of the License, or (at your option) any later version. +- * +- * This library 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 +- * Library General Public License for more details. +- * +- * You should have received a copy of the GNU Library General Public +- * License along with this library; if not, write to the +- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +- * Boston, MA 02111-1301 USA +- * +- * For further information visit http://libwpg.sourceforge.net +- */ +- +-/* "This product is not manufactured, approved, or supported by +- * Corel Corporation or Corel Corporation Limited." +- */ +- +-#include "OdgExporter.hxx" +-#include "GraphicsElement.hxx" +-#include "GraphicsHandler.hxx" +-#include <locale.h> +- +-static std::string doubleToString(const double value) +-{ +- std::ostringstream tempStream; +- tempStream << value; +- std::string decimalPoint(localeconv()->decimal_point); +- if ((decimalPoint.size() == 0) || (decimalPoint == ".")) +- return tempStream.str(); +- std::string stringValue(tempStream.str()); +- if (!stringValue.empty()) +- { +- std::string::size_type pos; +- while ((pos = stringValue.find(decimalPoint)) != std::string::npos) +- stringValue.replace(pos,decimalPoint.size(),"."); +- } +- return stringValue; +-} +- +- +-OdgExporter::OdgExporter(GraphicsHandler *pHandler, const bool isFlatXML): +- mpHandler(pHandler), +- m_fillRule(AlternatingFill), +- m_gradientIndex(1), +- m_dashIndex(1), +- m_styleIndex(1), +- m_width(0.0f), +- m_height(0.0f), +- m_isFlatXML(isFlatXML) +-{ +-} +- +-OdgExporter::~OdgExporter() +-{ +- for (std::vector <GraphicsElement *>::iterator iterStroke = mStrokeDashElements.begin(); +- iterStroke != mStrokeDashElements.end(); iterStroke++) +- delete (*iterStroke); +- +- for (std::vector <GraphicsElement *>::iterator iterGradient = mGradientElements.begin(); +- iterGradient != mGradientElements.end(); iterGradient++) +- delete (*iterGradient); +- +- for (std::vector <GraphicsElement *>::iterator iterAutomaticStyles = mAutomaticStylesElements.begin(); +- iterAutomaticStyles != mAutomaticStylesElements.end(); iterAutomaticStyles++) +- delete (*iterAutomaticStyles); +- +- for (std::vector<GraphicsElement *>::iterator bodyIter = mBodyElements.begin(); +- bodyIter != mBodyElements.end(); bodyIter++) +- delete (*bodyIter); +-} +- +-void OdgExporter::startGraphics(double width, double height) +-{ +- m_gradientIndex = 1; +- m_dashIndex = 1; +- m_styleIndex = 1; +- m_width = width; +- m_height = height; +- +- +- mpHandler->startDocument(); +- OpenTagGraphicsElement tmpOfficeDocumentContent("office:document"); +- tmpOfficeDocumentContent.addAttribute("xmlns:office", "urn:oasis:names:tc:opendocument:xmlns:office:1.0"); +- tmpOfficeDocumentContent.addAttribute("xmlns:style", "urn:oasis:names:tc:opendocument:xmlns:style:1.0"); +- tmpOfficeDocumentContent.addAttribute("xmlns:text", "urn:oasis:names:tc:opendocument:xmlns:text:1.0"); +- tmpOfficeDocumentContent.addAttribute("xmlns:draw", "urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"); +- tmpOfficeDocumentContent.addAttribute("xmlns:dc", "http://purl.org/dc/elements/1.1/"); +- tmpOfficeDocumentContent.addAttribute("xmlns:svg", "urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"); +- tmpOfficeDocumentContent.addAttribute("xmlns:fo", "urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"); +- tmpOfficeDocumentContent.addAttribute("xmlns:config", "urn:oasis:names:tc:opendocument:xmlns:config:1.0"); +- tmpOfficeDocumentContent.addAttribute("xmlns:ooo", "http://openoffice.org/2004/office"); +- tmpOfficeDocumentContent.addAttribute("office:version", "1.0"); +- if (m_isFlatXML) +- tmpOfficeDocumentContent.addAttribute("office:mimetype", "application/x-vnd.oasis.openoffice.drawing"); +- tmpOfficeDocumentContent.write(mpHandler); +- +- OpenTagGraphicsElement("office:settings").write(mpHandler); +- +- OpenTagGraphicsElement configItemSetOpenElement("config:config-item-set"); +- configItemSetOpenElement.addAttribute("config:name", "ooo:view-settings"); +- configItemSetOpenElement.write(mpHandler); +- +- OpenTagGraphicsElement configItemOpenElement1("config:config-item"); +- configItemOpenElement1.addAttribute("config:name", "VisibleAreaTop"); +- configItemOpenElement1.addAttribute("config:type", "int"); +- configItemOpenElement1.write(mpHandler); +- mpHandler->characters("0"); +- mpHandler->endElement("config:config-item"); +- +- OpenTagGraphicsElement configItemOpenElement2("config:config-item"); +- configItemOpenElement2.addAttribute("config:name", "VisibleAreaLeft"); +- configItemOpenElement2.addAttribute("config:type", "int"); +- configItemOpenElement2.write(mpHandler); +- mpHandler->characters("0"); +- mpHandler->endElement("config:config-item"); +- +- OpenTagGraphicsElement configItemOpenElement3("config:config-item"); +- configItemOpenElement3.addAttribute("config:name", "VisibleAreaWidth"); +- configItemOpenElement3.addAttribute("config:type", "int"); +- configItemOpenElement3.write(mpHandler); +- m_value.str(""); +- m_value << (unsigned)(2540 * width); +- mpHandler->characters(m_value.str()); +- mpHandler->endElement("config:config-item"); +- +- OpenTagGraphicsElement configItemOpenElement4("config:config-item"); +- configItemOpenElement4.addAttribute("config:name", "VisibleAreaHeight"); +- configItemOpenElement4.addAttribute("config:type", "int"); +- configItemOpenElement4.write(mpHandler); +- m_value.str(""); +- m_value << (unsigned)(2540 * height); +- mpHandler->characters(m_value.str()); +- mpHandler->endElement("config:config-item"); +- +- mpHandler->endElement("config:config-item-set"); +- +- mpHandler->endElement("office:settings"); +- +-} +- +-void OdgExporter::endGraphics() +-{ +- OpenTagGraphicsElement("office:styles").write(mpHandler); +- +- for (std::vector <GraphicsElement *>::const_iterator iterStroke = mStrokeDashElements.begin(); +- iterStroke != mStrokeDashElements.end(); iterStroke++) +- (*iterStroke)->write(mpHandler); +- +- for (std::vector <GraphicsElement *>::const_iterator iterGradient = mGradientElements.begin(); +- iterGradient != mGradientElements.end(); iterGradient++) +- (*iterGradient)->write(mpHandler); +- +- mpHandler->endElement("office:styles"); +- +- OpenTagGraphicsElement("office:automatic-styles").write(mpHandler); +- +- for (std::vector <GraphicsElement *>::const_iterator iterAutomaticStyles = mAutomaticStylesElements.begin(); +- iterAutomaticStyles != mAutomaticStylesElements.end(); iterAutomaticStyles++) +- (*iterAutomaticStyles)->write(mpHandler); +- +- OpenTagGraphicsElement tmpStylePageLayoutOpenElement("style:page-layout"); +- tmpStylePageLayoutOpenElement.addAttribute("style:name", "PM0"); +- tmpStylePageLayoutOpenElement.write(mpHandler); +- +- OpenTagGraphicsElement tmpStylePageLayoutPropertiesOpenElement("style:page-layout-properties"); +- tmpStylePageLayoutPropertiesOpenElement.addAttribute("fo:margin-top", "0in"); +- tmpStylePageLayoutPropertiesOpenElement.addAttribute("fo:margin-bottom", "0in"); +- tmpStylePageLayoutPropertiesOpenElement.addAttribute("fo:margin-left", "0in"); +- tmpStylePageLayoutPropertiesOpenElement.addAttribute("fo:margin-right", "0in"); +- m_value.str(""); +- m_value << doubleToString(m_width) << "in"; +- tmpStylePageLayoutPropertiesOpenElement.addAttribute("fo:page-width", m_value.str()); +- m_value.str(""); +- m_value << doubleToString(m_height) << "in"; +- tmpStylePageLayoutPropertiesOpenElement.addAttribute("fo:page-height", m_value.str()); +- m_value.str(""); +- tmpStylePageLayoutPropertiesOpenElement.addAttribute("style:print-orientation", "portrait"); +- tmpStylePageLayoutPropertiesOpenElement.write(mpHandler); +- +- mpHandler->endElement("style:page-layout-properties"); +- +- mpHandler->endElement("style:page-layout"); +- +- OpenTagGraphicsElement tmpStyleStyleOpenElement("style:style"); +- tmpStyleStyleOpenElement.addAttribute("style:name", "dp1"); +- tmpStyleStyleOpenElement.addAttribute("style:family", "drawing-page"); +- tmpStyleStyleOpenElement.write(mpHandler); +- +- OpenTagGraphicsElement tmpStyleDrawingPagePropertiesOpenElement("style:drawing-page-properties"); +- // tmpStyleDrawingPagePropertiesOpenElement.addAttribute("draw:background-size", "border"); +- tmpStyleDrawingPagePropertiesOpenElement.addAttribute("draw:fill", "none"); +- tmpStyleDrawingPagePropertiesOpenElement.write(mpHandler); +- +- mpHandler->endElement("style:drawing-page-properties"); +- +- mpHandler->endElement("style:style"); +- +- mpHandler->endElement("office:automatic-styles"); +- +- OpenTagGraphicsElement("office:master-styles").write(mpHandler); +- +- OpenTagGraphicsElement tmpStyleMasterPageOpenElement("style:master-page"); +- tmpStyleMasterPageOpenElement.addAttribute("style:name", "Default"); +- tmpStyleMasterPageOpenElement.addAttribute("style:page-layout-name", "PM0"); +- tmpStyleMasterPageOpenElement.addAttribute("draw:style-name", "dp1"); +- tmpStyleMasterPageOpenElement.write(mpHandler); +- +- mpHandler->endElement("style:master-page"); +- +- mpHandler->endElement("office:master-styles"); +- +- OpenTagGraphicsElement("office:body").write(mpHandler); +- +- OpenTagGraphicsElement("office:drawing").write(mpHandler); +- +- OpenTagGraphicsElement tmpDrawPageOpenElement("draw:page"); +- tmpDrawPageOpenElement.addAttribute("draw:name", "page1"); +- tmpDrawPageOpenElement.addAttribute("draw:style-name", "dp1"); +- tmpDrawPageOpenElement.addAttribute("draw:master-page-name", "Default"); +- tmpDrawPageOpenElement.write(mpHandler); +- +- for (std::vector<GraphicsElement *>::const_iterator bodyIter = mBodyElements.begin(); +- bodyIter != mBodyElements.end(); bodyIter++) +- { +- (*bodyIter)->write(mpHandler); +- } +- +- mpHandler->endElement("draw:page"); +- mpHandler->endElement("office:drawing"); +- mpHandler->endElement("office:body"); +- mpHandler->endElement("office:document"); +- +- mpHandler->endDocument(); +-} +- +-void OdgExporter::setPen(const libwpg::WPGPen& pen) +-{ +- m_pen = pen; +-} +- +-void OdgExporter::setBrush(const libwpg::WPGBrush& brush) +-{ +- m_brush = brush; +-} +- +-void OdgExporter::setFillRule(FillRule rule) +-{ +- m_fillRule = rule; +-} +- +-void OdgExporter::startLayer(unsigned int) +-{ +-} +- +-void OdgExporter::endLayer(unsigned int) +-{ +-} +- +-void OdgExporter::drawRectangle(const libwpg::WPGRect& rect, double rx, double ) +-{ +- writeStyle(); +- OpenTagGraphicsElement *pDrawRectElement = new OpenTagGraphicsElement("draw:rect"); +- m_value.str(""); +- m_value << "gr" << m_styleIndex-1; +- pDrawRectElement->addAttribute("draw:style-name", m_value.str()); +- m_value.str(""); +- m_value << doubleToString(rect.x1) << "in"; +- pDrawRectElement->addAttribute("svg:x", m_value.str()); +- m_value.str(""); +- m_value << doubleToString(rect.y1) << "in"; +- pDrawRectElement->addAttribute("svg:y", m_value.str()); +- m_value.str(""); +- m_value << doubleToString(rect.x2-rect.x1) << "in"; +- pDrawRectElement->addAttribute("svg:width", m_value.str()); +- m_value.str(""); +- m_value << doubleToString(rect.y2-rect.y1) << "in"; +- pDrawRectElement->addAttribute("svg:height", m_value.str()); +- m_value.str(""); +- m_value << doubleToString(rx) << "in"; +- // FIXME: what to do when rx != ry ? +- pDrawRectElement->addAttribute("draw:corner-radius", m_value.str()); +- m_value.str(""); +- mBodyElements.push_back(static_cast<GraphicsElement *>(pDrawRectElement)); +- mBodyElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("draw:rect"))); +-} +- +-void OdgExporter::drawEllipse(const libwpg::WPGPoint& center, double rx, double ry) +-{ +- writeStyle(); +- OpenTagGraphicsElement *pDrawEllipseElement = new OpenTagGraphicsElement("draw:ellipse"); +- m_value.str(""); +- m_value << "gr" << m_styleIndex-1; +- pDrawEllipseElement->addAttribute("draw:style-name", m_value.str()); +- m_value.str(""); +- m_value << doubleToString(center.x - rx) << "in"; +- pDrawEllipseElement->addAttribute("svg:x", m_value.str()); +- m_value.str(""); +- m_value << doubleToString(center.y - ry) << "in"; +- pDrawEllipseElement->addAttribute("svg:y", m_value.str()); +- m_value.str(""); +- m_value << doubleToString(2 * rx) << "in"; +- pDrawEllipseElement->addAttribute("svg:width", m_value.str()); +- m_value.str(""); +- m_value << doubleToString(2 * ry) << "in"; +- pDrawEllipseElement->addAttribute("svg:height", m_value.str()); +- m_value.str(""); +- mBodyElements.push_back(static_cast<GraphicsElement *>(pDrawEllipseElement)); +- mBodyElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("draw:ellipse"))); +-} +- +-void OdgExporter::drawPolygon(const libwpg::WPGPointArray& vertices) +-{ +- if(vertices.count() < 2) +- return; +- +- if(vertices.count() == 2) +- { +- const libwpg::WPGPoint& p1 = vertices[0]; +- const libwpg::WPGPoint& p2 = vertices[1]; +- +- writeStyle(); +- OpenTagGraphicsElement *pDrawLineElement = new OpenTagGraphicsElement("draw:line"); +- m_value.str(""); +- m_value << "gr" << m_styleIndex-1; +- pDrawLineElement->addAttribute("draw:style-name", m_value.str()); +- m_value.str(""); +- pDrawLineElement->addAttribute("draw:text-style-name", "P1"); +- pDrawLineElement->addAttribute("draw:layer", "layout"); +- m_value << doubleToString(p1.x) << "in"; +- pDrawLineElement->addAttribute("svg:x1", m_value.str()); +- m_value.str(""); +- m_value << doubleToString(p1.y) << "in"; +- pDrawLineElement->addAttribute("svg:y1", m_value.str()); +- m_value.str(""); +- m_value << doubleToString(p2.x) << "in"; +- pDrawLineElement->addAttribute("svg:x2", m_value.str()); +- m_value.str(""); +- m_value << doubleToString(p2.y) << "in"; +- pDrawLineElement->addAttribute("svg:y2", m_value.str()); +- m_value.str(""); +- mBodyElements.push_back(static_cast<GraphicsElement *>(pDrawLineElement)); +- mBodyElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("draw:line"))); +- } +- else +- { +- // draw as path +- libwpg::WPGPath path; +- path.moveTo(vertices[0]); +- for(unsigned long ii = 1; ii < vertices.count(); ii++) +- path.lineTo(vertices[ii]); +- path.closed = true; +- drawPath(path); +- } +-} +- +-void OdgExporter::drawPath(const libwpg::WPGPath& path) +-{ +- if(path.count() == 0) +- return; +- +- // try to find the bounding box +- // this is simple convex hull technique, the bounding box might not be +- // accurate but that should be enough for this purpose +- libwpg::WPGPoint p = path.element(0).point; +- libwpg::WPGPoint q = path.element(0).point; +- for(unsigned k = 0; k < path.count(); k++) +- { +- libwpg::WPGPathElement element = path.element(k); +- p.x = (p.x > element.point.x) ? element.point.x : p.x; +- p.y = (p.y > element.point.y) ? element.point.y : p.y; +- q.x = (q.x < element.point.x) ? element.point.x : q.x; +- q.y = (q.y < element.point.y) ? element.point.y : q.y; +- if(element.type == libwpg::WPGPathElement::CurveToElement) +- { +- p.x = (p.x > element.extra1.x) ? element.extra1.x : p.x; +- p.y = (p.y > element.extra1.y) ? element.extra1.y : p.y; +- q.x = (q.x < element.extra1.x) ? element.extra1.x : q.x; +- q.y = (q.y < element.extra1.y) ? element.extra1.y : q.y; +- p.x = (p.x > element.extra2.x) ? element.extra2.x : p.x; +- p.y = (p.y > element.extra2.y) ? element.extra2.y : p.y; +- q.x = (q.x < element.extra2.x) ? element.extra2.x : q.x; +- q.y = (q.y < element.extra2.y) ? element.extra2.y : q.y; +- } +- } +- double vw = q.x - p.x; +- double vh = q.y - p.y; +- +- writeStyle(); +- +- OpenTagGraphicsElement *pDrawPathElement = new OpenTagGraphicsElement("draw:path"); +- m_value.str(""); +- m_value << "gr" << m_styleIndex-1; +- pDrawPathElement->addAttribute("draw:style-name", m_value.str()); +- m_value.str(""); +- pDrawPathElement->addAttribute("draw:text-style-name", "P1"); +- pDrawPathElement->addAttribute("draw:layer", "layout"); +- m_value << doubleToString(p.x) << "in"; +- pDrawPathElement->addAttribute("svg:x", m_value.str()); +- m_value.str(""); +- m_value << doubleToString(p.y) << "in"; +- pDrawPathElement->addAttribute("svg:y", m_value.str()); +- m_value.str(""); +- m_value << doubleToString(vw) << "in"; +- pDrawPathElement->addAttribute("svg:width", m_value.str()); +- m_value.str(""); +- m_value << doubleToString(vh) << "in"; +- pDrawPathElement->addAttribute("svg:height", m_value.str()); +- m_value.str(""); +- m_value << "0 0 " << (int)(vw*2540) << " " << (int)(vh*2540); +- pDrawPathElement->addAttribute("svg:viewBox", m_value.str()); +- m_value.str(""); +- +- for(unsigned i = 0; i < path.count(); i++) +- { +- libwpg::WPGPathElement element = path.element(i); +- libwpg::WPGPoint point = element.point; +- switch(element.type) +- { +- // 2540 is 2.54*1000, 2.54 in = 1 in +- case libwpg::WPGPathElement::MoveToElement: +- m_value << "M" << (int)((point.x-p.x)*2540) << " "; +- m_value << (int)((point.y-p.y)*2540); +- break; +- +- case libwpg::WPGPathElement::LineToElement: +- m_value << "L" << (int)((point.x-p.x)*2540) << " "; +- m_value << (int)((point.y-p.y)*2540); +- break; +- +- case libwpg::WPGPathElement::CurveToElement: +- m_value << "C" << (int)((element.extra1.x-p.x)*2540) << " "; +- m_value << (int)((element.extra1.y-p.y)*2540) << " "; +- m_value << (int)((element.extra2.x-p.x)*2540) << " "; +- m_value << (int)((element.extra2.y-p.y)*2540) << " "; +- m_value << (int)((point.x-p.x)*2540) << " "; +- m_value << (int)((point.y-p.y)*2540); +- break; +- +- default: +- break; +- } +- } +- if(path.closed) +- m_value << " Z"; +- pDrawPathElement->addAttribute("svg:d", m_value.str()); +- m_value.str(""); +- mBodyElements.push_back(static_cast<GraphicsElement *>(pDrawPathElement)); +- mBodyElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("draw:path"))); +-} +- +- +-void OdgExporter::drawBitmap(const libwpg::WPGBitmap& bitmap) +-{ +- OpenTagGraphicsElement *pDrawFrameElement = new OpenTagGraphicsElement("draw:frame"); +- m_value.str(""); +- m_value << doubleToString(bitmap.rect.x1) << "in"; +- pDrawFrameElement->addAttribute("svg:x", m_value.str()); +- m_value.str(""); +- m_value << doubleToString(bitmap.rect.y1) << "in"; +- pDrawFrameElement->addAttribute("svg:y", m_value.str()); +- m_value.str(""); +- m_value << doubleToString(bitmap.rect.height()) << "in"; +- pDrawFrameElement->addAttribute("svg:height", m_value.str()); +- m_value.str(""); +- m_value << doubleToString(bitmap.rect.width()) << "in"; +- pDrawFrameElement->addAttribute("svg:width", m_value.str()); +- mBodyElements.push_back(static_cast<GraphicsElement *>(pDrawFrameElement)); +- +- mBodyElements.push_back(static_cast<GraphicsElement *>(new OpenTagGraphicsElement("draw:image"))); +- +- mBodyElements.push_back(static_cast<GraphicsElement *>(new OpenTagGraphicsElement("office:binary-data"))); +- +- libwpg::WPGString base64Binary; +- bitmap.generateBase64DIB(base64Binary); +- mBodyElements.push_back(static_cast<GraphicsElement *>(new CharDataGraphicsElement(base64Binary.cstr()))); +- +- mBodyElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("office:binary-data"))); +- +- mBodyElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("draw:image"))); +- +- mBodyElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("draw:frame"))); +-} +- +-void OdgExporter::drawImageObject(const libwpg::WPGBinaryData& binaryData) +-{ +- if (binaryData.mimeType.length() <= 0) +- return; +- OpenTagGraphicsElement *pDrawFrameElement = new OpenTagGraphicsElement("draw:frame"); +- m_value.str(""); +- m_value << doubleToString(binaryData.rect.x1) << "in"; +- pDrawFrameElement->addAttribute("svg:x", m_value.str()); +- m_value.str(""); +- m_value << doubleToString(binaryData.rect.y1) << "in"; +- pDrawFrameElement->addAttribute("svg:y", m_value.str()); +- m_value.str(""); +- m_value << doubleToString(binaryData.rect.height()) << "in"; +- pDrawFrameElement->addAttribute("svg:height", m_value.str()); +- m_value.str(""); +- m_value << doubleToString(binaryData.rect.width()) << "in"; +- pDrawFrameElement->addAttribute("svg:width", m_value.str()); +- mBodyElements.push_back(static_cast<GraphicsElement *>(pDrawFrameElement)); +- +- mBodyElements.push_back(static_cast<GraphicsElement *>(new OpenTagGraphicsElement("draw:image"))); +- +- mBodyElements.push_back(static_cast<GraphicsElement *>(new OpenTagGraphicsElement("office:binary-data"))); +- +- libwpg::WPGString base64Binary = binaryData.getBase64Data(); +- mBodyElements.push_back(static_cast<GraphicsElement *>(new CharDataGraphicsElement(base64Binary.cstr()))); +- +- mBodyElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("office:binary-data"))); +- +- mBodyElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("draw:image"))); +- +- mBodyElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("draw:frame"))); +-} +- +- +-static std::string colorToHex(const libwpg::WPGColor& color) +-{ +- char hexdigits[] = "0123456789abcdef"; +- char buffer[] = "123456"; +- buffer[0] = hexdigits[(color.red >> 4) & 15]; +- buffer[1] = hexdigits[color.red & 15]; +- buffer[2] = hexdigits[(color.green >> 4) & 15]; +- buffer[3] = hexdigits[color.green & 15]; +- buffer[4] = hexdigits[(color.blue >> 4) & 15]; +- buffer[5] = hexdigits[color.blue & 15]; +- return std::string(buffer); +-} +- +-void OdgExporter::writeStyle() +-{ +- m_value.str(""); +- m_name.str(""); +- +- if(!m_pen.solid && (m_pen.dashArray.count() >=2 ) ) +- { +- // ODG only supports dashes with the same length of spaces inbetween +- // here we take the first space and assume everything else the same +- // note that dash length is written in percentage +- double distance = m_pen.dashArray.at(1); +- OpenTagGraphicsElement *tmpDrawStrokeDashElement = new OpenTagGraphicsElement("draw:stroke-dash"); +- tmpDrawStrokeDashElement->addAttribute("draw:style", "rect"); +- m_value << "Dash_" << m_dashIndex++; +- tmpDrawStrokeDashElement->addAttribute("draw:name", m_value.str()); +- m_value.str(""); +- m_value << doubleToString(distance*100) << "%"; +- tmpDrawStrokeDashElement->addAttribute("draw:distance", m_value.str()); +- m_value.str(""); +- for(unsigned i = 0; i < m_pen.dashArray.count()/2; i++) +- { +- m_name << "draw:dots" << i+1; +- tmpDrawStrokeDashElement->addAttribute(m_name.str(), "1"); +- m_name.str(""); +- m_name << "draw:dots" << i+1 << "-length"; +- m_value << doubleToString(100*m_pen.dashArray.at(i*2)) << "%"; +- tmpDrawStrokeDashElement->addAttribute(m_name.str(), m_value.str()); +- m_name.str(""); +- m_value.str(""); +- } +- mStrokeDashElements.push_back(static_cast<GraphicsElement *>(tmpDrawStrokeDashElement)); +- mStrokeDashElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("draw:stroke-dash"))); +- } +- +- if(m_brush.style == libwpg::WPGBrush::Gradient) +- { +- OpenTagGraphicsElement *tmpDrawGradientElement = new OpenTagGraphicsElement("draw:gradient"); +- tmpDrawGradientElement->addAttribute("draw:style", "linear"); +- m_value << "Gradient_" << m_gradientIndex++; +- tmpDrawGradientElement->addAttribute("draw:name", m_value.str()); +- m_value.str(""); +- +- // ODG angle unit is 0.1 degree +- double angle = -m_brush.gradient.angle(); +- while(angle < 0) +- angle += 360; +- while(angle > 360) +- angle -= 360; +- +- m_value << (unsigned)(angle*10); +- tmpDrawGradientElement->addAttribute("draw:angle", m_value.str()); +- m_value.str(""); +- +- libwpg::WPGColor startColor = m_brush.gradient.stopColor(0); +- libwpg::WPGColor stopColor = m_brush.gradient.stopColor(1); +- m_value << "#" << colorToHex(startColor); +- tmpDrawGradientElement->addAttribute("draw:start-color", m_value.str()); +- m_value.str(""); +- m_value << "#" << colorToHex(stopColor); +- tmpDrawGradientElement->addAttribute("draw:end-color", m_value.str()); +- m_value.str(""); +- tmpDrawGradientElement->addAttribute("draw:start-intensity", "100%"); +- tmpDrawGradientElement->addAttribute("draw:end-intensity", "100%"); +- tmpDrawGradientElement->addAttribute("draw:border", "0%"); +- mGradientElements.push_back(static_cast<GraphicsElement *>(tmpDrawGradientElement)); +- mGradientElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("draw:gradient"))); +- } +- +- OpenTagGraphicsElement *tmpStyleStyleElement = new OpenTagGraphicsElement("style:style"); +- m_value << "gr" << m_styleIndex; +- tmpStyleStyleElement->addAttribute("style:name", m_value.str()); +- m_value.str(""); +- tmpStyleStyleElement->addAttribute("style:family", "graphic"); +- tmpStyleStyleElement->addAttribute("style:parent-style-name", "standard"); +- mAutomaticStylesElements.push_back(static_cast<GraphicsElement *>(tmpStyleStyleElement)); +- +- OpenTagGraphicsElement *tmpStyleGraphicPropertiesElement = new OpenTagGraphicsElement("style:graphic-properties"); +- +- if(m_pen.width > 0.0) +- { +- m_value << doubleToString(m_pen.width) << "in"; +- tmpStyleGraphicPropertiesElement->addAttribute("svg:stroke-width", m_value.str()); +- m_value.str(""); +- m_value << "#" << colorToHex(m_pen.foreColor); +- tmpStyleGraphicPropertiesElement->addAttribute("svg:stroke-color", m_value.str()); +- m_value.str(""); +- +- if(!m_pen.solid) +- { +- tmpStyleGraphicPropertiesElement->addAttribute("draw:stroke", "dash"); +- m_value << "Dash_" << m_dashIndex-1; +- tmpStyleGraphicPropertiesElement->addAttribute("draw:stroke-dash", m_value.str()); +- m_value.str(""); +- } +- } +- else +- tmpStyleGraphicPropertiesElement->addAttribute("draw:stroke", "none"); +- +- if(m_brush.style == libwpg::WPGBrush::NoBrush) +- tmpStyleGraphicPropertiesElement->addAttribute("draw:fill", "none"); +- +- if(m_brush.style == libwpg::WPGBrush::Solid) +- { +- tmpStyleGraphicPropertiesElement->addAttribute("draw:fill", "solid"); +- m_value << "#" << colorToHex(m_brush.foreColor); +- tmpStyleGraphicPropertiesElement->addAttribute("draw:fill-color", m_value.str()); +- m_value.str(""); +- } +- +- if(m_brush.style == libwpg::WPGBrush::Gradient) +- { +- tmpStyleGraphicPropertiesElement->addAttribute("draw:fill", "gradient"); +- m_value << "Gradient_" << m_gradientIndex-1; +- tmpStyleGraphicPropertiesElement->addAttribute("draw:fill-gradient-name", m_value.str()); +- m_value.str(""); +- } +- +- mAutomaticStylesElements.push_back(static_cast<GraphicsElement *>(tmpStyleGraphicPropertiesElement)); +- mAutomaticStylesElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("style:graphic-properties"))); +- +- mAutomaticStylesElements.push_back(static_cast<GraphicsElement *>(new CloseTagGraphicsElement("style:style"))); +- m_styleIndex++; +-} +diff -Nur koffice-2.3.1/filters/karbon/wpg/import/OdgExporter.hxx koffice-2.3.1-libwpg02/filters/karbon/wpg/import/OdgExporter.hxx +--- koffice-2.3.1/filters/karbon/wpg/import/OdgExporter.hxx 2011-01-15 21:05:35.000000000 +0100 ++++ koffice-2.3.1-libwpg02/filters/karbon/wpg/import/OdgExporter.hxx 1970-01-01 01:00:00.000000000 +0100 +@@ -1,116 +0,0 @@ +-/* libwpg +- * Copyright (C) 2006 Ariya Hidayat (ariya@kde.org) +- * +- * This library is free software; you can redistribute it and/or +- * modify it under the terms of the GNU Library General Public +- * License as published by the Free Software Foundation; either +- * version 2 of the License, or (at your option) any later version. +- * +- * This library 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 +- * Library General Public License for more details. +- * +- * You should have received a copy of the GNU Library General Public +- * License along with this library; if not, write to the +- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +- * Boston, MA 02111-1301 USA +- * +- * For further information visit http://libwpg.sourceforge.net +- */ +- +-/* "This product is not manufactured, approved, or supported by +- * Corel Corporation or Corel Corporation Limited." +- */ +- +-#ifndef __ODGEXPORTER_H__ +-#define __ODGEXPORTER_H__ +- +-#include <iostream> +-#include <sstream> +-#include <string> +- +-#include <libwpg/libwpg.h> +-#include "GraphicsElement.hxx" +- +-class OdgExporter : public libwpg::WPGPaintInterface { +-public: +- explicit OdgExporter(GraphicsHandler *pHandler, +- const bool isFlatXML = false); +- ~OdgExporter(); +- +-#if LIBWPG_VERSION_MINOR<2 +- void startGraphics(double imageWidth, double imageHeight); +- void endGraphics(); +- void startLayer(unsigned int id); +- void endLayer(unsigned int id); +- +- void setPen(const libwpg::WPGPen& pen); +- void setBrush(const libwpg::WPGBrush& brush); +- void setFillRule(FillRule rule); +- +- void drawRectangle(const libwpg::WPGRect& rect, double rx, double ry); +- void drawEllipse(const libwpg::WPGPoint& center, double rx, double ry); +- void drawPolygon(const libwpg::WPGPointArray& vertices); +- void drawPath(const libwpg::WPGPath& path); +- void drawBitmap(const libwpg::WPGBitmap& bitmap); +- void drawImageObject(const libwpg::WPGBinaryData& binaryData); +- +-private: +- std::vector <GraphicsElement *> mBodyElements; +- std::vector <GraphicsElement *> mAutomaticStylesElements; +- std::vector <GraphicsElement *> mStrokeDashElements; +- std::vector <GraphicsElement *> mGradientElements; +- GraphicsHandler *mpHandler; +- +- libwpg::WPGPen m_pen; +- libwpg::WPGBrush m_brush; +- FillRule m_fillRule; +- int m_gradientIndex; +- int m_dashIndex; +- int m_styleIndex; +- void writeStyle(); +- std::ostringstream m_value, m_name; +- double m_width, m_height; +- const bool m_isFlatXML; +-#else +- virtual void startGraphics(const ::WPXPropertyList &propList); +- virtual void endGraphics(); +- virtual void setStyle(const ::WPXPropertyList &propList, const ::WPXPropertyListVector &gradient); +- virtual void startLayer(const ::WPXPropertyList &propList); +- virtual void endLayer(); +- virtual void drawRectangle(const ::WPXPropertyList& propList); +- virtual void drawEllipse(const ::WPXPropertyList& propList); +- virtual void drawPolygon(const ::WPXPropertyListVector &vertices); +- virtual void drawPath(const ::WPXPropertyListVector &path); +- virtual void drawGraphicObject(const ::WPXPropertyList &propList, const ::WPXBinaryData &binaryData); +- virtual void startEmbeddedGraphics(const ::WPXPropertyList &propList); +- virtual void endEmbeddedGraphics(); +- virtual void drawPolyline(const ::WPXPropertyListVector &vertices); +- virtual void startTextObject(const ::WPXPropertyList &propList, const ::WPXPropertyListVector &path); +- virtual void endTextObject(); +- virtual void startTextLine(const ::WPXPropertyList &propList); +- virtual void endTextLine(); +- virtual void startTextSpan(const ::WPXPropertyList &propList); +- virtual void endTextSpan(); +- virtual void insertText(const ::WPXString &str); +- +- +-private: +- std::vector <GraphicsElement *> mBodyElements; +- std::vector <GraphicsElement *> mAutomaticStylesElements; +- std::vector <GraphicsElement *> mStrokeDashElements; +- std::vector <GraphicsElement *> mGradientElements; +- GraphicsHandler *mpHandler; +- +- int m_gradientIndex; +- int m_dashIndex; +- int m_styleIndex; +- void writeStyle(); +- std::ostringstream m_value, m_name; +- double m_width, m_height; +- const bool m_isFlatXML; +-#endif +-}; +- +-#endif // __ODGEXPORTER_H__ +diff -Nur koffice-2.3.1/filters/karbon/wpg/import/WPGImport.cpp koffice-2.3.1-libwpg02/filters/karbon/wpg/import/WPGImport.cpp +--- koffice-2.3.1/filters/karbon/wpg/import/WPGImport.cpp 2011-01-15 21:05:35.000000000 +0100 ++++ koffice-2.3.1-libwpg02/filters/karbon/wpg/import/WPGImport.cpp 2011-01-02 17:46:15.000000000 +0100 +@@ -20,28 +20,26 @@ + #include <WPGImport.h> + #include <WPGImport.moc> + +-#include <QBuffer> +-#include <QByteArray> +-#include <QString> +- +-#include <kdebug.h> + #include <KoFilterChain.h> + #include <KoGlobal.h> + #include <KoUnit.h> ++#include <KoXmlWriter.h> ++ + #include <kpluginfactory.h> ++#include <KDebug> + +-#include <KoXmlWriter.h> ++ ++#include <QtCore/QString> ++#include <QtCore/QFile> + + #include <libwpg/libwpg.h> + #if LIBWPG_VERSION_MINOR<2 + #include <libwpg/WPGStreamImplementation.h> + #else + #include <libwpd-stream/libwpd-stream.h> ++#include <libwpd/libwpd.h> + #endif + +-#include "FileOutputHandler.hxx" +-#include "OdgExporter.hxx" +- + #include <iostream> + + K_PLUGIN_FACTORY(WPGImportFactory, registerPlugin<WPGImport>();) +@@ -56,35 +54,13 @@ + { + } + +-static QByteArray createManifest() +-{ +- KoXmlWriter* manifestWriter; +- QByteArray manifestData; +- QBuffer manifestBuffer(&manifestData); +- +- manifestBuffer.open(QIODevice::WriteOnly); +- manifestWriter = new KoXmlWriter(&manifestBuffer); +- +- manifestWriter->startDocument("manifest:manifest"); +- manifestWriter->startElement("manifest:manifest"); +- manifestWriter->addAttribute("xmlns:manifest", "urn:oasis:names:tc:openoffice:xmlns:manifest:1.0"); +- manifestWriter->addManifestEntry("/", "application/vnd.oasis.opendocument.graphics"); +- //manifestWriter->addManifestEntry( "styles.xml", "text/xml" ); +- manifestWriter->addManifestEntry("content.xml", "text/xml"); +- manifestWriter->endElement(); +- manifestWriter->endDocument(); +- delete manifestWriter; +- +- return manifestData; +-} +- + + KoFilter::ConversionStatus WPGImport::convert(const QByteArray& from, const QByteArray& to) + { + if (from != "application/x-wpg") + return KoFilter::NotImplemented; + +- if (to != "application/vnd.oasis.opendocument.graphics") ++ if (to != "image/svg+xml") + return KoFilter::NotImplemented; + + #if LIBWPG_VERSION_MINOR<2 +@@ -96,6 +72,7 @@ + input = olestream; + } + } ++ libwpg::WPGString output; + #else + WPXInputStream* input = new WPXFileStream(m_chain->inputFile().toLocal8Bit()); + if (input->isOLEStream()) { +@@ -105,59 +82,31 @@ + input = olestream; + } + } ++ ::WPXString output; + #endif + + if (!libwpg::WPGraphics::isSupported(input)) { +- std::cerr << "ERROR: Unsupported file format (unsupported version) or file is encrypted!" << std::endl; ++ kWarning() << "ERROR: Unsupported file format (unsupported version) or file is encrypted!"; + delete input; + return KoFilter::NotImplemented; + } + +- // do the conversion +- std::ostringstream tmpStringStream; +- FileOutputHandler tmpHandler(tmpStringStream); +- OdgExporter exporter(&tmpHandler); +- libwpg::WPGraphics::parse(input, &exporter); +- delete input; +- +- +- // create output store +- KoStore* storeout; +- storeout = KoStore::createStore(m_chain->outputFile(), KoStore::Write, +- "application/vnd.oasis.opendocument.graphics", KoStore::Zip); +- +- if (!storeout) { +- kWarning() << "Couldn't open the requested file."; +- return KoFilter::FileNotFound; +- } +- +-#if 0 +- if (!storeout->open("styles.xml")) { +- kWarning() << "Couldn't open the file 'styles.xml'."; +- return KoFilter::CreationError; ++ if (!libwpg::WPGraphics::generateSVG(input, output)) { ++ kWarning() << "ERROR: SVG Generation failed!"; ++ delete input; ++ return KoFilter::ParsingError; + } +- //storeout->write( createStyles() ); +- storeout->close(); +-#endif + +- if (!storeout->open("content.xml")) { +- kWarning() << "Couldn't open the file 'content.xml'."; +- return KoFilter::CreationError; +- } +- storeout->write(tmpStringStream.str().c_str()); +- storeout->close(); ++ delete input; + +- // store document manifest +- storeout->enterDirectory("META-INF"); +- if (!storeout->open("manifest.xml")) { +- kWarning() << "Couldn't open the file 'META-INF/manifest.xml'."; +- return KoFilter::CreationError; ++ QFile outputFile(m_chain->outputFile()); ++ if(!outputFile.open(QIODevice::WriteOnly | QIODevice::Text)) { ++ kWarning() << "ERROR: Could not open output file" << m_chain->outputFile(); ++ return KoFilter::InternalError; + } +- storeout->write(createManifest()); +- storeout->close(); + +- // we are done! +- delete storeout; ++ outputFile.write(output.cstr()); ++ outputFile.close(); + + return KoFilter::OK; + } + diff --git a/testing/koffice/koffice.install b/testing/koffice/koffice.install new file mode 100644 index 000000000..e70c054ec --- /dev/null +++ b/testing/koffice/koffice.install @@ -0,0 +1,11 @@ +post_install() { + xdg-icon-resource forceupdate --theme hicolor &> /dev/null +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} diff --git a/testing/koffice/krita.install b/testing/koffice/krita.install new file mode 100644 index 000000000..ce5c32e1b --- /dev/null +++ b/testing/koffice/krita.install @@ -0,0 +1,12 @@ +post_install() { + xdg-icon-resource forceupdate --theme hicolor &> /dev/null + update-mime-database usr/share/mime &> /dev/null +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +}
\ No newline at end of file diff --git a/testing/libreoffice/PKGBUILD b/testing/libreoffice/PKGBUILD new file mode 100644 index 000000000..4c3853010 --- /dev/null +++ b/testing/libreoffice/PKGBUILD @@ -0,0 +1,701 @@ +# $Id: PKGBUILD 125824 2011-05-30 09:43:02Z andyrtr $ +# Maintainer: AndyRTR <andyrtr@archlinux.org> + +pkgbase="libreoffice" +pkgname=('libreoffice' 'libreoffice-sdk' + #'libreoffice-extension-barcode' # + 'libreoffice-extension-diagram' + 'libreoffice-extension-google-docs' + 'libreoffice-extension-hunart' + #'libreoffice-extension-lightproof' # no source integration + #'libreoffice-extension-mysql-connector' # missing libmysqlcppconn-dev configure: error: mysql_driver.h not found. install MySQL C++ Connectivity + 'libreoffice-extension-nlpsolver' + 'libreoffice-extension-ct2n' + 'libreoffice-extension-numbertext' + 'libreoffice-extension-oooblogger' + 'libreoffice-extension-pdfimport' + 'libreoffice-extension-presenter-screen' + 'libreoffice-extension-presentation-minimizer' + 'libreoffice-extension-report-builder' + 'libreoffice-extension-scripting-beanshell' + 'libreoffice-extension-scripting-javascript' + 'libreoffice-extension-scripting-python' + 'libreoffice-extension-typo' + 'libreoffice-extension-validator' + 'libreoffice-extension-watch-window' + 'libreoffice-extension-wiki-publisher') +_LOver=3.4.0.2 +pkgver=3.4.0 +pkgrel=1 +arch=('i686' 'x86_64') +#_LO_tree="3.4" +_OFFICEUPD="340" +license=('LGPL3') +url="http://www.libreoffice.org/" +makedepends=( # makedepends + 'sane' 'perl-archive-zip' 'zip' 'unzip' 'xulrunner' 'unixodbc' 'hsqldb-java' #'boost' - we use internal one for now that has some gcc4.6 fixes. + 'apache-ant' 'gperf' 'poppler' 'kdelibs' 'gconf' 'cppunit' #'libmysqlclient' + 'beanshell' 'vigra' 'libldap' 'lucene' 'libmythes' 'junit' 'libwpg' 'imagemagick' + 'mesa' 'gstreamer0.10-base' 'java-runtime' + #'saxon' - currently broken + # the depends from libreoffice main pkg + "curl>=7.20.0" "hunspell>=1.2.8" "python2>=2.7" 'libwpd>=0.9.2' 'libwps' 'libxaw' "neon>=0.28.6" + 'pango' 'nspr' 'libjpeg' 'libxrandr' 'libgl' 'dbus-glib' "icu>=4.6" 'libxslt' + 'redland' 'libgraphite' 'hyphen' 'lpsolve' 'gcc-libs' 'sh' 'libtextcat' + 'hicolor-icon-theme' 'desktop-file-utils' 'shared-mime-info' 'gtk2' # keep gtk2 for install script + 'ttf-dejavu') # to satisfy regression tests + # translate-toolkit - todo move them to extra to allow --with-system-foo builds +# http://download.documentfoundation.org/mirrors/all.html +# http://wiki.documentfoundation.org/Mirrors +#_mirror="http://download.documentfoundation.org/libreoffice/src" +_mirror="http://dev-builds.libreoffice.org/pre-releases/src/" +_additional_source_url="http://hg.services.openoffice.org/binaries" +source=(${_mirror}/${pkgbase}-{artwork,base,bootstrap,calc,components,extensions,extras,filters,help,impress,libs-core,libs-extern,libs-extern-sys,libs-gui,postprocess,sdk,testing,ure,writer}-${_LOver}.tar.bz2 #,translations + ${_additional_source_url}/1f24ab1d39f4a51faf22244c94a6203f-xmlsec1-1.2.14.tar.gz + ${_additional_source_url}/35c94d2df8893241173de1d16b6034c0-swingExSrc.zip + ${_additional_source_url}/798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip + ${_additional_source_url}/fdb27bfe2dbe2e7b57ae194d9bf36bab-SampleICC-1.3.2.tar.gz + ${_additional_source_url}/ada24d37d8d638b3d8a9985e80bc2978-source-9.0.0.7-bj.zip + ${_additional_source_url}/2a177023f9ea8ec8bd00837605c5df1b-jakarta-tomcat-5.0.30-src.tar.gz + ${_additional_source_url}/a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip + ${_additional_source_url}/3c219630e4302863a9a83d0efde889db-commons-logging-1.1.1-src.tar.gz + ${_additional_source_url}/2ae988b339daec234019a7066f96733e-commons-lang-2.3-src.tar.gz + ${_additional_source_url}/2c9b0f83ed5890af02c0df1c1776f39b-commons-httpclient-3.1-src.tar.gz + ${_additional_source_url}/af3c3acf618de6108d65fcdc92b492e1-commons-codec-1.3-src.tar.gz + ${_additional_source_url}/eeb2c7ddf0d302fba4bfc6e97eac9624-libbase-1.1.6.zip + ${_additional_source_url}/39bb3fcea1514f1369fcfc87542390fd-sacjava-1.3.zip + ${_additional_source_url}/3404ab6b1792ae5f16bbd603bd1e1d03-libformula-1.1.7.zip + ${_additional_source_url}/97b2d4dba862397f446b217e2b623e71-libloader-1.1.6.zip + ${_additional_source_url}/f94d9870737518e3b597f9265f4e9803-libserializer-1.1.6.zip + ${_additional_source_url}/8ce2fcd72becf06c41f7201d15373ed9-librepository-1.1.6.zip + ${_additional_source_url}/d8bd5eed178db6e2b18eeed243f85aa8-flute-1.1.6.zip + ${_additional_source_url}/3bdf40c0d199af31923e900d082ca2dd-libfonts-1.1.6.zip + ${_additional_source_url}/ace6ab49184e329db254e454a010f56d-libxml-1.1.7.zip + ${_additional_source_url}/db60e4fde8dd6d6807523deb71ee34dc-liblayout-0.2.10.zip + ${_additional_source_url}/ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip + ${_additional_source_url}/18f577b374d60b3c760a3a3350407632-STLport-4.5.tar.gz + http://download.go-oo.org/src/7a0dcb3fe1e8c7229ab4fb868b7325e6-mdds_0.5.2.tar.bz2 + http://download.go-oo.org/extern/185d60944ea767075d27247c3162b3bc-unowinreg.dll + http://download.go-oo.org/extern/b4cae0700aa1c2aef7eb7f345365e6f1-translate-toolkit-1.8.1.tar.bz2 + http://download.go-oo.org/src/451ccf439a36a568653b024534669971-ConvertTextToNumber-1.3.2.oxt + http://download.go-oo.org/src/90401bca927835b6fbae4a707ed187c8-nlpsolver-0.9.tar.bz2 + http://download.go-oo.org/src/f02578f5218f217a9f20e9c30e119c6a-boost_1_44_0.tar.bz2 + http://ooo.itc.hu/oxygenoffice/download/libreoffice/7e7efc5d4a03126bb9ae3ae9aa2c4e87-Barcode_1.3.1.0.oxt + http://ooo.itc.hu/oxygenoffice/download/libreoffice/41c9b65ad60af4b3255bbecdfef11736-Diagram_1.1.0.0.oxt + http://ooo.itc.hu/oxygenoffice/download/libreoffice/451ccf439a36a568653b024534669971-ConvertTextToNumber-1.3.2.oxt + http://ooo.itc.hu/oxygenoffice/download/libreoffice/bbdd5639ada63e3130761daaecae1a10-Validator_1.1.0.0.oxt + http://ooo.itc.hu/oxygenoffice/download/libreoffice/23bd75552206dfcd8fd4e29137dcac84-WatchWindow_1.2.0.0.oxt + http://ooo.itc.hu/oxygenoffice/download/libreoffice/b8cbca7b3363e6ca2d02bc0ba2b63904-numbertext_0.9.4.oxt + http://ooo.itc.hu/oxygenoffice/download/libreoffice/b632bdd25649cc4067bcb410bae23d2b-hunart_0.3.oxt + http://ooo.itc.hu/oxygenoffice/download/libreoffice/9d60b6cfa3ef1926848710bbcd11115b-typo_0.4.2.oxt + http://ooo.itc.hu/oxygenoffice/download/libreoffice/dbaafd21de055e582d92d7d32fe9da13-gdocs_2.3.1.oxt + http://ooo.itc.hu/oxygenoffice/download/libreoffice/b7b2d0e04e142f26dd96119c80757d1f-oooblogger_0.1.oxt + buildfix_i116795.diff + buildfix_boost.diff + buildfix_ct2n.diff + vbahelper.visibility.patch + buildfix_bison25.diff) +noextract=(185d60944ea767075d27247c3162b3bc-unowinreg.dll + b4cae0700aa1c2aef7eb7f345365e6f1-translate-toolkit-1.8.1.tar.bz2 + 7a0dcb3fe1e8c7229ab4fb868b7325e6-mdds_0.5.2.tar.bz2 + ada24d37d8d638b3d8a9985e80bc2978-source-9.0.0.7-bj.zip + 798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip + 1f24ab1d39f4a51faf22244c94a6203f-xmlsec1-1.2.14.tar.gz + fdb27bfe2dbe2e7b57ae194d9bf36bab-SampleICC-1.3.2.tar.gz + 35c94d2df8893241173de1d16b6034c0-swingExSrc.zip + 2a177023f9ea8ec8bd00837605c5df1b-jakarta-tomcat-5.0.30-src.tar.gz + a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip + 3c219630e4302863a9a83d0efde889db-commons-logging-1.1.1-src.tar.gz + 2ae988b339daec234019a7066f96733e-commons-lang-2.3-src.tar.gz + 2c9b0f83ed5890af02c0df1c1776f39b-commons-httpclient-3.1-src.tar.gz + af3c3acf618de6108d65fcdc92b492e1-commons-codec-1.3-src.tar.gz + eeb2c7ddf0d302fba4bfc6e97eac9624-libbase-1.1.6.zip + 39bb3fcea1514f1369fcfc87542390fd-sacjava-1.3.zip + 3404ab6b1792ae5f16bbd603bd1e1d03-libformula-1.1.7.zip + 97b2d4dba862397f446b217e2b623e71-libloader-1.1.6.zip + f94d9870737518e3b597f9265f4e9803-libserializer-1.1.6.zip + 8ce2fcd72becf06c41f7201d15373ed9-librepository-1.1.6.zip + d8bd5eed178db6e2b18eeed243f85aa8-flute-1.1.6.zip + 3bdf40c0d199af31923e900d082ca2dd-libfonts-1.1.6.zip + ace6ab49184e329db254e454a010f56d-libxml-1.1.7.zip + db60e4fde8dd6d6807523deb71ee34dc-liblayout-0.2.10.zip + ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip + 18f577b374d60b3c760a3a3350407632-STLport-4.5.tar.gz + 7e7efc5d4a03126bb9ae3ae9aa2c4e87-Barcode_1.3.1.0.oxt + 41c9b65ad60af4b3255bbecdfef11736-Diagram_1.1.0.0.oxt + 451ccf439a36a568653b024534669971-ConvertTextToNumber-1.3.2.oxt + bbdd5639ada63e3130761daaecae1a10-Validator_1.1.0.0.oxt + 23bd75552206dfcd8fd4e29137dcac84-WatchWindow_1.2.0.0.oxt + b8cbca7b3363e6ca2d02bc0ba2b63904-numbertext_0.9.4.oxt + b632bdd25649cc4067bcb410bae23d2b-hunart_0.3.oxt + 9d60b6cfa3ef1926848710bbcd11115b-typo_0.4.2.oxt + dbaafd21de055e582d92d7d32fe9da13-gdocs_2.3.1.oxt + b7b2d0e04e142f26dd96119c80757d1f-oooblogger_0.1.oxt + 90401bca927835b6fbae4a707ed187c8-nlpsolver-0.9.tar.bz2 + f02578f5218f217a9f20e9c30e119c6a-boost_1_44_0.tar.bz2) +md5sums=('7427ddd5ae63b6ee7aa868201dfbccaa' + 'a78a8e08731213da02c65060cedc5589' + '596da255e2728faccc8f2361171270ec' + '8ed9803a34d13da1764e7523d550d6b0' + '9be46d7c4bf3a60ee8dd0a5ef3638f82' + 'b60db802866ab71c485de42e6382d1bb' + '09e374cf3bd8f07a043883393012d69b' + 'af9f25aa04dc4ef7b797f7bcc743877c' + 'ad29de786d76d67759f9d2dd574b29be' + 'ff13a8ac0ea324122b75773fd80a9245' + '6eb8f53e01da7a945ee4cd42b7297732' + '90df27d4cbf490668ce4f03ff7dba521' + 'c0ea197183564c49306a1c79ca571e51' + '91e69ed3c0be542fa7f69ca3da2d7808' + 'a81c787b2e5469c2acc9f335b2c9e52f' + 'ee1c78af6553657614b1a43adf4750ac' + 'c970d6212618fc9b34526907eb030ce6' + '6d25488c81af09d87015bf487243042f' + '9a39234a49516b7035309e28dd4f0784' + '1f24ab1d39f4a51faf22244c94a6203f' + '35c94d2df8893241173de1d16b6034c0' + '798b2ffdc8bcfe7bca2cf92b62caf685' + 'fdb27bfe2dbe2e7b57ae194d9bf36bab' + 'ada24d37d8d638b3d8a9985e80bc2978' + '2a177023f9ea8ec8bd00837605c5df1b' + 'a7983f859eafb2677d7ff386a023bc40' + '3c219630e4302863a9a83d0efde889db' + '2ae988b339daec234019a7066f96733e' + '2c9b0f83ed5890af02c0df1c1776f39b' + 'af3c3acf618de6108d65fcdc92b492e1' + 'eeb2c7ddf0d302fba4bfc6e97eac9624' + '39bb3fcea1514f1369fcfc87542390fd' + '3404ab6b1792ae5f16bbd603bd1e1d03' + '97b2d4dba862397f446b217e2b623e71' + 'f94d9870737518e3b597f9265f4e9803' + '8ce2fcd72becf06c41f7201d15373ed9' + 'd8bd5eed178db6e2b18eeed243f85aa8' + '3bdf40c0d199af31923e900d082ca2dd' + 'ace6ab49184e329db254e454a010f56d' + 'db60e4fde8dd6d6807523deb71ee34dc' + 'ba2930200c9f019c2d93a8c88c651a0f' + '18f577b374d60b3c760a3a3350407632' + '7a0dcb3fe1e8c7229ab4fb868b7325e6' + '185d60944ea767075d27247c3162b3bc' + 'b4cae0700aa1c2aef7eb7f345365e6f1' + '451ccf439a36a568653b024534669971' + '90401bca927835b6fbae4a707ed187c8' + 'f02578f5218f217a9f20e9c30e119c6a' + '7e7efc5d4a03126bb9ae3ae9aa2c4e87' + '41c9b65ad60af4b3255bbecdfef11736' + '451ccf439a36a568653b024534669971' + 'bbdd5639ada63e3130761daaecae1a10' + '23bd75552206dfcd8fd4e29137dcac84' + 'b8cbca7b3363e6ca2d02bc0ba2b63904' + 'b632bdd25649cc4067bcb410bae23d2b' + '9d60b6cfa3ef1926848710bbcd11115b' + 'dbaafd21de055e582d92d7d32fe9da13' + 'b7b2d0e04e142f26dd96119c80757d1f' + '0520d63c946e272ed3bdfc863fbdc42e' + 'bc228237108cab7745897a9f466b6d39' + 'eee273f501ff45dc5f1365e78c6d57c0' + '43b145db28e6c0d73578ae6fd35e510d' + '4fa96e04b41a6e86774e74a972024b3e') + +build() { + + unset J2REDIR; unset J2SDKDIR; unset JAVA_HOME; unset CLASSPATH; unset EXTRAOPTS + [ -z "${JAVA_HOME}" ] && . /etc/profile.d/openjdk6.sh + [ -z "${MOZ_PLUGIN_PATH}" ] && . /etc/profile.d/mozilla-common.sh + [ -z "${ANT_HOME}" ] && . /etc/profile.d/apache-ant.sh + + # move all LibO sources into one build directory + mkdir ${srcdir}/build && cd ${srcdir}/build + for i in libreoffice-{artwork,base,bootstrap,calc,components,extensions,extras,filters,help,impress,libs-core,libs-extern,libs-extern-sys,libs-gui,postprocess,sdk,testing,ure,writer}-${_LOver}; do #,translations + mv ${srcdir}/$i/* . + done + + # move external sources into place + mkdir ${srcdir}/ext_sources && cd ${srcdir}/ext_sources + for source in "${noextract[@]}"; do + ln -s ${srcdir}/$source . + done + + cd ${srcdir}/build + + # buildfixes & bugfixes + patch -Np1 -i ${srcdir}/buildfix_i116795.diff + patch -Np1 -i ${srcdir}/buildfix_boost.diff + patch -Np1 -i ${srcdir}/buildfix_ct2n.diff + patch -Np0 -i ${srcdir}/vbahelper.visibility.patch + patch -Np0 -i ${srcdir}/buildfix_bison25.diff + + # unset C(XX)FLAGS + # http://www.openoffice.org/issues/show_bug.cgi?id=103205 +# unset CFLAGS +# unset CXXFLAGS + + #use the CFLAGS but remove the LibO overridden ones + for i in $CFLAGS; do + case "$i" in + -O?|-pipe|-Wall|-g|-fexceptions) continue;; + esac + ARCH_FLAGS="$ARCH_FLAGS $i" + done + + # python2 fix + export PYTHON=python2 + + # http://wiki.documentfoundation.org/Development/How_to_build/Configure_options + +# if [ "$CARCH" = "x86_64" ]; then +# EXTRAOPTS="--without-stlport" +# else +# EXTRAOPTS="--with-stlport" # --without-system-boost" +# # # avoid problems with ixion for now +# sed -i '/fields-table-formula.diff/d' patches/dev300/apply || return 1 +# fi + +# autoconf -v -f + + # non-SMP test build +# export MAKEFLAGS="-j1" + ./configure --with-build-version="${_LOver} ArchLinux build-${pkgrel}" --with-vendor="ArchLinux" \ + --with-unix-wrapper="libreoffice" \ + --with-max-jobs=${MAKEFLAGS/-j/} --with-num-cpus=${MAKEFLAGS/-j/} \ + --with-external-tar="${srcdir}/ext_sources" \ + --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc \ + --with-install-dirname="${pkgbase}" --libdir=/usr/lib --mandir=/usr/share/man \ + --with-lang="" \ + --disable-verbose \ + --enable-cairo\ + --enable-crashdump \ + --enable-dbus \ + --enable-evolution2\ + --disable-graphite\ + --enable-gio\ + --disable-gnome-vfs\ + --disable-kde\ + --enable-kde4\ + --enable-ldap \ + --enable-lockdown\ + --enable-opengl \ + --enable-odk\ + --enable-opengl\ + --enable-ext-barcode \ + --enable-ext-diagram \ + --enable-ext-google-docs \ + --enable-ext-hunart \ + --disable-ext-lightproof \ + --disable-ext-mysql-connector \ + --with-system-mysql \ + --enable-ext-nlpsolver \ + --enable-ext-ct2n \ + --enable-ext-numbertext \ + --enable-ext-oooblogger \ + --enable-ext-pdfimport \ + --enable-ext-presenter-console \ + --enable-ext-presenter-minimizer \ + --enable-ext-report-builder \ + --enable-ext-scripting-beanshell \ + --enable-ext-scripting-javascript \ + --enable-ext-scripting-python \ + --enable-ext-typo \ + --enable-ext-validator \ + --enable-ext-watch-window \ + --enable-ext-wiki-publisher \ + --without-fonts\ + --without-afms\ + --without-ppds\ + --without-system-libwps\ + --without-system-mdds\ + --without-myspell-dicts \ + --with-system-dicts \ + --with-external-dict-dir=/usr/share/hunspell \ + --with-external-hyph-dir=/usr/share/hyphen \ + --with-external-thes-dir=/usr/share/mythes \ + --with-system-cppunit\ + --with-system-libwpg \ + --with-system-libwps \ + --with-system-redland\ + --without-system-saxon\ + --with-system-libtextcat \ + --with-external-libtextcat-data \ + --with-openldap\ + --with-ant-home="/usr/share/java/apache-ant"\ + --without-system-boost\ + --with-system-cairo\ + --with-system-libs\ + --with-system-mozilla\ + --with-system-mythes\ + --with-system-xrender-headers\ + --with-system-headers\ + --with-alloc=system\ + --with-system-lucene\ + --with-lucene-core-jar=/usr/share/java/lucene-core.jar\ + --with-lucene-analyzers-jar=/usr/share/java/lucene-analyzers.jar\ + $EXTRAOPTS || return 1 + +#--with-system-graphite --enable-graohite ? +#--with-servlet-api-jar=JARFILE +# see http://qa.openoffice.org/issues/show_bug.cgi?id=110136 +# --with-system-saxon\ +# --with-saxon-jar=/usr/share/java/saxon/saxon9he.jar\ + + touch src.downloaded + #./download + unset MAKEFLAGS + ./bootstrap + make +} + +#check() { +# cd ${srcdir}/build +# make check +#} + +package_libreoffice() { + + pkgdesc="a productivity suite that is compatible with other major office suites" + install=${pkgbase}.install + depends=("curl>=7.20.0" "hunspell>=1.2.8" "python2>=2.7" 'libwpd>=0.9.2' 'libwps' 'libxaw' "neon>=0.28.6" + 'pango' 'nspr' 'libjpeg' 'libxrandr' 'libgl' 'dbus-glib' "icu>=4.6" 'libxslt' + 'redland' 'libgraphite' 'hyphen' 'lpsolve' 'gcc-libs' 'sh' 'libtextcat' + 'hicolor-icon-theme' 'desktop-file-utils' 'shared-mime-info' 'gtk2') # keep gtk2 for install script + #'java-runtime' + #'saxon' + optdepends=('java-runtime: adds java support' + 'libcups: adds printing support' + 'gconf: adds additional gnome support' + 'nss: adds support for signed files/macros' + 'pstoedit: translates PostScript and PDF graphics into other vector formats' + 'poppler: for shipped pdfimport extension' + 'kdelibs: for kde integration' + 'libmythes: for use in thesaurus' + 'hsqldb-java: default database format for OpenOffice.org' + 'beanshell: interactive java -- good for prototyping /macros' + 'vigra: C++ computer vision library, usable in Basebmp' + 'libmspack: library for Microsoft compression formats for use in FontOOo' + 'libwpg: library for importing and converting Corel WordPerfect(tm) Graphics images' + 'libldap: to get profiles via ldap' + 'lucene: full-text search engine library for Java needed in the help section' + 'sane: for scanner access' + 'unixodbc: adds ODBC database support' + 'mesa: for the OGLTrans extension' + 'gstreamer0.10-base: + some gstr-plugins to support multimedia content, e.g. in impress') + backup=(etc/libreoffice/sofficerc + etc/libreoffice/bootstraprc + etc/libreoffice/psprint.conf) + provides=('go-openoffice') + conflicts=('go-openoffice') + replaces=('go-openoffice' 'openoffice-base' ) + + cd ${srcdir}/build + make DESTDIR=${pkgdir} install + + # fix missing desktop integration + install -dm755 ${pkgdir}/usr/bin + pushd ${pkgdir}/usr/bin + ln -vs /usr/lib/libreoffice/program/soffice ./libreoffice + ln -vs /usr/lib/libreoffice/program/soffice ./soffice + ln -vs /usr/lib/libreoffice/program/sbase ./lobase + ln -vs /usr/lib/libreoffice/program/scalc ./localc + ln -vs /usr/lib/libreoffice/program/sdraw ./lodraw + ln -vs /usr/lib/libreoffice/program/simpress ./loimpress + ln -vs /usr/lib/libreoffice/program/smath ./lomath + ln -vs /usr/lib/libreoffice/program/swriter ./lowriter + ln -vs /usr/lib/libreoffice/program/unopkg ./unopkg + popd + + # move sysui desktop files into place we want to use - javafilter and qstarter, but not unneeded printeradmin + install -dm755 ${pkgdir}/usr/share/{applications,icons,mime/packages,pixmaps} + rm ${pkgdir}/usr/lib/libreoffice/share/xdg/printeradmin.desktop + for i in base calc draw impress javafilter math qstart startcenter writer; do + cp ${pkgdir}/usr/lib/libreoffice/share/xdg/$i.desktop ${pkgdir}/usr/share/applications/libreoffice-$i.desktop + done + # remove version in menu entry and make it visible + sed -i -e "s/3.4//g" ${pkgdir}/usr/share/applications/*.desktop + sed -i -e "s/Icon=libreoffice34-/Icon=/g" ${pkgdir}/usr/share/applications/*.desktop + sed -i -e "/NoDisplay=true/d" ${pkgdir}/usr/share/applications/libreoffice-qstart.desktop + echo "Icon=startcenter" >> ${pkgdir}/usr/share/applications/libreoffice-qstart.desktop + # remove unneeded .desktop files + rm -rf ${pkgdir}/usr/lib/libreoffice/share/xdg + + # add missing icon files + cp -R ${srcdir}/build/sysui/desktop/icons/{hi,lo}color ${pkgdir}/usr/share/icons/ + pushd ${pkgdir}/usr/share/pixmaps + for i in base calc draw impress main math printeradmin startcenter writer; do + ln -vs /usr/share/icons/hicolor/48x48/apps/$i.png . + done + popd + sed -i -e 's/Icon=libreoffice-/Icon=/' ${pkgdir}/usr/share/applications/*.desktop + + # add missing mimetype file + install -m644 ${srcdir}/build/sysui/unxlng*/misc/libreoffice/openoffice.org.xml ${pkgdir}/usr/share/mime/packages/libreoffice.xml + + # put configuration files into place + install -dm755 ${pkgdir}/etc/libreoffice + install -m644 ${pkgdir}/usr/lib/libreoffice/program/{bootstraprc,sofficerc} ${pkgdir}/etc/libreoffice/ + install -m644 ${pkgdir}/usr/lib/libreoffice/basis3.4/share/psprint/psprint.conf ${pkgdir}/etc/libreoffice/ + # install dummy links to make them found by LibO + cd ${pkgdir}/usr/lib/libreoffice/program/ + ln -vsf /etc/libreoffice/{bootstraprc,sofficerc} . + cd ${pkgdir}/usr/lib/libreoffice/basis3.4/share/psprint/ + ln -vsf /etc/libreoffice/psprint.conf . + + #fix http://bugs.archlinux.org/task/17656 + find ${pkgdir} -perm 444 -exec ls -lh {} \; + find ${pkgdir} -perm 444 -exec chmod 644 {} \; + find ${pkgdir} -perm 555 -exec ls -lh {} \; + find ${pkgdir} -perm 555 -exec chmod 755 {} \; + + # split out extensions + mv ${pkgdir}/usr/lib/libreoffice/share/extensions ${srcdir}/extensions-install + install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions + install -m644 ${srcdir}/extensions-install/package.txt ${pkgdir}/usr/lib/libreoffice/share/extensions/ + + # move SDK to separated package + mkdir -p ${srcdir}/sdk-install/usr/lib/libreoffice/basis3.4/sdk + mv ${pkgdir}/usr/lib/libreoffice/basis3.4/sdk ${srcdir}/sdk-install/usr/lib/libreoffice/basis3.4/ + + # cleanup gid_Module files + mkdir ${srcdir}/splitlist + mv -f ${pkgdir}/gid_Module* ${srcdir}/splitlist/ +} + +package_libreoffice-sdk() { + + pkgdesc="Software development kit for LibreOffice" + depends=('libreoffice' 'gcc-libs' 'sh') + + cd ${srcdir}/sdk-install + cp -r * ${pkgdir} + + cd ${pkgdir}/usr/lib/libreoffice/basis3.4/sdk + mv setsdkenv_unix setsdkenv_unix.sh && chmod 755 setsdkenv_unix.sh + rm -f ${pkgdir}/usr/lib/libreoffice/basis3.4/sdk/setsdkenv_unix.{csh,sh}.in + #fix permissions + find examples -type f -exec chmod -x {} \; +} + +package_libreoffice-extension-barcode() { + + pkgdesc="This extension generates UPC-A, EAN-13, ISBN and JAN barcodes in Draw " + #arch=('any') + depends=('libreoffice') + groups=('libreoffice-extensions') + + install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions + unzip -q ${srcdir}/7e7efc5d4a03126bb9ae3ae9aa2c4e87-Barcode_1.3.1.0.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/Barcode + chmod o-w -R ${pkgdir}/usr/lib/libreoffice/share/extensions/Barcode +} + +package_libreoffice-extension-diagram() { + + pkgdesc="An OOo Draw and Impress extension that creates your favorite diagrams with a few clicks" + #arch=('any') + depends=('libreoffice') + groups=('libreoffice-extensions') + + install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions + unzip -q ${srcdir}/41c9b65ad60af4b3255bbecdfef11736-Diagram_1.1.0.0.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/diagram +} + +package_libreoffice-extension-google-docs() { + + pkgdesc="Google Documents extension for LibreOffice" + #arch=('any') + depends=('libreoffice') + groups=('libreoffice-extensions') + + install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions + unzip -q ${srcdir}/dbaafd21de055e582d92d7d32fe9da13-gdocs_2.3.1.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/google-docs +} + +package_libreoffice-extension-hunart() { + + pkgdesc="Hungarian cross-reference toolbar extension" + #arch=('any') + depends=('libreoffice') + groups=('libreoffice-extensions') + + install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions + unzip -q ${srcdir}/b632bdd25649cc4067bcb410bae23d2b-hunart_0.3.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/hunart +} + +#package_libreoffice-extension-lightproof() { + +# pkgdesc="Lightproof extension for LibreOffice" + #arch=('any') +# depends=('libreoffice') +# groups=('libreoffice-extensions') + +# install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions +# unzip -q ${srcdir}/${pkgbase}-build-${_LOver}/build/libreoffice-${_LOver}/solver/${_OFFICEUPD}/unxlng*/bin/Lightproof.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/lightproof +#} + +#package_libreoffice-extension-mysql-connector() { + +# pkgdesc="MySQL Connector extension for LibreOffice" + #arch=('any') +# depends=('libreoffice') +# groups=('libreoffice-extensions') + +# install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions +# unzip -q ${srcdir}/${pkgbase}-build-${_LOver}/build/libreoffice-${_LOver}/solver/${_OFFICEUPD}/unxlng*/bin/Mysql-connector.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/mysql-connector +#} + +package_libreoffice-extension-nlpsolver() { + + pkgdesc="This extension integrates into Calc and offers new Solver engines to use for optimizing nonlinear programming models" + #arch=('any') + depends=('libreoffice') + groups=('libreoffice-extensions') + + install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions + unzip -q ${srcdir}/build/solver/${_OFFICEUPD}/unxlng*/bin/NLPSolver.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/nlpsolver +} + +package_libreoffice-extension-ct2n() { + + pkgdesc="This extension enables you to convert text-cells in Calc with numbers and dates, to real numbers and dates." + #arch=('any') + depends=('libreoffice') + groups=('libreoffice-extensions') + + install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions + unzip -q ${srcdir}/build/solver/${_OFFICEUPD}/unxlng*/bin/ConvertTextToNumber.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/ct2n +} + +package_libreoffice-extension-numbertext() { + + pkgdesc="NUMBERTEXT/MONEYTEXT extensions" + #arch=('any') + depends=('libreoffice') + groups=('libreoffice-extensions') + + install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions + unzip -q ${srcdir}/b8cbca7b3363e6ca2d02bc0ba2b63904-numbertext_0.9.4.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/numbertext +} + +package_libreoffice-extension-oooblogger() { + + pkgdesc="An extensions for blogging" + #arch=('any') + depends=('libreoffice' 'coreutils') + groups=('libreoffice-extensions') + + install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions + unzip -q ${srcdir}/b7b2d0e04e142f26dd96119c80757d1f-oooblogger_0.1.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/oooblogger +} + +package_libreoffice-extension-pdfimport() { + + pkgdesc="This extension allows you to import and modify PDF documents" + depends=('libreoffice' 'poppler') + groups=('libreoffice-extensions') + + install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions + unzip -q ${srcdir}/build/solver/${_OFFICEUPD}/unxlng*/bin/pdfimport/pdfimport.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/pdfimport +} + +package_libreoffice-extension-presenter-screen() { + + pkgdesc="This extension provides more control over your slide show presentation, such as the ability to see the upcoming slide, the slide notes, and a presentation timer whereas the audience see only the current slide" + depends=('libreoffice') + groups=('libreoffice-extensions') + + install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions + unzip -q ${srcdir}/build/solver/${_OFFICEUPD}/unxlng*/bin/presenter-screen.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/presenter-screen +} + +package_libreoffice-extension-presentation-minimizer() { + + pkgdesc="This extension reduce the file size of the current presentation" + depends=('libreoffice' 'gcc-libs') + groups=('libreoffice-extensions') + + install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions + unzip -q ${srcdir}/build/solver/${_OFFICEUPD}/unxlng*/bin/presentation-minimizer.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/presentation-minimizer +} + +package_libreoffice-extension-report-builder() { + + pkgdesc="This extension creates smart-looking database reports" + #arch=('any') + depends=('libreoffice') + groups=('libreoffice-extensions') + + install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions + unzip -q ${srcdir}/build/solver/${_OFFICEUPD}/unxlng*/bin/report-builder.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/report-builder +} + +package_libreoffice-extension-scripting-beanshell() { + + pkgdesc="LibreOffice extension - Enables support for scripts in BeanShell" + depends=('libreoffice') + groups=('libreoffice-extensions') + + install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions + unzip -q ${srcdir}/build/solver/${_OFFICEUPD}/unxlng*/bin/script-provider-for-beanshell.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/script-provider-for-beanshell +} + +package_libreoffice-extension-scripting-javascript() { + + pkgdesc="LibreOffice extension - Enables support for scripts in JavaScript" + depends=('libreoffice') + groups=('libreoffice-extensions') + + install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions + unzip -q ${srcdir}/build/solver/${_OFFICEUPD}/unxlng*/bin/script-provider-for-javascript.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/script-provider-for-javascript +} + +package_libreoffice-extension-scripting-python() { + + pkgdesc="LibreOffice extension - Enables support for scripts in Python" + depends=('libreoffice') + groups=('libreoffice-extensions') + + install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions + unzip -q ${srcdir}/build/solver/${_OFFICEUPD}/unxlng*/bin/script-provider-for-python.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/script-provider-for-python +} + +package_libreoffice-extension-typo() { + + pkgdesc="Typography toolbar extension" + #arch=('any') + depends=('libreoffice') + groups=('libreoffice-extensions') + + install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions + unzip -q ${srcdir}/9d60b6cfa3ef1926848710bbcd11115b-typo_0.4.2.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/typo + chmod o+r -R ${pkgdir}/usr/lib/libreoffice/share/extensions/typo +} + +package_libreoffice-extension-validator() { + + pkgdesc="Validator extension for LibreOffice" + #arch=('any') + depends=('libreoffice') + groups=('libreoffice-extensions') + + install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions + unzip -q ${srcdir}/bbdd5639ada63e3130761daaecae1a10-Validator_1.1.0.0.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/validator +} + +package_libreoffice-extension-wiki-publisher() { + + pkgdesc="This extension enables you to create Wiki articles on MediaWiki servers without having to know the syntax of the MediaWiki markup language" + #arch=('any') + depends=('libreoffice') + groups=('libreoffice-extensions') + + install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions + unzip -q ${srcdir}/build/solver/${_OFFICEUPD}/unxlng*/bin/wiki-publisher.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/wiki-publisher +} + +package_libreoffice-extension-watch-window() { + + pkgdesc="A OOo Calc extension to add a Watch Window, which keeps the value of the monitored cell on the screen." + #arch=('any') + depends=('libreoffice') + groups=('libreoffice-extensions') + + install -dm755 ${pkgdir}/usr/lib/libreoffice/share/extensions + unzip -q ${srcdir}/23bd75552206dfcd8fd4e29137dcac84-WatchWindow_1.2.0.0.oxt -d ${pkgdir}/usr/lib/libreoffice/share/extensions/watch-window +} diff --git a/testing/libreoffice/buildfix_64bit_system_libjpeg.diff b/testing/libreoffice/buildfix_64bit_system_libjpeg.diff new file mode 100644 index 000000000..1f4eb110f --- /dev/null +++ b/testing/libreoffice/buildfix_64bit_system_libjpeg.diff @@ -0,0 +1,11 @@ +--- solenv/inc/libs.mk 2009-07-02 09:44:33.084467312 +0000 ++++ solenv/inc/libs.mk.new 2009-07-02 10:44:03.420819776 +0000 +@@ -211,7 +211,7 @@ + .IF "$(OS)" == "FREEBSD" + JPEG3RDLIB=/usr/local/lib/libjpeg.so + .ELIF "$(CPUNAME)" == "X86_64" || "$(CPUNAME)" == "S390X" || "$(CPUNAME)" == "POWERPC64" +-JPEG3RDLIB=/usr/lib64/libjpeg.so ++JPEG3RDLIB=/usr/lib/libjpeg.so + .ELSE + JPEG3RDLIB=/usr/lib/libjpeg.so + .ENDIF diff --git a/testing/libreoffice/buildfix_bison25.diff b/testing/libreoffice/buildfix_bison25.diff new file mode 100644 index 000000000..869b6c81e --- /dev/null +++ b/testing/libreoffice/buildfix_bison25.diff @@ -0,0 +1,23 @@ +--- connectivity/source/parse/sqlbison.y 2011-05-20 13:21:02.000000000 -0600 ++++ connectivity/source/parse/sqlbison.y 2011-05-20 13:22:11.000000000 -0600 +@@ -4338,7 +4338,7 @@ + } + + // ------------------------------------------------------------------------- +-void OSQLParser::error(sal_Char *fmt) ++void OSQLParser::error(const sal_Char *fmt) + { + if(!m_sErrorMessage.getLength()) + { +--- connectivity/inc/connectivity/sqlparse.hxx 2011-05-20 13:23:58.000000000 -0600 ++++ connectivity/inc/connectivity/sqlparse.hxx 2011-05-20 13:23:46.000000000 -0600 +@@ -233,7 +233,7 @@ + // returns the type for a parameter in a given function name + static sal_Int32 getFunctionParameterType(sal_uInt32 _nTokenId,sal_uInt32 _nPos); + +- void error(sal_Char *fmt); ++ void error(const sal_Char *fmt); + int SQLlex(); + #ifdef YYBISON + void setParseTree(OSQLParseNode * pNewParseTree); + diff --git a/testing/libreoffice/buildfix_boost.diff b/testing/libreoffice/buildfix_boost.diff new file mode 100644 index 000000000..d8608d0d4 --- /dev/null +++ b/testing/libreoffice/buildfix_boost.diff @@ -0,0 +1,40 @@ +From bae4fdbd105142cd3f317445eddc826da529a732 Mon Sep 17 00:00:00 2001 +From: Caolán McNamara <caolanm@redhat.com> +Date: Tue, 05 Apr 2011 14:07:02 +0000 +Subject: silence some more of that annoying gcc#47679 + +--- +diff --git a/boost/boost.gcc47679.patch b/boost/boost.gcc47679.patch +index 1c804aa..9b33a5f 100644 +--- a/boost/boost.gcc47679.patch ++++ b/boost/boost.gcc47679.patch +@@ -36,3 +36,26 @@ + template <int MaxDigits> + inline bool allow_more_digits(std::size_t i) + { ++--- misc/boost_1_44_0/boost/optional/optional.hpp 2011-04-05 13:19:01.223587256 +0100 +++++ misc/build/boost_1_44_0/boost/optional/optional.hpp 2011-04-05 13:19:01.223587256 +0100 ++@@ -31,6 +31,8 @@ ++ ++ #include "boost/optional/optional_fwd.hpp" ++ +++#include <string.h> +++ ++ #if BOOST_WORKAROUND(BOOST_MSVC, == 1200) ++ // VC6.0 has the following bug: ++ // When a templated assignment operator exist, an implicit conversion ++@@ -114,6 +116,11 @@ ++ ++ public: ++ +++ aligned_storage() +++ { +++ memset(&dummy_, 0, sizeof(dummy_)); +++ } +++ ++ void const* address() const { return &dummy_.data[0]; } ++ void * address() { return &dummy_.data[0]; } ++ } ; +-- +cgit v0.8.3-6-g21f6 + diff --git a/testing/libreoffice/buildfix_ct2n.diff b/testing/libreoffice/buildfix_ct2n.diff new file mode 100644 index 000000000..979587f79 --- /dev/null +++ b/testing/libreoffice/buildfix_ct2n.diff @@ -0,0 +1,17 @@ +From 90de903b28cb1884042be0eae3f8a55458c5bc29 Mon Sep 17 00:00:00 2001 +From: Caolán McNamara <caolanm@redhat.com> +Date: Tue, 12 Apr 2011 19:35:51 +0000 +Subject: duplicate NULLs + +--- +diff --git a/ct2n/prj/build.lst b/ct2n/prj/build.lst +index 91f44b7..714d926 100644 +--- a/ct2n/prj/build.lst ++++ b/ct2n/prj/build.lst +@@ -1,3 +1,3 @@ +-ct2n ct2n : solenv NULL NULL ++ct2n ct2n : solenv NULL + ct2n ct2n usr1 - all ct2n_mkout NULL + ct2n ct2n nmake - all ct2n_ct2n NULL +-- +cgit v0.8.3-6-g21f6 diff --git a/testing/libreoffice/buildfix_i116795.diff b/testing/libreoffice/buildfix_i116795.diff new file mode 100644 index 000000000..8601bc164 --- /dev/null +++ b/testing/libreoffice/buildfix_i116795.diff @@ -0,0 +1,22 @@ +diff -r 4ab9e11cb892 connectivity/qa/makefile.mk +--- a/connectivity/qa/makefile.mk Thu Mar 03 15:22:23 2011 +0100 ++++ b/connectivity/qa/makefile.mk Fri Mar 04 09:51:48 2011 +0100 +@@ -35,9 +35,16 @@ + + #----- compile .java files ----------------------------------------- + +-JARFILES = ridl.jar unoil.jar jurt.jar juh.jar java_uno.jar OOoRunner.jar hsqldb.jar + JAVAFILES := $(shell @$(FIND) complex -name "*.java") + ++JARFILES = ridl.jar unoil.jar jurt.jar juh.jar java_uno.jar OOoRunner.jar ++ ++.IF "$(SYSTEM_HSQLDB)" == "YES" ++EXTRAJARFILES = $(HSQLDB_JAR) ++.ELSE ++JARFILES += hsqldb.jar ++.ENDIF ++ + #----- make a jar from compiled files ------------------------------ + + JARCLASSDIRS = $(PACKAGE) + diff --git a/testing/libreoffice/libreoffice.install b/testing/libreoffice/libreoffice.install new file mode 100644 index 000000000..27f3173ae --- /dev/null +++ b/testing/libreoffice/libreoffice.install @@ -0,0 +1,25 @@ +post_install() { + +gtk-update-icon-cache -f -q /usr/share/icons/hicolor +update-desktop-database -q +update-mime-database usr/share/mime > /dev/null 2>&1 + +echo " * see http://wiki.archlinux.org/index.php/Openoffice" +echo " * you may want to pacman -Ss libreoffice-extensions" +echo " to see what extensions are prepared to install" +echo " * it's recommended to install {hunspell,mythes,hyphen}-xx pkg for spell checking" +echo " * make sure you have installed some ttf font (ttf-dejavu recommended)" +} + +post_upgrade() { +# post_install $1 +gtk-update-icon-cache -f -q /usr/share/icons/hicolor +update-desktop-database -q +update-mime-database usr/share/mime > /dev/null 2>&1 +} + +post_remove() { +update-desktop-database -q +gtk-update-icon-cache -f -q /usr/share/icons/hicolor +update-mime-database usr/share/mime > /dev/null 2>&1 +} diff --git a/testing/libreoffice/vbahelper.visibility.patch b/testing/libreoffice/vbahelper.visibility.patch new file mode 100644 index 000000000..5739100d0 --- /dev/null +++ b/testing/libreoffice/vbahelper.visibility.patch @@ -0,0 +1,33 @@ +--- vbahelper/inc/vbahelper/vbacollectionimpl.hxx 2011-01-28 20:27:51.507604173 +0000 ++++ vbahelper/inc/vbahelper/vbacollectionimpl.hxx 2011-01-28 20:28:26.230045727 +0000 +@@ -238,7 +238,7 @@ + + // including a HelperInterface implementation + template< typename Ifc1 > +-class ScVbaCollectionBase : public InheritedHelperInterfaceImpl< Ifc1 > ++class VBAHELPER_DLLPUBLIC ScVbaCollectionBase : public InheritedHelperInterfaceImpl< Ifc1 > + { + typedef InheritedHelperInterfaceImpl< Ifc1 > BaseColBase; + protected: +--- sc/Library_vbaobj.mk ++++ sc/Library_vbaobj.mk +@@ -118,7 +118,6 @@ $(eval $(call gb_Library_add_exception_objects,vbaobj,\ + sc/source/ui/vba/vbaquerytable \ + sc/source/ui/vba/vbarange \ + sc/source/ui/vba/vbasheetobject \ +- sc/source/ui/vba/vbasheetobjects \ + sc/source/ui/vba/vbastyle \ + sc/source/ui/vba/vbastyles \ + sc/source/ui/vba/vbatextboxshape \ +@@ -133,6 +132,11 @@ $(eval $(call gb_Library_add_exception_objects,vbaobj,\ + sc/source/ui/vba/vbawsfunction \ + )) + ++$(eval $(call gb_Library_add_cxxobjects,vbaobj,\ ++ sc/source/ui/vba/vbasheetobjects \ ++ , $(gb_COMPILERNOOPTFLAGS) $(gb_LinkTarget_EXCEPTIONFLAGS) \ ++)) ++ + ifneq (,$(filter LINUX DRAGONFLY OPENBSD FREEBSD NETBSD, $(OS))) + $(eval $(call gb_Library_set_ldflags,vbaobj,\ + $$(LDFLAGS) \ diff --git a/testing/moc/PKGBUILD b/testing/moc/PKGBUILD new file mode 100644 index 000000000..d94540c70 --- /dev/null +++ b/testing/moc/PKGBUILD @@ -0,0 +1,45 @@ +# $Id: PKGBUILD 125870 2011-05-30 20:58:06Z eric $ +# Maintainer: Eric Bélanger <eric@archlinux.org> + +pkgname=moc +pkgver=20110528 +pkgrel=1 +pkgdesc="An ncurses console audio player with support for the mp3, ogg, and wave formats" +arch=('i686' 'x86_64') +url="http://moc.daper.net/" +license=('GPL') +depends=('libmad' 'libid3tag' 'jack' 'curl' 'libsamplerate' 'libtool') +makedepends=('speex' 'ffmpeg' 'taglib' 'libmpcdec' 'wavpack' 'libmodplug') +optdepends=('speex: for using the speex plugin' + 'ffmpeg: for using the ffmpeg plugin' + 'taglib: for using the musepack plugin' + 'libmpcdec: for using the musepack plugin' + 'wavpack: for using the wavpack plugin' + 'libmodplug: for using the modplug plugin') +options=('!libtool') +source=(ftp://ftp.archlinux.org/other/moc/${pkgname}-${pkgver}.tar.xz \ + gcc-undefined-symbols.diff) +md5sums=('e9394640fecb725ad8146575a3091134' + 'efacb8559e9145e15b0c25f8fa2a9d79') +sha1sums=('d09c27602a60e3e9fde476e13d7c1a8b21489505' + 'a811a4ac7e049914aab528d3f06a6be6634c2720') + +build() { + cd "${srcdir}/${pkgname}" + patch -p0 -i ../gcc-undefined-symbols.diff + sed -i 's|ffmpeg/avformat.h|libavformat/avformat.h|' decoder_plugins/ffmpeg/ffmpeg.c + sed -i 's|avcodec_decode_audio|avcodec_decode_audio2|' decoder_plugins/ffmpeg/ffmpeg.c +# Disabling aac to use the external ffmpeg to play them (FS#13164) + ./autogen.sh + ./configure --prefix=/usr --without-rcc --without-aac \ + --with-oss --with-alsa --with-jack --with-mp3 \ + --with-musepack --with-vorbis --with-flac --with-wavpack \ + --with-sndfile --with-modplug --with-ffmpeg --with-speex \ + --with-samplerate --with-curl + make +} + +package() { + cd "${srcdir}/${pkgname}" + make DESTDIR="${pkgdir}" install +} diff --git a/testing/moc/gcc-undefined-symbols.diff b/testing/moc/gcc-undefined-symbols.diff new file mode 100644 index 000000000..09e9b8bda --- /dev/null +++ b/testing/moc/gcc-undefined-symbols.diff @@ -0,0 +1,12 @@ +--- decoder.c~ 2011-05-08 09:28:28.077137883 +0200 ++++ decoder.c 2011-05-10 21:40:48.887941968 +0200 +@@ -259,6 +259,9 @@ + for (i = 0; i < plugins_num; i++) + if (plugins[i].decoder->destroy) + plugins[i].decoder->destroy (); ++ for (i = 0; i < plugins_num; i++) ++ if (plugins[i].handle) ++ lt_dlclose(plugins[i].handle); + + if (lt_dlexit()) + logit ("lt_exit() failed: %s", lt_dlerror()); diff --git a/testing/xorg-server/10-quirks.conf b/testing/xorg-server/10-quirks.conf new file mode 100644 index 000000000..7afad22dc --- /dev/null +++ b/testing/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/testing/xorg-server/PKGBUILD b/testing/xorg-server/PKGBUILD new file mode 100644 index 000000000..274da6f98 --- /dev/null +++ b/testing/xorg-server/PKGBUILD @@ -0,0 +1,196 @@ +# $Id: PKGBUILD 125811 2011-05-30 08:49:25Z jgc $ +# 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.10.2 +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') +options=('!libtool') +source=(${url}/releases/individual/xserver/${pkgbase}-${pkgver}.tar.bz2 + git-fixes.patch + bg-none-revert.patch + xserver-1.10-pointer-barriers.patch + xorg-redhat-die-ugly-pattern-die-die-die.patch + autoconfig-nvidia.patch + xvfb-run + xvfb-run.1 + 10-quirks.conf) +sha1sums=('fd831b3c6297d1a68830c602d767752d87b9ca54' + '6dd2bcd9d8b17d1a50ed8c15eb1cba480558e695' + '629c6d8d52126eab81ee1b72a9e4209535f8cb81' + '1b95e91384a57d966428c7db98ed06f4cc562f91' + '0efcdf61bde3c0cd813072b94e2b30ab922775b9' + 'f9328fd7bc931bb02c8909ecfcef35403de33782' + 'c94f742d3f9cabf958ae58e4015d9dd185aabedc' + '6838fc00ef4618c924a77e0fb03c05346080908a' + '993798f3d22ad672d769dae5f48d1fa068d5578f') + +build() { + cd "${srcdir}/${pkgbase}-${pkgver}" + # Get rid of the ugly pattern + patch -Np3 -i "${srcdir}/xorg-redhat-die-ugly-pattern-die-die-die.patch" + + # Add pointer barrier support, patch from Fedora + patch -Np1 -i "${srcdir}/xserver-1.10-pointer-barriers.patch" + + # Patches from ~ajax/xserver xserver-next branch + patch -Np1 -i "${srcdir}/bg-none-revert.patch" + + # Upstream fixes from 1.10 branch + patch -Np1 -i "${srcdir}/git-fixes.patch" + + # Use nouveau/nv/nvidia drivers for nvidia devices + patch -Np1 -i "${srcdir}/autoconfig-nvidia.patch" + + autoreconf + ./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-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 + + 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 doc/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') + + 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/testing/xorg-server/autoconfig-nvidia.patch b/testing/xorg-server/autoconfig-nvidia.patch new file mode 100644 index 000000000..c56586d54 --- /dev/null +++ b/testing/xorg-server/autoconfig-nvidia.patch @@ -0,0 +1,104 @@ +From a685b5cf34532cef96fc9b05f735088ac0c0c7ad Mon Sep 17 00:00:00 2001 +From: Fedora X Ninjas <x@fedoraproject.org> +Date: Tue, 16 Feb 2010 11:38:17 +1000 +Subject: [PATCH 08/17] autoconfig: select nouveau by default for NVIDIA GPUs + +Also, don't treat DRI setup failure as an error for nouveau. + +Modified by Archlinux: +Append nvidia driver to the list of prefered drivers +--- + glx/glxdri.c | 7 +++++-- + glx/glxdri2.c | 7 +++++-- + hw/xfree86/common/xf86AutoConfig.c | 19 ++++++++++++++++++- + 3 files changed, 28 insertions(+), 5 deletions(-) + +--- a/glx/glxdri.c ++++ b/glx/glxdri.c +@@ -978,6 +978,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen) + const __DRIconfig **driConfigs; + const __DRIextension **extensions; + int i; ++ int from = X_ERROR; + + if (!xf86LoaderCheckSymbol("DRIQueryDirectRenderingCapable") || + !DRIQueryDirectRenderingCapable(pScreen, &isCapable) || +@@ -1057,7 +1058,9 @@ __glXDRIscreenProbe(ScreenPtr pScreen) + + screen->driver = dlopen(filename, RTLD_LAZY | RTLD_LOCAL); + if (screen->driver == NULL) { +- LogMessage(X_ERROR, "AIGLX error: dlopen of %s failed (%s)\n", ++ if (!strcmp(driverName, "nouveau")) ++ from = X_INFO; ++ LogMessage(from, "AIGLX error: dlopen of %s failed (%s)\n", + filename, dlerror()); + goto handle_error; + } +@@ -1193,7 +1196,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen) + + free(screen); + +- LogMessage(X_ERROR, "AIGLX: reverting to software rendering\n"); ++ LogMessage(from, "AIGLX: reverting to software rendering\n"); + + return NULL; + } +--- a/glx/glxdri2.c ++++ b/glx/glxdri2.c +@@ -708,6 +708,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen) + const __DRIextension **extensions; + const __DRIconfig **driConfigs; + int i; ++ int from = X_ERROR; + + screen = calloc(1, sizeof *screen); + if (screen == NULL) +@@ -734,7 +735,9 @@ __glXDRIscreenProbe(ScreenPtr pScreen) + + screen->driver = dlopen(filename, RTLD_LAZY | RTLD_LOCAL); + if (screen->driver == NULL) { +- LogMessage(X_ERROR, "AIGLX error: dlopen of %s failed (%s)\n", ++ if (!strcmp(driverName, "nouveau")) ++ from = X_INFO; ++ LogMessage(from, "AIGLX error: dlopen of %s failed (%s)\n", + filename, dlerror()); + goto handle_error; + } +@@ -826,7 +829,7 @@ __glXDRIscreenProbe(ScreenPtr pScreen) + + free(screen); + +- LogMessage(X_ERROR, "AIGLX: reverting to software rendering\n"); ++ LogMessage(from, "AIGLX: reverting to software rendering\n"); + + return NULL; + } +--- a/hw/xfree86/common/xf86pciBus.c ++++ b/hw/xfree86/common/xf86pciBus.c +@@ -1123,7 +1123,25 @@ videoPtrToDriverList(struct pci_device * + break; + case 0x102b: driverList[0] = "mga"; break; + case 0x10c8: driverList[0] = "neomagic"; break; +- case 0x10de: case 0x12d2: driverList[0] = "nv"; break; ++ case 0x10de: case 0x12d2: ++ switch (dev->device_id) { ++ /* NV1 */ ++ case 0x0008: ++ case 0x0009: ++ driverList[0] = "vesa"; ++ break; ++ /* NV3 */ ++ case 0x0018: ++ case 0x0019: ++ driverList[0] = "nv"; ++ break; ++ default: ++ driverList[0] = "nouveau"; ++ driverList[1] = "nv"; ++ driverList[2] = "nvidia"; ++ break; ++ } ++ break; + case 0x1106: driverList[0] = "openchrome"; break; + case 0x1b36: driverList[0] = "qxl"; break; + case 0x1163: driverList[0] = "rendition"; break; diff --git a/testing/xorg-server/bg-none-revert.patch b/testing/xorg-server/bg-none-revert.patch new file mode 100644 index 000000000..1a38f1f41 --- /dev/null +++ b/testing/xorg-server/bg-none-revert.patch @@ -0,0 +1,58 @@ +From 3bc6ed2d8c9028ec28015d05b60af67a194f3694 Mon Sep 17 00:00:00 2001 +From: Adam Jackson <ajax@redhat.com> +Date: Tue, 29 Mar 2011 14:09:46 +0000 +Subject: Revert "composite: Don't backfill non-bg-None windows" + +This reverts commit 6dd775f57d2f94f0ddaee324aeec33b9b66ed5bc. + +Bugzilla: https://bugs.freedesktop.org/34427 + +Acked-by: Alex Deucher <alexdeucher@gmail.com> +Signed-off-by: Adam Jackson <ajax@redhat.com> +--- +diff --git a/composite/compalloc.c b/composite/compalloc.c +index e4064f6..7164c0d 100644 +--- a/composite/compalloc.c ++++ b/composite/compalloc.c +@@ -508,17 +508,6 @@ compUnredirectOneSubwindow (WindowPtr pParent, WindowPtr pWin) + return Success; + } + +-static int +-bgNoneVisitWindow(WindowPtr pWin, void *null) +-{ +- if (pWin->backgroundState != BackgroundPixmap) +- return WT_WALKCHILDREN; +- if (pWin->background.pixmap != None) +- return WT_WALKCHILDREN; +- +- return WT_STOPWALKING; +-} +- + static PixmapPtr + compNewPixmap (WindowPtr pWin, int x, int y, int w, int h, Bool map) + { +@@ -539,21 +528,6 @@ compNewPixmap (WindowPtr pWin, int x, int y, int w, int h, Bool map) + if (!map) + return pPixmap; + +- /* +- * If there's no bg=None in the tree, we're done. +- * +- * We could optimize this more by collection the regions of all the +- * bg=None subwindows and feeding that in as the clip for the +- * CopyArea below, but since window trees are shallow these days it +- * might not be worth the effort. +- */ +- if (TraverseTree(pWin, bgNoneVisitWindow, NULL) == WT_NOMATCH) +- return pPixmap; +- +- /* +- * Copy bits from the parent into the new pixmap so that it will +- * have "reasonable" contents in case for background None areas. +- */ + if (pParent->drawable.depth == pWin->drawable.depth) + { + GCPtr pGC = GetScratchGC (pWin->drawable.depth, pScreen); +-- +cgit v0.8.3-6-g21f6 diff --git a/testing/xorg-server/git-fixes.patch b/testing/xorg-server/git-fixes.patch new file mode 100644 index 000000000..3eadd81ba --- /dev/null +++ b/testing/xorg-server/git-fixes.patch @@ -0,0 +1,318 @@ +From 613e0e9ef74c4542ed458200165adbcdfdf3cd17 Mon Sep 17 00:00:00 2001 +From: Jeremy Huddleston <jeremyhu@apple.com> +Date: Wed, 13 Apr 2011 18:51:30 +0000 +Subject: Send events that were missing from RRSelectInput + +The RANDR spec (randrproto.txt) specifies that RRSelectInput will send out +events corresponding to the event mask, if there have been changes to +CRTCs or outputs. Only screen events were being generated, however. + +Fixes http://bugs.freedesktop.org/21760 + +Signed-off-by: Federico Mena Quintero <federico@novell.com> +Reviewd-by: Keith Packard <keithp@keithp.com> +Signed-off-by: Keith Packard <keithp@keithp.com> +(cherry picked from commit b2997431fd426ab318bc5dfd2cd43956d733ebec) +--- +diff --git a/randr/rrdispatch.c b/randr/rrdispatch.c +index ac4d2ac..2135504 100644 +--- a/randr/rrdispatch.c ++++ b/randr/rrdispatch.c +@@ -146,7 +146,7 @@ ProcRRSelectInput (ClientPtr client) + /* + * Now see if the client needs an event + */ +- if (pScrPriv && (pRREvent->mask & RRScreenChangeNotifyMask)) ++ if (pScrPriv) + { + pTimes = &((RRTimesPtr) (pRRClient + 1))[pScreen->myNum]; + if (CompareTimeStamps (pTimes->setTime, +@@ -154,7 +154,35 @@ ProcRRSelectInput (ClientPtr client) + CompareTimeStamps (pTimes->configTime, + pScrPriv->lastConfigTime) != 0) + { +- RRDeliverScreenEvent (client, pWin, pScreen); ++ if (pRREvent->mask & RRScreenChangeNotifyMask) ++ { ++ RRDeliverScreenEvent (client, pWin, pScreen); ++ } ++ ++ if (pRREvent->mask & RRCrtcChangeNotifyMask) ++ { ++ int i; ++ ++ for (i = 0; i < pScrPriv->numCrtcs; i++) ++ { ++ RRDeliverCrtcEvent (client, pWin, pScrPriv->crtcs[i]); ++ } ++ } ++ ++ if (pRREvent->mask & RROutputChangeNotifyMask) ++ { ++ int i; ++ ++ for (i = 0; i < pScrPriv->numOutputs; i++) ++ { ++ RRDeliverOutputEvent (client, pWin, pScrPriv->outputs[i]); ++ } ++ } ++ ++ /* We don't check for RROutputPropertyNotifyMask, as randrproto.txt doesn't ++ * say if there ought to be notifications of changes to output properties ++ * if those changes occurred before the time RRSelectInput is called. ++ */ + } + } + } +-- +cgit v0.8.3-6-g21f6 +From 50b9d3142ff90af2f7fa35b7b1bf9e5a07723dbd Mon Sep 17 00:00:00 2001 +From: Aaron Plattner <aplattner@nvidia.com> +Date: Tue, 24 May 2011 23:02:42 +0000 +Subject: randr: check rotated virtual size limits correctly + +Commit d1107918d4626268803b54033a07405122278e7f introduced checks to +the RandR path that cause RRSetScreenConfig requests to fail if the +size is too large. Unfortunately, when RandR 1.1 rotation is enabled +it compares the rotated screen dimensions to the unrotated limits, +which causes 90- and 270-degree rotation to fail unless your screen +happens to be square: + + X Error of failed request: BadValue (integer parameter out of range for operation) + Major opcode of failed request: 153 (RANDR) + Minor opcode of failed request: 2 (RRSetScreenConfig) + Value in failed request: 0x780 + Serial number of failed request: 14 + Current serial number in output stream: 14 + +Fix this by moving the check above the code that swaps the dimensions +based on the rotation. + +Signed-off-by: Aaron Plattner <aplattner@nvidia.com> +Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com> +Tested-by: Robert Hooker <robert.hooker@canonical.com> +Tested-by: Kent Baxley <kent.baxley@canonical.com> +Signed-off-by: Keith Packard <keithp@keithp.com> +(cherry picked from commit b6c7b9b2f39e970cedb6bc1e073f901e28cb0fa3) +--- +diff --git a/randr/rrscreen.c b/randr/rrscreen.c +index 1bc1a9e..da6d48d 100644 +--- a/randr/rrscreen.c ++++ b/randr/rrscreen.c +@@ -910,12 +910,6 @@ ProcRRSetScreenConfig (ClientPtr client) + */ + width = mode->mode.width; + height = mode->mode.height; +- if (rotation & (RR_Rotate_90|RR_Rotate_270)) +- { +- width = mode->mode.height; +- height = mode->mode.width; +- } +- + if (width < pScrPriv->minWidth || pScrPriv->maxWidth < width) { + client->errorValue = width; + free(pData); +@@ -927,6 +921,12 @@ ProcRRSetScreenConfig (ClientPtr client) + return BadValue; + } + ++ if (rotation & (RR_Rotate_90|RR_Rotate_270)) ++ { ++ width = mode->mode.height; ++ height = mode->mode.width; ++ } ++ + if (width != pScreen->width || height != pScreen->height) + { + int c; +-- +cgit v0.8.3-6-g21f6 +From 4bfb22e7667c4cd55da5e7a31af29ce5769ecc65 Mon Sep 17 00:00:00 2001 +From: Aaron Plattner <aplattner@nvidia.com> +Date: Mon, 18 Apr 2011 15:23:48 +0000 +Subject: linux: Retry VT ioctls while errno == EINTR + +When the smart scheduler is enabled, the VT ioctls (particularly +VT_WAITACTIVE) can be interrupted by the smart scheduler's SIGALRMs. +Previously, this caused the server to immediately continue on to +ScreenInit, almost certainly causing a crash or failure because the X +server that owned the VT hadn't finished cleaning up. As of commit +7ee965a300c9eddcc1acacf9414cfe3e589222a8, it causes a FatalError +instead. + +Retrying the ioctl as long as it fails with errno == EINTR fixes the +problem and allows server regenerations to trigger VT switches that +actually succeed. + +Signed-off-by: Aaron Plattner <aplattner@nvidia.com> +Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> +Reviewed-by: Cyril Brulebois <kibi@debian.org> +Signed-off-by: Keith Packard <keithp@keithp.com> +(cherry picked from commit 88c4622b594a1725d0cee86bc82ad640d241c520) +--- +diff --git a/hw/xfree86/os-support/linux/lnx_init.c b/hw/xfree86/os-support/linux/lnx_init.c +index 9c71a42..77dfb2f 100644 +--- a/hw/xfree86/os-support/linux/lnx_init.c ++++ b/hw/xfree86/os-support/linux/lnx_init.c +@@ -62,17 +62,21 @@ drain_console(int fd, void *closure) + static void + switch_to(int vt, const char *from) + { +- if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, vt) < 0) +- FatalError("%s: VT_ACTIVATE failed: %s\n", from, strerror(errno)); ++ int ret; + +- if (ioctl(xf86Info.consoleFd, VT_WAITACTIVE, vt) < 0) +- FatalError("%s: VT_WAITACTIVE failed: %s\n", from, strerror(errno)); ++ SYSCALL(ret = ioctl(xf86Info.consoleFd, VT_ACTIVATE, vt)); ++ if (ret < 0) ++ FatalError("%s: VT_ACTIVATE failed: %s\n", from, strerror(errno)); ++ ++ SYSCALL(ret = ioctl(xf86Info.consoleFd, VT_WAITACTIVE, vt)); ++ if (ret < 0) ++ FatalError("%s: VT_WAITACTIVE failed: %s\n", from, strerror(errno)); + } + + void + xf86OpenConsole(void) + { +- int i, fd = -1; ++ int i, fd = -1, ret; + struct vt_mode VT; + struct vt_stat vts; + MessageType from = X_PROBED; +@@ -107,17 +111,19 @@ xf86OpenConsole(void) + + if (ShareVTs) + { +- if (ioctl(fd, VT_GETSTATE, &vts) == 0) +- xf86Info.vtno = vts.v_active; +- else +- FatalError("xf86OpenConsole: Cannot find the current" +- " VT (%s)\n", strerror(errno)); ++ SYSCALL(ret = ioctl(fd, VT_GETSTATE, &vts)); ++ if (ret < 0) ++ FatalError("xf86OpenConsole: Cannot find the current" ++ " VT (%s)\n", strerror(errno)); ++ xf86Info.vtno = vts.v_active; + } else { +- if ((ioctl(fd, VT_OPENQRY, &xf86Info.vtno) < 0) || +- (xf86Info.vtno == -1)) +- FatalError("xf86OpenConsole: Cannot find a free VT: %s\n", +- strerror(errno)); +- } ++ SYSCALL(ret = ioctl(fd, VT_OPENQRY, &xf86Info.vtno)); ++ if (ret < 0) ++ FatalError("xf86OpenConsole: Cannot find a free VT: " ++ "%s\n", strerror(errno)); ++ if (xf86Info.vtno == -1) ++ FatalError("xf86OpenConsole: Cannot find a free VT\n"); ++ } + close(fd); + } + +@@ -159,7 +165,8 @@ xf86OpenConsole(void) + * Linux doesn't switch to an active vt after the last close of a vt, + * so we do this ourselves by remembering which is active now. + */ +- if (ioctl(xf86Info.consoleFd, VT_GETSTATE, &vts) < 0) ++ SYSCALL(ret = ioctl(xf86Info.consoleFd, VT_GETSTATE, &vts)); ++ if (ret < 0) + xf86Msg(X_WARNING,"xf86OpenConsole: VT_GETSTATE failed: %s\n", + strerror(errno)); + else +@@ -171,7 +178,7 @@ xf86OpenConsole(void) + * Detach from the controlling tty to avoid char loss + */ + if ((i = open("/dev/tty",O_RDWR)) >= 0) { +- ioctl(i, TIOCNOTTY, 0); ++ SYSCALL(ioctl(i, TIOCNOTTY, 0)); + close(i); + } + } +@@ -186,9 +193,10 @@ xf86OpenConsole(void) + */ + switch_to(xf86Info.vtno, "xf86OpenConsole"); + +- if (ioctl(xf86Info.consoleFd, VT_GETMODE, &VT) < 0) +- FatalError("xf86OpenConsole: VT_GETMODE failed %s\n", +- strerror(errno)); ++ SYSCALL(ret = ioctl(xf86Info.consoleFd, VT_GETMODE, &VT)); ++ if (ret < 0) ++ FatalError("xf86OpenConsole: VT_GETMODE failed %s\n", ++ strerror(errno)); + + signal(SIGUSR1, xf86VTRequest); + +@@ -196,20 +204,23 @@ xf86OpenConsole(void) + VT.relsig = SIGUSR1; + VT.acqsig = SIGUSR1; + +- if (ioctl(xf86Info.consoleFd, VT_SETMODE, &VT) < 0) +- FatalError("xf86OpenConsole: VT_SETMODE VT_PROCESS failed: %s\n", ++ SYSCALL(ret = ioctl(xf86Info.consoleFd, VT_SETMODE, &VT)); ++ if (ret < 0) ++ FatalError("xf86OpenConsole: VT_SETMODE VT_PROCESS failed: %s\n", + strerror(errno)); +- +- if (ioctl(xf86Info.consoleFd, KDSETMODE, KD_GRAPHICS) < 0) +- FatalError("xf86OpenConsole: KDSETMODE KD_GRAPHICS failed %s\n", +- strerror(errno)); ++ ++ SYSCALL(ret = ioctl(xf86Info.consoleFd, KDSETMODE, KD_GRAPHICS)); ++ if (ret < 0) ++ FatalError("xf86OpenConsole: KDSETMODE KD_GRAPHICS failed %s\n", ++ strerror(errno)); + + tcgetattr(xf86Info.consoleFd, &tty_attr); +- ioctl(xf86Info.consoleFd, KDGKBMODE, &tty_mode); ++ SYSCALL(ioctl(xf86Info.consoleFd, KDGKBMODE, &tty_mode)); + +- if (ioctl(xf86Info.consoleFd, KDSKBMODE, K_RAW) < 0) +- FatalError("xf86OpenConsole: KDSKBMODE K_RAW failed %s\n", +- strerror(errno)); ++ SYSCALL(ret = ioctl(xf86Info.consoleFd, KDSKBMODE, K_RAW)); ++ if (ret < 0) ++ FatalError("xf86OpenConsole: KDSKBMODE K_RAW failed %s\n", ++ strerror(errno)); + + nTty = tty_attr; + nTty.c_iflag = (IGNPAR | IGNBRK) & (~PARMRK) & (~ISTRIP); +@@ -241,6 +252,7 @@ void + xf86CloseConsole(void) + { + struct vt_mode VT; ++ int ret; + + if (ShareVTs) { + close(xf86Info.consoleFd); +@@ -253,20 +265,23 @@ xf86CloseConsole(void) + }; + + /* Back to text mode ... */ +- if (ioctl(xf86Info.consoleFd, KDSETMODE, KD_TEXT) < 0) ++ SYSCALL(ret = ioctl(xf86Info.consoleFd, KDSETMODE, KD_TEXT)); ++ if (ret < 0) + xf86Msg(X_WARNING, "xf86CloseConsole: KDSETMODE failed: %s\n", + strerror(errno)); + +- ioctl(xf86Info.consoleFd, KDSKBMODE, tty_mode); ++ SYSCALL(ioctl(xf86Info.consoleFd, KDSKBMODE, tty_mode)); + tcsetattr(xf86Info.consoleFd, TCSANOW, &tty_attr); + +- if (ioctl(xf86Info.consoleFd, VT_GETMODE, &VT) < 0) ++ SYSCALL(ret = ioctl(xf86Info.consoleFd, VT_GETMODE, &VT)); ++ if (ret < 0) + xf86Msg(X_WARNING, "xf86CloseConsole: VT_GETMODE failed: %s\n", + strerror(errno)); + else { + /* set dflt vt handling */ + VT.mode = VT_AUTO; +- if (ioctl(xf86Info.consoleFd, VT_SETMODE, &VT) < 0) ++ SYSCALL(ret = ioctl(xf86Info.consoleFd, VT_SETMODE, &VT)); ++ if (ret < 0) + xf86Msg(X_WARNING, "xf86CloseConsole: VT_SETMODE failed: %s\n", + strerror(errno)); + } +-- +cgit v0.8.3-6-g21f6 diff --git a/testing/xorg-server/xorg-redhat-die-ugly-pattern-die-die-die.patch b/testing/xorg-server/xorg-redhat-die-ugly-pattern-die-die-die.patch new file mode 100644 index 000000000..4e782f1c6 --- /dev/null +++ b/testing/xorg-server/xorg-redhat-die-ugly-pattern-die-die-die.patch @@ -0,0 +1,16 @@ +Remove the default root window grey stipple pattern, replacing it with +blackness. + +--- xc/programs/Xserver/dix/window.c.die-ugly-pattern-die-die-die Tue Feb 12 16:33:04 2002 ++++ xc/programs/Xserver/dix/window.c Tue Feb 12 16:45:32 2002 +@@ -119,8 +119,8 @@ + * + ******/ + +-static unsigned char _back_lsb[4] = {0x88, 0x22, 0x44, 0x11}; +-static unsigned char _back_msb[4] = {0x11, 0x44, 0x22, 0x88}; ++static unsigned char _back_lsb[4] = {0x00, 0x00, 0x00, 0x00}; ++static unsigned char _back_msb[4] = {0x00, 0x00, 0x00, 0x00}; + + int screenIsSaved = SCREEN_SAVER_OFF; + diff --git a/testing/xorg-server/xserver-1.10-pointer-barriers.patch b/testing/xorg-server/xserver-1.10-pointer-barriers.patch new file mode 100644 index 000000000..099565436 --- /dev/null +++ b/testing/xorg-server/xserver-1.10-pointer-barriers.patch @@ -0,0 +1,1054 @@ +From 14f1112bec18ccece8e732fe6c200a56546230c7 Mon Sep 17 00:00:00 2001 +From: Adam Jackson <ajax@redhat.com> +Date: Thu, 17 Mar 2011 13:56:17 -0400 +Subject: [PATCH] CRTC confine and pointer barriers + +--- + dix/events.c | 7 + + dix/getevents.c | 12 +- + include/dix.h | 1 + + include/protocol-versions.h | 2 +- + mi/mipointer.c | 16 ++- + mi/mipointer.h | 6 + + randr/randr.c | 2 + + randr/randrstr.h | 4 + + randr/rrcrtc.c | 155 ++++++++++++++++ + test/Makefile.am | 4 +- + xfixes/cursor.c | 408 ++++++++++++++++++++++++++++++++++++++++++- + xfixes/xfixes.c | 24 ++- + xfixes/xfixes.h | 17 ++ + xfixes/xfixesint.h | 16 ++ + 14 files changed, 658 insertions(+), 16 deletions(-) + +diff --git a/dix/events.c b/dix/events.c +index 07f8b05..d2be84f 100644 +--- a/dix/events.c ++++ b/dix/events.c +@@ -328,6 +328,13 @@ IsMaster(DeviceIntPtr dev) + return dev->type == MASTER_POINTER || dev->type == MASTER_KEYBOARD; + } + ++Bool ++IsFloating(DeviceIntPtr dev) ++{ ++ return GetMaster(dev, MASTER_KEYBOARD) == NULL; ++} ++ ++ + /** + * Max event opcode. + */ +diff --git a/dix/getevents.c b/dix/getevents.c +index 794df42..c66e516 100644 +--- a/dix/getevents.c ++++ b/dix/getevents.c +@@ -812,7 +812,11 @@ accelPointer(DeviceIntPtr dev, int first, int num, int *valuators, CARD32 ms) + * miPointerSetPosition() and then scale back into device coordinates (if + * needed). miPSP will change x/y if the screen was crossed. + * ++ * The coordinates provided are always absolute. The parameter mode whether ++ * it was relative or absolute movement that landed us at those coordinates. ++ * + * @param dev The device to be moved. ++ * @param mode Movement mode (Absolute or Relative) + * @param x Pointer to current x-axis value, may be modified. + * @param y Pointer to current y-axis value, may be modified. + * @param x_frac Fractional part of current x-axis value, may be modified. +@@ -824,7 +828,8 @@ accelPointer(DeviceIntPtr dev, int first, int num, int *valuators, CARD32 ms) + * @param screeny_frac Fractional part of screen y coordinate, as above. + */ + static void +-positionSprite(DeviceIntPtr dev, int *x, int *y, float x_frac, float y_frac, ++positionSprite(DeviceIntPtr dev, int mode, ++ int *x, int *y, float x_frac, float y_frac, + ScreenPtr scr, int *screenx, int *screeny, float *screenx_frac, float *screeny_frac) + { + int old_screenx, old_screeny; +@@ -863,7 +868,7 @@ positionSprite(DeviceIntPtr dev, int *x, int *y, float x_frac, float y_frac, + old_screeny = *screeny; + /* This takes care of crossing screens for us, as well as clipping + * to the current screen. */ +- miPointerSetPosition(dev, screenx, screeny); ++ _miPointerSetPosition(dev, mode, screenx, screeny); + + if (dev->u.master) { + dev->u.master->last.valuators[0] = *screenx; +@@ -1193,7 +1198,8 @@ GetPointerEvents(EventList *events, DeviceIntPtr pDev, int type, int buttons, + + set_raw_valuators(raw, &mask, raw->valuators.data); + +- positionSprite(pDev, &x, &y, x_frac, y_frac, scr, &cx, &cy, &cx_frac, &cy_frac); ++ positionSprite(pDev, (flags & POINTER_ABSOLUTE) ? Absolute : Relative, ++ &x, &y, x_frac, y_frac, scr, &cx, &cy, &cx_frac, &cy_frac); + updateHistory(pDev, &mask, ms); + + /* Update the valuators with the true value sent to the client*/ +diff --git a/include/dix.h b/include/dix.h +index 12e4b59..3f99098 100644 +--- a/include/dix.h ++++ b/include/dix.h +@@ -570,6 +570,7 @@ extern Bool _X_EXPORT IsPointerDevice( DeviceIntPtr dev); + extern Bool _X_EXPORT IsKeyboardDevice(DeviceIntPtr dev); + extern Bool IsPointerEvent(InternalEvent *event); + extern _X_EXPORT Bool IsMaster(DeviceIntPtr dev); ++extern _X_EXPORT Bool IsFloating(DeviceIntPtr dev); + + extern _X_HIDDEN void CopyKeyClass(DeviceIntPtr device, DeviceIntPtr master); + extern _X_HIDDEN int CorePointerProc(DeviceIntPtr dev, int what); +diff --git a/include/protocol-versions.h b/include/protocol-versions.h +index 1d33bdd..1dc66ad 100644 +--- a/include/protocol-versions.h ++++ b/include/protocol-versions.h +@@ -126,7 +126,7 @@ + #define SERVER_XF86VIDMODE_MINOR_VERSION 2 + + /* Fixes */ +-#define SERVER_XFIXES_MAJOR_VERSION 4 ++#define SERVER_XFIXES_MAJOR_VERSION 5 + #define SERVER_XFIXES_MINOR_VERSION 0 + + /* X Input */ +diff --git a/mi/mipointer.c b/mi/mipointer.c +index 554397a..85f1949 100644 +--- a/mi/mipointer.c ++++ b/mi/mipointer.c +@@ -229,6 +229,10 @@ miPointerSetCursorPosition(DeviceIntPtr pDev, ScreenPtr pScreen, + SetupScreen (pScreen); + + GenerateEvent = generateEvent; ++ ++ if (pScreen->ConstrainCursorHarder) ++ pScreen->ConstrainCursorHarder(pDev, pScreen, Absolute, &x, &y); ++ + /* device dependent - must pend signal and call miPointerWarpCursor */ + (*pScreenPriv->screenFuncs->WarpCursor) (pDev, pScreen, x, y); + if (!generateEvent) +@@ -484,7 +488,7 @@ miPointerMoveNoEvent (DeviceIntPtr pDev, ScreenPtr pScreen, + } + + void +-miPointerSetPosition(DeviceIntPtr pDev, int *x, int *y) ++_miPointerSetPosition(DeviceIntPtr pDev, int mode, int *x, int *y) + { + miPointerScreenPtr pScreenPriv; + ScreenPtr pScreen; +@@ -529,6 +533,9 @@ miPointerSetPosition(DeviceIntPtr pDev, int *x, int *y) + if (*y >= pPointer->limits.y2) + *y = pPointer->limits.y2 - 1; + ++ if (pScreen->ConstrainCursorHarder) ++ pScreen->ConstrainCursorHarder(pDev, pScreen, mode, x, y); ++ + if (pPointer->x == *x && pPointer->y == *y && + pPointer->pScreen == pScreen) + return; +@@ -536,6 +543,13 @@ miPointerSetPosition(DeviceIntPtr pDev, int *x, int *y) + miPointerMoveNoEvent(pDev, pScreen, *x, *y); + } + ++/* ABI hack */ ++void ++miPointerSetPosition(DeviceIntPtr pDev, int *x, int *y) ++{ ++ _miPointerSetPosition(pDev, Absolute, x, y); ++} ++ + void + miPointerGetPosition(DeviceIntPtr pDev, int *x, int *y) + { +diff --git a/mi/mipointer.h b/mi/mipointer.h +index 3c86110..6b6010c 100644 +--- a/mi/mipointer.h ++++ b/mi/mipointer.h +@@ -131,6 +131,12 @@ extern _X_EXPORT void miPointerGetPosition( + + /* Moves the cursor to the specified position. May clip the co-ordinates: + * x and y are modified in-place. */ ++extern _X_EXPORT void _miPointerSetPosition( ++ DeviceIntPtr pDev, ++ int mode, ++ int *x, ++ int *y); ++ + extern _X_EXPORT void miPointerSetPosition( + DeviceIntPtr pDev, + int *x, +diff --git a/randr/randr.c b/randr/randr.c +index 6077705..d337129 100644 +--- a/randr/randr.c ++++ b/randr/randr.c +@@ -270,6 +270,8 @@ Bool RRScreenInit(ScreenPtr pScreen) + + wrap (pScrPriv, pScreen, CloseScreen, RRCloseScreen); + ++ pScreen->ConstrainCursorHarder = RRConstrainCursorHarder; ++ + pScrPriv->numOutputs = 0; + pScrPriv->outputs = NULL; + pScrPriv->numCrtcs = 0; +diff --git a/randr/randrstr.h b/randr/randrstr.h +index 7ea6080..d8dd37d 100644 +--- a/randr/randrstr.h ++++ b/randr/randrstr.h +@@ -297,6 +297,7 @@ typedef struct _rrScrPriv { + int rate; + int size; + #endif ++ Bool discontiguous; + } rrScrPrivRec, *rrScrPrivPtr; + + extern _X_EXPORT DevPrivateKeyRec rrPrivKeyRec; +@@ -700,6 +701,9 @@ ProcRRGetPanning (ClientPtr client); + int + ProcRRSetPanning (ClientPtr client); + ++void ++RRConstrainCursorHarder (DeviceIntPtr, ScreenPtr, int, int *, int *); ++ + /* rrdispatch.c */ + extern _X_EXPORT Bool + RRClientKnowsRates (ClientPtr pClient); +diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c +index 98206a2..d4d8f2a 100644 +--- a/randr/rrcrtc.c ++++ b/randr/rrcrtc.c +@@ -1,5 +1,6 @@ + /* + * Copyright © 2006 Keith Packard ++ * Copyright 2010 Red Hat, Inc + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that +@@ -22,6 +23,7 @@ + + #include "randrstr.h" + #include "swaprep.h" ++#include "mipointer.h" + + RESTYPE RRCrtcType; + +@@ -292,6 +294,92 @@ RRCrtcPendingProperties (RRCrtcPtr crtc) + return FALSE; + } + ++static void ++crtc_bounds(RRCrtcPtr crtc, int *left, int *right, int *top, int *bottom) ++{ ++ *left = crtc->x; ++ *top = crtc->y; ++ ++ switch (crtc->rotation) { ++ case RR_Rotate_0: ++ case RR_Rotate_180: ++ default: ++ *right = crtc->x + crtc->mode->mode.width; ++ *bottom = crtc->y + crtc->mode->mode.height; ++ return; ++ case RR_Rotate_90: ++ case RR_Rotate_270: ++ *right = crtc->x + crtc->mode->mode.height; ++ *bottom = crtc->y + crtc->mode->mode.width; ++ return; ++ } ++} ++ ++/* overlapping counts as adjacent */ ++static Bool ++crtcs_adjacent(const RRCrtcPtr a, const RRCrtcPtr b) ++{ ++ /* left, right, top, bottom... */ ++ int al, ar, at, ab; ++ int bl, br, bt, bb; ++ int cl, cr, ct, cb; /* the overlap, if any */ ++ ++ crtc_bounds(a, &al, &ar, &at, &ab); ++ crtc_bounds(b, &bl, &br, &bt, &bb); ++ ++ cl = max(al, bl); ++ cr = min(ar, br); ++ ct = max(at, bt); ++ cb = min(ab, bb); ++ ++ return (cl <= cr) && (ct <= cb); ++} ++ ++/* Depth-first search and mark all CRTCs reachable from cur */ ++static void ++mark_crtcs (rrScrPrivPtr pScrPriv, int *reachable, int cur) ++{ ++ int i; ++ reachable[cur] = TRUE; ++ for (i = 0; i < pScrPriv->numCrtcs; ++i) { ++ if (reachable[i] || !pScrPriv->crtcs[i]->mode) ++ continue; ++ if (crtcs_adjacent(pScrPriv->crtcs[cur], pScrPriv->crtcs[i])) ++ mark_crtcs(pScrPriv, reachable, i); ++ } ++} ++ ++static void ++RRComputeContiguity (ScreenPtr pScreen) ++{ ++ rrScrPriv(pScreen); ++ Bool discontiguous = TRUE; ++ int i, n = pScrPriv->numCrtcs; ++ ++ int *reachable = calloc(n, sizeof(int)); ++ if (!reachable) ++ goto out; ++ ++ /* Find first enabled CRTC and start search for reachable CRTCs from it */ ++ for (i = 0; i < n; ++i) { ++ if (pScrPriv->crtcs[i]->mode) { ++ mark_crtcs(pScrPriv, reachable, i); ++ break; ++ } ++ } ++ ++ /* Check that all enabled CRTCs were marked as reachable */ ++ for (i = 0; i < n; ++i) ++ if (pScrPriv->crtcs[i]->mode && !reachable[i]) ++ goto out; ++ ++ discontiguous = FALSE; ++ ++out: ++ free(reachable); ++ pScrPriv->discontiguous = discontiguous; ++} ++ + /* + * Request that the Crtc be reconfigured + */ +@@ -306,6 +394,7 @@ RRCrtcSet (RRCrtcPtr crtc, + { + ScreenPtr pScreen = crtc->pScreen; + Bool ret = FALSE; ++ Bool recompute = TRUE; + rrScrPriv(pScreen); + + /* See if nothing changed */ +@@ -318,6 +407,7 @@ RRCrtcSet (RRCrtcPtr crtc, + !RRCrtcPendingProperties (crtc) && + !RRCrtcPendingTransform (crtc)) + { ++ recompute = FALSE; + ret = TRUE; + } + else +@@ -381,6 +471,10 @@ RRCrtcSet (RRCrtcPtr crtc, + RRPostPendingProperties (outputs[o]); + } + } ++ ++ if (recompute) ++ RRComputeContiguity(pScreen); ++ + return ret; + } + +@@ -1349,3 +1443,64 @@ ProcRRGetCrtcTransform (ClientPtr client) + free(reply); + return Success; + } ++ ++void ++RRConstrainCursorHarder(DeviceIntPtr pDev, ScreenPtr pScreen, int mode, int *x, int *y) ++{ ++ rrScrPriv (pScreen); ++ int i; ++ ++ /* intentional dead space -> let it float */ ++ if (pScrPriv->discontiguous) ++ return; ++ ++ /* if we're moving inside a crtc, we're fine */ ++ for (i = 0; i < pScrPriv->numCrtcs; i++) { ++ RRCrtcPtr crtc = pScrPriv->crtcs[i]; ++ ++ int left, right, top, bottom; ++ ++ if (!crtc->mode) ++ continue; ++ ++ crtc_bounds(crtc, &left, &right, &top, &bottom); ++ ++ if ((*x >= left) && (*x <= right) && (*y >= top) && (*y <= bottom)) ++ return; ++ } ++ ++ /* if we're trying to escape, clamp to the CRTC we're coming from */ ++ for (i = 0; i < pScrPriv->numCrtcs; i++) { ++ RRCrtcPtr crtc = pScrPriv->crtcs[i]; ++ int nx, ny; ++ int left, right, top, bottom; ++ ++ if (!crtc->mode) ++ continue; ++ ++ crtc_bounds(crtc, &left, &right, &top, &bottom); ++ miPointerGetPosition(pDev, &nx, &ny); ++ ++ if ((nx >= left) && (nx <= right) && (ny >= top) && (ny <= bottom)) { ++ if ((*x <= left) || (*x >= right)) { ++ int dx = *x - nx; ++ ++ if (dx > 0) ++ *x = right; ++ else if (dx < 0) ++ *x = left; ++ } ++ ++ if ((*y <= top) || (*y >= bottom)) { ++ int dy = *y - ny; ++ ++ if (dy > 0) ++ *y = bottom; ++ else if (dy < 0) ++ *y = top; ++ } ++ ++ return; ++ } ++ } ++} +diff --git a/test/Makefile.am b/test/Makefile.am +index 456221e..ccdb859 100644 +--- a/test/Makefile.am ++++ b/test/Makefile.am +@@ -1,6 +1,6 @@ + if UNITTESTS + SUBDIRS= . xi2 +-check_PROGRAMS = xkb input xtest ++check_PROGRAMS = xkb input xtest list fixes + check_LTLIBRARIES = libxservertest.la + + TESTS=$(check_PROGRAMS) +@@ -16,6 +16,8 @@ endif + xkb_LDADD=$(TEST_LDADD) + input_LDADD=$(TEST_LDADD) + xtest_LDADD=$(TEST_LDADD) ++list_LDADD=$(TEST_LDADD) ++fixes_LDADD=$(TEST_LDADD) + + libxservertest_la_LIBADD = \ + $(XSERVER_LIBS) \ +diff --git a/xfixes/cursor.c b/xfixes/cursor.c +index fb608f6..5c55c95 100644 +--- a/xfixes/cursor.c ++++ b/xfixes/cursor.c +@@ -1,5 +1,6 @@ + /* + * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved. ++ * Copyright 2010 Red Hat, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), +@@ -50,13 +51,16 @@ + #include "cursorstr.h" + #include "dixevents.h" + #include "servermd.h" ++#include "mipointer.h" + #include "inputstr.h" + #include "windowstr.h" + #include "xace.h" ++#include "list.h" + + static RESTYPE CursorClientType; + static RESTYPE CursorHideCountType; + static RESTYPE CursorWindowType; ++RESTYPE PointerBarrierType; + static CursorPtr CursorCurrent[MAXDEVICES]; + + static DevPrivateKeyRec CursorScreenPrivateKeyRec; +@@ -107,6 +111,14 @@ typedef struct _CursorHideCountRec { + XID resource; + } CursorHideCountRec; + ++typedef struct PointerBarrierClient *PointerBarrierClientPtr; ++ ++struct PointerBarrierClient { ++ ScreenPtr screen; ++ struct PointerBarrier barrier; ++ struct list entry; ++}; ++ + /* + * Wrap DisplayCursor to catch cursor change events + */ +@@ -114,7 +126,9 @@ typedef struct _CursorHideCountRec { + typedef struct _CursorScreen { + DisplayCursorProcPtr DisplayCursor; + CloseScreenProcPtr CloseScreen; ++ ConstrainCursorHarderProcPtr ConstrainCursorHarder; + CursorHideCountPtr pCursorHideCounts; ++ struct list barriers; + } CursorScreenRec, *CursorScreenPtr; + + #define GetCursorScreen(s) ((CursorScreenPtr)dixLookupPrivate(&(s)->devPrivates, CursorScreenPrivateKey)) +@@ -184,9 +198,11 @@ CursorCloseScreen (int index, ScreenPtr pScreen) + Bool ret; + CloseScreenProcPtr close_proc; + DisplayCursorProcPtr display_proc; ++ ConstrainCursorHarderProcPtr constrain_proc; + + Unwrap (cs, pScreen, CloseScreen, close_proc); + Unwrap (cs, pScreen, DisplayCursor, display_proc); ++ Unwrap (cs, pScreen, ConstrainCursorHarder, constrain_proc); + deleteCursorHideCountsForScreen(pScreen); + ret = (*pScreen->CloseScreen) (index, pScreen); + free(cs); +@@ -1029,6 +1045,391 @@ CursorFreeWindow (pointer data, XID id) + return 1; + } + ++static BOOL ++barrier_is_horizontal(const struct PointerBarrier *barrier) ++{ ++ return barrier->y1 == barrier->y2; ++} ++ ++static BOOL ++barrier_is_vertical(const struct PointerBarrier *barrier) ++{ ++ return barrier->x1 == barrier->x2; ++} ++ ++/** ++ * @return The set of barrier movement directions the movement vector ++ * x1/y1 → x2/y2 represents. ++ */ ++int ++barrier_get_direction(int x1, int y1, int x2, int y2) ++{ ++ int direction = 0; ++ ++ /* which way are we trying to go */ ++ if (x2 > x1) ++ direction |= BarrierPositiveX; ++ if (x2 < x1) ++ direction |= BarrierNegativeX; ++ if (y2 > y1) ++ direction |= BarrierPositiveY; ++ if (y2 < y1) ++ direction |= BarrierNegativeY; ++ ++ return direction; ++} ++ ++/** ++ * Test if the barrier may block movement in the direction defined by ++ * x1/y1 → x2/y2. This function only tests whether the directions could be ++ * blocked, it does not test if the barrier actually blocks the movement. ++ * ++ * @return TRUE if the barrier blocks the direction of movement or FALSE ++ * otherwise. ++ */ ++BOOL ++barrier_is_blocking_direction(const struct PointerBarrier *barrier, int direction) ++{ ++ /* Barriers define which way is ok, not which way is blocking */ ++ return (barrier->directions & direction) != direction; ++} ++ ++/** ++ * Test if the movement vector x1/y1 → x2/y2 is intersecting with the ++ * barrier. A movement vector with the startpoint or endpoint on the barrier ++ * itself counts as intersecting. ++ * ++ * @param x1 X start coordinate of movement vector ++ * @param y1 Y start coordinate of movement vector ++ * @param x2 X end coordinate of movement vector ++ * @param y2 Y end coordinate of movement vector ++ * @param[out] distance The distance between the start point and the ++ * intersection with the barrier (if applicable). ++ * @return TRUE if the barrier intersects with the given vector ++ */ ++BOOL ++barrier_is_blocking(const struct PointerBarrier *barrier, ++ int x1, int y1, int x2, int y2, ++ double *distance) ++{ ++ BOOL rc = FALSE; ++ float ua, ub, ud; ++ int dir = barrier_get_direction(x1, y1, x2, y2); ++ ++ /* Algorithm below doesn't handle edge cases well, hence the extra ++ * checks. */ ++ if (barrier_is_vertical(barrier)) { ++ /* handle immediate barrier adjacency, moving away */ ++ if (dir & BarrierPositiveX && x1 == barrier->x1) ++ return FALSE; ++ if (dir & BarrierNegativeX && x1 == (barrier->x1 - 1)) ++ return FALSE; ++ /* startpoint on barrier */ ++ if (x1 == barrier->x1 && y1 >= barrier->y1 && y1 <= barrier->y2) { ++ *distance = 0; ++ return TRUE; ++ } ++ /* endpoint on barrier */ ++ if (x2 == barrier->x1 && y2 >= barrier->y1 && y2 <= barrier->y2) { ++ *distance = abs(x2 - x1); ++ return TRUE; ++ } ++ } else { ++ /* handle immediate barrier adjacency, moving away */ ++ if (dir & BarrierPositiveY && y1 == barrier->y1) ++ return FALSE; ++ if (dir & BarrierNegativeY && y1 == (barrier->y1 - 1)) ++ return FALSE; ++ /* startpoint on barrier */ ++ if (y1 == barrier->y1 && x1 >= barrier->x1 && x1 <= barrier->x2) { ++ *distance = 0; ++ return TRUE; ++ } ++ /* endpoint on barrier */ ++ if (y2 == barrier->y1 && x2 >= barrier->x1 && x2 <= barrier->x2) { ++ *distance = abs(y2 - y1); ++ return TRUE; ++ } ++ } ++ ++ /* not an edge case, compute distance */ ++ ua = 0; ++ ud = (barrier->y2 - barrier->y1) * (x2 - x1) - (barrier->x2 - barrier->x1) * (y2 - y1); ++ if (ud != 0) { ++ ua = ((barrier->x2 - barrier->x1) * (y1 - barrier->y1) - ++ (barrier->y2 - barrier->y1) * (x1 - barrier->x1)) / ud; ++ ub = ((x2 - x1) * (y1 - barrier->y1) - ++ (y2 - y1) * (x1 - barrier->x1)) / ud; ++ if (ua < 0 || ua > 1 || ub < 0 || ub > 1) ++ ua = 0; ++ } ++ ++ if (ua > 0 && ua <= 1) ++ { ++ double ix = barrier->x1 + ua * (barrier->x2 - barrier->x1); ++ double iy = barrier->y1 + ua * (barrier->y2 - barrier->y1); ++ ++ *distance = sqrt(pow(x1 - ix, 2) + pow(y1 - iy, 2)); ++ rc = TRUE; ++ } ++ ++ return rc; ++} ++ ++/** ++ * Find the nearest barrier that is blocking movement from x1/y1 to x2/y2. ++ * ++ * @param dir Only barriers blocking movement in direction dir are checked ++ * @param x1 X start coordinate of movement vector ++ * @param y1 Y start coordinate of movement vector ++ * @param x2 X end coordinate of movement vector ++ * @param y2 Y end coordinate of movement vector ++ * @return The barrier nearest to the movement origin that blocks this movement. ++ */ ++static struct PointerBarrier* ++barrier_find_nearest(CursorScreenPtr cs, int dir, ++ int x1, int y1, int x2, int y2) ++{ ++ struct PointerBarrierClient *c; ++ struct PointerBarrier *nearest = NULL; ++ double min_distance = INT_MAX; /* can't get higher than that in X anyway */ ++ ++ list_for_each_entry(c, &cs->barriers, entry) { ++ struct PointerBarrier *b = &c->barrier; ++ double distance; ++ ++ if (!barrier_is_blocking_direction(b, dir)) ++ continue; ++ ++ if (barrier_is_blocking(b, x1, y1, x2, y2, &distance)) ++ { ++ if (min_distance > distance) ++ { ++ min_distance = distance; ++ nearest = b; ++ } ++ } ++ } ++ ++ return nearest; ++} ++ ++/** ++ * Clamp to the given barrier given the movement direction specified in dir. ++ * ++ * @param barrier The barrier to clamp to ++ * @param dir The movement direction ++ * @param[out] x The clamped x coordinate. ++ * @param[out] y The clamped x coordinate. ++ */ ++void ++barrier_clamp_to_barrier(struct PointerBarrier *barrier, int dir, int *x, int *y) ++{ ++ if (barrier_is_vertical(barrier)) { ++ if ((dir & BarrierNegativeX) & ~barrier->directions) ++ *x = barrier->x1; ++ if ((dir & BarrierPositiveX) & ~barrier->directions) ++ *x = barrier->x1 - 1; ++ } ++ if (barrier_is_horizontal(barrier)) ++ { ++ if ((dir & BarrierNegativeY) & ~barrier->directions) ++ *y = barrier->y1; ++ if ((dir & BarrierPositiveY) & ~barrier->directions) ++ *y = barrier->y1 - 1; ++ } ++} ++ ++static void ++CursorConstrainCursorHarder(DeviceIntPtr dev, ScreenPtr screen, int mode, int *x, int *y) ++{ ++ CursorScreenPtr cs = GetCursorScreen(screen); ++ ++ if (!list_is_empty(&cs->barriers) && !IsFloating(dev) && mode == Relative) { ++ int ox, oy; ++ int dir; ++ struct PointerBarrier *nearest = NULL; ++ ++ /* where are we coming from */ ++ miPointerGetPosition(dev, &ox, &oy); ++ ++ /* How this works: ++ * Given the origin and the movement vector, get the nearest barrier ++ * to the origin that is blocking the movement. ++ * Clamp to that barrier. ++ * Then, check from the clamped position to the original ++ * destination, again finding the nearest barrier and clamping. ++ */ ++ dir = barrier_get_direction(ox, oy, *x, *y); ++ ++ nearest = barrier_find_nearest(cs, dir, ox, oy, *x, *y); ++ if (nearest) { ++ barrier_clamp_to_barrier(nearest, dir, x, y); ++ ++ if (barrier_is_vertical(nearest)) { ++ dir &= ~(BarrierNegativeX | BarrierPositiveX); ++ ox = *x; ++ } else if (barrier_is_horizontal(nearest)) { ++ dir &= ~(BarrierNegativeY | BarrierPositiveY); ++ oy = *y; ++ } ++ ++ nearest = barrier_find_nearest(cs, dir, ox, oy, *x, *y); ++ if (nearest) { ++ barrier_clamp_to_barrier(nearest, dir, x, y); ++ } ++ } ++ } ++ ++ if (cs->ConstrainCursorHarder) { ++ screen->ConstrainCursorHarder = cs->ConstrainCursorHarder; ++ screen->ConstrainCursorHarder(dev, screen, mode, x, y); ++ screen->ConstrainCursorHarder = CursorConstrainCursorHarder; ++ } ++} ++ ++static struct PointerBarrierClient * ++CreatePointerBarrierClient(ScreenPtr screen, ClientPtr client, ++ xXFixesCreatePointerBarrierReq *stuff) ++{ ++ CursorScreenPtr cs = GetCursorScreen(screen); ++ struct PointerBarrierClient *ret = malloc(sizeof(*ret)); ++ ++ if (ret) { ++ ret->screen = screen; ++ ret->barrier.x1 = min(stuff->x1, stuff->x2); ++ ret->barrier.x2 = max(stuff->x1, stuff->x2); ++ ret->barrier.y1 = min(stuff->y1, stuff->y2); ++ ret->barrier.y2 = max(stuff->y1, stuff->y2); ++ ret->barrier.directions = stuff->directions & 0x0f; ++ if (barrier_is_horizontal(&ret->barrier)) ++ ret->barrier.directions &= ~(BarrierPositiveX | BarrierNegativeX); ++ if (barrier_is_vertical(&ret->barrier)) ++ ret->barrier.directions &= ~(BarrierPositiveY | BarrierNegativeY); ++ list_add(&ret->entry, &cs->barriers); ++ } ++ ++ return ret; ++} ++ ++int ++ProcXFixesCreatePointerBarrier (ClientPtr client) ++{ ++ int err; ++ WindowPtr pWin; ++ struct PointerBarrierClient *barrier; ++ struct PointerBarrier b; ++ REQUEST (xXFixesCreatePointerBarrierReq); ++ ++ REQUEST_SIZE_MATCH(xXFixesCreatePointerBarrierReq); ++ LEGAL_NEW_RESOURCE(stuff->barrier, client); ++ ++ err = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess); ++ if (err != Success) { ++ client->errorValue = stuff->window; ++ return err; ++ } ++ ++ /* This sure does need fixing. */ ++ if (stuff->num_devices) ++ return BadImplementation; ++ ++ b.x1 = stuff->x1; ++ b.x2 = stuff->x2; ++ b.y1 = stuff->y1; ++ b.y2 = stuff->y2; ++ ++ if (!barrier_is_horizontal(&b) && !barrier_is_vertical(&b)) ++ return BadValue; ++ ++ /* no 0-sized barriers */ ++ if (barrier_is_horizontal(&b) && barrier_is_vertical(&b)) ++ return BadValue; ++ ++ if (!(barrier = CreatePointerBarrierClient(pWin->drawable.pScreen, ++ client, stuff))) ++ return BadAlloc; ++ ++ if (!AddResource(stuff->barrier, PointerBarrierType, &barrier->barrier)) ++ return BadAlloc; ++ ++ return Success; ++} ++ ++int ++SProcXFixesCreatePointerBarrier (ClientPtr client) ++{ ++ int n; ++ REQUEST(xXFixesCreatePointerBarrierReq); ++ ++ swaps(&stuff->length, n); ++ REQUEST_SIZE_MATCH(xXFixesCreatePointerBarrierReq); ++ swapl(&stuff->barrier, n); ++ swapl(&stuff->window, n); ++ swaps(&stuff->x1, n); ++ swaps(&stuff->y1, n); ++ swaps(&stuff->x2, n); ++ swaps(&stuff->y2, n); ++ swapl(&stuff->directions, n); ++ return ProcXFixesVector[stuff->xfixesReqType](client); ++} ++ ++static int ++CursorFreeBarrier(void *data, XID id) ++{ ++ struct PointerBarrierClient *b = NULL, *barrier; ++ ScreenPtr screen; ++ CursorScreenPtr cs; ++ ++ barrier = container_of(data, struct PointerBarrierClient, barrier); ++ screen = barrier->screen; ++ cs = GetCursorScreen(screen); ++ ++ /* find and unlink from the screen private */ ++ list_for_each_entry(b, &cs->barriers, entry) { ++ if (b == barrier) { ++ list_del(&b->entry); ++ break; ++ } ++ } ++ ++ free(barrier); ++ return Success; ++} ++ ++int ++ProcXFixesDestroyPointerBarrier (ClientPtr client) ++{ ++ int err; ++ void *barrier; ++ REQUEST (xXFixesDestroyPointerBarrierReq); ++ ++ REQUEST_SIZE_MATCH(xXFixesDestroyPointerBarrierReq); ++ ++ err = dixLookupResourceByType((void **)&barrier, stuff->barrier, ++ PointerBarrierType, client, ++ DixDestroyAccess); ++ if (err != Success) { ++ client->errorValue = stuff->barrier; ++ return err; ++ } ++ ++ FreeResource(stuff->barrier, RT_NONE); ++ return Success; ++} ++ ++int ++SProcXFixesDestroyPointerBarrier (ClientPtr client) ++{ ++ int n; ++ REQUEST(xXFixesDestroyPointerBarrierReq); ++ ++ swaps(&stuff->length, n); ++ REQUEST_SIZE_MATCH(xXFixesDestroyPointerBarrierReq); ++ swapl(&stuff->barrier, n); ++ return ProcXFixesVector[stuff->xfixesReqType](client); ++} ++ + Bool + XFixesCursorInit (void) + { +@@ -1048,8 +1449,10 @@ XFixesCursorInit (void) + cs = (CursorScreenPtr) calloc(1, sizeof (CursorScreenRec)); + if (!cs) + return FALSE; ++ list_init(&cs->barriers); + Wrap (cs, pScreen, CloseScreen, CursorCloseScreen); + Wrap (cs, pScreen, DisplayCursor, CursorDisplayCursor); ++ Wrap (cs, pScreen, ConstrainCursorHarder, CursorConstrainCursorHarder); + cs->pCursorHideCounts = NULL; + SetCursorScreen (pScreen, cs); + } +@@ -1059,7 +1462,10 @@ XFixesCursorInit (void) + "XFixesCursorHideCount"); + CursorWindowType = CreateNewResourceType(CursorFreeWindow, + "XFixesCursorWindow"); ++ PointerBarrierType = CreateNewResourceType(CursorFreeBarrier, ++ "XFixesPointerBarrier"); + +- return CursorClientType && CursorHideCountType && CursorWindowType; ++ return CursorClientType && CursorHideCountType && CursorWindowType && ++ PointerBarrierType; + } + +diff --git a/xfixes/xfixes.c b/xfixes/xfixes.c +index e8c7bf1..a57884b 100644 +--- a/xfixes/xfixes.c ++++ b/xfixes/xfixes.c +@@ -1,5 +1,6 @@ + /* + * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved. ++ * Copyright 2010 Red Hat, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), +@@ -47,10 +48,6 @@ + + #include "xfixesint.h" + #include "protocol-versions.h" +-/* +- * Must use these instead of the constants from xfixeswire.h. They advertise +- * what we implement, not what the protocol headers define. +- */ + + static unsigned char XFixesReqCode; + int XFixesEventBase; +@@ -97,11 +94,12 @@ ProcXFixesQueryVersion(ClientPtr client) + + /* Major version controls available requests */ + static const int version_requests[] = { +- X_XFixesQueryVersion, /* before client sends QueryVersion */ +- X_XFixesGetCursorImage, /* Version 1 */ +- X_XFixesChangeCursorByName, /* Version 2 */ +- X_XFixesExpandRegion, /* Version 3 */ +- X_XFixesShowCursor, /* Version 4 */ ++ X_XFixesQueryVersion, /* before client sends QueryVersion */ ++ X_XFixesGetCursorImage, /* Version 1 */ ++ X_XFixesChangeCursorByName, /* Version 2 */ ++ X_XFixesExpandRegion, /* Version 3 */ ++ X_XFixesShowCursor, /* Version 4 */ ++ X_XFixesDestroyPointerBarrier, /* Version 5 */ + }; + + #define NUM_VERSION_REQUESTS (sizeof (version_requests) / sizeof (version_requests[0])) +@@ -142,6 +140,9 @@ int (*ProcXFixesVector[XFixesNumberRequests])(ClientPtr) = { + /*************** Version 4 ****************/ + ProcXFixesHideCursor, + ProcXFixesShowCursor, ++/*************** Version 5 ****************/ ++ ProcXFixesCreatePointerBarrier, ++ ProcXFixesDestroyPointerBarrier, + }; + + static int +@@ -205,6 +206,9 @@ static int (*SProcXFixesVector[XFixesNumberRequests])(ClientPtr) = { + /*************** Version 4 ****************/ + SProcXFixesHideCursor, + SProcXFixesShowCursor, ++/*************** Version 5 ****************/ ++ SProcXFixesCreatePointerBarrier, ++ SProcXFixesDestroyPointerBarrier, + }; + + static int +@@ -260,6 +264,8 @@ XFixesExtensionInit(void) + EventSwapVector[XFixesEventBase + XFixesCursorNotify] = + (EventSwapPtr) SXFixesCursorNotifyEvent; + SetResourceTypeErrorValue(RegionResType, XFixesErrorBase + BadRegion); ++ SetResourceTypeErrorValue(PointerBarrierType, ++ XFixesErrorBase + BadBarrier); + } + } + +diff --git a/xfixes/xfixes.h b/xfixes/xfixes.h +index 1638350..5765e64 100644 +--- a/xfixes/xfixes.h ++++ b/xfixes/xfixes.h +@@ -30,6 +30,7 @@ + #include "resource.h" + + extern _X_EXPORT RESTYPE RegionResType; ++extern _X_EXPORT RESTYPE PointerBarrierType; + extern _X_EXPORT int XFixesErrorBase; + + #define VERIFY_REGION(pRegion, rid, client, mode) \ +@@ -51,5 +52,21 @@ extern _X_EXPORT int XFixesErrorBase; + extern _X_EXPORT RegionPtr + XFixesRegionCopy (RegionPtr pRegion); + ++struct PointerBarrier { ++ CARD16 x1, x2, y1, y2; ++ CARD32 directions; ++}; ++ ++ ++extern int ++barrier_get_direction(int, int, int, int); ++extern BOOL ++barrier_is_blocking(const struct PointerBarrier*, int, int, int, int, double*); ++extern BOOL ++barrier_is_blocking_direction(const struct PointerBarrier*, int); ++extern void ++barrier_clamp_to_barrier(struct PointerBarrier *barrier, int dir, int *x, int *y); ++ ++ + + #endif /* _XFIXES_H_ */ +diff --git a/xfixes/xfixesint.h b/xfixes/xfixesint.h +index d005369..6ba276e 100644 +--- a/xfixes/xfixesint.h ++++ b/xfixes/xfixesint.h +@@ -1,5 +1,6 @@ + /* + * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved. ++ * Copyright 2010 Red Hat, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), +@@ -278,6 +279,21 @@ ProcXFixesShowCursor (ClientPtr client); + int + SProcXFixesShowCursor (ClientPtr client); + ++/* Version 5 */ ++ ++int ++ProcXFixesCreatePointerBarrier (ClientPtr client); ++ ++int ++SProcXFixesCreatePointerBarrier (ClientPtr client); ++ ++int ++ProcXFixesDestroyPointerBarrier (ClientPtr client); ++ ++int ++SProcXFixesDestroyPointerBarrier (ClientPtr client); ++ ++/* Xinerama */ + extern int (*PanoramiXSaveXFixesVector[XFixesNumberRequests])(ClientPtr); + void PanoramiXFixesInit (void); + void PanoramiXFixesReset (void); +-- +1.7.4 + diff --git a/testing/xorg-server/xvfb-run b/testing/xorg-server/xvfb-run new file mode 100644 index 000000000..4c2f4e0d3 --- /dev/null +++ b/testing/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/testing/xorg-server/xvfb-run.1 b/testing/xorg-server/xvfb-run.1 new file mode 100644 index 000000000..137d3a196 --- /dev/null +++ b/testing/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: |