summaryrefslogtreecommitdiff
path: root/community/mongodb
diff options
context:
space:
mode:
Diffstat (limited to 'community/mongodb')
-rw-r--r--community/mongodb/PKGBUILD33
-rw-r--r--community/mongodb/boost1.50.patch237
2 files changed, 256 insertions, 14 deletions
diff --git a/community/mongodb/PKGBUILD b/community/mongodb/PKGBUILD
index 40aec561d..049527180 100644
--- a/community/mongodb/PKGBUILD
+++ b/community/mongodb/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 75855 2012-09-03 16:08:44Z tdziedzic $
+# $Id: PKGBUILD 76844 2012-10-01 05:33:09Z svenstaro $
# Maintainer: Sven-Hendrik Haase <sh@lutzhaase.com>
# Contributor: Thomas Dziedzic < gostrc at gmail >
# Contributor: Mathias Stearn <mathias@10gen.com>
@@ -6,7 +6,7 @@
pkgname=mongodb
pkgver=2.2.0
-pkgrel=1
+pkgrel=2
pkgdesc='A high-performance, open source, schema-free document-oriented database'
arch=('i686' 'x86_64' 'mips64el')
url='http://www.mongodb.org'
@@ -19,12 +19,13 @@ backup=('etc/mongodb.conf')
install="mongodb.install"
source=("http://downloads.mongodb.org/src/mongodb-src-r${pkgver}.tar.gz"
'mongodb.rc' 'mongodb.conf' 'mongodb.service'
- 'SConscript.client.patch')
+ 'SConscript.client.patch' 'boost1.50.patch')
md5sums=('832bdb6cc659176fd8d6b16a660ccfc6'
'9c67e00f4626ad761a8f7d4e037a54d7'
'4839fe1d638187ca3226e8267b947318'
'96ab4517b48974ce0e566d9746a75a4f'
- 'a9529e2a6e392ffecef7a9178394c814')
+ 'a9529e2a6e392ffecef7a9178394c814'
+ 'da8a9d78e4a38d1ed8e92a210d4b5ba7')
build() {
export SCONSFLAGS="$MAKEFLAGS"
@@ -34,11 +35,10 @@ build() {
# fix https://jira.mongodb.org/browse/SERVER-5575
patch -Np1 -i ${srcdir}/SConscript.client.patch
- sed -i '/nixLibPrefix/s/lib64/lib/' SConstruct
+ # fix boost incompatibility
+ patch -Np1 -i ${srcdir}/boost1.50.patch
- # --sharedclient generates an error that the source .so could not be found
- # --use-system-sm --use-system-pcre
- scons all --full
+ scons all --use-system-boost # --sharedclient currently fails
}
<<COMMENT
@@ -56,11 +56,16 @@ package() {
cd mongodb-src-r${pkgver}
- scons install --full --prefix=$pkgdir/usr
+ scons install --use-system-boost --full --prefix=$pkgdir/usr # --sharedclient currently fails
- install -D -m755 $srcdir/mongodb.rc $pkgdir/etc/rc.d/mongodb
- install -D -m644 $srcdir/mongodb.conf $pkgdir/etc/mongodb.conf
- install -D -m644 $srcdir/mongodb.service $pkgdir/usr/lib/systemd/system/mongodb.service
- install -d -m700 $pkgdir/var/lib/mongodb
- install -d -m755 $pkgdir/var/log/mongodb
+ install -Dm755 $srcdir/mongodb.rc $pkgdir/etc/rc.d/mongodb
+ install -Dm644 $srcdir/mongodb.conf $pkgdir/etc/mongodb.conf
+ [[ -f $pkgdir/usr/lib ]] && rm $pkgdir/usr/lib # wtf mongo
+ install -Dm644 $srcdir/mongodb.service $pkgdir/usr/lib/systemd/system/mongodb.service
+ install -dm700 $pkgdir/var/lib/mongodb
+ install -dm755 $pkgdir/var/log/mongodb
+
+ # the earlier SConscript patch actually gives us some trouble on x86_64 so we need to hack it out again
+ mv ${pkgdir}/usr/lib64/libmongoclient.a ${pkgdir}/usr/lib/
+ rm -r ${pkgdir}/usr/lib64
}
diff --git a/community/mongodb/boost1.50.patch b/community/mongodb/boost1.50.patch
new file mode 100644
index 000000000..203826ae7
--- /dev/null
+++ b/community/mongodb/boost1.50.patch
@@ -0,0 +1,237 @@
+diff --git a/src/mongo/db/db.cpp b/src/mongo/db/db.cpp
+index 6a80fe9..4a42e73 100644
+--- a/src/mongo/db/db.cpp
++++ b/src/mongo/db/db.cpp
+@@ -18,6 +18,7 @@
+
+ #include "mongo/pch.h"
+
++#include <boost/version.hpp>
+ #include <boost/thread/thread.hpp>
+ #include <boost/filesystem/operations.hpp>
+ #include <fstream>
+@@ -348,7 +349,7 @@ namespace mongo {
+ boost::filesystem::path path( dbpath );
+ for ( boost::filesystem::directory_iterator i( path );
+ i != boost::filesystem::directory_iterator(); ++i ) {
+- string fileName = boost::filesystem::path(*i).leaf();
++ string fileName = boost::filesystem::path(*i).leaf().string();
+ if ( boost::filesystem::is_directory( *i ) &&
+ fileName.length() && fileName[ 0 ] == '$' )
+ boost::filesystem::remove_all( *i );
+@@ -748,11 +749,6 @@ static int mongoDbMain(int argc, char* argv[]) {
+ dbExecCommand = argv[0];
+
+ srand(curTimeMicros());
+-#if( BOOST_VERSION >= 104500 )
+- boost::filesystem::path::default_name_check( boost::filesystem2::no_check );
+-#else
+- boost::filesystem::path::default_name_check( boost::filesystem::no_check );
+-#endif
+
+ {
+ unsigned x = 0x12345678;
+@@ -1083,7 +1079,7 @@ static int mongoDbMain(int argc, char* argv[]) {
+ if (params.count("shutdown")){
+ bool failed = false;
+
+- string name = ( boost::filesystem::path( dbpath ) / "mongod.lock" ).native_file_string();
++ string name = ( boost::filesystem::path( dbpath ) / "mongod.lock" ).string();
+ if ( !boost::filesystem::exists( name ) || boost::filesystem::file_size( name ) == 0 )
+ failed = true;
+
+diff --git a/src/mongo/db/dur.cpp b/src/mongo/db/dur.cpp
+index b83957b..242fe00 100644
+--- a/src/mongo/db/dur.cpp
++++ b/src/mongo/db/dur.cpp
+@@ -770,7 +770,7 @@ namespace mongo {
+
+ bool samePartition = true;
+ try {
+- const string dbpathDir = boost::filesystem::path(dbpath).native_directory_string();
++ const string dbpathDir = boost::filesystem::path(dbpath).string();
+ samePartition = onSamePartition(getJournalDir().string(), dbpathDir);
+ }
+ catch(...) {
+diff --git a/src/mongo/db/dur_journal.cpp b/src/mongo/db/dur_journal.cpp
+index 9957d41..9f693b9 100644
+--- a/src/mongo/db/dur_journal.cpp
++++ b/src/mongo/db/dur_journal.cpp
+@@ -176,7 +176,7 @@ namespace mongo {
+ for ( boost::filesystem::directory_iterator i( getJournalDir() );
+ i != boost::filesystem::directory_iterator();
+ ++i ) {
+- string fileName = boost::filesystem::path(*i).leaf();
++ string fileName = boost::filesystem::path(*i).leaf().string();
+ if( anyFiles || str::startsWith(fileName, "j._") )
+ return true;
+ }
+@@ -194,7 +194,7 @@ namespace mongo {
+ for ( boost::filesystem::directory_iterator i( getJournalDir() );
+ i != boost::filesystem::directory_iterator();
+ ++i ) {
+- string fileName = boost::filesystem::path(*i).leaf();
++ string fileName = boost::filesystem::path(*i).leaf().string();
+ if( str::startsWith(fileName, "j._") ) {
+ try {
+ removeOldJournalFile(*i);
+diff --git a/src/mongo/db/dur_recover.cpp b/src/mongo/db/dur_recover.cpp
+index a7efd4d..e352db6 100644
+--- a/src/mongo/db/dur_recover.cpp
++++ b/src/mongo/db/dur_recover.cpp
+@@ -72,7 +72,7 @@ namespace mongo {
+ i != boost::filesystem::directory_iterator();
+ ++i ) {
+ boost::filesystem::path filepath = *i;
+- string fileName = boost::filesystem::path(*i).leaf();
++ string fileName = boost::filesystem::path(*i).leaf().string();
+ if( str::startsWith(fileName, "j._") ) {
+ unsigned u = str::toUnsigned( str::after(fileName, '_') );
+ if( m.count(u) ) {
+@@ -85,7 +85,7 @@ namespace mongo {
+ if( i != m.begin() && m.count(i->first - 1) == 0 ) {
+ uasserted(13532,
+ str::stream() << "unexpected file in journal directory " << dir.string()
+- << " : " << boost::filesystem::path(i->second).leaf() << " : can't find its preceeding file");
++ << " : " << boost::filesystem::path(i->second).leaf().string() << " : can't find its preceeding file");
+ }
+ files.push_back(i->second);
+ }
+diff --git a/src/mongo/db/instance.cpp b/src/mongo/db/instance.cpp
+index 218fb9e..42794f0 100644
+--- a/src/mongo/db/instance.cpp
++++ b/src/mongo/db/instance.cpp
+@@ -833,13 +833,13 @@ namespace mongo {
+ i != boost::filesystem::directory_iterator(); ++i ) {
+ if ( directoryperdb ) {
+ boost::filesystem::path p = *i;
+- string dbName = p.leaf();
++ string dbName = p.leaf().string();
+ p /= ( dbName + ".ns" );
+ if ( exists( p ) )
+ names.push_back( dbName );
+ }
+ else {
+- string fileName = boost::filesystem::path(*i).leaf();
++ string fileName = boost::filesystem::path(*i).leaf().string();
+ if ( fileName.length() > 3 && fileName.substr( fileName.length() - 3, 3 ) == ".ns" )
+ names.push_back( fileName.substr( 0, fileName.length() - 3 ) );
+ }
+@@ -1102,7 +1102,7 @@ namespace mongo {
+ }
+
+ void acquirePathLock(bool doingRepair) {
+- string name = ( boost::filesystem::path( dbpath ) / "mongod.lock" ).native_file_string();
++ string name = ( boost::filesystem::path( dbpath ) / "mongod.lock" ).string();
+
+ bool oldFile = false;
+
+diff --git a/src/mongo/db/pdfile.cpp b/src/mongo/db/pdfile.cpp
+index 0c424f0..9fbbde7 100644
+--- a/src/mongo/db/pdfile.cpp
++++ b/src/mongo/db/pdfile.cpp
+@@ -1675,7 +1675,7 @@ namespace mongo {
+ virtual bool apply( const Path &p ) {
+ if ( !boost::filesystem::exists( p ) )
+ return false;
+- boostRenameWrapper( p, newPath_ / ( p.leaf() + ".bak" ) );
++ boostRenameWrapper( p, newPath_ / ( p.leaf().string() + ".bak" ) );
+ return true;
+ }
+ virtual const char * op() const {
+@@ -1783,7 +1783,7 @@ namespace mongo {
+ uniqueReservedPath( ( preserveClonedFilesOnFailure || backupOriginalFiles ) ?
+ "backup" : "_tmp" );
+ MONGO_ASSERT_ON_EXCEPTION( boost::filesystem::create_directory( reservedPath ) );
+- string reservedPathString = reservedPath.native_directory_string();
++ string reservedPathString = reservedPath.string();
+
+ bool res;
+ {
+diff --git a/src/mongo/dbtests/framework.cpp b/src/mongo/dbtests/framework.cpp
+index 813705a..d0a3ba4 100644
+--- a/src/mongo/dbtests/framework.cpp
++++ b/src/mongo/dbtests/framework.cpp
+@@ -199,7 +199,7 @@ namespace mongo {
+ boost::filesystem::create_directory(p);
+ }
+
+- string dbpathString = p.native_directory_string();
++ string dbpathString = p.string();
+ dbpath = dbpathString.c_str();
+
+ cmdLine.prealloc = false;
+diff --git a/src/mongo/pch.h b/src/mongo/pch.h
+index 7044097..6bb9df6 100644
+--- a/src/mongo/pch.h
++++ b/src/mongo/pch.h
+@@ -44,7 +44,7 @@
+ #include "string.h"
+ #include "limits.h"
+
+-#define BOOST_FILESYSTEM_VERSION 2
++#define BOOST_FILESYSTEM_VERSION 3
+ #include <boost/shared_ptr.hpp>
+ #include <boost/smart_ptr.hpp>
+ #include <boost/function.hpp>
+diff --git a/src/mongo/shell/shell_utils_launcher.cpp b/src/mongo/shell/shell_utils_launcher.cpp
+index 60af4f3..fa0d6ad 100644
+--- a/src/mongo/shell/shell_utils_launcher.cpp
++++ b/src/mongo/shell/shell_utils_launcher.cpp
+@@ -184,7 +184,7 @@ namespace mongo {
+ }
+ #endif
+
+- _argv.push_back( programPath.native_file_string() );
++ _argv.push_back( programPath.string() );
+
+ _port = -1;
+
+diff --git a/src/mongo/tools/restore.cpp b/src/mongo/tools/restore.cpp
+index d7779e6..5c68bde 100644
+--- a/src/mongo/tools/restore.cpp
++++ b/src/mongo/tools/restore.cpp
+@@ -174,7 +174,7 @@ public:
+ log(2) << "drillDown: " << root.string() << endl;
+
+ // skip hidden files and directories
+- if (root.leaf()[0] == '.' && root.leaf() != ".")
++ if (root.leaf().string()[0] == '.' && root.leaf().string() != ".")
+ return;
+
+ if ( is_directory( root ) ) {
+@@ -255,7 +255,7 @@ public:
+
+ verify( ns.size() );
+
+- string oldCollName = root.leaf(); // Name of the collection that was dumped from
++ string oldCollName = root.leaf().string(); // Name of the collection that was dumped from
+ oldCollName = oldCollName.substr( 0 , oldCollName.find_last_of( "." ) );
+ if (use_coll) {
+ ns += "." + _coll;
+@@ -287,7 +287,7 @@ public:
+ if (!boost::filesystem::exists(metadataFile.string())) {
+ // This is fine because dumps from before 2.1 won't have a metadata file, just print a warning.
+ // System collections shouldn't have metadata so don't warn if that file is missing.
+- if (!startsWith(metadataFile.leaf(), "system.")) {
++ if (!startsWith(metadataFile.leaf().string(), "system.")) {
+ log() << metadataFile.string() << " not found. Skipping." << endl;
+ }
+ } else {
+diff --git a/src/mongo/tools/tool.cpp b/src/mongo/tools/tool.cpp
+index c092cdb..76834fa 100644
+--- a/src/mongo/tools/tool.cpp
++++ b/src/mongo/tools/tool.cpp
+@@ -118,12 +118,6 @@ namespace mongo {
+ // we want durability to be disabled.
+ cmdLine.dur = false;
+
+-#if( BOOST_VERSION >= 104500 )
+- boost::filesystem::path::default_name_check( boost::filesystem2::no_check );
+-#else
+- boost::filesystem::path::default_name_check( boost::filesystem::no_check );
+-#endif
+-
+ _name = argv[0];
+
+ /* using the same style as db.cpp */