diff options
Diffstat (limited to 'community')
30 files changed, 1839 insertions, 183 deletions
diff --git a/community/aqbanking/PKGBUILD b/community/aqbanking/PKGBUILD index 77e93e59e..36d291377 100644 --- a/community/aqbanking/PKGBUILD +++ b/community/aqbanking/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 42707 2011-03-19 21:53:25Z spupykin $ +# $Id: PKGBUILD 51223 2011-07-05 21:41:50Z spupykin $ # Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com> # Contributor: David Moore <davidm@sjsoft.com> pkgname=aqbanking -pkgver=5.0.5 +pkgver=5.0.11 pkgrel=1 pkgdesc="A library for online banking and financial applications" arch=(i686 x86_64) @@ -12,8 +12,8 @@ url="http://www.aquamaniac.de/aqbanking" license=('GPL') depends=('gwenhywfar' 'ktoblzcheck' 'libofx') options=('!makeflags' '!libtool') -source=("aqbanking-$pkgver.tar.gz::http://www2.aquamaniac.de/sites/download/download.php?package=03&release=78&file=01&dummy=aqbanking-$pkgver.tar.gz") -md5sums=('b50c28887fc9fd2fc9a4d9fc996497e6') +source=("aqbanking-$pkgver.tar.gz::http://www2.aquamaniac.de/sites/download/download.php?package=03&release=84&file=01&dummy=aqbanking-$pkgver.tar.gz") +md5sums=('08b42813f7a6c1ac3529e1004b66d81d') build() { cd $srcdir/aqbanking-$pkgver diff --git a/community/autofs/PKGBUILD b/community/autofs/PKGBUILD index 6a85101ea..9c09a332e 100644 --- a/community/autofs/PKGBUILD +++ b/community/autofs/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 50871 2011-07-02 10:03:49Z lfleischer $ +# $Id: PKGBUILD 51120 2011-07-05 13:23:33Z lfleischer $ # Maintainer: Lukas Fleischer <archlinux at cryptocrack dot de> # Contributor: Andrea Scarpino <andrea@archlinux.org> # Contributor: Dale Blount <dale@archlinux.org> @@ -6,7 +6,7 @@ pkgname=autofs pkgver=5.0.6 -pkgrel=1 +pkgrel=2 pkgdesc='A kernel-based automounter for Linux.' arch=('i686' 'x86_64') url='http://freshmeat.net/projects/autofs' @@ -18,11 +18,13 @@ backup=('etc/autofs/auto.master' options=(!makeflags) install='autofs.install' source=("http://www.kernel.org/pub/linux/daemons/${pkgname}/v5/${pkgname}-${pkgver}.tar.bz2" + "http://www.kernel.org/pub/linux/daemons/${pkgname}/v5/${pkgname}-${pkgver}-fix-ipv6-name-for-lookup-fix.patch" 'autofs' 'autofs.conf.d' 'auto.master' 'auto.misc') md5sums=('44cea7f711e2290a0b50fddeda079705' + '221bf50d6e496b22014a9a7b234fe556' 'e307bf6d2638e46eeb916cf42fe029b2' '47f597c870410055e0fdb66103daf928' 'a6cefb591e77b31b79dbb7243646c96b' @@ -34,6 +36,8 @@ build() { sed -i "s:SUBDIRS = lib daemon modules man samples:SUBDIRS = lib daemon modules man:" \ Makefile.rules + patch -p1 -i "../${pkgname}-${pkgver}-fix-ipv6-name-for-lookup-fix.patch" + ./configure --prefix=/usr --sysconfdir=/etc/autofs --with-mapdir=/etc/autofs --without-hesiod \ --enable-ignore-busy make diff --git a/community/frogatto/PKGBUILD b/community/frogatto/PKGBUILD index 434ddd9fb..1e4e509a8 100644 --- a/community/frogatto/PKGBUILD +++ b/community/frogatto/PKGBUILD @@ -1,11 +1,11 @@ -# $Id: PKGBUILD 47897 2011-05-26 00:34:36Z svenstaro $ +# $Id: PKGBUILD 51208 2011-07-05 20:39:32Z 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 +pkgver=1.1.1 +pkgrel=1 pkgdesc="An old-school 2d platformer game, starring a certain quixotic frog" url="http://www.frogatto.com" license=('GPL') @@ -14,7 +14,7 @@ makedepends=('boost') source=(http://www.frogatto.com/files/$pkgname-$pkgver.tar.bz2 frogatto frogatto.desktop) -md5sums=('8c01c8a1d7ecf820a682eb684d8bf739' +md5sums=('bf5a2ee4c3254a424766895ff250758b' '9ed2c9ea59e95fe3c0b3ad49e58f8890' 'e31563b04748a39292a59aaad633ff58') diff --git a/community/gdal/PKGBUILD b/community/gdal/PKGBUILD index 4c55ed8f9..88756643b 100644 --- a/community/gdal/PKGBUILD +++ b/community/gdal/PKGBUILD @@ -1,11 +1,11 @@ -# $Id: PKGBUILD 46467 2011-05-07 14:58:14Z tdziedzic $ +# $Id: PKGBUILD 50951 2011-07-03 10:32:28Z jelle $ # Maintainer: Jaroslav Lichtblau <dragonlord@aur.archlinux.org> # Contributor: dibblethewrecker dibblethewrecker.at.jiwe.dot.org # Contributor: William Rea <sillywilly@gmail.com> pkgname=gdal pkgver=1.8.0 -pkgrel=4 +pkgrel=5 pkgdesc="A translator library for raster geospatial data formats" arch=('i686' 'x86_64') url="http://www.gdal.org/" @@ -27,6 +27,9 @@ md5sums=('c762cdab0f7e51a677ba49278a8a263d' '81afc1c26d29cee84aadb6924fe33861') build() { export CFLAGS="$CFLAGS -fno-strict-aliasing" + # bug 23654 + export LDFLAGS="$LDFLAGS -Wl,--as-needed" + cd ${srcdir}/$pkgname-$pkgver patch -Np0 -i ${srcdir}/gdal-1.5.1-python-install.patch diff --git a/community/gedit-plugins/PKGBUILD b/community/gedit-plugins/PKGBUILD index 35d8e14dd..cb95763a3 100644 --- a/community/gedit-plugins/PKGBUILD +++ b/community/gedit-plugins/PKGBUILD @@ -1,11 +1,11 @@ -# $Id: PKGBUILD 49674 2011-06-19 07:22:21Z ibiru $ +# $Id: PKGBUILD 51128 2011-07-05 14:25:52Z ibiru $ #Maintainer: Ionut Biru <ibiru@archlinux.org> #Contributor: Hugo Doria <hugo@archlinux.org> #Contributor: Sergej Chodarev <sergejx@centrum.sk> #Contributor: zhuqin <zhuqin83@gmail.com> pkgname=gedit-plugins -pkgver=3.0.4 +pkgver=3.0.5 pkgrel=1 pkgdesc="Set of plugins for gedit" arch=('i686' 'x86_64') @@ -16,7 +16,7 @@ makedepends=('intltool' 'gnome-doc-utils') options=('!libtool' '!emptydirs') install=gedit-plugins.install source=(ftp://ftp.gnome.org/pub/gnome/sources/gedit-plugins/3.0/$pkgname-$pkgver.tar.xz) -sha256sums=('e1e16790300f7f51a1f2e6871e7b0604d9e242e507533697b529380d25a24879') +sha256sums=('e878d4c1bdf9ee38bf23440f3550f854078727233432bfe2f4062794e4b0f3a9') build() { cd $srcdir/$pkgname-$pkgver diff --git a/community/geos/PKGBUILD b/community/geos/PKGBUILD index 699ee17f6..aa97623f2 100644 --- a/community/geos/PKGBUILD +++ b/community/geos/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 32533 2010-11-14 16:11:41Z jlichtblau $ +# $Id: PKGBUILD 50911 2011-07-02 23:00:14Z stephane $ # Maintainer: Jaroslav Lichtblau <dragonlord@aur.archlinux.org> # Contributor: dibblethewrecker dibblethewrecker.at.jiwe.dot.org # Contributor: William Rea <sillywilly@gmail.com> pkgname=geos -pkgver=3.2.2 +pkgver=3.3.0 pkgrel=1 pkgdesc="A C++ port of the Java Topology Suite" arch=('i686' 'x86_64') @@ -14,17 +14,17 @@ depends=('gcc-libs') options=('!libtool') changelog=$pkgname.changelog source=(http://download.osgeo.org/${pkgname}/${pkgname}-${pkgver}.tar.bz2) -md5sums=('c5d264acac22fe7720f85dadc1fc17c6') +md5sums=('3301f3d1d747b95749384b8a356b022a') build() { - cd ${srcdir}/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr make } package() { - cd ${srcdir}/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" - make DESTDIR=${pkgdir} install + make DESTDIR="${pkgdir}" install } diff --git a/community/gwenhywfar/PKGBUILD b/community/gwenhywfar/PKGBUILD index eb3800ad8..2f3e08236 100644 --- a/community/gwenhywfar/PKGBUILD +++ b/community/gwenhywfar/PKGBUILD @@ -1,19 +1,20 @@ -# $Id: PKGBUILD 42710 2011-03-19 21:54:07Z spupykin $ +# $Id: PKGBUILD 51213 2011-07-05 21:18:23Z spupykin $ # Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com> # Maintainer: William Rea <sillywilly@gmail.com> pkgname=gwenhywfar -pkgver=4.0.9 +pkgver=4.2.0 pkgrel=1 pkgdesc="OS abstraction functions for various projects" arch=(i686 x86_64) url="http://www.aquamaniac.de" options=('!libtool') license=("LGPL") -depends=('openssl') +depends=('openssl' 'gnutls') +makedepends=('gtk2' 'qt') optdepends=('gtk2' 'qt') -source=("gwenhywfar-$pkgver.tar.gz::http://www2.aquamaniac.de/sites/download/download.php?package=01&release=60&file=01&dummy=gwenhywfar-$pkgver.tar.gz") -md5sums=('03c22b95eb493c8c98284d3d2e4d9795') +source=("gwenhywfar-$pkgver.tar.gz::http://www2.aquamaniac.de/sites/download/download.php?package=01&release=62&file=01&dummy=gwenhywfar-$pkgver.tar.gz") +md5sums=('62d15e090a0c21bc9d22489ceaaadfde') build() { pacman -Q gwenhywfar && return 1 diff --git a/community/ktoblzcheck/PKGBUILD b/community/ktoblzcheck/PKGBUILD index e646ae9a5..544b2a70c 100644 --- a/community/ktoblzcheck/PKGBUILD +++ b/community/ktoblzcheck/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 40241 2011-02-22 13:26:21Z stephane $ +# $Id: PKGBUILD 51218 2011-07-05 21:19:18Z spupykin $ # Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com> # Contributor: Philipp Sandhaus <philipp.sandhaus@gmx.de> pkgname=ktoblzcheck -pkgver=1.31 +pkgver=1.33 pkgrel=1 pkgdesc="A library to check account numbers and bank codes of German banks" arch=(i686 x86_64) @@ -14,8 +14,8 @@ depends=('gcc-libs' 'python') optdepends=('perl') source=(http://downloads.sourceforge.net/sourceforge/ktoblzcheck/ktoblzcheck-$pkgver.tar.gz ktoblzcheck-python3.patch) -md5sums=('2bc5fd7b3d6785527f7f0ea565c35e29' - 'bf0d5e813aef4be426af5642ec4d524a') +md5sums=('e9f62a9a64ee51ab43751eadcade0433' + 'a81a697bb3aaeffb7fac0ad7d9166e3f') build() { cd "$srcdir/ktoblzcheck-$pkgver" @@ -23,6 +23,7 @@ build() { patch -p1 <$srcdir/ktoblzcheck-python3.patch make } + package() { cd "$srcdir/ktoblzcheck-$pkgver" make DESTDIR="$pkgdir" install diff --git a/community/ktoblzcheck/ktoblzcheck-python3.patch b/community/ktoblzcheck/ktoblzcheck-python3.patch index c94e0a021..5bfc53275 100644 --- a/community/ktoblzcheck/ktoblzcheck-python3.patch +++ b/community/ktoblzcheck/ktoblzcheck-python3.patch @@ -1,53 +1,3 @@ -diff -ur ktoblzcheck-1.28/py-compile ktoblzcheck-1.28.my/py-compile ---- ktoblzcheck-1.28/py-compile 2008-03-11 09:29:51.000000000 +0000 -+++ ktoblzcheck-1.28.my/py-compile 2010-09-20 09:09:53.000000000 +0000 -@@ -107,34 +107,30 @@ - - files = '''$files''' - --print 'Byte-compiling python modules...' --for file in string.split(files): -+print('Byte-compiling python modules...') -+for file in files.split(): - $pathtrans - $filetrans -- if not os.path.exists(filepath) or not (len(filepath) >= 3 -- and filepath[-3:] == '.py'): -- continue -- print file, -- sys.stdout.flush() -+ if not os.path.exists(filepath) or not (len(filepath) >= 3 and filepath[-3:] == '.py'): -+ continue -+ print(file, sys.stdout.flush()) - py_compile.compile(filepath, filepath + 'c', path) --print" || exit $? -+print()" || exit $? - - # this will fail for python < 1.5, but that doesn't matter ... - $PYTHON -O -c " - import sys, os, string, py_compile - - files = '''$files''' --print 'Byte-compiling python modules (optimized versions) ...' --for file in string.split(files): -+print('Byte-compiling python modules (optimized versions) ...') -+for file in files.split(): - $pathtrans - $filetrans -- if not os.path.exists(filepath) or not (len(filepath) >= 3 -- and filepath[-3:] == '.py'): -- continue -- print file, -- sys.stdout.flush() -+ if not os.path.exists(filepath) or not (len(filepath) >= 3 and filepath[-3:] == '.py'): -+ continue -+ print(file,sys.stdout.flush()) - py_compile.compile(filepath, filepath + 'o', path) --print" 2>/dev/null || : -+print()" 2>/dev/null || : - - # Local Variables: - # mode: shell-script diff -ur ktoblzcheck-1.28/src/python/ktoblzcheck.py ktoblzcheck-1.28.my/src/python/ktoblzcheck.py --- ktoblzcheck-1.28/src/python/ktoblzcheck.py 2008-08-12 16:48:54.000000000 +0000 +++ ktoblzcheck-1.28.my/src/python/ktoblzcheck.py 2010-09-20 09:08:36.000000000 +0000 diff --git a/community/libmediainfo/PKGBUILD b/community/libmediainfo/PKGBUILD index 8381d697f..c6c493d3c 100644 --- a/community/libmediainfo/PKGBUILD +++ b/community/libmediainfo/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 45009 2011-04-14 09:10:11Z spupykin $ +# $Id: PKGBUILD 50998 2011-07-04 11:41:36Z spupykin $ # Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com> # Maintainer: hydro <hydro@freenet.de> pkgname=libmediainfo -pkgver=0.7.43 +pkgver=0.7.45 pkgrel=1 pkgdesc="shared library for mediainfo" arch=('i686' 'x86_64') @@ -12,23 +12,27 @@ license=('GPL') depends=( 'curl' 'libmms>=0.5-2' 'libzen>=0.4.15') makedepends=('libtool' 'automake' 'autoconf') options=(!libtool) -source=(http://downloads.sourceforge.net/mediainfo/${pkgname}_${pkgver}.tar.bz2) -md5sums=('4200c44c4f7016145d580757de18f2d4') +source=(http://downloads.sourceforge.net/mediainfo/${pkgname}_${pkgver}.tar.bz2 + "libmediainfo-0.7.44-libmms.patch::http://www.calculate-linux.org/packages/media-libs/libmediainfo/files/libmediainfo-0.7.44-libmms.patch?format=raw") +md5sums=('b2148a4da794bb1d0721cfa328d59aeb' + '1bdae4d3006b72e3f07cb1a9fa124950') build() { cd $srcdir/MediaInfoLib/Project/GNU/Library - sh ./autogen ./configure --prefix=/usr --enable-shared --disable-static --with-libcurl --with-libmms make clean + (cd ../../.. && patch -p1 <$srcdir/libmediainfo-0.7.44-libmms.patch) make - make DESTDIR=$pkgdir install +} +package() { + cd $srcdir/MediaInfoLib/Project/GNU/Library + make DESTDIR=$pkgdir install for i in MediaInfo MediaInfoDLL; do install -dm 755 $pkgdir/usr/include/$i install -m 644 $srcdir/MediaInfoLib/Source/$i/*.h $pkgdir/usr/include/$i done - install -dm 755 $pkgdir/usr/lib/pkgconfig install -m 644 $srcdir/MediaInfoLib/Project/GNU/Library/libmediainfo.pc $pkgdir/usr/lib/pkgconfig sed -i -e 's|Version: |Version: '$pkgver'|g' $pkgdir/usr/lib/pkgconfig/libmediainfo.pc diff --git a/community/libvirt/PKGBUILD b/community/libvirt/PKGBUILD index 78737f3b2..f9475577e 100644 --- a/community/libvirt/PKGBUILD +++ b/community/libvirt/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 48842 2011-06-06 14:43:46Z spupykin $ +# $Id: PKGBUILD 50988 2011-07-04 11:16:13Z spupykin $ # Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com> # Contributor: Jonathan Wiersma <archaur at jonw dot org> pkgname=libvirt -pkgver=0.9.2 +pkgver=0.9.3 pkgrel=1 pkgdesc="API for controlling virtualization engines (openvz,kvm,qemu,virtualbox,xen,etc)" arch=('i686' 'x86_64') @@ -37,10 +37,10 @@ source=("http://libvirt.org/sources/$pkgname-$pkgver.tar.gz" openbsd-netcat-default.patch unixperms.patch yajl-2.x.patch) -md5sums=('a9f974e173471a9c9b381ad1e93642b0' +md5sums=('04f47fad7d0c614af9dcc5d1351c2148' '018d97dafc0049075fba6f2850f17a12' '3ed0e24f5b5e25bf553f5427d64915e6' - '1c151434af552b8a30fe87d21ef5d783' + 'ebb78cda893ca7991e0c22588a63132b' 'db95aecdf2ccf3693fef5821cdcb7eba' '5745bb8d0b254abb7a3528c66e03b0f9') diff --git a/community/libvirt/openbsd-netcat-default.patch b/community/libvirt/openbsd-netcat-default.patch index 8a0d9aec8..29f05b34f 100644 --- a/community/libvirt/openbsd-netcat-default.patch +++ b/community/libvirt/openbsd-netcat-default.patch @@ -1,7 +1,7 @@ -diff -wbBur libvirt-0.9.2/src/qemu/qemu_migration.c libvirt-0.9.2.my/src/qemu/qemu_migration.c ---- libvirt-0.9.2/src/qemu/qemu_migration.c 2011-06-06 06:47:32.000000000 +0400 -+++ libvirt-0.9.2.my/src/qemu/qemu_migration.c 2011-06-06 18:27:38.000000000 +0400 -@@ -1770,7 +1770,7 @@ +diff -wbBur libvirt-0.9.3/src/qemu/qemu_migration.c libvirt-0.9.3.my/src/qemu/qemu_migration.c +--- libvirt-0.9.3/src/qemu/qemu_migration.c 2011-07-04 06:45:14.000000000 +0400 ++++ libvirt-0.9.3.my/src/qemu/qemu_migration.c 2011-07-04 15:03:15.000000000 +0400 +@@ -1763,7 +1763,7 @@ ret = qemuMonitorMigrateToUnix(priv->mon, background_flags, unixfile); } else if (qemuCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATE_QEMU_EXEC)) { @@ -10,15 +10,27 @@ diff -wbBur libvirt-0.9.2/src/qemu/qemu_migration.c libvirt-0.9.2.my/src/qemu/qe ret = qemuMonitorMigrateToCommand(priv->mon, QEMU_MONITOR_MIGRATE_BACKGROUND, args); } else { ret = -1; -diff -wbBur libvirt-0.9.2/src/remote/remote_driver.c libvirt-0.9.2.my/src/remote/remote_driver.c ---- libvirt-0.9.2/src/remote/remote_driver.c 2011-06-06 04:15:12.000000000 +0400 -+++ libvirt-0.9.2.my/src/remote/remote_driver.c 2011-06-06 18:27:52.000000000 +0400 -@@ -774,7 +774,7 @@ - virCommandAddArgList(cmd, "-T", "-o", "BatchMode=yes", "-e", - "none", NULL); - } -- virCommandAddArgList(cmd, priv->hostname, netcat ? netcat : "nc", -+ virCommandAddArgList(cmd, priv->hostname, netcat ? netcat : "nc.openbsd", - "-U", (sockname ? sockname : - (flags & VIR_CONNECT_RO - ? LIBVIRTD_PRIV_UNIX_SOCKET_RO +diff -wbBur libvirt-0.9.3/src/remote/remote_driver.c libvirt-0.9.3.my/src/remote/remote_driver.c +--- libvirt-0.9.3/src/remote/remote_driver.c 2011-07-01 10:59:10.000000000 +0400 ++++ libvirt-0.9.3.my/src/remote/remote_driver.c 2011-07-04 15:03:32.000000000 +0400 +@@ -571,7 +571,7 @@ + command, + username, + no_tty, +- netcat ? netcat : "nc", ++ netcat ? netcat : "nc.openbsd", + sockname))) + goto failed; + +diff -wbBur libvirt-0.9.3/src/rpc/virnetsocket.c libvirt-0.9.3.my/src/rpc/virnetsocket.c +--- libvirt-0.9.3/src/rpc/virnetsocket.c 2011-07-01 10:59:10.000000000 +0400 ++++ libvirt-0.9.3.my/src/rpc/virnetsocket.c 2011-07-04 15:03:00.000000000 +0400 +@@ -597,7 +597,7 @@ + virCommandAddArgList(cmd, "-T", "-o", "BatchMode=yes", + "-e", "none", NULL); + virCommandAddArgList(cmd, nodename, +- netcat ? netcat : "nc", ++ netcat ? netcat : "nc.openbsd", + "-U", path, NULL); + + return virNetSocketNewConnectCommand(cmd, retsock); diff --git a/community/libzen/PKGBUILD b/community/libzen/PKGBUILD index dcbb073b8..26c4a07da 100644 --- a/community/libzen/PKGBUILD +++ b/community/libzen/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 45012 2011-04-14 09:10:57Z spupykin $ +# $Id: PKGBUILD 50993 2011-07-04 11:24:03Z spupykin $ # Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com> # Contributor: hydro <hydro@freenet.de> pkgname=libzen -pkgver=0.4.19 +pkgver=0.4.20 pkgrel=1 pkgdesc="shared library for libmediainfo and mediainfo" arch=('i686' 'x86_64') @@ -13,28 +13,28 @@ depends=('gcc-libs') makedepends=('libtool' 'automake' 'autoconf') options=('!libtool') source=(http://downloads.sourceforge.net/zenlib/${pkgname}_${pkgver}.tar.bz2) -md5sums=('0deabb701564f2e616a7ee6dd71599a1') +md5sums=('8211cc2ca8500c6af14600363be064d5') build() { cd $srcdir/ZenLib/Project/GNU/Library - sh ./autogen ./configure --prefix=/usr --enable-shared make clean + sed -i '1,1i#include <stdlib.h>' ../../../Source/ZenLib/Thread.h make - make DESTDIR=$pkgdir install +} +package() { + cd $srcdir/ZenLib/Project/GNU/Library + make DESTDIR=$pkgdir install install -dm 755 $pkgdir/usr/include/ZenLib install -m 644 $srcdir/ZenLib/Source/ZenLib/*.h $pkgdir/usr/include/ZenLib - for i in Base64 HTTP_Client Format/Html Format/Http TinyXml; do install -dm 755 $pkgdir/usr/include/ZenLib/$i install -m 644 $srcdir/ZenLib/Source/ZenLib/$i/*.h $pkgdir/usr/include/ZenLib/$i done - install -dm 755 $pkgdir/usr/lib/pkgconfig install -m 644 $srcdir/ZenLib/Project/GNU/Library/libzen.pc $pkgdir/usr/lib/pkgconfig sed -i -e 's|Version: |Version: '$pkgver'|g' $pkgdir/usr/lib/pkgconfig/libzen.pc - install -D -m 644 $srcdir/ZenLib/License.txt $pkgdir/usr/share/licenses/libzen/License.txt } diff --git a/community/mediainfo-gui/PKGBUILD b/community/mediainfo-gui/PKGBUILD index a34ce63fa..4ba3d0ad9 100644 --- a/community/mediainfo-gui/PKGBUILD +++ b/community/mediainfo-gui/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 45015 2011-04-14 09:11:31Z spupykin $ +# $Id: PKGBUILD 51008 2011-07-04 11:43:50Z spupykin $ # Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com> # Maintainer: hydro <hydro@freenet.de> pkgname=mediainfo-gui -pkgver=0.7.43 +pkgver=0.7.45 pkgrel=1 pkgdesc="GUI for mediainfo" arch=('i686' 'x86_64') @@ -13,13 +13,17 @@ depends=('libmediainfo>=0.7.35' 'wxgtk') makedepends=('libtool' 'automake' 'autoconf') install=mediainfo-gui.install source=(http://downloads.sourceforge.net/mediainfo/mediainfo_${pkgver}.tar.bz2) -md5sums=('a1c61fb1385e22dc762dad33b7f37681') +md5sums=('8b8287dcc6d9805a1ba5209d99727ffb') build() { cd $srcdir/MediaInfo/Project/GNU/GUI sh ./autogen ./configure --prefix=/usr make +} + +package() { + cd $srcdir/MediaInfo/Project/GNU/GUI make DESTDIR=$pkgdir install install -D -m 644 $srcdir/MediaInfo/Source/Ressource/Image/MediaInfo.png \ $pkgdir/usr/share/icons/hicolor/128x128/apps/mediainfo.png @@ -27,5 +31,4 @@ build() { $pkgdir/usr/share/pixmaps/mediainfo-gui.png install -D -m 644 $srcdir/MediaInfo/Project/GNU/GUI/mediainfo-gui.desktop \ $pkgdir/usr/share/applications/mediainfo-gui.desktop - } diff --git a/community/mediainfo/PKGBUILD b/community/mediainfo/PKGBUILD index bd1fd1343..92931bb18 100644 --- a/community/mediainfo/PKGBUILD +++ b/community/mediainfo/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 46857 2011-05-13 08:16:10Z jelle $ +# $Id: PKGBUILD 51003 2011-07-04 11:42:54Z spupykin $ # Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com> # Maintainer: hydro <hydro@freenet.de> pkgname=mediainfo -pkgver=0.7.44 +pkgver=0.7.45 pkgrel=1 pkgdesc="supplies technical and tag information about a video or audio file" arch=('i686' 'x86_64') @@ -12,7 +12,7 @@ license=('GPL') depends=('libmediainfo>=0.7.35') makedepends=('libtool' 'automake' 'autoconf') source=(http://downloads.sourceforge.net/mediainfo/${pkgname}_${pkgver}.tar.bz2) -md5sums=('ed89fcc565ac38065bcb48e13efea5c6') +md5sums=('8b8287dcc6d9805a1ba5209d99727ffb') build() { cd $srcdir/MediaInfo/Project/GNU/CLI diff --git a/community/mongodb/PKGBUILD b/community/mongodb/PKGBUILD index dde0f9f69..d7b701df5 100644 --- a/community/mongodb/PKGBUILD +++ b/community/mongodb/PKGBUILD @@ -4,7 +4,7 @@ pkgname=mongodb pkgver=1.8.2 -pkgrel=2 +pkgrel=4 pkgdesc='A high-performance, open source, schema-free document-oriented database.' arch=('i686' 'x86_64') url='http://www.mongodb.org' diff --git a/community/mongodb/add-js185-support-to-SConstruct.diff b/community/mongodb/add-js185-support-to-SConstruct.diff new file mode 100644 index 000000000..c621d00cb --- /dev/null +++ b/community/mongodb/add-js185-support-to-SConstruct.diff @@ -0,0 +1,12 @@ +--- SConstruct.original 2011-07-05 14:23:46.334748007 +0000 ++++ SConstruct 2011-07-05 14:26:15.729533840 +0000 +@@ -208,6 +208,9 @@ + justClientLib = (COMMAND_LINE_TARGETS == ['mongoclient']) + + env = Environment( MSVS_ARCH=msarch , tools = ["default", "gch"], toolpath = '.' ) ++ ++env.ParseConfig('pkg-config --cflags --libs mozjs185') ++ + if has_option( "cxx" ): + env["CC"] = get_option( "cxx" ) + env["CXX"] = get_option( "cxx" ) diff --git a/community/mongodb/mongodb-1.8.0-spidermonkey-1.8.5-support.patch b/community/mongodb/mongodb-1.8.0-spidermonkey-1.8.5-support.patch new file mode 100644 index 000000000..46160450f --- /dev/null +++ b/community/mongodb/mongodb-1.8.0-spidermonkey-1.8.5-support.patch @@ -0,0 +1,1502 @@ +--- mongodb-src-r1.8.0/SConstruct.mozjs185~ 2011-03-16 16:33:30.000000000 +0100 ++++ mongodb-src-r1.8.0/SConstruct 2011-04-01 22:16:43.411100876 +0200 +@@ -671,7 +671,6 @@ if nix: + env.Append( CPPFLAGS="-fPIC -fno-strict-aliasing -ggdb -pthread -Wall -Wsign-compare -Wno-unknown-pragmas -Winvalid-pch" ) + # env.Append( " -Wconversion" ) TODO: this doesn't really work yet + if linux: +- env.Append( CPPFLAGS=" -Werror " ) + env.Append( CPPFLAGS=" -fno-builtin-memcmp " ) # glibc's memcmp is faster than gcc's + env.Append( CXXFLAGS=" -Wnon-virtual-dtor " ) + env.Append( LINKFLAGS=" -fPIC -pthread -rdynamic" ) +@@ -893,11 +892,11 @@ def doConfigure( myenv , needPcre=True , + if usesm: + + # see http://www.mongodb.org/pages/viewpageattachments.action?pageId=12157032 +- J = [ "mozjs" , "js", "js_static" ] ++ J = [ "mozjs185" , "js", "js_static" ] + if windows: + if msarch == "amd64": + if release: +- J = [ "js64r", "js", "mozjs" , "js_static" ] ++ J = [ "js64r", "js", "mozjs185" , "js_static" ] + else: + J = "js64d" + print( "looking for js64d.lib for spidermonkey. (available at mongodb.org prebuilt)" ); +@@ -905,14 +904,12 @@ def doConfigure( myenv , needPcre=True , + if not force32: + print( "Assuming a 32 bit build is desired" ) + if release: +- J = [ "js32r", "js", "mozjs" , "js_static" ] ++ J = [ "js32r", "js", "mozjs185" , "js_static" ] + else: +- J = [ "js32d", "js", "mozjs" , "js_static" ] ++ J = [ "js32d", "js", "mozjs185" , "js_static" ] + + myCheckLib( J , True ) + mozHeader = "js" +- if bigLibString(myenv).find( "mozjs" ) >= 0: +- mozHeader = "mozjs" + + if not conf.CheckHeader( mozHeader + "/jsapi.h" ): + if conf.CheckHeader( "jsapi.h" ): +@@ -921,6 +918,13 @@ def doConfigure( myenv , needPcre=True , + print( "no spider monkey headers!" ) + Exit(1) + ++ if conf.CheckFunc( 'JS_NewCompartmentAndGlobalObject' ): ++ myenv.Append( CPPDEFINES=[ "HAVE_COMPARTMENTS" ] ) ++ if conf.CheckFunc( 'JS_GetStringCharsAndLength' ): ++ myenv.Append( CPPDEFINES=[ "HAVE_JS_GET_STRING_CHARS_AND_LENGTH" ] ) ++ if conf.CheckFunc( 'JS_NewRegExpObjectNoStatics' ): ++ myenv.Append( CPPDEFINES=[ "JS_NEW_REG_EXP_OBJECT_NO_STATISTICS" ] ) ++ + if usev8: + if debugBuild: + myCheckLib( [ "v8_g" , "v8" ] , True ) +--- mongodb-src-r1.8.0/scripting/engine_spidermonkey.cpp.mozjs185~ 2011-03-16 16:33:30.000000000 +0100 ++++ mongodb-src-r1.8.0/scripting/engine_spidermonkey.cpp 2011-04-01 22:42:19.780233492 +0200 +@@ -192,8 +192,13 @@ namespace mongo { + } + + string toString( JSString * so ) { ++#ifdef HAVE_JS_GET_STRING_CHARS_AND_LENGTH ++ size_t srclen; ++ const jschar * s = JS_GetStringCharsAndLength( _context , so , &srclen ); ++#else + jschar * s = JS_GetStringChars( so ); + size_t srclen = JS_GetStringLength( so ); ++#endif + if( srclen == 0 ) + return ""; + +@@ -360,7 +365,7 @@ namespace mongo { + + case JSTYPE_OBJECT: { + JSObject * o = JSVAL_TO_OBJECT( val ); +- if ( ! o || o == JSVAL_NULL ) { ++ if ( ! o || o == (JSObject *)JSVAL_NULL ){ + b.appendNull( name ); + } + else if ( ! appendSpecialDBObject( this , b , name , val , o ) ) { +@@ -419,16 +424,15 @@ namespace mongo { + return true; + } + +- void addRoot( JSFunction * f , const char * name ); ++ void addRoot( JSFunction * f ); + + JSFunction * compileFunction( const char * code, JSObject * assoc = 0 ) { +- const char * gcName = "unknown"; +- JSFunction * f = _compileFunction( code , assoc , gcName ); +- //addRoot( f , gcName ); ++ JSFunction * f = _compileFunction( code , assoc ); ++ //addRoot( f ); + return f; + } + +- JSFunction * _compileFunction( const char * raw , JSObject * assoc , const char *& gcName ) { ++ JSFunction * _compileFunction( const char * raw , JSObject * assoc ) { + if ( ! assoc ) + assoc = JS_GetGlobalObject( _context ); + +@@ -447,7 +451,6 @@ namespace mongo { + if ( isSimpleStatement( s ) ) { + s = "return " + s; + } +- gcName = "cf anon"; + fname << "anon"; + return JS_CompileFunction( _context , assoc , fname.str().c_str() , 0 , 0 , s.c_str() , s.size() , "nofile_a" , 0 ); + } +@@ -488,7 +491,6 @@ namespace mongo { + log() << "compile failed for: " << raw << endl; + return 0; + } +- gcName = "cf normal"; + return func; + } + +@@ -630,7 +632,11 @@ namespace mongo { + flags++; + } + ++#ifdef JS_NEW_REG_EXP_OBJECT_NO_STATISTICS ++ JSObject * r = JS_NewRegExpObjectNoStatics( _context , (char*)e.regex() , strlen( e.regex() ) , flagNumber); ++#else + JSObject * r = JS_NewRegExpObject( _context , (char*)e.regex() , strlen( e.regex() ) , flagNumber ); ++#endif + assert( r ); + return OBJECT_TO_JSVAL( r ); + } +@@ -791,7 +797,7 @@ namespace mongo { + + BSONFieldIterator * it = (BSONFieldIterator*)JSVAL_TO_PRIVATE( *statep ); + if ( ! it ) { +- *statep = 0; ++ *statep = JSVAL_NULL; + return JS_TRUE; + } + +@@ -803,7 +809,7 @@ namespace mongo { + } + else { + delete it; +- *statep = 0; ++ *statep = JSVAL_NULL; + } + return JS_TRUE; + } +@@ -818,7 +824,7 @@ namespace mongo { + return JS_FALSE; + } + +- JSBool noaccess( JSContext *cx, JSObject *obj, jsval idval, jsval *vp) { ++ JSBool noaccess( JSContext *cx, JSObject *obj, jsid id, jsval *vp){ + BSONHolder * holder = GETHOLDER( cx , obj ); + if ( ! holder ) { + // in init code still +@@ -830,24 +836,37 @@ namespace mongo { + return JS_FALSE; + } + ++ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp) ++ JSBool strict_noaccess( JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp){ ++ return noaccess( cx , obj , id , vp ); ++ } ++ ++ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp, JSResolveOp) + JSClass bson_ro_class = { + "bson_ro_object" , JSCLASS_HAS_PRIVATE | JSCLASS_NEW_RESOLVE | JSCLASS_NEW_ENUMERATE , +- noaccess, noaccess, JS_PropertyStub, noaccess, +- (JSEnumerateOp)bson_enumerate, (JSResolveOp)(&resolveBSONField) , JS_ConvertStub, bson_finalize , ++ noaccess, noaccess, JS_PropertyStub, strict_noaccess, ++ (JSEnumerateOp)bson_enumerate, (JSResolveOp)resolveBSONField , JS_ConvertStub, bson_finalize , + JSCLASS_NO_OPTIONAL_MEMBERS + }; + ++#ifdef JSFUN_CONSTRUCTOR ++ JSBool bson_cons( JSContext* cx, uintN argc, jsval* vp ){ ++#else + JSBool bson_cons( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { ++#endif + cerr << "bson_cons : shouldn't be here!" << endl; + JS_ReportError( cx , "can't construct bson object" ); + return JS_FALSE; + } + + JSFunctionSpec bson_functions[] = { +- { 0 } ++ JS_FS_END + }; + +- JSBool bson_add_prop( JSContext *cx, JSObject *obj, jsval idval, jsval *vp) { ++ // FIXME: This won't build on spidermonkey < 1.8.5 (JSPropertyOp) ++ JSBool bson_add_prop( JSContext *cx, JSObject *obj, jsid id, jsval *vp){ ++ jsval idval; ++ JS_IdToValue( cx , id , &idval ); + BSONHolder * holder = GETHOLDER( cx , obj ); + if ( ! holder ) { + // static init +@@ -864,8 +883,10 @@ namespace mongo { + return JS_TRUE; + } + +- +- JSBool mark_modified( JSContext *cx, JSObject *obj, jsval idval, jsval *vp) { ++ // FIXME: This won't build on spidermonkey < 1.8.5 (JSPropertyOp) ++ JSBool mark_modified( JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp){ ++ jsval idval; ++ JS_IdToValue( cx , id , &idval ); + Convertor c(cx); + BSONHolder * holder = GETHOLDER( cx , obj ); + if ( !holder ) // needed when we're messing with DBRef.prototype +@@ -877,7 +898,10 @@ namespace mongo { + return JS_TRUE; + } + +- JSBool mark_modified_remove( JSContext *cx, JSObject *obj, jsval idval, jsval *vp) { ++ // FIXME: This won't build on spidermonkey < 1.8.5 (JSPropertyOp) ++ JSBool mark_modified_remove( JSContext *cx, JSObject *obj, jsid id, jsval *vp){ ++ jsval idval; ++ JS_IdToValue( cx , id , &idval ); + Convertor c(cx); + BSONHolder * holder = GETHOLDER( cx , obj ); + if ( holder->_inResolve ) +@@ -887,23 +911,26 @@ namespace mongo { + return JS_TRUE; + } + ++ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp, JSResolveOp) + JSClass bson_class = { + "bson_object" , JSCLASS_HAS_PRIVATE | JSCLASS_NEW_RESOLVE | JSCLASS_NEW_ENUMERATE , + bson_add_prop, mark_modified_remove, JS_PropertyStub, mark_modified, +- (JSEnumerateOp)bson_enumerate, (JSResolveOp)(&resolveBSONField) , JS_ConvertStub, bson_finalize , ++ (JSEnumerateOp)bson_enumerate, (JSResolveOp)resolveBSONField , JS_ConvertStub, bson_finalize , + JSCLASS_NO_OPTIONAL_MEMBERS + }; + ++ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp) + static JSClass global_class = { + "global", JSCLASS_GLOBAL_FLAGS, +- JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, ++ JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub, + JSCLASS_NO_OPTIONAL_MEMBERS + }; + + // --- global helpers --- + +- JSBool native_print( JSContext * cx , JSObject * obj , uintN argc, jsval *argv, jsval *rval ) { ++ JSBool native_print( JSContext * cx , uintN argc , jsval *vp ){ ++ jsval *argv = JS_ARGV( cx , vp); + stringstream ss; + Convertor c( cx ); + for ( uintN i=0; i<argc; i++ ) { +@@ -913,10 +940,13 @@ namespace mongo { + } + ss << "\n"; + Logstream::logLockless( ss.str() ); ++ JS_SET_RVAL( cx , vp , JSVAL_VOID ); + return JS_TRUE; + } + +- JSBool native_helper( JSContext *cx , JSObject *obj , uintN argc, jsval *argv , jsval *rval ) { ++ JSBool native_helper( JSContext *cx , uintN argc, jsval *vp){ ++ jsval *argv = JS_ARGV( cx , vp ); ++ JSObject *obj = JS_THIS_OBJECT( cx , vp ); + Convertor c(cx); + + NativeFunction func = (NativeFunction)((long long)c.getNumber( obj , "x" ) ); +@@ -942,35 +972,37 @@ namespace mongo { + } + + if ( out.isEmpty() ) { +- *rval = JSVAL_VOID; ++ JS_SET_RVAL( cx , vp , JSVAL_VOID ); + } + else { +- *rval = c.toval( out.firstElement() ); ++ JS_SET_RVAL( cx , vp , c.toval( out.firstElement() ) ); + } + + return JS_TRUE; + } + +- JSBool native_load( JSContext *cx , JSObject *obj , uintN argc, jsval *argv , jsval *rval ); ++ JSBool native_load( JSContext *cx , uintN argc, jsval *vp ); + +- JSBool native_gc( JSContext *cx , JSObject *obj , uintN argc, jsval *argv , jsval *rval ) { ++ JSBool native_gc( JSContext *cx , uintN argc, jsval *vp ){ + JS_GC( cx ); ++ JS_SET_RVAL( cx , vp , JSVAL_VOID ); + return JS_TRUE; + } + + JSFunctionSpec globalHelpers[] = { +- { "print" , &native_print , 0 , 0 , 0 } , +- { "nativeHelper" , &native_helper , 1 , 0 , 0 } , +- { "load" , &native_load , 1 , 0 , 0 } , +- { "gc" , &native_gc , 1 , 0 , 0 } , +- { 0 , 0 , 0 , 0 , 0 } ++ JS_FS( "print" , &native_print , 0 , JSFUN_FAST_NATIVE ) , ++ JS_FS( "nativeHelper" , &native_helper , 1 , JSFUN_FAST_NATIVE ) , ++ JS_FS( "load" , &native_load , 1 , JSFUN_FAST_NATIVE ) , ++ JS_FS( "gc" , &native_gc , 1 , JSFUN_FAST_NATIVE ) , ++ JS_FS_END + }; + + // ----END global helpers ---- + + // Object helpers + +- JSBool bson_get_size(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { ++ JSBool bson_get_size(JSContext *cx, uintN argc, jsval *vp){ ++ jsval *argv = JS_ARGV( cx , vp ); + if ( argc != 1 || !JSVAL_IS_OBJECT( argv[ 0 ] ) ) { + JS_ReportError( cx , "bsonsize requires one valid object" ); + return JS_FALSE; +@@ -979,7 +1011,7 @@ namespace mongo { + Convertor c(cx); + + if ( argv[0] == JSVAL_VOID || argv[0] == JSVAL_NULL ) { +- *rval = c.toval( 0.0 ); ++ JS_SET_RVAL( cx , vp , c.toval( 0.0 ) ); + return JS_TRUE; + } + +@@ -999,18 +1031,21 @@ namespace mongo { + size = temp.objsize(); + } + +- *rval = c.toval( size ); ++ JS_SET_RVAL( cx , vp , c.toval( size ) ); + return JS_TRUE; + } + + JSFunctionSpec objectHelpers[] = { +- { "bsonsize" , &bson_get_size , 1 , 0 , 0 } , +- { 0 , 0 , 0 , 0 , 0 } ++ JS_FS( "bsonsize" , &bson_get_size , 1 , JSFUN_FAST_NATIVE ) , ++ JS_FS_END + }; + + // end Object helpers + +- JSBool resolveBSONField( JSContext *cx, JSObject *obj, jsval id, uintN flags, JSObject **objp ) { ++ // FIXME: This won't build on spidermonkey < 1.8.5 (JSResolveOp) ++ JSBool resolveBSONField( JSContext *cx, JSObject *obj, jsid id, uintN flags, JSObject **objp ){ ++ jsval idval; ++ JS_IdToValue( cx , id , &idval ); + assert( JS_EnterLocalRootScope( cx ) ); + Convertor c( cx ); + +@@ -1023,7 +1058,7 @@ namespace mongo { + } + holder->check(); + +- string s = c.toString( id ); ++ string s = c.toString( idval ); + + BSONElement e = holder->_obj[ s.c_str() ]; + +@@ -1139,9 +1174,15 @@ namespace mongo { + //JS_SetVersion( _context , JSVERSION_LATEST); TODO + JS_SetErrorReporter( _context , errorReporter ); + ++#ifdef HAVE_COMPARTMENTS ++ _global = JS_NewCompartmentAndGlobalObject( _context , &global_class , NULL); ++ massert( 13442 , "JS_NewCompartmentAndGlobalObject failed for global" , _global ); ++ _call = JS_EnterCrossCompartmentCall( _context , _global); ++#else + _global = JS_NewObject( _context , &global_class, NULL, NULL); + massert( 10432 , "JS_NewObject failed for global" , _global ); + JS_SetGlobalObject( _context , _global ); ++#endif + massert( 10433 , "js init failed" , JS_InitStandardClasses( _context , _global ) ); + + JS_SetOptions( _context , JS_GetOptions( _context ) | JSOPTION_VAROBJFIX ); +@@ -1159,13 +1200,14 @@ namespace mongo { + smlock; + uassert( 10223 , "deleted SMScope twice?" , _convertor ); + +- for ( list<void*>::iterator i=_roots.begin(); i != _roots.end(); i++ ) { +- JS_RemoveRoot( _context , *i ); ++ for ( list<JSObject*>::iterator i=_roots.begin(); i != _roots.end(); i++ ){ ++ JSObject * obj = (JSObject *)*i; ++ JS_RemoveObjectRoot( _context , &obj ); + } + _roots.clear(); + + if ( _this ) { +- JS_RemoveRoot( _context , &_this ); ++ JS_RemoveObjectRoot( _context , &_this ); + _this = 0; + } + +@@ -1174,6 +1216,13 @@ namespace mongo { + _convertor = 0; + } + ++#ifdef HAVE_COMPARTMENTS ++ if ( _call ) { ++ JS_LeaveCrossCompartmentCall( _call ); ++ _call = 0; ++ } ++#endif ++ + if ( _context ) { + // This is expected to reclaim _global as well. + JS_DestroyContext( _context ); +@@ -1187,16 +1236,16 @@ namespace mongo { + assert( _convertor ); + return; + if ( _this ) { +- JS_RemoveRoot( _context , &_this ); ++ JS_RemoveObjectRoot( _context , &_this ); + _this = 0; + } + currentScope.reset( this ); + _error = ""; + } + +- void addRoot( void * root , const char * name ) { +- JS_AddNamedRoot( _context , root , name ); +- _roots.push_back( root ); ++ void addRoot( JSObject * obj ){ ++ JS_AddObjectRoot( _context , &obj ); ++ _roots.push_back( obj ); + } + + void init( const BSONObj * data ) { +@@ -1336,13 +1385,13 @@ namespace mongo { + void setThis( const BSONObj * obj ) { + smlock; + if ( _this ) { +- JS_RemoveRoot( _context , &_this ); ++ JS_RemoveObjectRoot( _context , &_this ); + _this = 0; + } + + if ( obj ) { + _this = _convertor->toJSObject( obj ); +- JS_AddNamedRoot( _context , &_this , "scope this" ); ++ JS_AddObjectRoot( _context , &_this ); + } + } + +@@ -1402,7 +1451,7 @@ namespace mongo { + spec->start = boost::posix_time::microsec_clock::local_time(); + spec->count = 0; + JS_SetContextPrivate( _context, (void*)spec ); +-#if defined(SM181) && !defined(XULRUNNER190) ++#if JS_VERSION >= 181 && !defined(XULRUNNER190) + JS_SetOperationCallback( _context, _interrupt ); + #else + JS_SetBranchCallback( _context, interrupt ); +@@ -1412,7 +1461,7 @@ namespace mongo { + + void uninstallInterrupt( int timeoutMs ) { + if ( timeoutMs != 0 || ScriptEngine::haveCheckInterruptCallback() ) { +-#if defined(SM181) && !defined(XULRUNNER190) ++#if JS_VERSION >= 181 && !defined(XULRUNNER190) + JS_SetOperationCallback( _context , 0 ); + #else + JS_SetBranchCallback( _context, 0 ); +@@ -1548,9 +1597,12 @@ namespace mongo { + + JSObject * _global; + JSObject * _this; ++#ifdef HAVE_COMPARTMENTS ++ JSCrossCompartmentCall * _call; ++#endif + + string _error; +- list<void*> _roots; ++ list<JSObject*> _roots; + + bool _externalSetup; + bool _localConnect; +@@ -1579,7 +1631,8 @@ namespace mongo { + } + } + +- JSBool native_load( JSContext *cx , JSObject *obj , uintN argc, jsval *argv , jsval *rval ) { ++ JSBool native_load( JSContext *cx , uintN argc, jsval *vp ){ ++ jsval *argv = JS_ARGV( cx , vp ); + Convertor c(cx); + + Scope * s = currentScope.get(); +@@ -1594,6 +1647,7 @@ namespace mongo { + } + } + ++ JS_SET_RVAL( cx , vp , JSVAL_VOID ); + return JS_TRUE; + } + +@@ -1633,7 +1687,7 @@ namespace mongo { + return new SMScope(); + } + +- void Convertor::addRoot( JSFunction * f , const char * name ) { ++ void Convertor::addRoot( JSFunction * f ){ + if ( ! f ) + return; + +@@ -1642,7 +1696,7 @@ namespace mongo { + + JSObject * o = JS_GetFunctionObject( f ); + assert( o ); +- scope->addRoot( &o , name ); ++ scope->addRoot( o ); + } + + } +--- mongodb-src-r1.8.0/scripting/engine_spidermonkey.h.mozjs185~ 2011-03-16 16:33:30.000000000 +0100 ++++ mongodb-src-r1.8.0/scripting/engine_spidermonkey.h 2011-04-01 21:29:15.697678508 +0200 +@@ -21,6 +21,9 @@ + + // START inc hacking + ++#undef malloc ++#undef realloc ++ + #if defined( MOZJS ) + + #define MOZILLA_1_8_BRANCH +@@ -55,6 +58,9 @@ + + #endif + ++#define malloc MONGO_malloc ++#define realloc MONGO_realloc ++ + // END inc hacking + + // -- SM 1.6 hacks --- +@@ -81,6 +87,10 @@ JSBool JS_CStringsAreUTF8() { + #define SM181 + #endif + ++#ifndef JSFUN_FAST_NATIVE ++#define JSFUN_FAST_NATIVE 0 ++#endif ++ + namespace mongo { + + class SMScope; +@@ -104,7 +114,7 @@ namespace mongo { + extern boost::thread_specific_ptr<SMScope> currentScope; + + // bson +- JSBool resolveBSONField( JSContext *cx, JSObject *obj, jsval id, uintN flags, JSObject **objp ); ++ JSBool resolveBSONField( JSContext *cx, JSObject *obj, jsid id, uintN flags, JSObject **objp ); + + + // mongo +--- mongodb-src-r1.8.0/scripting/sm_db.cpp.mozjs185~ 2011-03-16 16:33:30.000000000 +0100 ++++ mongodb-src-r1.8.0/scripting/sm_db.cpp 2011-04-01 22:51:59.701652521 +0200 +@@ -79,13 +79,25 @@ namespace mongo { + return holder->get(); + } + ++#ifdef JSFUN_CONSTRUCTOR ++ JSBool internal_cursor_constructor( JSContext* cx, uintN argc, jsval* vp ){ ++ JSObject *obj = JS_NewObjectForConstructor( cx , vp ); ++ if( ! obj ) { ++ JS_ReportError( cx , "Failed to create 'this' object" ); ++ return JS_FALSE; ++ } ++#else + JSBool internal_cursor_constructor( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { ++#endif + uassert( 10236 , "no args to internal_cursor_constructor" , argc == 0 ); + assert( JS_SetPrivate( cx , obj , 0 ) ); // just for safety ++#ifdef JSFUN_CONSTRUCTOR ++ JS_SET_RVAL( cx , vp , OBJECT_TO_JSVAL( obj ) ); ++#endif + return JS_TRUE; + } + +- void internal_cursor_finalize( JSContext * cx , JSObject * obj ) { ++ void internal_cursor_finalize( JSContext * cx, JSObject * obj ){ + CursorHolder * holder = (CursorHolder*)JS_GetPrivate( cx , obj ); + if ( holder ) { + delete holder; +@@ -93,10 +105,11 @@ namespace mongo { + } + } + +- JSBool internal_cursor_hasNext(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { ++ JSBool internal_cursor_hasNext(JSContext *cx , uintN argc , jsval *vp) { ++ JSObject* obj = JS_THIS_OBJECT( cx , vp ); + DBClientCursor *cursor = getCursor( cx, obj ); + try { +- *rval = cursor->more() ? JSVAL_TRUE : JSVAL_FALSE; ++ JS_SET_RVAL( cx , vp , cursor->more() ? JSVAL_TRUE : JSVAL_FALSE ); + } + catch ( std::exception& e ) { + JS_ReportError( cx , e.what() ); +@@ -105,14 +118,16 @@ namespace mongo { + return JS_TRUE; + } + +- JSBool internal_cursor_objsLeftInBatch(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { ++ JSBool internal_cursor_objsLeftInBatch(JSContext *cx, uintN argc, jsval *vp) { ++ JSObject* obj = JS_THIS_OBJECT( cx , vp ); + DBClientCursor *cursor = getCursor( cx, obj ); + Convertor c(cx); +- *rval = c.toval((double) cursor->objsLeftInBatch() ); ++ JS_SET_RVAL( cx , vp , c.toval((double) cursor->objsLeftInBatch()) ); + return JS_TRUE; + } + +- JSBool internal_cursor_next(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { ++ JSBool internal_cursor_next(JSContext *cx, uintN argc, jsval *vp) { ++ JSObject* obj = JS_THIS_OBJECT( cx , vp ); + DBClientCursor *cursor = getCursor( cx, obj ); + + BSONObj n; +@@ -131,20 +146,21 @@ namespace mongo { + } + + Convertor c(cx); +- *rval = c.toval( &n ); ++ JS_SET_RVAL( cx , vp , c.toval( &n ) ); + return JS_TRUE; + } + + JSFunctionSpec internal_cursor_functions[] = { +- { "hasNext" , internal_cursor_hasNext , 0 , JSPROP_READONLY | JSPROP_PERMANENT, 0 } , +- { "objsLeftInBatch" , internal_cursor_objsLeftInBatch , 0 , JSPROP_READONLY | JSPROP_PERMANENT, 0 } , +- { "next" , internal_cursor_next , 0 , JSPROP_READONLY | JSPROP_PERMANENT, 0 } , +- { 0 } ++ JS_FS( "hasNext" , internal_cursor_hasNext , 0 , JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , ++ JS_FS( "objsLeftInBatch" , internal_cursor_objsLeftInBatch , 0 , JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , ++ JS_FS( "next" , internal_cursor_next , 0 , JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , ++ JS_FS_END + }; + ++ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp) + JSClass internal_cursor_class = { + "InternalCursor" , JSCLASS_HAS_PRIVATE , +- JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, ++ JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_EnumerateStub, JS_ResolveStub , JS_ConvertStub, internal_cursor_finalize, + JSCLASS_NO_OPTIONAL_MEMBERS + }; +@@ -157,7 +173,16 @@ namespace mongo { + throw -1; + } + ++#ifdef JSFUN_CONSTRUCTOR ++ JSBool mongo_local_constructor( JSContext* cx, uintN argc, jsval* vp ){ ++ JSObject *obj = JS_NewObjectForConstructor( cx , vp ); ++ if( ! obj ) { ++ JS_ReportError( cx , "Failed to create 'this' object" ); ++ return JS_FALSE; ++ } ++#else + JSBool mongo_local_constructor( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { ++#endif + Convertor c( cx ); + + shared_ptr< DBClientWithCommands > client( createDirectClient() ); +@@ -166,10 +191,23 @@ namespace mongo { + jsval host = c.toval( "EMBEDDED" ); + assert( JS_SetProperty( cx , obj , "host" , &host ) ); + ++#ifdef JSFUN_CONSTRUCTOR ++ JS_SET_RVAL( cx , vp , OBJECT_TO_JSVAL( obj ) ); ++#endif + return JS_TRUE; + } + ++#ifdef JSFUN_CONSTRUCTOR ++ JSBool mongo_external_constructor( JSContext* cx, uintN argc, jsval* vp ){ ++ jsval *argv = JS_ARGV( cx , vp ); ++ JSObject *obj = JS_NewObjectForConstructor( cx , vp ); ++ if( ! obj ) { ++ JS_ReportError( cx , "Failed to create 'this' object" ); ++ return JS_FALSE; ++ } ++#else + JSBool mongo_external_constructor( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { ++#endif + Convertor c( cx ); + + smuassert( cx , "0 or 1 args to Mongo" , argc <= 1 ); +@@ -197,6 +235,9 @@ namespace mongo { + assert( JS_SetPrivate( cx , obj , (void*)( new shared_ptr< DBClientWithCommands >( conn ) ) ) ); + jsval host_val = c.toval( host.c_str() ); + assert( JS_SetProperty( cx , obj , "host" , &host_val ) ); ++#ifdef JSFUN_CONSTRUCTOR ++ JS_SET_RVAL( cx , vp , OBJECT_TO_JSVAL( obj ) ); ++#endif + return JS_TRUE; + + } +@@ -215,14 +256,18 @@ namespace mongo { + } + } + ++ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp) + JSClass mongo_class = { + "Mongo" , JSCLASS_HAS_PRIVATE | JSCLASS_NEW_RESOLVE , +- JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, ++ JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_EnumerateStub, JS_ResolveStub , JS_ConvertStub, mongo_finalize, + JSCLASS_NO_OPTIONAL_MEMBERS + }; + +- JSBool mongo_find(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { ++ JSBool mongo_find(JSContext *cx, uintN argc, jsval *vp) { ++ JSObject* obj = JS_THIS_OBJECT( cx , vp ); ++ jsval* argv = JS_ARGV( cx , vp ); ++ + smuassert( cx , "mongo_find needs 7 args" , argc == 7 ); + shared_ptr< DBClientWithCommands > * connHolder = (shared_ptr< DBClientWithCommands >*)JS_GetPrivate( cx , obj ); + smuassert( cx , "no connection!" , connHolder && connHolder->get() ); +@@ -252,7 +297,8 @@ namespace mongo { + JSObject * mycursor = JS_NewObject( cx , &internal_cursor_class , 0 , 0 ); + CHECKNEWOBJECT( mycursor, cx, "internal_cursor_class" ); + assert( JS_SetPrivate( cx , mycursor , new CursorHolder( cursor, *connHolder ) ) ); +- *rval = OBJECT_TO_JSVAL( mycursor ); ++ ++ JS_SET_RVAL( cx , vp , OBJECT_TO_JSVAL( mycursor )); + return JS_TRUE; + } + catch ( ... ) { +@@ -261,7 +307,10 @@ namespace mongo { + } + } + +- JSBool mongo_update(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { ++ JSBool mongo_update(JSContext *cx, uintN argc, jsval *vp) { ++ JSObject* obj = JS_THIS_OBJECT( cx , vp ); ++ jsval* argv = JS_ARGV( cx , vp ); ++ + smuassert( cx , "mongo_find needs at elast 3 args" , argc >= 3 ); + smuassert( cx , "2nd param to update has to be an object" , JSVAL_IS_OBJECT( argv[1] ) ); + smuassert( cx , "3rd param to update has to be an object" , JSVAL_IS_OBJECT( argv[2] ) ); +@@ -282,6 +331,7 @@ namespace mongo { + + try { + conn->update( ns , c.toObject( argv[1] ) , c.toObject( argv[2] ) , upsert , multi ); ++ JS_SET_RVAL( cx , vp , JSVAL_VOID ); + return JS_TRUE; + } + catch ( ... ) { +@@ -290,7 +340,10 @@ namespace mongo { + } + } + +- JSBool mongo_insert(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { ++ JSBool mongo_insert(JSContext *cx, uintN argc, jsval *vp) { ++ JSObject* obj = JS_THIS_OBJECT( cx , vp ); ++ jsval* argv = JS_ARGV( cx , vp ); ++ + smuassert( cx , "mongo_insert needs 2 args" , argc == 2 ); + smuassert( cx , "2nd param to insert has to be an object" , JSVAL_IS_OBJECT( argv[1] ) ); + +@@ -310,6 +363,7 @@ namespace mongo { + // TODO: add _id + + conn->insert( ns , o ); ++ JS_SET_RVAL( cx, vp, JSVAL_VOID ); + return JS_TRUE; + } + catch ( std::exception& e ) { +@@ -325,7 +379,10 @@ namespace mongo { + } + } + +- JSBool mongo_remove(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { ++ JSBool mongo_remove(JSContext *cx, uintN argc, jsval *vp) { ++ JSObject* obj = JS_THIS_OBJECT( cx , vp ); ++ jsval* argv = JS_ARGV( cx , vp ); ++ + smuassert( cx , "mongo_remove needs 2 or 3 arguments" , argc == 2 || argc == 3 ); + smuassert( cx , "2nd param to insert has to be an object" , JSVAL_IS_OBJECT( argv[1] ) ); + +@@ -346,6 +403,7 @@ namespace mongo { + + try { + conn->remove( ns , o , justOne ); ++ JS_SET_RVAL( cx , vp , JSVAL_VOID ); + return JS_TRUE; + } + catch ( std::exception& e ) { +@@ -361,16 +419,26 @@ namespace mongo { + } + + JSFunctionSpec mongo_functions[] = { +- { "find" , mongo_find , 0 , JSPROP_READONLY | JSPROP_PERMANENT, 0 } , +- { "update" , mongo_update , 0 , JSPROP_READONLY | JSPROP_PERMANENT, 0 } , +- { "insert" , mongo_insert , 0 , JSPROP_READONLY | JSPROP_PERMANENT, 0 } , +- { "remove" , mongo_remove , 0 , JSPROP_READONLY | JSPROP_PERMANENT, 0 } , +- { 0 } ++ JS_FS( "find" , mongo_find , 0 , JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , ++ JS_FS( "update" , mongo_update , 0 , JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , ++ JS_FS( "insert" , mongo_insert , 0 , JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , ++ JS_FS( "remove" , mongo_remove , 0 , JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , ++ JS_FS_END + }; + + // ------------- db_collection ------------- + ++#ifdef JSFUN_CONSTRUCTOR ++ JSBool db_collection_constructor( JSContext* cx, uintN argc, jsval* vp ){ ++ jsval *argv = JS_ARGV( cx , vp ); ++ JSObject *obj = JS_NewObjectForConstructor( cx , vp ); ++ if( ! obj ) { ++ JS_ReportError( cx , "Failed to create 'this' object" ); ++ return JS_FALSE; ++ } ++#else + JSBool db_collection_constructor( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { ++#endif + smuassert( cx , "db_collection_constructor wrong args" , argc == 4 ); + assert( JS_SetProperty( cx , obj , "_mongo" , &(argv[0]) ) ); + assert( JS_SetProperty( cx , obj , "_db" , &(argv[1]) ) ); +@@ -382,16 +450,22 @@ namespace mongo { + JS_ReportError( cx , "can't use sharded collection from db.eval" ); + return JS_FALSE; + } +- ++#ifdef JSFUN_CONSTRUCTOR ++ JS_SET_RVAL( cx , vp , OBJECT_TO_JSVAL( obj ) ); ++#endif + return JS_TRUE; + } + +- JSBool db_collection_resolve( JSContext *cx, JSObject *obj, jsval id, uintN flags, JSObject **objp ) { ++ // FIXME: This won't build on spidermonkey < 1.8.5 (JSResolveOp) ++ JSBool db_collection_resolve( JSContext *cx, JSObject *obj, jsid id, uintN flags, JSObject **objp ){ ++ jsval idval; ++ JS_IdToValue( cx , id , &idval ); ++ + if ( flags & JSRESOLVE_ASSIGNING ) + return JS_TRUE; + + Convertor c( cx ); +- string collname = c.toString( id ); ++ string collname = c.toString( idval ); + + if ( isSpecialName( collname ) ) + return JS_TRUE; +@@ -419,10 +493,11 @@ namespace mongo { + return JS_TRUE; + } + ++ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp, JSResolveOp) + JSClass db_collection_class = { + "DBCollection" , JSCLASS_HAS_PRIVATE | JSCLASS_NEW_RESOLVE , +- JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, +- JS_EnumerateStub, (JSResolveOp)(&db_collection_resolve) , JS_ConvertStub, JS_FinalizeStub, ++ JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, ++ JS_EnumerateStub, (JSResolveOp)db_collection_resolve , JS_ConvertStub, JS_FinalizeStub, + JSCLASS_NO_OPTIONAL_MEMBERS + }; + +@@ -454,15 +529,32 @@ namespace mongo { + // -------------- DB --------------- + + ++#ifdef JSFUN_CONSTRUCTOR ++ JSBool db_constructor( JSContext* cx, uintN argc, jsval* vp ){ ++ jsval *argv = JS_ARGV( cx , vp ); ++ JSObject *obj = JS_NewObjectForConstructor( cx , vp ); ++ if( ! obj ) { ++ JS_ReportError( cx , "Failed to create 'this' object" ); ++ return JS_FALSE; ++ } ++#else + JSBool db_constructor( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { ++#endif + smuassert( cx, "wrong number of arguments to DB" , argc == 2 ); + assert( JS_SetProperty( cx , obj , "_mongo" , &(argv[0]) ) ); + assert( JS_SetProperty( cx , obj , "_name" , &(argv[1]) ) ); + ++#ifdef JSFUN_CONSTRUCTOR ++ JS_SET_RVAL( cx , vp , OBJECT_TO_JSVAL( obj ) ); ++#endif ++ + return JS_TRUE; + } + +- JSBool db_resolve( JSContext *cx, JSObject *obj, jsval id, uintN flags, JSObject **objp ) { ++ // FIXME: This won't build on spidermonkey < 1.8.5 (JSResolveOp) ++ JSBool db_resolve( JSContext *cx, JSObject *obj, jsid id, uintN flags, JSObject **objp ){ ++ jsval idval; ++ JS_IdToValue( cx , id , &idval ); + if ( flags & JSRESOLVE_ASSIGNING ) + return JS_TRUE; + +@@ -471,7 +563,7 @@ namespace mongo { + if ( obj == c.getGlobalPrototype( "DB" ) ) + return JS_TRUE; + +- string collname = c.toString( id ); ++ string collname = c.toString( idval ); + + if ( isSpecialName( collname ) ) + return JS_TRUE; +@@ -489,17 +581,28 @@ namespace mongo { + return JS_TRUE; + } + ++ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp, JSResolveOp) + JSClass db_class = { + "DB" , JSCLASS_HAS_PRIVATE | JSCLASS_NEW_RESOLVE , +- JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, +- JS_EnumerateStub, (JSResolveOp)(&db_resolve) , JS_ConvertStub, JS_FinalizeStub, ++ JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, ++ JS_EnumerateStub, (JSResolveOp)db_resolve , JS_ConvertStub, JS_FinalizeStub, + JSCLASS_NO_OPTIONAL_MEMBERS + }; + + + // -------------- object id ------------- + ++#ifdef JSFUN_CONSTRUCTOR ++ JSBool object_id_constructor( JSContext* cx, uintN argc, jsval* vp ){ ++ jsval *argv = JS_ARGV( cx , vp ); ++ JSObject *obj = JS_NewObjectForConstructor( cx , vp ); ++ if( ! obj ) { ++ JS_ReportError( cx , "Failed to create 'this' object" ); ++ return JS_FALSE; ++ } ++#else + JSBool object_id_constructor( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { ++#endif + Convertor c( cx ); + + OID oid; +@@ -524,35 +627,48 @@ namespace mongo { + if ( ! JS_InstanceOf( cx , obj , &object_id_class , 0 ) ) { + obj = JS_NewObject( cx , &object_id_class , 0 , 0 ); + CHECKNEWOBJECT( obj, cx, "object_id_constructor" ); +- *rval = OBJECT_TO_JSVAL( obj ); + } + + jsval v = c.toval( oid.str().c_str() ); + assert( JS_SetProperty( cx , obj , "str" , &v ) ); + ++ JS_SET_RVAL( cx , vp , OBJECT_TO_JSVAL( obj ) ); + return JS_TRUE; + } + ++ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp) + JSClass object_id_class = { + "ObjectId" , JSCLASS_HAS_PRIVATE , +- JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, ++ JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_EnumerateStub, JS_ResolveStub , JS_ConvertStub, JS_FinalizeStub, + JSCLASS_NO_OPTIONAL_MEMBERS + }; + +- JSBool object_id_tostring(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { ++ JSBool object_id_tostring(JSContext *cx, uintN argc, jsval *vp){ ++ JSObject *obj = JS_THIS_OBJECT( cx , vp ); + Convertor c(cx); +- return (JSBool) (*rval = c.getProperty( obj , "str" )); ++ JS_SET_RVAL( cx , vp , c.getProperty( obj , "str" )); ++ return JS_TRUE; + } + + JSFunctionSpec object_id_functions[] = { +- { "toString" , object_id_tostring , 0 , JSPROP_READONLY | JSPROP_PERMANENT, 0 } , +- { 0 } ++ JS_FS( "toString" , object_id_tostring , 0 , JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , ++ JS_FS_END + }; + + // dbpointer + ++#ifdef JSFUN_CONSTRUCTOR ++ JSBool dbpointer_constructor( JSContext* cx, uintN argc, jsval* vp ){ ++ jsval *argv = JS_ARGV( cx , vp ); ++ JSObject *obj = JS_NewObjectForConstructor( cx , vp ); ++ if( ! obj ) { ++ JS_ReportError( cx , "Failed to create 'this' object" ); ++ return JS_FALSE; ++ } ++#else + JSBool dbpointer_constructor( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { ++#endif + Convertor c( cx ); + + if ( argc == 2 ) { +@@ -564,6 +680,9 @@ namespace mongo { + + assert( JS_SetProperty( cx , obj , "ns" , &(argv[0]) ) ); + assert( JS_SetProperty( cx , obj , "id" , &(argv[1]) ) ); ++#ifdef JSFUN_CONSTRUCTOR ++ JS_SET_RVAL( cx , vp , OBJECT_TO_JSVAL( obj ) ); ++#endif + return JS_TRUE; + } + else { +@@ -572,19 +691,30 @@ namespace mongo { + } + } + ++ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp) + JSClass dbpointer_class = { + "DBPointer" , JSCLASS_HAS_PRIVATE , +- JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, ++ JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_EnumerateStub, JS_ResolveStub , JS_ConvertStub, JS_FinalizeStub, + JSCLASS_NO_OPTIONAL_MEMBERS + }; + + JSFunctionSpec dbpointer_functions[] = { +- { 0 } ++ JS_FS_END + }; + + ++#ifdef JSFUN_CONSTRUCTOR ++ JSBool dbref_constructor( JSContext* cx, uintN argc, jsval* vp ){ ++ jsval *argv = JS_ARGV( cx , vp ); ++ JSObject *obj = JS_NewObjectForConstructor( cx , vp ); ++ if( ! obj ) { ++ JS_ReportError( cx , "Failed to create 'this' object" ); ++ return JS_FALSE; ++ } ++#else + JSBool dbref_constructor( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { ++#endif + Convertor c( cx ); + + if ( argc == 2 ) { +@@ -594,6 +724,9 @@ namespace mongo { + assert( JS_SetProperty( cx, o , "$id" , &argv[ 1 ] ) ); + BSONObj bo = c.toObject( o ); + assert( JS_SetPrivate( cx , obj , (void*)(new BSONHolder( bo.getOwned() ) ) ) ); ++#ifdef JSFUN_CONSTRUCTOR ++ JS_SET_RVAL( cx , vp , OBJECT_TO_JSVAL( obj ) ); ++#endif + return JS_TRUE; + } + else { +@@ -607,7 +740,17 @@ namespace mongo { + + // UUID ************************** + ++#ifdef JSFUN_CONSTRUCTOR ++ JSBool uuid_constructor( JSContext* cx, uintN argc, jsval* vp ){ ++ jsval *argv = JS_ARGV( cx , vp ); ++ JSObject *obj = JS_NewObjectForConstructor( cx , vp ); ++ if( ! obj ) { ++ JS_ReportError( cx , "Failed to create 'this' object" ); ++ return JS_FALSE; ++ } ++#else + JSBool uuid_constructor( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { ++#endif + Convertor c( cx ); + + if( argc == 0 ) { +@@ -635,6 +778,9 @@ namespace mongo { + c.setProperty( obj, "len", c.toval( (double)16 ) ); + c.setProperty( obj, "type", c.toval( (double)3 ) ); + ++#ifdef JSFUN_CONSTRUCTOR ++ JS_SET_RVAL( cx , vp , OBJECT_TO_JSVAL( obj ) ); ++#endif + return JS_TRUE; + } + else { +@@ -643,7 +789,8 @@ namespace mongo { + } + } + +- JSBool uuid_tostring(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { ++ JSBool uuid_tostring(JSContext *cx, uintN argc, jsval *vp){ ++ JSObject *obj = JS_THIS_OBJECT( cx , vp ); + Convertor c(cx); + void *holder = JS_GetPrivate( cx, obj ); + assert( holder ); +@@ -652,7 +799,8 @@ namespace mongo { + ss << "UUID(\"" << toHex(data, 16); + ss << "\")"; + string ret = ss.str(); +- return *rval = c.toval( ret.c_str() ); ++ JS_SET_RVAL( cx , vp , c.toval( ret.c_str() ) ); ++ return JS_TRUE; + } + + void uuid_finalize( JSContext * cx , JSObject * obj ) { +@@ -664,21 +812,32 @@ namespace mongo { + } + } + ++ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp) + JSClass uuid_class = { + "UUID" , JSCLASS_HAS_PRIVATE , +- JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, ++ JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_EnumerateStub, JS_ResolveStub , JS_ConvertStub, uuid_finalize, + JSCLASS_NO_OPTIONAL_MEMBERS + }; + + JSFunctionSpec uuid_functions[] = { +- { "toString" , uuid_tostring , 0 , JSPROP_READONLY | JSPROP_PERMANENT, 0 } , +- { 0 } ++ JS_FS( "toString" , uuid_tostring , 0 , JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , ++ JS_FS_END + }; + + // BinData ************************** + ++#ifdef JSFUN_CONSTRUCTOR ++ JSBool bindata_constructor( JSContext* cx, uintN argc, jsval* vp ){ ++ jsval *argv = JS_ARGV( cx , vp ); ++ JSObject *obj = JS_NewObjectForConstructor( cx , vp ); ++ if( ! obj ) { ++ JS_ReportError( cx , "Failed to create 'this' object" ); ++ return JS_FALSE; ++ } ++#else + JSBool bindata_constructor( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { ++#endif + Convertor c( cx ); + + if ( argc == 2 ) { +@@ -702,6 +861,9 @@ namespace mongo { + c.setProperty( obj, "len", c.toval( (double)decoded.length() ) ); + c.setProperty( obj, "type", c.toval( (double)type ) ); + ++#ifdef JSFUN_CONSTRUCTOR ++ JS_SET_RVAL( cx , vp , OBJECT_TO_JSVAL( obj ) ); ++#endif + return JS_TRUE; + } + else { +@@ -710,7 +872,8 @@ namespace mongo { + } + } + +- JSBool bindata_tostring(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { ++ JSBool bindata_tostring(JSContext *cx, uintN argc, jsval *vp){ ++ JSObject *obj = JS_THIS_OBJECT( cx , vp ); + Convertor c(cx); + int type = (int)c.getNumber( obj , "type" ); + int len = (int)c.getNumber( obj, "len" ); +@@ -722,10 +885,12 @@ namespace mongo { + base64::encode( ss, (const char *)data, len ); + ss << "\")"; + string ret = ss.str(); +- return *rval = c.toval( ret.c_str() ); ++ JS_SET_RVAL( cx , vp , c.toval( ret.c_str() ) ); ++ return JS_TRUE; + } + +- JSBool bindataBase64(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { ++ JSBool bindataBase64(JSContext *cx, uintN argc, jsval *vp){ ++ JSObject *obj = JS_THIS_OBJECT( cx , vp ); + Convertor c(cx); + int len = (int)c.getNumber( obj, "len" ); + void *holder = JS_GetPrivate( cx, obj ); +@@ -734,10 +899,12 @@ namespace mongo { + stringstream ss; + base64::encode( ss, (const char *)data, len ); + string ret = ss.str(); +- return *rval = c.toval( ret.c_str() ); ++ JS_SET_RVAL( cx , vp , c.toval( ret.c_str() ) ); ++ return JS_TRUE; + } + +- JSBool bindataAsHex(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { ++ JSBool bindataAsHex(JSContext *cx, uintN argc, jsval *vp){ ++ JSObject *obj = JS_THIS_OBJECT( cx , vp ); + Convertor c(cx); + int len = (int)c.getNumber( obj, "len" ); + void *holder = JS_GetPrivate( cx, obj ); +@@ -750,19 +917,24 @@ namespace mongo { + ss << v; + } + string ret = ss.str(); +- return *rval = c.toval( ret.c_str() ); ++ JS_SET_RVAL( cx , vp , c.toval( ret.c_str() ) ); ++ return JS_TRUE; + } + +- JSBool bindataLength(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { ++ JSBool bindataLength(JSContext *cx, uintN argc, jsval *vp){ ++ JSObject *obj = JS_THIS_OBJECT( cx , vp ); + Convertor c(cx); + int len = (int)c.getNumber( obj, "len" ); +- return *rval = c.toval((double) len); ++ JS_SET_RVAL( cx , vp , c.toval((double) len) ); ++ return JS_TRUE; + } + +- JSBool bindataSubtype(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { ++ JSBool bindataSubtype(JSContext *cx, uintN argc, jsval *vp){ ++ JSObject *obj = JS_THIS_OBJECT( cx , vp ); + Convertor c(cx); + int t = (int)c.getNumber( obj, "type" ); +- return *rval = c.toval((double) t); ++ JS_SET_RVAL( cx , vp , c.toval((double) t) ); ++ return JS_TRUE; + } + + void bindata_finalize( JSContext * cx , JSObject * obj ) { +@@ -774,20 +946,21 @@ namespace mongo { + } + } + ++ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp) + JSClass bindata_class = { + "BinData" , JSCLASS_HAS_PRIVATE , +- JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, ++ JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_EnumerateStub, JS_ResolveStub , JS_ConvertStub, bindata_finalize, + JSCLASS_NO_OPTIONAL_MEMBERS + }; + + JSFunctionSpec bindata_functions[] = { +- { "toString" , bindata_tostring , 0 , JSPROP_READONLY | JSPROP_PERMANENT, 0 } , +- { "hex", bindataAsHex, 0, JSPROP_READONLY | JSPROP_PERMANENT, 0 } , +- { "base64", bindataBase64, 0, JSPROP_READONLY | JSPROP_PERMANENT, 0 } , +- { "length", bindataLength, 0, JSPROP_READONLY | JSPROP_PERMANENT, 0 } , +- { "subtype", bindataSubtype, 0, JSPROP_READONLY | JSPROP_PERMANENT, 0 } , +- { 0 } ++ JS_FS( "toString" , bindata_tostring , 0 , JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , ++ JS_FS( "hex", bindataAsHex, 0, JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , ++ JS_FS( "base64", bindataBase64, 0, JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , ++ JS_FS( "length", bindataLength, 0, JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , ++ JS_FS( "subtype", bindataSubtype, 0, JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , ++ JS_FS_END + }; + + // Map +@@ -796,7 +969,16 @@ namespace mongo { + return s == "put" || s == "get" || s == "_get" || s == "values" || s == "_data" || s == "constructor" ; + } + ++#ifdef JSFUN_CONSTRUCTOR ++ JSBool map_constructor( JSContext* cx, uintN argc, jsval* vp ){ ++ JSObject *obj = JS_NewObjectForConstructor( cx , vp ); ++ if( ! obj ) { ++ JS_ReportError( cx , "Failed to create 'this' object" ); ++ return JS_FALSE; ++ } ++#else + JSBool map_constructor( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { ++#endif + if ( argc > 0 ) { + JS_ReportError( cx , "Map takes no arguments" ); + return JS_FALSE; +@@ -808,10 +990,16 @@ namespace mongo { + jsval a = OBJECT_TO_JSVAL( array ); + JS_SetProperty( cx , obj , "_data" , &a ); + ++#ifdef JSFUN_CONSTRUCTOR ++ JS_SET_RVAL( cx , vp , OBJECT_TO_JSVAL( obj ) ); ++#endif + return JS_TRUE; + } + +- JSBool map_prop( JSContext *cx, JSObject *obj, jsval idval, jsval *vp ) { ++ // FIXME: This won't build on spidermonkey < 1.8.5 (JSPropertyOp) ++ JSBool map_prop( JSContext *cx, JSObject *obj, jsid id, jsval *vp ){ ++ jsval idval; ++ JS_IdToValue( cx , id , &idval ); + Convertor c(cx); + if ( specialMapString( c.toString( idval ) ) ) + return JS_TRUE; +@@ -821,34 +1009,49 @@ namespace mongo { + return JS_FALSE; + } + ++ JSBool strict_map_prop( JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp ){ ++ return map_prop( cx , obj , id , vp ); ++ } ++ ++ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp) + JSClass map_class = { + "Map" , JSCLASS_HAS_PRIVATE , +- map_prop, JS_PropertyStub, map_prop, map_prop, ++ map_prop, JS_PropertyStub, map_prop, strict_map_prop, + JS_EnumerateStub, JS_ResolveStub , JS_ConvertStub, JS_FinalizeStub, + JSCLASS_NO_OPTIONAL_MEMBERS + }; + + JSFunctionSpec map_functions[] = { +- { 0 } ++ JS_FS_END + }; + + + // ----- + ++ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp) + JSClass timestamp_class = { + "Timestamp" , JSCLASS_HAS_PRIVATE , +- JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, ++ JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_EnumerateStub, JS_ResolveStub , JS_ConvertStub, JS_FinalizeStub, + JSCLASS_NO_OPTIONAL_MEMBERS + }; + ++#ifdef JSFUN_CONSTRUCTOR ++ JSBool timestamp_constructor( JSContext* cx, uintN argc, jsval* vp ){ ++ jsval *argv = JS_ARGV( cx , vp ); ++ JSObject *obj = JS_NewObjectForConstructor( cx , vp ); ++ if( ! obj ) { ++ JS_ReportError( cx , "Failed to create 'this' object" ); ++ return JS_FALSE; ++ } ++#else + JSBool timestamp_constructor( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { ++#endif + smuassert( cx , "Timestamp needs 0 or 2 args" , argc == 0 || argc == 2 ); + + if ( ! JS_InstanceOf( cx , obj , ×tamp_class , 0 ) ) { + obj = JS_NewObject( cx , ×tamp_class , 0 , 0 ); + CHECKNEWOBJECT( obj, cx, "timestamp_constructor" ); +- *rval = OBJECT_TO_JSVAL( obj ); + } + + Convertor c( cx ); +@@ -864,21 +1067,30 @@ namespace mongo { + return JS_TRUE; + } + +- ++ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp) + JSClass numberlong_class = { + "NumberLong" , JSCLASS_HAS_PRIVATE , +- JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, ++ JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_EnumerateStub, JS_ResolveStub , JS_ConvertStub, JS_FinalizeStub, + JSCLASS_NO_OPTIONAL_MEMBERS + }; + ++#ifdef JSFUN_CONSTRUCTOR ++ JSBool numberlong_constructor( JSContext* cx, uintN argc, jsval* vp ){ ++ jsval *argv = JS_ARGV( cx , vp ); ++ JSObject *obj = JS_NewObjectForConstructor( cx , vp ); ++ if( ! obj ) { ++ JS_ReportError( cx , "Failed to create 'this' object" ); ++ return JS_FALSE; ++ } ++#else + JSBool numberlong_constructor( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { ++#endif + smuassert( cx , "NumberLong needs 0 or 1 args" , argc == 0 || argc == 1 ); + + if ( ! JS_InstanceOf( cx , obj , &numberlong_class , 0 ) ) { + obj = JS_NewObject( cx , &numberlong_class , 0 , 0 ); + CHECKNEWOBJECT( obj, cx, "numberlong_constructor" ); +- *rval = OBJECT_TO_JSVAL( obj ); + } + + Convertor c( cx ); +@@ -903,19 +1115,25 @@ namespace mongo { + c.makeLongObj( n, obj ); + } + ++#ifdef JSFUN_CONSTRUCTOR ++ JS_SET_RVAL( cx , vp , OBJECT_TO_JSVAL( obj ) ); ++#endif + return JS_TRUE; + } + +- JSBool numberlong_valueof(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { ++ JSBool numberlong_valueof(JSContext *cx, uintN argc, jsval *vp){ ++ JSObject *obj = JS_THIS_OBJECT( cx , vp ); + Convertor c(cx); +- return *rval = c.toval( double( c.toNumberLongUnsafe( obj ) ) ); ++ JS_SET_RVAL( cx , vp , c.toval( double( c.toNumberLongUnsafe( obj ) ) ) ); ++ return JS_TRUE; + } + +- JSBool numberlong_tonumber(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { +- return numberlong_valueof( cx, obj, argc, argv, rval ); ++ JSBool numberlong_tonumber(JSContext *cx, uintN argc, jsval *vp){ ++ return numberlong_valueof( cx, argc, vp ); + } + +- JSBool numberlong_tostring(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { ++ JSBool numberlong_tostring(JSContext *cx, uintN argc, jsval *vp){ ++ JSObject *obj = JS_THIS_OBJECT( cx , vp ); + Convertor c(cx); + stringstream ss; + long long val = c.toNumberLongUnsafe( obj ); +@@ -927,33 +1145,45 @@ namespace mongo { + ss << "NumberLong(" << val << ")"; + + string ret = ss.str(); +- return *rval = c.toval( ret.c_str() ); ++ JS_SET_RVAL( cx , vp , c.toval( ret.c_str() ) ); ++ return JS_TRUE; + } + + JSFunctionSpec numberlong_functions[] = { +- { "valueOf" , numberlong_valueof , 0 , JSPROP_READONLY | JSPROP_PERMANENT, 0 } , +- { "toNumber" , numberlong_tonumber , 0 , JSPROP_READONLY | JSPROP_PERMANENT, 0 } , +- { "toString" , numberlong_tostring , 0 , JSPROP_READONLY | JSPROP_PERMANENT, 0 } , +- { 0 } ++ JS_FS( "valueOf" , numberlong_valueof , 0 , JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , ++ JS_FS( "toNumber" , numberlong_tonumber , 0 , JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , ++ JS_FS( "toString" , numberlong_tostring , 0 , JSPROP_READONLY | JSPROP_PERMANENT | JSFUN_FAST_NATIVE ) , ++ JS_FS_END + }; + ++ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp) + JSClass minkey_class = { + "MinKey" , JSCLASS_HAS_PRIVATE , +- JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, ++ JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_EnumerateStub, JS_ResolveStub , JS_ConvertStub, JS_FinalizeStub, + JSCLASS_NO_OPTIONAL_MEMBERS + }; + + JSClass maxkey_class = { + "MaxKey" , JSCLASS_HAS_PRIVATE , +- JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, ++ JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_EnumerateStub, JS_ResolveStub , JS_ConvertStub, JS_FinalizeStub, + JSCLASS_NO_OPTIONAL_MEMBERS + }; + + // dbquery + ++#ifdef JSFUN_CONSTRUCTOR ++ JSBool dbquery_constructor( JSContext* cx, uintN argc, jsval* vp ){ ++ jsval *argv = JS_ARGV( cx , vp ); ++ JSObject *obj = JS_NewObjectForConstructor( cx , vp ); ++ if( ! obj ) { ++ JS_ReportError( cx , "Failed to create 'this' object" ); ++ return JS_FALSE; ++ } ++#else + JSBool dbquery_constructor( JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval ) { ++#endif + smuassert( cx , "DDQuery needs at least 4 args" , argc >= 4 ); + + Convertor c(cx); +@@ -1001,28 +1231,35 @@ namespace mongo { + c.setProperty( obj , "_numReturned" , JSVAL_ZERO ); + c.setProperty( obj , "_special" , JSVAL_FALSE ); + ++#ifdef JSFUN_CONSTRUCTOR ++ JS_SET_RVAL( cx , vp , OBJECT_TO_JSVAL( obj ) ); ++#endif + return JS_TRUE; + } + +- JSBool dbquery_resolve( JSContext *cx, JSObject *obj, jsval id, uintN flags, JSObject **objp ) { ++ // FIXME: This won't build on spidermonkey < 1.8.5 (JSResolveOp) ++ JSBool dbquery_resolve( JSContext *cx, JSObject *obj, jsid id, uintN flags, JSObject **objp ){ ++ jsval idval; ++ JS_IdToValue( cx , id , &idval ); + if ( flags & JSRESOLVE_ASSIGNING ) + return JS_TRUE; + +- if ( ! JSVAL_IS_NUMBER( id ) ) ++ if ( ! JSVAL_IS_NUMBER( idval ) ) + return JS_TRUE; + + jsval val = JSVAL_VOID; +- assert( JS_CallFunctionName( cx , obj , "arrayAccess" , 1 , &id , &val ) ); ++ assert( JS_CallFunctionName( cx , obj , "arrayAccess" , 1 , &idval , &val ) ); + Convertor c(cx); +- c.setProperty( obj , c.toString( id ).c_str() , val ); ++ c.setProperty( obj , c.toString( idval ).c_str() , val ); + *objp = obj; + return JS_TRUE; + } + ++ // FIXME: This won't build on spidermonkey < 1.8.5 (JSStrictPropertyOp, JSResolveOp) + JSClass dbquery_class = { + "DBQuery" , JSCLASS_NEW_RESOLVE , +- JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, +- JS_EnumerateStub, (JSResolveOp)(&dbquery_resolve) , JS_ConvertStub, JS_FinalizeStub, ++ JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, ++ JS_EnumerateStub, (JSResolveOp)dbquery_resolve , JS_ConvertStub, JS_FinalizeStub, + JSCLASS_NO_OPTIONAL_MEMBERS + }; + +@@ -1102,7 +1339,7 @@ namespace mongo { + return true; + } + +-#if defined( SM16 ) || defined( MOZJS ) ++#if defined( SM16 ) || JS_VERSION >= 181 + #warning dates do not work in your version of spider monkey + { + jsdouble d = js_DateGetMsecSinceEpoch( c->_context , o ); +@@ -1150,7 +1387,7 @@ namespace mongo { + } + + bool isDate( JSContext * cx , JSObject * o ) { +-#if defined( SM16 ) || defined( MOZJS ) || defined( XULRUNNER ) ++#if defined( SM16 ) || JS_VERSION >= 181 || defined( XULRUNNER ) + return js_DateGetMsecSinceEpoch( cx , o ) != 0; + #else + return JS_InstanceOf( cx , o, &js_DateClass, 0 ); diff --git a/community/mongodb/mongodb.install b/community/mongodb/mongodb.install index 9e13a4d14..8808eea0d 100755 --- a/community/mongodb/mongodb.install +++ b/community/mongodb/mongodb.install @@ -1,26 +1,27 @@ # vim: syntax=sh -show_msg(){ - if [ "$(arch)" != "x86_64" ] - then - cat <<END -==> Warning: the 32 bit version of MongoDB is limited to about 2GB of data. -==> See http://blog.mongodb.org/post/137788967/32-bit-limitations -END - fi -} - post_install() { useradd -r -g daemon -d /var/lib/mongodb -s /bin/bash mongodb chown -R mongodb:daemon /var/lib/mongodb chown -R mongodb:daemon /var/log/mongodb - show_msg + if [ "$(arch)" != "x86_64" ] + then + echo '==> Warning: the 32 bit version of MongoDB is limited to about 2GB of data.' + echo '==> See http://blog.mongodb.org/post/137788967/32-bit-limitations' + fi } post_upgrade() { chown -R mongodb:daemon /var/lib/mongodb chown -R mongodb:daemon /var/log/mongodb + + # have to fix my fudge up in 1.8.2-2 and 1.8.2-3 + # added july 5th, 2011 + usermod -s /bin/bash mongodb >& /dev/null + echo 'The dbpath has changed from /var/state/mongodb to /var/lib/mongodb' + echo 'Make sure you move your data files to the new dbpath before you start/restart mongodb' + echo 'The logpath has changed from /var/log/mongod to /var/log/mongodb/mongod.log' } pre_remove() { diff --git a/community/mtasc/PKGBUILD b/community/mtasc/PKGBUILD index 22972f35f..621a27b45 100644 --- a/community/mtasc/PKGBUILD +++ b/community/mtasc/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 50789 2011-07-01 09:55:48Z spupykin $ +# $Id: PKGBUILD 50978 2011-07-04 10:46:29Z spupykin $ # Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com> # Contributor: Niel Drummond <niel.drummond@grumpytoad.org> pkgname=mtasc pkgver=20091229 -pkgrel=2 +pkgrel=3 pkgdesc="An open source flash (swf) compiler" arch=(i686 x86_64) url="http://mtasc.org/" @@ -12,11 +12,10 @@ license=('GPL2') depends=('zlib') makedepends=('ocaml' 'cvs') source=("http://arch.p5n.pp.ru/~sergej/dl/mtasc-$pkgver.tar.gz") -md5sums=('eb686e4fcaa066dfa77d29b2d4551aab') +md5sums=('e3b1f31ae906ebbd92678fdac0fdd411') build() { cd $srcdir/mtasc-$pkgver - sed -i 's|let base_path = normalize_path (try Extc.executable_path() with _ -> ".") in|let base_path = "/usr/share/mtasc/" in|' ocaml/mtasc/main.ml (cd ocaml/extc && make) ocaml install.ml } diff --git a/community/packagekit/PKGBUILD b/community/packagekit/PKGBUILD index b333bc372..36876fe3d 100644 --- a/community/packagekit/PKGBUILD +++ b/community/packagekit/PKGBUILD @@ -1,8 +1,8 @@ -# $Id: PKGBUILD 48954 2011-06-08 10:33:59Z jconder $ +# $Id: PKGBUILD 51085 2011-07-05 07:17:46Z jconder $ # Maintainer: Jonathan Conder <jonno.conder@gmail.com> pkgbase='packagekit' pkgname=('packagekit' 'packagekit-qt' 'packagekit-qt2' 'packagekit-python') -pkgver=0.6.15 +pkgver=0.6.16 pkgrel=1 pkgdesc="A system designed to make installation and updates of packages easier." arch=('i686' 'x86_64') @@ -12,8 +12,8 @@ makedepends=('dbus-glib' 'gobject-introspection' 'gtk-doc' 'intltool' 'networkmanager' 'pacman' 'pm-utils' 'polkit' 'python2' 'qt' 'shared-mime-info' 'sqlite3' 'udev') options=('!libtool') -source=("http://www.packagekit.org/releases/PackageKit-$pkgver.tar.bz2") -sha256sums=('52b6d52721253d1b5cdc3b403f4fb366782a258c786d194594deaafbc153779b') +source=("http://www.packagekit.org/releases/PackageKit-$pkgver.tar.xz") +sha256sums=('28fc2149e2dac4bed5b6b0479488dacc8af7e8a18556851711502b26de567e67') build() { cd "$srcdir/PackageKit-$pkgver" diff --git a/community/perl-crypt-openssl-rsa/PKGBUILD b/community/perl-crypt-openssl-rsa/PKGBUILD index 23151f63e..2e6ff4aa6 100644 --- a/community/perl-crypt-openssl-rsa/PKGBUILD +++ b/community/perl-crypt-openssl-rsa/PKGBUILD @@ -1,24 +1,27 @@ -# $Id: PKGBUILD 47489 2011-05-23 15:56:48Z tdziedzic $ +# $Id: PKGBUILD 51051 2011-07-04 15:35:36Z spupykin $ # Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com> pkgname=perl-crypt-openssl-rsa -pkgver=0.26 -pkgrel=4 +pkgver=0.27 +pkgrel=1 pkgdesc="Interface to OpenSSL RSA methods" arch=('i686' 'x86_64') url="http://search.cpan.org/dist/Crypt-OpenSSL-RSA" depends=('perl-crypt-openssl-random' 'perl-crypt-openssl-bignum') license=('GPL') options=('!emptydirs') -source=(http://www.cpan.org/authors/id/I/IR/IROBERTS/Crypt-OpenSSL-RSA-$pkgver.tar.gz) -md5sums=('baf875f01ee39b88335b8f0962fe4bbc') +source=("http://search.cpan.org/CPAN/authors/id/T/TO/TODDR/Crypt-OpenSSL-RSA-$pkgver.tar.gz") +md5sums=('08ed5352354116a88a7922ba2da57efa') build() { - cd $startdir/src/Crypt-OpenSSL-RSA-$pkgver + cd $srcdir/Crypt-OpenSSL-RSA-$pkgver PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor make - make pure_install doc_install DESTDIR=$startdir/pkg - find $startdir/pkg -name '.packlist' -delete - find $startdir/pkg -name '*.pod' -delete } +package() { + cd $srcdir/Crypt-OpenSSL-RSA-$pkgver + make pure_install doc_install DESTDIR=$pkgdir + find $pkgdir -name '.packlist' -delete + find $pkgdir -name '*.pod' -delete +} diff --git a/community/postgis/PKGBUILD b/community/postgis/PKGBUILD index dbea8cc90..a8d576d6b 100644 --- a/community/postgis/PKGBUILD +++ b/community/postgis/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 31335 2010-10-30 06:31:18Z jlichtblau $ +# $Id: PKGBUILD 51024 2011-07-04 13:40:25Z stephane $ # Maintainer: Jaroslav Lichtblau <dragonlord@aur.archlinux.org> # Contributor: dibblethewrecker dibblethewrecker.at.jiwe.dot.org # Contributor: William Rea <sillywilly@gmail.com> pkgname=postgis -pkgver=1.5.2 +pkgver=1.5.3 pkgrel=1 pkgdesc="Adds support for geographic objects to PostgreSQL" arch=('i686' 'x86_64') @@ -12,18 +12,18 @@ url="http://postgis.refractions.net/" license=('GPL') depends=('postgresql' 'proj' 'geos') changelog=$pkgname.changelog -source=(http://postgis.refractions.net/download/$pkgname-$pkgver.tar.gz) -md5sums=('772ec1d0f04d6800cd7e2420a97a7483') +source=(http://postgis.refractions.net/download/${pkgname}-${pkgver}.tar.gz) +md5sums=('05a61df5e1b78bf51c9ce98bea5526fc') build() { - cd ${srcdir}/$pkgname-$pkgver + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr make } package() { - cd ${srcdir}/$pkgname-$pkgver + cd "${srcdir}/${pkgname}-${pkgver}" - make DESTDIR=${pkgdir} install + make DESTDIR="${pkgdir}" install } diff --git a/community/python-psycopg2/PKGBUILD b/community/python-psycopg2/PKGBUILD index f6cd2951b..73717c807 100644 --- a/community/python-psycopg2/PKGBUILD +++ b/community/python-psycopg2/PKGBUILD @@ -1,11 +1,11 @@ -# $Id: PKGBUILD 46836 2011-05-12 20:05:43Z spupykin $ +# $Id: PKGBUILD 51180 2011-07-05 16:56:35Z spupykin $ # Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com> # Maintainer: Angel 'angvp' Velasquez <angvp[at]archlinux.com.ve> # Maintainer: Douglas Soares de Andrade <dsa@aur.archlinux.org> pkgbase=python-psycopg2 pkgname=('python-psycopg2' 'python2-psycopg2') -pkgver=2.4.1 +pkgver=2.4.2 pkgrel=1 pkgdesc="A PostgreSQL database adapter for the Python programming language." arch=('i686' 'x86_64') @@ -13,7 +13,7 @@ url="http://initd.org/psycopg/" license=('LGPL3') makedepends=('python2' 'python' 'postgresql-libs>=8.4.1') source=(http://initd.org/psycopg/tarballs/PSYCOPG-2-4/psycopg2-$pkgver.tar.gz) -md5sums=('6ae7a33bf1c967e52be65514472c270a') +md5sums=('920c533806f112787b480806ea125406') build() { cd "$srcdir/psycopg2-$pkgver" diff --git a/community/python2-basemap/PKGBUILD b/community/python2-basemap/PKGBUILD index b3c9c06fd..23d82a237 100644 --- a/community/python2-basemap/PKGBUILD +++ b/community/python2-basemap/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 50811 2011-07-01 15:17:50Z stephane $ +# $Id: PKGBUILD 51032 2011-07-04 14:39:21Z stephane $ # Maintainer: Stéphane Gaudreault <stephane@archlinux.org> # Contributor: Julien Morin <jmorin@cp.dias.ie> pkgname=python2-basemap pkgver=1.0.1 -pkgrel=1 +pkgrel=2 pkgdesc="Toolkit for plotting data on map projections" arch=('i686' 'x86_64') url="http://matplotlib.sourceforge.net/basemap/doc/html/" diff --git a/community/qgis/PKGBUILD b/community/qgis/PKGBUILD index 377c9e6e6..ef4bf030a 100644 --- a/community/qgis/PKGBUILD +++ b/community/qgis/PKGBUILD @@ -4,7 +4,7 @@ pkgname=qgis pkgver=1.7.0 -pkgrel=1 +pkgrel=2 pkgdesc='A Geographic Information System (GIS) that supports vector, raster & database formats' url='http://qgis.org/' license=('GPL') diff --git a/community/rsyslog/PKGBUILD b/community/rsyslog/PKGBUILD index 37c32b0e9..7f71b19c4 100644 --- a/community/rsyslog/PKGBUILD +++ b/community/rsyslog/PKGBUILD @@ -1,8 +1,8 @@ -# $Id: PKGBUILD 48294 2011-05-31 09:32:45Z spupykin $ +# $Id: PKGBUILD 51093 2011-07-05 08:47:52Z spupykin $ # Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com> pkgname=rsyslog -pkgver=5.8.1 +pkgver=5.8.2 pkgrel=1 pkgdesc="An enhanced multi-threaded syslogd with a focus on security and reliability" url="http://www.rsyslog.com/" @@ -22,7 +22,7 @@ source=("http://www.rsyslog.com/files/download/rsyslog/rsyslog-$pkgver.tar.gz" 'rsyslog' 'rsyslog.logrotate' 'rsyslog.conf.d') -md5sums=('909d4d867450aeedd6b388c199d79222' +md5sums=('fd7822622e974cc263bbd54768d5621c' 'a18bbcbb6ebdaa13a6ec6d9f3d9eb2da' '8065db4bef3061a4f000ba58779f6829' '1a0cd4530dd5d1439456d5ae230574d9') @@ -44,7 +44,6 @@ build() { package() { cd ${srcdir}/${pkgname}-${pkgver} make install DESTDIR=${pkgdir} - # Install Daemons and Configuration Files install -D -m755 ${srcdir}/${pkgname} ${pkgdir}/etc/rc.d/${pkgname}d install -D -m644 ${pkgname}.conf ${pkgdir}/etc/${pkgname}.conf diff --git a/community/splix/PKGBUILD b/community/splix/PKGBUILD index 9b8061ad5..746a1a2d9 100644 --- a/community/splix/PKGBUILD +++ b/community/splix/PKGBUILD @@ -1,11 +1,11 @@ -# $Id: PKGBUILD 45807 2011-04-29 11:10:15Z spupykin $ +# $Id: PKGBUILD 50983 2011-07-04 10:54:47Z spupykin $ # Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com> # Maintainer: Angel 'angvp' Velasquez <angvp[at]archlinux.com.ve> # Contributor: Francis Carroll (franciscarroll at gmail dot com) pkgname=splix pkgver=2.0.0 -pkgrel=9 +pkgrel=10 pkgdesc="CUPS drivers for SPL (Samsung Printer Language) printers" arch=('i686' 'x86_64') url="http://splix.ap2c.org/" @@ -18,17 +18,14 @@ md5sums=('f3aa735c22a926818b3d8b26c9964186') build() { cd "$srcdir/$pkgname-$pkgver" - sed -i 's#const PPDFile::Value::Value #const PPDFile::Value #' src/ppdfile.cpp - - make PSTORASTER=gstoraster + make PSTORASTER=gstoraster } package() { cd "$srcdir/$pkgname-$pkgver" - install -d "$pkgdir/usr/lib/cups/filter" install -d "$pkgdir/usr/share/cups/model/samsung" - make DESTDIR="$pkgdir" install + ln -s gstoraster $pkgdir/usr/lib/cups/filter/pstoraster } diff --git a/community/virtualbox/PKGBUILD b/community/virtualbox/PKGBUILD index 1426765a8..aa2be0e57 100644 --- a/community/virtualbox/PKGBUILD +++ b/community/virtualbox/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 50284 2011-06-27 19:43:47Z ibiru $ +# $Id: PKGBUILD 51016 2011-07-04 12:35:27Z ibiru $ #Maintainer: Ionut Biru <ibiru@archlinux.org> pkgbase=virtualbox pkgname=('virtualbox' 'virtualbox-guest-additions' 'virtualbox-guest-modules' 'virtualbox-sdk') pkgver=4.0.10 -pkgrel=1 +pkgrel=2 arch=('i686' 'x86_64') url='http://virtualbox.org' license=('GPL' 'custom') @@ -16,7 +16,8 @@ source=(http://download.virtualbox.org/virtualbox/${pkgver}/VirtualBox-${pkgver} virtualbox-4-makeself-check.patch virtualbox-4-mkisofs-check.patch 10-vboxdrv.rules 60-vboxguest.rules vboxdrv-reference.patch LocalConfig.kmk vboxdrv.sh 18-system-xorg.patch - change_default_driver_dir.patch) + change_default_driver_dir.patch + usb-2.0.patch) _kernver=2.6.39-ARCH build() { @@ -27,6 +28,7 @@ build() { patch -Np1 -i "$srcdir/vboxdrv-reference.patch" patch -Np1 -i "$srcdir/18-system-xorg.patch" patch -Np1 -i "$srcdir/change_default_driver_dir.patch" + patch -Np0 -i "$srcdir/usb-2.0.patch" cp "$srcdir/LocalConfig.kmk" . @@ -46,9 +48,7 @@ build() { package_virtualbox() { pkgdesc="Powerful x86 virtualization for enterprise as well as home use" depends=('libxml2' 'libxcursor' 'libidl2' 'libxinerama' 'sdl' 'libxmu' 'curl' 'libvncserver' 'libpng' 'kernel26-headers' 'gcc' 'make') - optdepends=('libxt: for shared clipboard' - 'python2: for python support' - 'qt: for VirtualBox GUI' + optdepends=('qt: for VirtualBox GUI' 'vde2: Virtual Distributed Ethernet support' 'virtualbox-sdk: developer kit') @@ -75,6 +75,8 @@ package_virtualbox() { ln -sf VBox "$pkgdir/usr/bin/VirtualBox" ln -sf VBox "$pkgdir/usr/bin/virtualbox" ln -sf VBox "$pkgdir/usr/bin/vboxwebsrv" + ln -sf VBox "$pkgdir/usr/bin/VBoxBalloonCtrl" + ln -sf VBox "$pkgdir/usr/bin/vboxballoonctrl" install -m 0755 VBoxTunctl "$pkgdir/usr/bin" @@ -88,7 +90,7 @@ package_virtualbox() { #setuid root binaries install -m 4755 VBoxSDL VirtualBox VBoxHeadless VBoxNetDHCP VBoxNetAdpCtl -t "$pkgdir/usr/lib/virtualbox" #other binaries - install -m 0755 VBoxManage VBoxSVC VBoxExtPackHelperApp VBoxXPCOMIPCD VBoxTestOGL vboxwebsrv webtest -t "$pkgdir/usr/lib/virtualbox" + install -m 0755 VBoxManage VBoxSVC VBoxExtPackHelperApp VBoxXPCOMIPCD VBoxTestOGL VBoxBalloonCtrl vboxwebsrv webtest -t "$pkgdir/usr/lib/virtualbox" #language install -m 0755 nls/*.qm -t "$pkgdir/usr/share/virtualbox/nls" @@ -128,6 +130,7 @@ package_virtualbox() { package_virtualbox-sdk() { pkgdesc=" VirtualBox Software Developer Kit (SDK)" + depends=('python2') mkdir -p "$pkgdir/usr/lib/virtualbox" @@ -214,4 +217,5 @@ md5sums=('956af570597850ab4d3275b54bbed049' 'c1a07f044c476a190af8486fe78bee0f' '47da2e88de582bb2bab14580a3aa47b1' '8a22b33c9dfaf8fb79bb2d26304e650b' - 'ac43f7cf44b934d8dbdbc3bb6f7879ad') + 'ac43f7cf44b934d8dbdbc3bb6f7879ad' + '696002ad0017512fc27781b07259f37c') diff --git a/community/virtualbox/usb-2.0.patch b/community/virtualbox/usb-2.0.patch new file mode 100644 index 000000000..38aa36ef4 --- /dev/null +++ b/community/virtualbox/usb-2.0.patch @@ -0,0 +1,161 @@ +Index: Config.kmk +=================================================================== +--- Config.kmk (revision 37751) ++++ Config.kmk (revision 37752) +@@ -409,6 +409,9 @@ + ifdef VBOX_WITH_USB + VBOX_WITH_VUSB = 1 + endif ++ifdef VBOX_WITH_EHCI ++ VBOX_WITH_EHCI_IMPL = 1 ++endif + # Enable the hal/sysfs USB code on Linux. + ifeq ($(KBUILD_TARGET),linux) + VBOX_USB_WITH_SYSFS = 1 +@@ -920,7 +923,7 @@ + # + ifdef VBOX_OSE + VBOX_WITH_VRDP= +- VBOX_WITH_EHCI= ++ VBOX_WITH_EHCI_IMPL= + VBOX_WITH_EXTPACK_PUEL= + VBOX_WITH_PCI_PASSTHROUGH= + VBOX_WITH_OS2_ADDITIONS_BIN= +Index: src/VBox/Devices/Makefile.kmk +=================================================================== +--- src/VBox/Devices/Makefile.kmk (revision 37751) ++++ src/VBox/Devices/Makefile.kmk (revision 37752) +@@ -57,8 +57,8 @@ + ifdef VBOX_WITH_USB + VBoxDDU_DEFS += VBOX_WITH_USB IN_USBLIB + VBoxDDU_SDKS.win = WINPSDK W2K3DDK +- if defined(VBOX_WITH_EHCI) && !defined(VBOX_WITH_EXTPACK_PUEL) +- VBoxDDU_DEFS += VBOX_WITH_EHCI ++ if defined(VBOX_WITH_EHCI_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL) ++ VBoxDDU_DEFS += VBOX_WITH_EHCI_IMPL + endif + ifdef VBOX_WITH_NEW_USB_CODE_ON_DARWIN + VBoxDDU_DEFS.darwin += VBOX_WITH_NEW_USB_CODE_ON_DARWIN +@@ -122,8 +122,8 @@ + VBoxDD_DEFS = VBOX_ACPI + ifdef VBOX_WITH_USB + VBoxDD_DEFS += VBOX_WITH_USB +- if defined(VBOX_WITH_EHCI) && !defined(VBOX_WITH_EXTPACK_PUEL) +- VBoxDD_DEFS += VBOX_WITH_EHCI ++ if defined(VBOX_WITH_EHCI_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL) ++ VBoxDD_DEFS += VBOX_WITH_EHCI_IMPL + endif + endif + ifdef VBOX_WITH_VUSB +@@ -448,8 +448,8 @@ + endif + ifdef VBOX_WITH_USB + DevicesR3_DEFS += VBOX_WITH_USB +- if defined(VBOX_WITH_EHCI) && !defined(VBOX_WITH_EXTPACK_PUEL) +- DevicesR3_DEFS += VBOX_WITH_EHCI ++ if defined(VBOX_WITH_EHCI_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL) ++ DevicesR3_DEFS += VBOX_WITH_EHCI_IMPL + DevicesR3_SOURCES += \ + USB/DevEHCI.cpp + endif +@@ -603,8 +603,8 @@ + + ifdef VBOX_WITH_USB + VBoxDDGC_DEFS += VBOX_WITH_USB +- if defined(VBOX_WITH_EHCI) && !defined(VBOX_WITH_EXTPACK_PUEL) +- VBoxDDGC_DEFS += VBOX_WITH_EHCI ++ if defined(VBOX_WITH_EHCI_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL) ++ VBoxDDGC_DEFS += VBOX_WITH_EHCI_IMPL + VBoxDDGC_SOURCES += \ + USB/DevEHCI.cpp + endif +@@ -708,8 +708,8 @@ + endif + ifdef VBOX_WITH_USB + VBoxDDR0_DEFS += VBOX_WITH_USB +- if defined(VBOX_WITH_EHCI) && !defined(VBOX_WITH_EXTPACK_PUEL) +- VBoxDDR0_DEFS += VBOX_WITH_EHCI ++ if defined(VBOX_WITH_EHCI_IMPL) && !defined(VBOX_WITH_EXTPACK_PUEL) ++ VBoxDDR0_DEFS += VBOX_WITH_EHCI_IMPL + VBoxDDR0_SOURCES += \ + USB/DevEHCI.cpp + endif +Index: src/VBox/Devices/build/VBoxDD.cpp +=================================================================== +--- src/VBox/Devices/build/VBoxDD.cpp (revision 37751) ++++ src/VBox/Devices/build/VBoxDD.cpp (revision 37752) +@@ -132,7 +132,7 @@ + if (RT_FAILURE(rc)) + return rc; + #endif +-#ifdef VBOX_WITH_EHCI ++#ifdef VBOX_WITH_EHCI_IMPL + rc = pCallbacks->pfnRegister(pCallbacks, &g_DeviceEHCI); + if (RT_FAILURE(rc)) + return rc; +Index: src/VBox/Devices/testcase/tstDeviceStructSizeRC.cpp +=================================================================== +--- src/VBox/Devices/testcase/tstDeviceStructSizeRC.cpp (revision 37751) ++++ src/VBox/Devices/testcase/tstDeviceStructSizeRC.cpp (revision 37752) +@@ -62,7 +62,7 @@ + #ifdef VBOX_WITH_USB + # undef LOG_GROUP + # include "../USB/DevOHCI.cpp" +-# ifdef VBOX_WITH_EHCI ++# ifdef VBOX_WITH_EHCI_IMPL + # include "../USB/DevEHCI.cpp" + # endif + #endif +@@ -928,7 +928,7 @@ + GEN_CHECK_OFF(OHCI, StatDroppedUrbs); + GEN_CHECK_OFF(OHCI, StatTimer); + # endif +-# ifdef VBOX_WITH_EHCI ++# ifdef VBOX_WITH_EHCI_IMPL + /* USB/DevEHCI.cpp */ + GEN_CHECK_SIZE(EHCIHUBPORT); + GEN_CHECK_OFF(EHCIHUBPORT, fReg); +@@ -1005,7 +1005,7 @@ + GEN_CHECK_OFF(EHCI, pEOFTimerNoSyncRC); + GEN_CHECK_OFF(EHCI, pEOFTimerNoSyncR3); + GEN_CHECK_OFF(EHCI, pEOFTimerNoSyncR0); +-# endif /* VBOX_WITH_EHCI */ ++# endif /* VBOX_WITH_EHCI_IMPL */ + #endif /* VBOX_WITH_USB */ + + /* VMMDev/VBoxDev.cpp */ +Index: src/VBox/Devices/testcase/tstDeviceStructSize.cpp +=================================================================== +--- src/VBox/Devices/testcase/tstDeviceStructSize.cpp (revision 37751) ++++ src/VBox/Devices/testcase/tstDeviceStructSize.cpp (revision 37752) +@@ -67,7 +67,7 @@ + #ifdef VBOX_WITH_USB + # undef LOG_GROUP + # include "../USB/DevOHCI.cpp" +-# ifdef VBOX_WITH_EHCI ++# ifdef VBOX_WITH_EHCI_IMPL + # include "../USB/DevEHCI.cpp" + # endif + #endif +@@ -284,7 +284,7 @@ + #endif + //CHECK_MEMBER_ALIGNMENT(E1KSTATE, csTx, 8); + #ifdef VBOX_WITH_USB +-# ifdef VBOX_WITH_EHCI ++# ifdef VBOX_WITH_EHCI_IMPL + CHECK_MEMBER_ALIGNMENT(EHCI, RootHub, 8); + # ifdef VBOX_WITH_STATISTICS + CHECK_MEMBER_ALIGNMENT(EHCI, StatCanceledIsocUrbs, 8); +Index: src/VBox/Devices/testcase/Makefile.kmk +=================================================================== +--- src/VBox/Devices/testcase/Makefile.kmk (revision 37751) ++++ src/VBox/Devices/testcase/Makefile.kmk (revision 37752) +@@ -28,7 +28,7 @@ + VBOX_DEVICES_TESTS_FEATURES = \ + $(if $(VBOX_WITH_RAW_MODE),VBOX_WITH_RAW_MODE,) \ + $(if $(VBOX_WITH_USB),VBOX_WITH_USB,) \ +- $(if $(VBOX_WITH_EHCI),VBOX_WITH_EHCI,) \ ++ $(if $(VBOX_WITH_EHCI_IMPL),VBOX_WITH_EHCI_IMPL,) \ + $(if $(VBOX_WITH_AHCI),VBOX_WITH_AHCI,) \ + $(if $(VBOX_WITH_E1000),VBOX_WITH_E1000,) \ + $(if $(VBOX_WITH_VIRTIO),VBOX_WITH_VIRTIO,) \ |