summaryrefslogtreecommitdiff
path: root/community
diff options
context:
space:
mode:
Diffstat (limited to 'community')
-rw-r--r--community/aqbanking/PKGBUILD8
-rw-r--r--community/autofs/PKGBUILD8
-rw-r--r--community/frogatto/PKGBUILD8
-rw-r--r--community/gdal/PKGBUILD7
-rw-r--r--community/gedit-plugins/PKGBUILD6
-rw-r--r--community/geos/PKGBUILD12
-rw-r--r--community/gwenhywfar/PKGBUILD11
-rw-r--r--community/ktoblzcheck/PKGBUILD9
-rw-r--r--community/ktoblzcheck/ktoblzcheck-python3.patch50
-rw-r--r--community/libmediainfo/PKGBUILD18
-rw-r--r--community/libvirt/PKGBUILD8
-rw-r--r--community/libvirt/openbsd-netcat-default.patch44
-rw-r--r--community/libzen/PKGBUILD16
-rw-r--r--community/mediainfo-gui/PKGBUILD11
-rw-r--r--community/mediainfo/PKGBUILD6
-rw-r--r--community/mongodb/PKGBUILD2
-rw-r--r--community/mongodb/add-js185-support-to-SConstruct.diff12
-rw-r--r--community/mongodb/mongodb-1.8.0-spidermonkey-1.8.5-support.patch1502
-rwxr-xr-xcommunity/mongodb/mongodb.install23
-rw-r--r--community/mtasc/PKGBUILD7
-rw-r--r--community/packagekit/PKGBUILD8
-rw-r--r--community/perl-crypt-openssl-rsa/PKGBUILD21
-rw-r--r--community/postgis/PKGBUILD14
-rw-r--r--community/python-psycopg2/PKGBUILD6
-rw-r--r--community/python2-basemap/PKGBUILD4
-rw-r--r--community/qgis/PKGBUILD2
-rw-r--r--community/rsyslog/PKGBUILD7
-rw-r--r--community/splix/PKGBUILD11
-rw-r--r--community/virtualbox/PKGBUILD20
-rw-r--r--community/virtualbox/usb-2.0.patch161
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 , &timestamp_class , 0 ) ) {
+ obj = JS_NewObject( cx , &timestamp_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,) \