[mongodb/el6] Revert "2014-08-08: Retired because of unfixed security issues: https://fedorahosted.org/rel-eng/tic
Till Maas
till at fedoraproject.org
Mon Aug 11 17:25:23 UTC 2014
commit e170fb701dcea8434db2e0f2a364495b78acf157
Author: Till Maas <opensource at till.name>
Date: Mon Aug 11 19:24:58 2014 +0200
Revert "2014-08-08: Retired because of unfixed security issues: https://fedorahosted.org/rel-eng/ticket/5963"
This reverts commit 4d91ffa487d28904abcc4c22e84af8d996833193.
.gitignore | 18 +
dead.package | 1 -
mongod.service | 13 +
mongod.sysconf | 1 +
mongodb-2.4.5-atomics.patch | 128 ++++
mongodb-2.4.5-boost-fix.patch | 247 ++++++++
mongodb-2.4.5-boost-size-fix.patch | 51 ++
mongodb-2.4.5-gcc48.patch | 62 ++
mongodb-2.4.5-no-term.patch | 12 +
mongodb-2.4.5-pass-flags.patch | 38 ++
...4.5-signed-char-for-BSONType-enumerations.patch | 35 ++
mongodb-2.4.5-use-system-version.patch | 41 ++
mongodb-tmpfile | 3 +
mongodb.conf | 88 +++
mongodb.init | 168 ++++++
mongodb.logrotate | 12 +
mongodb.spec | 606 ++++++++++++++++++++
sources | 1 +
18 files changed, 1524 insertions(+), 1 deletions(-)
---
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..2a6851e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,18 @@
+/mongodb-src-r1.6.2.tar.gz
+/mongodb-src-r1.6.3.tar.gz
+/mongodb-src-r1.6.4.tar.gz
+/mongodb-src-r1.7.5.tar.gz
+/mongodb-src-r1.8.0.tar.gz
+/mongodb-src-r1.8.2.tar.gz
+/mongodb-src-r2.0.2.tar.gz
+/mongodb-src-r2.0.4.tar.gz
+/mongodb-src-r2.0.6.tar.gz
+/mongodb-src-r2.0.7.tar.gz
+/mongodb-src-r2.2.0.tar.gz
+/mongodb-src-r2.2.1.tar.gz
+/mongodb-src-r2.2.2.tar.gz
+/mongodb-src-r2.2.3.tar.gz
+/mongodb-src-r2.2.4.tar.gz
+/mongodb-src-r2.2.6.tar.gz
+/mongodb-src-r2.4.5.tar.gz
+/mongodb-src-r2.4.6.tar.gz
diff --git a/mongod.service b/mongod.service
new file mode 100644
index 0000000..3e53a84
--- /dev/null
+++ b/mongod.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=High-performance, schema-free document-oriented database
+After=syslog.target network.target
+
+[Service]
+Type=forking
+User=mongodb
+PIDFile=/var/run/mongodb/mongodb.pid
+EnvironmentFile=/etc/sysconfig/mongod
+ExecStart=/usr/bin/mongod $OPTIONS run
+
+[Install]
+WantedBy=multi-user.target
diff --git a/mongod.sysconf b/mongod.sysconf
new file mode 100644
index 0000000..7614052
--- /dev/null
+++ b/mongod.sysconf
@@ -0,0 +1 @@
+OPTIONS="--quiet -f /etc/mongodb.conf"
diff --git a/mongodb-2.4.5-atomics.patch b/mongodb-2.4.5-atomics.patch
new file mode 100644
index 0000000..1458a36
--- /dev/null
+++ b/mongodb-2.4.5-atomics.patch
@@ -0,0 +1,128 @@
+diff -up mongodb-src-r2.4.5/src/mongo/bson/util/atomic_int.h.atomics mongodb-src-r2.4.5/src/mongo/bson/util/atomic_int.h
+--- mongodb-src-r2.4.5/src/mongo/bson/util/atomic_int.h.atomics 2013-07-02 15:27:08.000000000 -0400
++++ mongodb-src-r2.4.5/src/mongo/bson/util/atomic_int.h 2013-07-11 10:20:25.474610585 -0400
+@@ -24,6 +24,10 @@
+
+ #include "mongo/platform/compiler.h"
+
++#define GCC_VERSION (__GNUC__ * 10000 \
++ + __GNUC_MINOR__ * 100 \
++ + __GNUC_PATCHLEVEL__)
++
+ namespace mongo {
+
+ /**
+@@ -72,6 +76,28 @@ namespace mongo {
+ InterlockedAdd((volatile long *)&x,by);
+ }
+ # endif
++#elif defined(GCC_VERSION) && GCC_VERSION >= 40700
++// in GCC version >= 4.7.0 we can use the built-in atomic operations
++
++ inline void AtomicUInt::set(unsigned newX) {
++ __atomic_store_n (&x, newX, __ATOMIC_SEQ_CST);
++ }
++ AtomicUInt AtomicUInt::operator++() { // ++prefix
++ return __atomic_add_fetch(&x, 1, __ATOMIC_SEQ_CST);
++ }
++ AtomicUInt AtomicUInt::operator++(int) { // postfix++
++ return __atomic_fetch_add(&x, 1, __ATOMIC_SEQ_CST);
++ }
++ AtomicUInt AtomicUInt::operator--() { // --prefix
++ return __atomic_add_fetch(&x, -1, __ATOMIC_SEQ_CST);
++ }
++ AtomicUInt AtomicUInt::operator--(int) { // postfix--
++ return __atomic_fetch_add(&x, -1, __ATOMIC_SEQ_CST);
++ }
++ void AtomicUInt::signedAdd(int by) {
++ __atomic_fetch_add(&x, by, __ATOMIC_SEQ_CST);
++ }
++
+ #elif defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)
+ // this is in GCC >= 4.1
+ inline void AtomicUInt::set(unsigned newX) { __sync_synchronize(); x = newX; }
+diff -up mongodb-src-r2.4.5/src/mongo/platform/atomic_intrinsics_gcc.h.atomics mongodb-src-r2.4.5/src/mongo/platform/atomic_intrinsics_gcc.h
+--- mongodb-src-r2.4.5/src/mongo/platform/atomic_intrinsics_gcc.h.atomics 2013-07-02 15:27:08.000000000 -0400
++++ mongodb-src-r2.4.5/src/mongo/platform/atomic_intrinsics_gcc.h 2013-07-11 10:20:25.479611190 -0400
+@@ -14,16 +14,60 @@
+ */
+
+ /**
+- * Implementation of the AtomicIntrinsics<T>::* operations for IA-32 and AMD64 systems using a
+- * GCC-compatible compiler toolchain.
++ * Implementation of the AtomicIntrinsics<T>::* operations for GCC-compatible compiler toolchain.
+ */
+
+ #pragma once
+
+ #include <boost/utility.hpp>
+
++#define GCC_VERSION (__GNUC__ * 10000 \
++ + __GNUC_MINOR__ * 100 \
++ + __GNUC_PATCHLEVEL__)
++
+ namespace mongo {
+
++// If GCC version >= 4.7.0, we can use the built-in atomic operations
++#if defined(GCC_VERSION) && GCC_VERSION >= 40700
++
++ /**
++ * Instantiation of AtomicIntrinsics<>.
++ */
++ template <typename T>
++ class AtomicIntrinsics {
++ public:
++
++ static T compareAndSwap(volatile T* dest, T expected, T newValue) {
++ return __atomic_compare_exchange_n (dest, &expected, newValue, 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST);
++ }
++
++ static T swap(volatile T* dest, T newValue) {
++ return __atomic_exchange_n (dest, newValue, __ATOMIC_SEQ_CST);
++ }
++
++ static T load(volatile const T* value) {
++ return __atomic_load_n (value, __ATOMIC_SEQ_CST);
++ }
++
++ static T loadRelaxed(volatile const T* value) {
++ return *value;
++ }
++
++ static void store(volatile T* dest, T newValue) {
++ __atomic_store_n (dest, newValue, __ATOMIC_SEQ_CST);
++ }
++
++ static T fetchAndAdd(volatile T* dest, T increment) {
++ return __atomic_fetch_add (dest, increment, __ATOMIC_SEQ_CST);
++ }
++
++ private:
++ AtomicIntrinsics();
++ ~AtomicIntrinsics();
++ };
++
++#else // GCC version < 4.7, so we must use legacy (platform-specific) atomic operations
++
+ /**
+ * Instantiation of AtomicIntrinsics<> for all word types T where sizeof<T> <= sizeof(void *).
+ *
+@@ -163,4 +207,6 @@ namespace mongo {
+ ~AtomicIntrinsics();
+ };
+
++#endif // GCC_VERSION >= 40700
++
+ } // namespace mongo
+diff -up mongodb-src-r2.4.5/src/mongo/platform/bits.h.atomics mongodb-src-r2.4.5/src/mongo/platform/bits.h
+--- mongodb-src-r2.4.5/src/mongo/platform/bits.h.atomics 2013-07-02 15:27:08.000000000 -0400
++++ mongodb-src-r2.4.5/src/mongo/platform/bits.h 2013-07-11 10:20:25.484611795 -0400
+@@ -21,7 +21,7 @@
+
+ #if defined(__x86_64__) || defined(__amd64__) || defined(_WIN64)
+ #define MONGO_PLATFORM_64
+-#elif defined(__i386__) || defined(_WIN32)
++#elif defined(__i386__) || defined(_WIN32) || defined(__arm__)
+ #define MONGO_PLATFORM_32
+ #else
+ #error "unknown platform"
diff --git a/mongodb-2.4.5-boost-fix.patch b/mongodb-2.4.5-boost-fix.patch
new file mode 100644
index 0000000..073827e
--- /dev/null
+++ b/mongodb-2.4.5-boost-fix.patch
@@ -0,0 +1,247 @@
+diff -Nur mongodb-src-r2.4.4.orig/src/mongo/db/db.cpp mongodb-src-r2.4.4/src/mongo/db/db.cpp
+--- mongodb-src-r2.4.4.orig/src/mongo/db/db.cpp 2013-06-16 20:57:57.398198115 +0200
++++ mongodb-src-r2.4.4/src/mongo/db/db.cpp 2013-06-28 20:44:18.029137049 +0200
+@@ -396,7 +396,11 @@
+ boost::filesystem::path path( dbpath );
+ for ( boost::filesystem::directory_iterator i( path );
+ i != boost::filesystem::directory_iterator(); ++i ) {
++ #if BOOST_VERSION >= 104400
+ string fileName = boost::filesystem::path(*i).leaf().string();
++ #else
++ string fileName = boost::filesystem::path(*i).leaf();
++ #endif
+ if ( boost::filesystem::is_directory( *i ) &&
+ fileName.length() && fileName[ 0 ] == '$' )
+ boost::filesystem::remove_all( *i );
+diff -Nur mongodb-src-r2.4.4.orig/src/mongo/db/dur_journal.cpp mongodb-src-r2.4.4/src/mongo/db/dur_journal.cpp
+--- mongodb-src-r2.4.4.orig/src/mongo/db/dur_journal.cpp 2013-06-16 20:57:57.418194086 +0200
++++ mongodb-src-r2.4.4/src/mongo/db/dur_journal.cpp 2013-06-28 20:44:18.032137434 +0200
+@@ -190,7 +190,11 @@
+ for ( boost::filesystem::directory_iterator i( jdir );
+ i != boost::filesystem::directory_iterator();
+ ++i ) {
++ #if BOOST_VERSION >= 104400
+ string fileName = boost::filesystem::path(*i).leaf().string();
++ #else
++ string fileName = boost::filesystem::path(*i).leaf();
++ #endif
+ if( anyFiles || str::startsWith(fileName, "j._") )
+ return true;
+ }
+@@ -208,7 +212,11 @@
+ for ( boost::filesystem::directory_iterator i( getJournalDir() );
+ i != boost::filesystem::directory_iterator();
+ ++i ) {
++ #if BOOST_VERSION >= 104400
+ string fileName = boost::filesystem::path(*i).leaf().string();
++ #else
++ string fileName = boost::filesystem::path(*i).leaf();
++ #endif
+ if( str::startsWith(fileName, "j._") ) {
+ try {
+ removeOldJournalFile(*i);
+diff -Nur mongodb-src-r2.4.4.orig/src/mongo/db/dur_recover.cpp mongodb-src-r2.4.4/src/mongo/db/dur_recover.cpp
+--- mongodb-src-r2.4.4.orig/src/mongo/db/dur_recover.cpp 2013-06-16 20:57:57.407196302 +0200
++++ mongodb-src-r2.4.4/src/mongo/db/dur_recover.cpp 2013-06-28 20:44:18.035137819 +0200
+@@ -75,7 +75,11 @@
+ i != boost::filesystem::directory_iterator();
+ ++i ) {
+ boost::filesystem::path filepath = *i;
++ #if BOOST_VERSION >= 104400
+ string fileName = boost::filesystem::path(*i).leaf().string();
++ #else
++ string fileName = boost::filesystem::path(*i).leaf();
++ #endif
+ if( str::startsWith(fileName, "j._") ) {
+ unsigned u = str::toUnsigned( str::after(fileName, '_') );
+ if( m.count(u) ) {
+@@ -87,8 +91,13 @@
+ for( map<unsigned,boost::filesystem::path>::iterator i = m.begin(); i != m.end(); ++i ) {
+ 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().string() << " : can't find its preceding file");
++ str::stream() << "unexpected file in journal directory " << dir.string() << " : "
++ #if BOOST_VERSION >= 104400
++ << boost::filesystem::path(i->second).leaf().string()
++ #else
++ << boost::filesystem::path(i->second).leaf()
++ #endif
++ << " : can't find its preceding file");
+ }
+ files.push_back(i->second);
+ }
+diff -Nur mongodb-src-r2.4.4.orig/src/mongo/db/initialize_server_global_state.cpp mongodb-src-r2.4.4/src/mongo/db/initialize_server_global_state.cpp
+--- mongodb-src-r2.4.4.orig/src/mongo/db/initialize_server_global_state.cpp 2013-06-16 20:57:57.384200935 +0200
++++ mongodb-src-r2.4.4/src/mongo/db/initialize_server_global_state.cpp 2013-06-28 20:44:18.042138718 +0200
+@@ -166,8 +166,13 @@
+ #endif
+ if (!cmdLine.logpath.empty() && !isMongodShutdownSpecialCase) {
+ fassert(16448, !cmdLine.logWithSyslog);
++ #if BOOST_VERSION >= 104400
+ string absoluteLogpath = boost::filesystem::absolute(
+ cmdLine.logpath, cmdLine.cwd).string();
++ #else
++ string absoluteLogpath = boost::filesystem::complete(
++ cmdLine.logpath, cmdLine.cwd).string();
++ #endif
+ if (!initLogging(absoluteLogpath, cmdLine.logAppend)) {
+ cout << "Bad logpath value: \"" << absoluteLogpath << "\"; terminating." << endl;
+ return false;
+diff -Nur mongodb-src-r2.4.4.orig/src/mongo/db/instance.cpp mongodb-src-r2.4.4/src/mongo/db/instance.cpp
+--- mongodb-src-r2.4.4.orig/src/mongo/db/instance.cpp 2013-06-16 20:57:57.400197712 +0200
++++ mongodb-src-r2.4.4/src/mongo/db/instance.cpp 2013-06-28 20:44:18.037138076 +0200
+@@ -891,13 +891,21 @@
+ i != boost::filesystem::directory_iterator(); ++i ) {
+ if ( directoryperdb ) {
+ boost::filesystem::path p = *i;
++ #if BOOST_VERSION >= 104400
+ string dbName = p.leaf().string();
++ #else
++ string dbName = p.leaf();
++ #endif
+ p /= ( dbName + ".ns" );
+ if ( exists( p ) )
+ names.push_back( dbName );
+ }
+ else {
++ #if BOOST_VERSION >= 104400
+ string fileName = boost::filesystem::path(*i).leaf().string();
++ #else
++ string fileName = boost::filesystem::path(*i).leaf();
++ #endif
+ if ( fileName.length() > 3 && fileName.substr( fileName.length() - 3, 3 ) == ".ns" )
+ names.push_back( fileName.substr( 0, fileName.length() - 3 ) );
+ }
+diff -Nur mongodb-src-r2.4.4.orig/src/mongo/db/pdfile.cpp mongodb-src-r2.4.4/src/mongo/db/pdfile.cpp
+--- mongodb-src-r2.4.4.orig/src/mongo/db/pdfile.cpp 2013-06-16 20:57:57.418194086 +0200
++++ mongodb-src-r2.4.4/src/mongo/db/pdfile.cpp 2013-06-28 20:44:18.045139103 +0200
+@@ -30,6 +30,7 @@
+ #include <algorithm>
+ #include <boost/filesystem/operations.hpp>
+ #include <boost/optional/optional.hpp>
++#include <boost/utility/in_place_factory.hpp>
+ #include <list>
+
+ #include "mongo/base/counter.h"
+@@ -1916,7 +1917,11 @@
+ virtual bool apply( const Path &p ) {
+ if ( !boost::filesystem::exists( p ) )
+ return false;
++ #if BOOST_VERSION >= 104400
+ boostRenameWrapper( p, newPath_ / ( p.leaf().string() + ".bak" ) );
++ #else
++ boostRenameWrapper( p, newPath_ / ( p.leaf() + ".bak" ) );
++ #endif
+ return true;
+ }
+ virtual const char * op() const {
+diff -Nur mongodb-src-r2.4.4.orig/src/mongo/pch.h mongodb-src-r2.4.4/src/mongo/pch.h
+--- mongodb-src-r2.4.4.orig/src/mongo/pch.h 2013-06-16 20:57:57.424192878 +0200
++++ mongodb-src-r2.4.4/src/mongo/pch.h 2013-06-28 20:44:18.046139231 +0200
+@@ -47,6 +47,7 @@
+ #define BOOST_FILESYSTEM_VERSION 3
+ #include <boost/shared_ptr.hpp>
+ #include <boost/smart_ptr.hpp>
++#include <boost/make_shared.hpp>
+ #include <boost/function.hpp>
+ #include <boost/bind.hpp>
+ #include <boost/version.hpp>
+diff -Nur mongodb-src-r2.4.4.orig/src/mongo/shell/shell_utils_extended.cpp mongodb-src-r2.4.4/src/mongo/shell/shell_utils_extended.cpp
+--- mongodb-src-r2.4.4.orig/src/mongo/shell/shell_utils_extended.cpp 2013-06-16 20:57:57.487180186 +0200
++++ mongodb-src-r2.4.4/src/mongo/shell/shell_utils_extended.cpp 2013-06-28 20:44:18.043138846 +0200
+@@ -58,7 +58,11 @@
+ while ( i != end ) {
+ boost::filesystem::path p = *i;
+ BSONObjBuilder b;
++ #if BOOST_VERSION >= 104400
+ b << "name" << p.generic_string();
++ #else
++ b << "name" << p.string();
++ #endif
+ b.appendBool( "isDirectory", is_directory( p ) );
+ if ( ! boost::filesystem::is_directory( p ) ) {
+ try {
+diff -Nur mongodb-src-r2.4.4.orig/src/mongo/tools/restore.cpp mongodb-src-r2.4.4/src/mongo/tools/restore.cpp
+--- mongodb-src-r2.4.4.orig/src/mongo/tools/restore.cpp 2013-06-16 20:57:57.425192676 +0200
++++ mongodb-src-r2.4.4/src/mongo/tools/restore.cpp 2013-06-28 20:44:18.041138589 +0200
+@@ -231,7 +231,11 @@
+ LOG(2) << "drillDown: " << root.string() << endl;
+
+ // skip hidden files and directories
++ #if BOOST_VERSION >= 104400
+ if (root.leaf().string()[0] == '.' && root.leaf().string() != ".")
++ #else
++ if (root.leaf()[0] == '.' && root.leaf() != ".")
++ #endif
+ return;
+
+ if ( is_directory( root ) ) {
+@@ -306,14 +310,24 @@
+ ns += _db;
+ }
+ else {
++ #if BOOST_VERSION >= 104400
+ ns = root.parent_path().filename().string();
++ #else
++ ns = root.parent_path().filename();
++ #endif
+ if (ns.empty())
+ ns = "test";
+ }
+
+ verify( ns.size() );
+
+- string oldCollName = root.leaf().string(); // Name of the collection that was dumped from
++ // Name of the collection that was dumped from
++ #if BOOST_VERSION >= 104400
++ string oldCollName = root.leaf().string();
++ #else
++ string oldCollName = root.leaf();
++ #endif
++
+ oldCollName = oldCollName.substr( 0 , oldCollName.find_last_of( "." ) );
+ if (use_coll) {
+ ns += "." + _coll;
+@@ -352,7 +366,11 @@
+ 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 BOOST_VERSION >= 104400
+ if (!startsWith(metadataFile.leaf().string(), "system.")) {
++ #else
++ if (!startsWith(metadataFile.leaf(), "system.")) {
++ #endif
+ log() << metadataFile.string() << " not found. Skipping." << endl;
+ }
+ } else {
+diff -Nur mongodb-src-r2.4.4.orig/src/mongo/util/mmap.cpp mongodb-src-r2.4.4/src/mongo/util/mmap.cpp
+--- mongodb-src-r2.4.4.orig/src/mongo/util/mmap.cpp 2013-06-16 20:57:57.462185223 +0200
++++ mongodb-src-r2.4.4/src/mongo/util/mmap.cpp 2013-06-28 20:44:18.044138974 +0200
+@@ -198,7 +198,11 @@
+ void MongoFile::setFilename(const std::string& fn) {
+ LockMongoFilesExclusive lk;
+ verify( _filename.empty() );
++ #if BOOST_VERSION >= 104400
+ _filename = boost::filesystem::absolute(fn).generic_string();
++ #else
++ _filename = boost::filesystem::system_complete(fn).string();
++ #endif
+ MongoFile *&ptf = pathToFile[_filename];
+ massert(13617, "MongoFile : multiple opens of same filename", ptf == 0);
+ ptf = this;
+@@ -206,8 +210,12 @@
+
+ MongoFile* MongoFileFinder::findByPath(const std::string& path) const {
+ return mapFindWithDefault(pathToFile,
+- boost::filesystem::absolute(path).generic_string(),
+- static_cast<MongoFile*>(NULL));
++ #if BOOST_VERSION >= 104400
++ boost::filesystem::absolute(path).generic_string(),
++ #else
++ boost::filesystem::system_complete(path).string(),
++ #endif
++ static_cast<MongoFile*>(NULL));
+ }
+
+
diff --git a/mongodb-2.4.5-boost-size-fix.patch b/mongodb-2.4.5-boost-size-fix.patch
new file mode 100644
index 0000000..63d2a78
--- /dev/null
+++ b/mongodb-2.4.5-boost-size-fix.patch
@@ -0,0 +1,51 @@
+diff -Nur mongodb-src-r2.4.4.orig/src/mongo/db/auth/privilege_set.cpp mongodb-src-r2.4.4/src/mongo/db/auth/privilege_set.cpp
+--- mongodb-src-r2.4.4.orig/src/mongo/db/auth/privilege_set.cpp 2013-06-16 20:57:57.411195496 +0200
++++ mongodb-src-r2.4.4/src/mongo/db/auth/privilege_set.cpp 2013-06-30 12:37:08.567699530 +0200
+@@ -79,7 +79,7 @@
+ resourceSearchList[1] = nsToDatabaseSubstring(desiredPrivilege.getResource());
+
+ ActionSet unmetRequirements = desiredPrivilege.getActions();
+- for (int i = 0; i < boost::size(resourceSearchList); ++i) {
++ for (int i = 0; i < static_cast<int>(boost::size(resourceSearchList)); ++i) {
+ ResourcePrivilegeCacheEntry* entry = _lookupEntry(resourceSearchList[i]);
+ if (NULL == entry)
+ continue;
+diff -Nur mongodb-src-r2.4.4.orig/src/mongo/db/cmdline_test.cpp mongodb-src-r2.4.4/src/mongo/db/cmdline_test.cpp
+--- mongodb-src-r2.4.4.orig/src/mongo/db/cmdline_test.cpp 2013-06-16 20:57:57.399197914 +0200
++++ mongodb-src-r2.4.4/src/mongo/db/cmdline_test.cpp 2013-06-30 12:37:08.571700380 +0200
+@@ -102,7 +102,7 @@
+ "--servicePassword",
+ "xxxxxxxxxxxxxxxx"
+ };
+- ASSERT_EQUALS(boost::size(expected), argc);
++ ASSERT_EQUALS(static_cast<int>(boost::size(expected)), argc);
+
+ testCensoringArgv(expected, argv, argc);
+ }
+@@ -134,7 +134,7 @@
+ "-servicePassword",
+ "xxxxxxxxxxxxxxxx"
+ };
+- ASSERT_EQUALS(boost::size(expected), argc);
++ ASSERT_EQUALS(static_cast<int>(boost::size(expected)), argc);
+
+ testCensoringArgv(expected, argv, argc);
+ }
+@@ -183,7 +183,7 @@
+ "--servicePassword",
+ "<password>"
+ };
+- ASSERT_EQUALS(boost::size(expected), argc);
++ ASSERT_EQUALS(static_cast<int>(boost::size(expected)), argc);
+
+ testCensoringVector(expected, argv, argc);
+ }
+@@ -215,7 +215,7 @@
+ "-servicePassword",
+ "<password>"
+ };
+- ASSERT_EQUALS(boost::size(expected), argc);
++ ASSERT_EQUALS(static_cast<int>(boost::size(expected)), argc);
+
+ testCensoringVector(expected, argv, argc);
+ }
diff --git a/mongodb-2.4.5-gcc48.patch b/mongodb-2.4.5-gcc48.patch
new file mode 100644
index 0000000..1b22937
--- /dev/null
+++ b/mongodb-2.4.5-gcc48.patch
@@ -0,0 +1,62 @@
+diff -Nur mongodb-src-r2.4.4.orig/src/third_party/s2/base/casts.h mongodb-src-r2.4.4/src/third_party/s2/base/casts.h
+--- mongodb-src-r2.4.4.orig/src/third_party/s2/base/casts.h 2013-07-06 16:26:05.497291822 +0200
++++ mongodb-src-r2.4.4/src/third_party/s2/base/casts.h 2013-07-07 12:27:23.350678970 +0200
+@@ -160,7 +160,7 @@
+ inline Dest bit_cast(const Source& source) {
+ // Compile time assertion: sizeof(Dest) == sizeof(Source)
+ // A compile error here means your Dest and Source have different sizes.
+- typedef char VerifySizesAreEqual [sizeof(Dest) == sizeof(Source) ? 1 : -1];
++ typedef char VerifySizesAreEqual [sizeof(Dest) == sizeof(Source) ? 1 : -1] __attribute__((unused));
+
+ Dest dest;
+ memcpy(&dest, &source, sizeof(dest));
+diff -Nur mongodb-src-r2.4.4.orig/src/third_party/s2/base/macros.h mongodb-src-r2.4.4/src/third_party/s2/base/macros.h
+--- mongodb-src-r2.4.4.orig/src/third_party/s2/base/macros.h 2013-07-06 16:26:05.499292077 +0200
++++ mongodb-src-r2.4.4/src/third_party/s2/base/macros.h 2013-07-07 12:22:38.549907130 +0200
+@@ -46,7 +46,7 @@
+ };
+
+ #define COMPILE_ASSERT(expr, msg) \
+- typedef CompileAssert<(bool(expr))> msg[bool(expr) ? 1 : -1]
++ typedef CompileAssert<(bool(expr))> msg[bool(expr) ? 1 : -1] __attribute__((unused))
+
+ // Implementation details of COMPILE_ASSERT:
+ //
+diff -Nur mongodb-src-r2.4.4.orig/src/third_party/s2/util/coding/coder.h mongodb-src-r2.4.4/src/third_party/s2/util/coding/coder.h
+--- mongodb-src-r2.4.4.orig/src/third_party/s2/util/coding/coder.h 2013-07-06 16:26:05.509293353 +0200
++++ mongodb-src-r2.4.4/src/third_party/s2/util/coding/coder.h 2013-07-07 12:20:37.419825340 +0200
+@@ -358,14 +358,14 @@
+
+ inline void Encoder::putfloat(float f) {
+ uint32 v;
+- typedef char VerifySizesAreEqual[sizeof(f) == sizeof(v) ? 1 : -1];
++ typedef char VerifySizesAreEqual[sizeof(f) == sizeof(v) ? 1 : -1] __attribute__((unused));
+ memcpy(&v, &f, sizeof(f));
+ put32(v);
+ }
+
+ inline void Encoder::putdouble(double d) {
+ uint64 v;
+- typedef char VerifySizesAreEqual[sizeof(d) == sizeof(v) ? 1 : -1];
++ typedef char VerifySizesAreEqual[sizeof(d) == sizeof(v) ? 1 : -1] __attribute__((unused));
+ memcpy(&v, &d, sizeof(d));
+ put64(v);
+ }
+@@ -408,7 +408,7 @@
+ inline float Decoder::getfloat() {
+ uint32 v = get32();
+ float f;
+- typedef char VerifySizesAreEqual[sizeof(f) == sizeof(v) ? 1 : -1];
++ typedef char VerifySizesAreEqual[sizeof(f) == sizeof(v) ? 1 : -1] __attribute__((unused));
+ memcpy(&f, &v, sizeof(f));
+ return f;
+ }
+@@ -416,7 +416,7 @@
+ inline double Decoder::getdouble() {
+ uint64 v = get64();
+ double d;
+- typedef char VerifySizesAreEqual[sizeof(d) == sizeof(v) ? 1 : -1];
++ typedef char VerifySizesAreEqual[sizeof(d) == sizeof(v) ? 1 : -1] __attribute__((unused));
+ memcpy(&d, &v, sizeof(d));
+ return d;
+ }
diff --git a/mongodb-2.4.5-no-term.patch b/mongodb-2.4.5-no-term.patch
new file mode 100644
index 0000000..47369e9
--- /dev/null
+++ b/mongodb-2.4.5-no-term.patch
@@ -0,0 +1,12 @@
+diff -Nur mongodb-src-r2.4.4.orig/SConstruct mongodb-src-r2.4.4/SConstruct
+--- mongodb-src-r2.4.4.orig/SConstruct 2013-06-16 20:57:58.272022055 +0200
++++ mongodb-src-r2.4.4/SConstruct 2013-06-28 20:32:06.306624632 +0200
+@@ -702,7 +702,7 @@
+ env.Append( LIBS=[] )
+
+ #make scons colorgcc friendly
+- for key in ('HOME', 'TERM'):
++ for key in ('HOME'):
+ try:
+ env['ENV'][key] = os.environ[key]
+ except KeyError:
diff --git a/mongodb-2.4.5-pass-flags.patch b/mongodb-2.4.5-pass-flags.patch
new file mode 100644
index 0000000..855996a
--- /dev/null
+++ b/mongodb-2.4.5-pass-flags.patch
@@ -0,0 +1,38 @@
+diff -urp mongodb-src-r2.4.5.orig/SConstruct mongodb-src-r2.4.5/SConstruct
+--- mongodb-src-r2.4.5.orig/SConstruct 2013-07-08 16:30:00.013000000 -0500
++++ mongodb-src-r2.4.5/SConstruct 2013-07-08 16:30:32.853000000 -0500
+@@ -154,6 +154,9 @@ add_option( "cxx", "compiler to use" , 1
+ add_option( "cc", "compiler to use for c" , 1 , True )
+ add_option( "ld", "linker to use" , 1 , True )
+
++add_option( "extraccflags", "add'l ccflag options (--extraccflags -fPIC)" , 1 , True )
++add_option( "extralinkflags", "add'l linkflag options (--extralinkflags -fPIC)" , 1 , True )
++
+ add_option( "cpppath", "Include path if you have headers in a nonstandard directory" , 1 , True )
+ add_option( "libpath", "Library path if you have libraries in a nonstandard directory" , 1 , True )
+
+@@ -450,6 +453,14 @@ if has_option( "extralib" ):
+ for x in GetOption( "extralib" ).split( "," ):
+ env.Append( LIBS=[ x ] )
+
++if has_option( "extraccflags" ):
++ for x in GetOption( "extraccflags" ).split( " " ):
++ env.Append( CCFLAGS=[ x ] )
++
++if has_option( "extralinkflags" ):
++ for x in GetOption( "extralinkflags" ).split( " " ):
++ env.Append( LINKFLAGS=[ x ] )
++
+ class InstallSetup:
+ binaries = False
+ libraries = False
+@@ -765,6 +776,9 @@ if nix:
+ print( "removing precompiled headers" )
+ os.unlink( env.File("$BUILD_DIR/mongo/pch.h.$GCHSUFFIX").abspath ) # gcc uses the file if it exists
+
++ print( "DEBUG - CCFLAGS::" + env["CCFLAGS"] + "::" )
++ print( "DEBUG - LINKFLAGS::" + env["LINKFLAGS"] + "::" )
++
+ if usesm:
+ env.Append( CPPDEFINES=["JS_C_STRINGS_ARE_UTF8"] )
+
diff --git a/mongodb-2.4.5-signed-char-for-BSONType-enumerations.patch b/mongodb-2.4.5-signed-char-for-BSONType-enumerations.patch
new file mode 100644
index 0000000..12a270e
--- /dev/null
+++ b/mongodb-2.4.5-signed-char-for-BSONType-enumerations.patch
@@ -0,0 +1,35 @@
+From a1689790db10139d09c4fb29f500470564faabde Mon Sep 17 00:00:00 2001
+From: Robie Basak <robie.basak at canonical.com>
+Date: Mon, 6 May 2013 23:01:56 +0100
+Subject: [PATCH] SERVER-9680 Use a signed char to store BSONType enumerations
+
+MinKey is defined as -1, so a signed char must be used to store BSONType
+enumerations. Using a char to store a negative value results in
+undefined behaviour. On i386 and amd64 architectures it happens to work
+because on these platforms a char is generally signed, but this is not
+guaranteed.
+
+This fixes a build failure on ARM, where chars are unsigned by default,
+and using MinKey (defined as -1) results in a compiler error.
+---
+ src/mongo/bson/bson_validate.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/mongo/bson/bson_validate.cpp b/src/mongo/bson/bson_validate.cpp
+index 9ac0bcb..88e6d48 100644
+--- a/src/mongo/bson/bson_validate.cpp
++++ b/src/mongo/bson/bson_validate.cpp
+@@ -130,8 +130,8 @@
+ Status validateElementInfo(Buffer* buffer, ValidationState::State* nextState) {
+ Status status = Status::OK();
+
+- char type;
+- if ( !buffer->readNumber<char>(&type) )
++ signed char type;
++ if ( !buffer->readNumber<signed char>(&type) )
+ return Status( ErrorCodes::InvalidBSON, "invalid bson" );
+
+ if ( type == EOO ) {
+--
+1.8.1.6
+
diff --git a/mongodb-2.4.5-use-system-version.patch b/mongodb-2.4.5-use-system-version.patch
new file mode 100644
index 0000000..638b8f0
--- /dev/null
+++ b/mongodb-2.4.5-use-system-version.patch
@@ -0,0 +1,41 @@
+diff -Nur mongodb-src-r2.4.4.orig/SConstruct mongodb-src-r2.4.4/SConstruct
+--- mongodb-src-r2.4.4.orig/SConstruct 2013-06-16 20:57:58.272022055 +0200
++++ mongodb-src-r2.4.4/SConstruct 2013-06-28 20:37:15.266916910 +0200
+@@ -246,7 +246,7 @@
+
+ printLocalInfo()
+
+-boostLibs = [ "thread" , "filesystem" , "program_options", "system" ]
++boostLibs = [ "thread" , "filesystem" , "iostreams" , "program_options", "system" ]
+
+ onlyServer = len( COMMAND_LINE_TARGETS ) == 0 or ( len( COMMAND_LINE_TARGETS ) == 1 and str( COMMAND_LINE_TARGETS[0] ) in [ "mongod" , "mongos" , "test" ] )
+ nix = False
+@@ -805,6 +805,28 @@
+ print( "c++ compiler not installed!" )
+ Exit(1)
+
++ if use_system_version_of_library("snappy"):
++ if not conf.CheckCXXHeader("snappy.h"):
++ print( "can't find snappy header" )
++ Exit(1)
++ if not conf.CheckLib("libsnappy"):
++ print( "can't find snappy library" )
++ Exit(1)
++
++ if use_system_version_of_library("pcre"):
++ if not conf.CheckCXXHeader("pcre.h"):
++ print( "can't find pcre header" )
++ Exit(1)
++ if not conf.CheckLib("libpcre"):
++ print( "can't find pcre library" )
++ Exit(1)
++ if not conf.CheckCXXHeader("pcrecpp.h"):
++ print( "can't find pcrecpp header" )
++ Exit(1)
++ if not conf.CheckLib("libpcrecpp"):
++ print( "can't find pcrecpp library" )
++ Exit(1)
++
+ if use_system_version_of_library("boost"):
+ if not conf.CheckCXXHeader( "boost/filesystem/operations.hpp" ):
+ print( "can't find boost headers" )
diff --git a/mongodb-tmpfile b/mongodb-tmpfile
new file mode 100644
index 0000000..634b44e
--- /dev/null
+++ b/mongodb-tmpfile
@@ -0,0 +1,3 @@
+# make sure the mongodb dir is owned by mongodb so the process running as
+# mongodb can write the pid there
+d /run/mongodb 0755 mongodb root -
diff --git a/mongodb.conf b/mongodb.conf
new file mode 100644
index 0000000..2a0e389
--- /dev/null
+++ b/mongodb.conf
@@ -0,0 +1,88 @@
+##
+### Basic Defaults
+##
+bind_ip = 127.0.0.1
+port = 27017
+fork = true
+pidfilepath = /var/run/mongodb/mongodb.pid
+logpath = /var/log/mongodb/mongodb.log
+dbpath =/var/lib/mongodb
+journal = true
+
+# Enables periodic logging of CPU utilization and I/O wait
+#cpu = true
+
+# Turn on/off security. Off is currently the default
+#noauth = true
+#auth = true
+
+# Verbose logging output.
+#verbose = true
+
+# Inspect all client data for validity on receipt (useful for
+# developing drivers)
+#objcheck = true
+
+# Enable db quota management
+#quota = true
+
+# Set oplogging level where n is
+# 0=off (default)
+# 1=W
+# 2=R
+# 3=both
+# 7=W+some reads
+#oplog = 0
+
+# Diagnostic/debugging option
+#nocursors = true
+
+# Ignore query hints
+#nohints = true
+
+# Disable the HTTP interface (Defaults to port+1000).
+nohttpinterface = true
+
+# Turns off server-side scripting. This will result in greatly limited
+# functionality
+#noscripting = true
+
+# Turns off table scans. Any query that would do a table scan fails.
+#notablescan = true
+
+# Disable data file preallocation.
+#noprealloc = true
+
+# Specify .ns file size for new databases.
+# nssize = <size>
+
+# Accout token for Mongo monitoring server.
+#mms-token = <token>
+
+# Server name for Mongo monitoring server.
+#mms-name = <server-name>
+
+# Ping interval for Mongo monitoring server.
+#mms-interval = <seconds>
+
+# Replication Options
+
+# in replicated mongo databases, specify here whether this is a slave or master
+#slave = true
+#source = master.example.com
+# Slave only: specify a single database to replicate
+#only = master.example.com
+# or
+#master = true
+#source = slave.example.com
+
+# Address of a server to pair with.
+#pairwith = <server:port>
+# Address of arbiter server.
+#arbiter = <server:port>
+# Automatically resync if slave data is stale
+#autoresync
+# Custom size for replication operation log.
+#oplogSize = <MB>
+# Size limit for in-memory storage of op ids.
+#opIdMem = <bytes>
diff --git a/mongodb.init b/mongodb.init
new file mode 100644
index 0000000..5d84a88
--- /dev/null
+++ b/mongodb.init
@@ -0,0 +1,168 @@
+#!/bin/sh
+#
+# mongodb init file for starting up the MongoDB server
+#
+# chkconfig: - 90 10
+# description: Starts and stops the MongDB daemon that handles all \
+# database requests.
+
+# Source function library.
+. /etc/rc.d/init.d/functions
+
+exec="/usr/bin/mongod"
+prog="mongod"
+logfile="/var/log/mongodb/mongodb.log"
+
+[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
+
+pidfile=${PIDFILE-/var/run/mongodb/mongodb.pid}
+options="$OPTIONS"
+lockfile="/var/lock/subsys/mongod"
+
+# Nicer version of killproc that does not kill mongodb when it takes
+# a long time to shut down and does not hang for a long time when mongo
+# shuts down quickly
+killproc_nice() {
+ local RC base pid pid_file= delay i
+
+ RC=0; delay=3
+ # Test syntax.
+ if [ "$#" -eq 0 ]; then
+ echo $"Usage: killproc [-p pidfile] [ -d delay] {program} [-signal]"
+ return 1
+ fi
+ if [ "$1" = "-p" ]; then
+ pid_file=$2
+ shift 2
+ fi
+ if [ "$1" = "-d" ]; then
+ delay=$2
+ shift 2
+ fi
+
+ # Save basename.
+ base=${1##*/}
+
+ # Find pid.
+ __pids_var_run "$1" "$pid_file"
+ RC=$?
+ if [ -z "$pid" ]; then
+ if [ -z "$pid_file" ]; then
+ pid="$(__pids_pidof "$1")"
+ else
+ [ "$RC" = "4" ] && { failure $"$base shutdown" ; return $RC ;}
+ fi
+ fi
+
+ # Kill it.
+ if [ -n "$pid" ] ; then
+ [ "$BOOTUP" = "verbose" -a -z "${LSB:-}" ] && echo -n "$base "
+ if checkpid $pid 2>&1; then
+ # TERM first, then KILL if not dead
+ kill -TERM $pid >/dev/null 2>&1
+ usleep 100000
+
+ # Check every one second if the program is stopped.
+ # Do so for a maximum of $delay seconds
+ for ((i = 0 ; i < $delay; i++))
+ do
+ if checkpid $pid; then
+ sleep 1
+ else
+ break
+ fi
+ done
+
+ # If the program is not stopped, kill it
+ if checkpid $pid ; then
+ kill -KILL $pid >/dev/null 2>&1
+ usleep 100000
+ fi
+ fi
+ checkpid $pid
+ RC=$?
+ [ "$RC" -eq 0 ] && failure $"$base shutdown" || success $"$base shutdown"
+ RC=$((! $RC))
+ else
+ failure $"$base shutdown"
+ RC=0
+ fi
+
+ # Remove pid file if any.
+ rm -f "${pid_file:-/var/run/$base.pid}"
+ return $RC
+}
+
+start() {
+ [ -x $exec ] || exit 5
+ echo -n $"Starting $prog: "
+ daemon --pidfile=${pidfile} --user mongodb "$exec $options run >> $logfile 2>&1 &"
+ retval=$?
+ echo
+ [ $retval -eq 0 ] && touch $lockfile
+ return $retval
+}
+
+stop() {
+ echo -n $"Stopping $prog: "
+ killproc_nice -p ${pidfile} -d 300 $prog
+ retval=$?
+ echo
+ [ $retval -eq 0 ] && rm -f $lockfile
+ return $retval
+}
+
+restart() {
+ stop
+ start
+}
+
+reload() {
+ restart
+}
+
+force_reload() {
+ restart
+}
+
+rh_status() {
+ # run checks to determine if the service is running or use generic status
+ status -p ${pidfile} $prog
+}
+
+rh_status_q() {
+ rh_status >/dev/null 2>&1
+}
+
+
+case "$1" in
+ start)
+ rh_status_q && exit 0
+ $1
+ ;;
+ stop)
+ rh_status_q || exit 0
+ $1
+ ;;
+ restart)
+ $1
+ ;;
+ reload)
+ rh_status_q || exit 7
+ $1
+ ;;
+ force-reload)
+ force_reload
+ ;;
+ status)
+ rh_status
+ ;;
+ condrestart|try-restart)
+ rh_status_q || exit 0
+ restart
+ ;;
+ *)
+ echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
+ exit 2
+esac
+exit $?
diff --git a/mongodb.logrotate b/mongodb.logrotate
new file mode 100644
index 0000000..862d57b
--- /dev/null
+++ b/mongodb.logrotate
@@ -0,0 +1,12 @@
+/var/log/mongodb/*.log {
+ weekly
+ rotate 10
+ copytruncate
+ delaycompress
+ compress
+ notifempty
+ missingok
+ postrotate
+ /bin/kill -USR1 `cat /var/run/mongodb/mongodb.pid 2>/dev/null` 2> /dev/null|| true
+ endscript
+}
\ No newline at end of file
diff --git a/mongodb.spec b/mongodb.spec
new file mode 100644
index 0000000..11770f7
--- /dev/null
+++ b/mongodb.spec
@@ -0,0 +1,606 @@
+%global daemon mongod
+
+Name: mongodb
+Version: 2.4.6
+Release: 5%{?dist}
+Summary: High-performance, schema-free document-oriented database
+Group: Applications/Databases
+License: AGPLv3 and zlib and ASL 2.0
+# util/md5 is under the zlib license
+# manpages and bson are under ASL 2.0
+# everything else is AGPLv3
+URL: http://www.mongodb.org
+
+Source0: http://fastdl.mongodb.org/src/%{name}-src-r%{version}.tar.gz
+Source1: %{name}.init
+Source2: %{name}.logrotate
+Source3: %{name}.conf
+Source4: %{daemon}.sysconf
+Source5: %{name}-tmpfile
+Source6: %{daemon}.service
+Patch1: mongodb-2.4.5-no-term.patch
+##Patch 2 - make it possible to use system libraries
+Patch2: mongodb-2.4.5-use-system-version.patch
+##Patch 5 - https://jira.mongodb.org/browse/SERVER-9210
+Patch5: mongodb-2.4.5-boost-fix.patch
+##Patch 6 - https://github.com/mongodb/mongo/commit/1d42a534e0eb1e9ac868c0234495c0333d57d7c1
+Patch6: mongodb-2.4.5-boost-size-fix.patch
+##Patch 7 - https://bugzilla.redhat.com/show_bug.cgi?id=958014
+## Need to work on getting this properly patched upstream
+Patch7: mongodb-2.4.5-pass-flags.patch
+##Patch 8 - Compile with GCC 4.8
+Patch8: mongodb-2.4.5-gcc48.patch
+##Patch 10 - Support atomics on ARM
+Patch10: mongodb-2.4.5-atomics.patch
+##From: Robie Basak <robie.basak at canonical.com>
+## Use a signed char to store BSONType enumerations
+##Patch 11 https://jira.mongodb.org/browse/SERVER-9680
+Patch11: mongodb-2.4.5-signed-char-for-BSONType-enumerations.patch
+
+Requires: v8 >= 3.14.5.10
+BuildRequires: python-devel
+BuildRequires: scons
+BuildRequires: openssl-devel
+BuildRequires: boost-devel
+BuildRequires: pcre-devel
+BuildRequires: v8-devel
+BuildRequires: readline-devel
+BuildRequires: libpcap-devel
+BuildRequires: snappy-devel
+BuildRequires: gperftools-devel
+%if 0%{?fedora} >= 15
+BuildRequires: systemd
+%endif
+
+# Mongodb must run on a little-endian CPU (see bug #630898)
+ExcludeArch: ppc ppc64 %{sparc} s390 s390x
+
+%description
+Mongo (from "humongous") is a high-performance, open source, schema-free
+document-oriented database. MongoDB is written in C++ and offers the following
+features:
+ * Collection oriented storage: easy storage of object/JSON-style data
+ * Dynamic queries
+ * Full index support, including on inner objects and embedded arrays
+ * Query profiling
+ * Replication and fail-over support
+ * Efficient storage of binary data including large objects (e.g. photos
+ and videos)
+ * Auto-sharding for cloud-level scalability (currently in early alpha)
+ * Commercial Support Available
+
+A key goal of MongoDB is to bridge the gap between key/value stores (which are
+fast and highly scalable) and traditional RDBMS systems (which are deep in
+functionality).
+
+%package -n lib%{name}
+Summary: MongoDB shared libraries
+Group: Development/Libraries
+
+%description -n lib%{name}
+This package provides the shared library for the MongoDB client.
+
+%package -n lib%{name}-devel
+Summary: MongoDB header files
+Group: Development/Libraries
+Requires: lib%{name} = %{version}-%{release}
+Requires: boost-devel
+Provides: mongodb-devel = %{version}-%{release}
+Obsoletes: mongodb-devel < 2.4
+
+%description -n lib%{name}-devel
+This package provides the header files and C++ driver for MongoDB. MongoDB is
+a high-performance, open source, schema-free document-oriented database.
+
+%package server
+Summary: MongoDB server, sharding server and support scripts
+Group: Applications/Databases
+Requires(pre): shadow-utils
+Requires: v8
+%if 0%{?fedora} >= 15
+Requires(post): systemd-units
+Requires(preun): systemd-units
+Requires(postun): systemd-units
+%else
+Requires(post): chkconfig
+Requires(preun): chkconfig
+Requires(postun): initscripts
+%endif
+
+%description server
+This package provides the mongo server software, mongo sharding server
+software, default configuration files, and init scripts.
+
+
+%prep
+%setup -q -n mongodb-src-r%{version}
+%patch1 -p1
+%patch2 -p1
+%patch5 -p1
+%patch6 -p1
+%patch7 -p1
+%patch8 -p1
+%patch10 -p1 -b .atomics
+%patch11 -p1 -b .type
+
+# spurious permissions
+chmod -x README
+
+# wrong end-of-file encoding
+sed -i 's/\r//' README
+
+# Put lib dir in correct place
+# https://jira.mongodb.org/browse/SERVER-10049
+sed -i -e "s@\$INSTALL_DIR/lib@\$INSTALL_DIR/%{_lib}@g" src/SConscript.client
+
+%build
+# NOTE: Build flags must be EXACTLY the same in the install step!
+# If you fail to do this, mongodb will be built twice...
+scons \
+ %{?_smp_mflags} \
+ --sharedclient \
+ --use-system-all \
+ --prefix=%{buildroot}%{_prefix} \
+ --extrapath=%{_prefix} \
+ --usev8 \
+ --nostrip \
+ --ssl \
+ --full
+
+%install
+# NOTE: Install flags must be EXACTLY the same in the build step!
+# If you fail to do this, mongodb will be built twice...
+scons install \
+ %{?_smp_mflags} \
+ --sharedclient \
+ --use-system-all \
+ --prefix=%{buildroot}%{_prefix} \
+ --extrapath=%{_prefix} \
+ --usev8 \
+ --nostrip \
+ --ssl \
+ --full
+rm -f %{buildroot}%{_libdir}/libmongoclient.a
+rm -f %{buildroot}%{_libdir}/../lib/libmongoclient.a
+
+mkdir -p %{buildroot}%{_sharedstatedir}/%{name}
+mkdir -p %{buildroot}%{_localstatedir}/log/%{name}
+mkdir -p %{buildroot}%{_localstatedir}/run/%{name}
+mkdir -p %{buildroot}%{_sysconfdir}/sysconfig
+
+%if 0%{?fedora} >= 15
+mkdir -p %{buildroot}%{_unitdir}
+install -p -D -m 644 %{SOURCE5} %{buildroot}%{_libdir}/../lib/tmpfiles.d/mongodb.conf
+install -p -D -m 644 %{SOURCE6} %{buildroot}%{_unitdir}/%{daemon}.service
+%else
+install -p -D -m 755 %{SOURCE1} %{buildroot}%{_initddir}/%{daemon}
+%endif
+install -p -D -m 644 %{SOURCE2} %{buildroot}%{_sysconfdir}/logrotate.d/%{name}
+install -p -D -m 644 %{SOURCE3} %{buildroot}%{_sysconfdir}/mongodb.conf
+install -p -D -m 644 %{SOURCE4} %{buildroot}%{_sysconfdir}/sysconfig/%{daemon}
+
+mkdir -p %{buildroot}%{_mandir}/man1
+cp -p debian/*.1 %{buildroot}%{_mandir}/man1/
+
+mkdir -p %{buildroot}%{_localstatedir}/run/%{name}
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%pre server
+getent group %{name} >/dev/null || groupadd -r %{name}
+getent passwd %{name} >/dev/null || \
+useradd -r -g %{name} -u 184 -d %{_sharedstatedir}/%{name} -s /sbin/nologin \
+-c "MongoDB Database Server" %{name}
+exit 0
+
+%post server
+%if 0%{?fedora} >= 15
+/bin/systemd-tmpfiles --create mongodb.conf
+/bin/systemctl daemon-reload &> /dev/null || :
+%else
+/sbin/chkconfig --add %{daemon}
+%endif
+
+
+%preun server
+if [ $1 = 0 ] ; then
+%if 0%{?fedora} >= 15
+ /bin/systemctl --no-reload disable %{daemon}.service &> /dev/null
+ /bin/systemctl stop %{daemon}.service &> /dev/null
+%else
+ /sbin/service %{daemon} stop >/dev/null 2>&1
+ /sbin/chkconfig --del %{daemon}
+%endif
+fi
+
+
+%postun server
+%if 0%{?fedora} >= 15
+/bin/systemctl daemon-reload &> /dev/null
+%endif
+if [ "$1" -ge "1" ] ; then
+%if 0%{?fedora} >= 15
+ /bin/systemctl try-restart %{daemon}.service &> /dev/null
+%else
+ /sbin/service %{daemon} condrestart >/dev/null 2>&1 || :
+%endif
+fi
+
+
+%files
+%{_bindir}/bsondump
+%{_bindir}/mongo
+%{_bindir}/mongodump
+%{_bindir}/mongoexport
+%{_bindir}/mongofiles
+%{_bindir}/mongoimport
+%{_bindir}/mongooplog
+%{_bindir}/mongoperf
+%{_bindir}/mongorestore
+%{_bindir}/mongosniff
+%{_bindir}/mongostat
+%{_bindir}/mongotop
+
+%{_mandir}/man1/bsondump.1*
+%{_mandir}/man1/mongo.1*
+%{_mandir}/man1/mongodump.1*
+%{_mandir}/man1/mongoexport.1*
+%{_mandir}/man1/mongofiles.1*
+%{_mandir}/man1/mongoimport.1*
+%{_mandir}/man1/mongooplog.1*
+%{_mandir}/man1/mongoperf.1*
+%{_mandir}/man1/mongorestore.1*
+%{_mandir}/man1/mongosniff.1*
+%{_mandir}/man1/mongostat.1*
+%{_mandir}/man1/mongotop.1*
+
+%files -n lib%{name}
+%doc README GNU-AGPL-3.0.txt APACHE-2.0.txt
+%{_libdir}/libmongoclient.so
+
+%files server
+%{_bindir}/mongod
+%{_bindir}/mongos
+%{_mandir}/man1/mongod.1*
+%{_mandir}/man1/mongos.1*
+%dir %attr(0755, %{name}, root) %{_sharedstatedir}/%{name}
+%dir %attr(0755, %{name}, root) %{_localstatedir}/log/%{name}
+%dir %attr(0755, %{name}, root) %{_localstatedir}/run/%{name}
+%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
+%config(noreplace) %{_sysconfdir}/mongodb.conf
+%config(noreplace) %{_sysconfdir}/sysconfig/%{daemon}
+%if 0%{?fedora} >= 15
+%{_unitdir}/*.service
+%{_libdir}/../lib/tmpfiles.d/mongodb.conf
+%else
+%{_initddir}/%{daemon}
+%endif
+
+%files -n lib%{name}-devel
+%{_includedir}
+
+%changelog
+* Fri Feb 07 2014 Jan Pacner <jpacner at redhat.com> - 2.4.6-5
+- Related: #1027157 (mongo segfaults with an older version of v8; allow higher
+ versions of v8 - assume API compatibility)
+
+* Tue Feb 04 2014 Jan Pacner <jpacner at redhat.com> - 2.4.6-4
+- Related: #1022476 (.sysconf not respected; fix issue from comment #2)
+- Related: #1027157 (mongo segfaults with an older version of v8; fix Requires: specification)
+
+* Mon Jan 06 2014 Jan Pacner <jpacner at redhat.com> - 2.4.6-3
+- Resolves: #1027157 (mongo shell sefgaults when using arbitrary v8 version)
+
+* Fri Oct 25 2013 Jan Pacner <jpacner at redhat.com> - 2.4.6-2
+- fix #1022476 (sysconf options not respected)
+
+* Wed Aug 21 2013 Troy Dawson <tdawson at redhat.com> - 2.4.6-1
+- Updated to 2.4.6
+- Added Requires: v8 (#971595)
+
+* Sun Jul 28 2013 Petr Machata <pmachata at redhat.com> - 2.4.5-6
+- Rebuild for boost 1.54.0
+
+* Sat Jul 27 2013 pmachata at redhat.com - 2.4.5-5
+- Rebuild for boost 1.54.0
+
+* Fri Jul 12 2013 Troy Dawson <tdawson at redhat.com> - 2.4.5-4
+- Added Provides: mongodb-devel to libmongodb-devel
+
+* Fri Jul 12 2013 Troy Dawson <tdawson at redhat.com> - 2.4.5-3
+- Removed hardening section. Currently doesn't work with 2.4.x
+ Wasn't really being applied when we thought it was.
+- Cleaned up RHEL5 spec leftovers
+
+* Thu Jul 11 2013 David Marlin <dmarlin at redhat.com> - 2.4.5-2
+- Updated arm patches to work with 2.4.x
+
+* Mon Jul 08 2013 Troy Dawson <tdawson at redhat.com> - 2.4.5-1
+- Update to version 2.4.5 to fix CVE-2013-4650
+- Patch3 fixed upstream - https://jira.mongodb.org/browse/SERVER-5575
+- Patch4 fixed upstream - https://jira.mongodb.org/browse/SERVER-6514
+- Put lib dir in correct place
+- no longer have to remove duplicate headers
+
+* Sun Jul 07 2013 Johan Hedin <johan.o.hedin at gmail.com> - 2.4.4-4
+- Added patch to make mongodb compile with gcc 4.8
+
+* Wed Jul 03 2013 Johan Hedin <johan.o.hedin at gmail.com> - 2.4.4-3
+- Added missing daemon name to the preun script for the server
+- Fixed init script so that it does not kill the server on shutdown
+- Renamed mongodb-devel to libmongdb-devel
+- Dependency cleanup between the sub packages
+- Moved Requires for the server to the server sub package
+- Using %%{_unitdir} macro for where to put systemd unit files
+- Fixed rpmlint warnings regarding %% in comments and mixed tabs/spaces
+- Run systemd-tmpfiles --create mongodb.conf in post server
+
+* Mon Jul 01 2013 Troy Dawson <tdawson at redhat.com> - 2.4.4-2
+- Turn on hardened build (#958014)
+- Apply patch to accept env flags
+
+* Sun Jun 30 2013 Johan Hedin <johan.o.hedin at gmail.com> - 2.4.4-1
+- Bumped version up to 2.4.4
+- Rebased the old 2.2 patches that are still needed to 2.4.4
+- Added some new patches to build 2.4.4 properly
+
+* Sat May 04 2013 David Marlin <dmarlin at redhat.com> - 2.2.4-2
+- Updated patch to work on both ARMv5 and ARMv7 (#921226)
+
+* Thu May 02 2013 Troy Dawson <tdawson at redhat.com> - 2.2.4-1
+- Bumped version up to 2.2.4
+- Refreshed all patches to 2.2.4
+
+* Fri Apr 26 2013 David Marlin <dmarlin at redhat.com> - 2.2.3-5
+- Patch to build on ARM (#921226)
+
+* Wed Mar 27 2013 Troy Dawson <tdawson at redhat.com> - 2.2.3-4
+- Fix for CVE-2013-1892
+
+* Sun Feb 10 2013 Denis Arnaud <denis.arnaud_fedora at m4x.org> - 2.2.3-3
+- Rebuild for Boost-1.53.0
+
+* Sat Feb 09 2013 Denis Arnaud <denis.arnaud_fedora at m4x.org> - 2.2.3-2
+- Rebuild for Boost-1.53.0
+
+* Tue Feb 05 2013 Troy Dawson <tdawson at redhat.com> - 2.2.3-1
+- Update to version 2.2.3
+
+* Mon Jan 07 2013 Troy Dawson <tdawson at redhat.com> - 2.2.2-2
+- remove duplicate headers (#886064)
+
+* Wed Dec 05 2012 Troy Dawson <tdawson at redhat.com> - 2.2.2-1
+- Updated to version 2.2.2
+
+* Tue Nov 27 2012 Troy Dawson <tdawson at redhat.com> - 2.2.1-3
+- Add ssl build option
+- Using the reserved mongod UID for the useradd
+- mongod man page in server package (#880351)
+- added optional MONGODB_OPTIONS to init script
+
+* Wed Oct 31 2012 Nathaniel McCallum <nathaniel at natemccallum.com> - 2.2.1-2
+- Make sure build and install flags are the same
+- Actually remove the js patch file
+
+* Wed Oct 31 2012 Nathaniel McCallum <nathaniel at natemccallum.com> - 2.2.1-1
+- Remove fork fix patch (fixed upstream)
+- Remove pcre patch (fixed upstream)
+- Remove mozjs patch (now using v8 upstream)
+- Update to 2.2.1
+
+* Tue Oct 02 2012 Troy Dawson <tdawson at redhat.com> - 2.2.0-6
+- full flag patch to get 32 bit builds to work
+
+* Tue Oct 02 2012 Troy Dawson <tdawson at redhat.com> - 2.2.0-5
+- shared libraries patch
+- Fix up minor %%files issues
+
+* Fri Sep 28 2012 Troy Dawson <tdawson at redhat.com> - 2.2.0-4
+- Fix spec files problems
+
+* Fri Sep 28 2012 Troy Dawson <tdawson at redhat.com> - 2.2.0-3
+- Updated patch to use system libraries
+- Update init script to use a pidfile
+
+* Thu Sep 27 2012 Troy Dawson <tdawson at redhat.com> - 2.2.0-2
+- Added patch to use system libraries
+
+* Wed Sep 19 2012 Troy Dawson <tdawson at redhat.com> - 2.2.0-1
+- Updated to 2.2.0
+- Updated patches that were still needed
+- use v8 instead of spider_monkey due to bundled library issues
+
+* Tue Aug 21 2012 Nathaniel McCallum <nathaniel at natemccallum.com> - 2.0.7-1
+- Update to 2.0.7
+- Don't patch for boost-filesystem version 3 on EL6
+
+* Mon Aug 13 2012 Nathaniel McCallum <nathaniel at natemccallum.com> - 2.0.6-3
+- Remove EL5 support
+- Add patch to use boost-filesystem version 3
+
+* Wed Aug 01 2012 Nathaniel McCallum <nathaniel at natemccallum.com> - 2.0.6-2
+- Don't apply fix-xtime patch on EL5
+
+* Wed Aug 01 2012 Nathaniel McCallum <nathaniel at natemccallum.com> - 2.0.6-1
+- Update to 2.0.6
+- Update no-term patch
+- Add fix-xtime patch for new boost
+
+* Fri Jul 20 2012 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 2.0.4-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
+
+* Tue Apr 17 2012 Nathaniel McCallum <nathaniel at natemccallum.com> - 2.0.4-1
+- Update to 2.0.4
+- Remove oldpython patch (fixed upstream)
+- Remove snappy patch (fixed upstream)
+
+* Tue Feb 28 2012 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 2.0.2-10
+- Rebuilt for c++ ABI breakage
+
+* Fri Feb 10 2012 Petr Pisar <ppisar at redhat.com> - 2.0.2-9
+- Rebuild against PCRE 8.30
+
+* Fri Feb 03 2012 Nathaniel McCallum <nathaniel at natemccallum.com> - 2.0.2-8
+- Disable HTTP interface by default (#752331)
+
+* Fri Feb 03 2012 Nathaniel McCallum <nathaniel at natemccallum.com> - 2.0.2-7
+- Enable journaling by default (#656112)
+- Remove BuildRequires on unittest (#755081)
+
+* Fri Feb 03 2012 Nathaniel McCallum <nathaniel at natemccallum.com> - 2.0.2-6
+- Clean up mongodb-src-r2.0.2-js.patch and fix #787246
+
+* Tue Jan 17 2012 Nathaniel McCallum <nathaniel at natemccallum.com> - 2.0.2-5
+- Enable build using external snappy
+
+* Tue Jan 17 2012 Nathaniel McCallum <nathaniel at natemccallum.com> - 2.0.2-4
+- Patch buildsystem for building on older pythons (RHEL5)
+
+* Mon Jan 16 2012 Nathaniel McCallum <nathaniel at natemccallum.com> - 2.0.2-3
+- Merge the 2.0.2 spec file with EPEL
+- Merge mongodb-sm-pkgconfig.patch into mongodb-src-r2.0.2-js.patch
+
+* Mon Jan 16 2012 Nathaniel McCallum <nathaniel at natemccallum.com> - 2.0.2-2
+- Add pkg-config enablement patch
+
+* Sat Jan 14 2012 Nathaniel McCallum <nathaniel at natemccallum.com> - 2.0.2-1
+- Update to 2.0.2
+- Add new files (mongotop and bsondump manpage)
+- Update mongodb-src-r1.8.2-js.patch => mongodb-src-r2.0.2-js.patch
+- Update mongodb-fix-fork.patch
+- Fix pcre linking
+
+* Fri Jan 13 2012 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 1.8.2-11
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
+
+* Sun Nov 20 2011 Chris Lalancette <clalancette at gmail.com> - 1.8.2-10
+- Rebuild for rawhide boost update
+
+* Thu Sep 22 2011 Chris Lalancette <clalance at redhat.com> - 1.8.2-9
+- Copy the right source file into place for tmpfiles.d
+
+* Tue Sep 20 2011 Chris Lalancette <clalance at redhat.com> - 1.8.2-8
+- Add a tmpfiles.d file to create the /var/run/mongodb subdirectory
+
+* Mon Sep 12 2011 Chris Lalancette <clalance at redhat.com> - 1.8.2-7
+- Add a patch to fix the forking to play nice with systemd
+- Make the /var/run/mongodb directory owned by mongodb
+
+* Thu Jul 28 2011 Chris Lalancette <clalance at redhat.com> - 1.8.2-6
+- BZ 725601 - fix the javascript engine to not hang (thanks to Eduardo Habkost)
+
+* Mon Jul 25 2011 Chris Lalancette <clalance at redhat.com> - 1.8.2-5
+- Fixes to post server, preun server, and postun server to use systemd
+
+* Thu Jul 21 2011 Chris Lalancette <clalance at redhat.com> - 1.8.2-4
+- Update to use systemd init
+
+* Thu Jul 21 2011 Chris Lalancette <clalance at redhat.com> - 1.8.2-3
+- Rebuild for boost ABI break
+
+* Wed Jul 13 2011 Chris Lalancette <clalance at redhat.com> - 1.8.2-2
+- Make mongodb-devel require boost-devel (BZ 703184)
+
+* Fri Jul 01 2011 Chris Lalancette <clalance at redhat.com> - 1.8.2-1
+- Update to upstream 1.8.2
+- Add patch to ignore TERM
+
+* Fri Jul 01 2011 Chris Lalancette <clalance at redhat.com> - 1.8.0-3
+- Bump release to build against new boost package
+
+* Sat Mar 19 2011 Nathaniel McCallum <nathaniel at natemccallum.com> - 1.8.0-2
+- Make mongod bind only to 127.0.0.1 by default
+
+* Sat Mar 19 2011 Nathaniel McCallum <nathaniel at natemccallum.com> - 1.8.0-1
+- Update to 1.8.0
+- Remove upstreamed nonce patch
+
+* Wed Feb 16 2011 Nathaniel McCallum <nathaniel at natemccallum.com> - 1.7.5-5
+- Add nonce patch
+
+* Sun Feb 13 2011 Nathaniel McCallum <nathaniel at natemccallum.com> - 1.7.5-4
+- Manually define to use boost-fs v2
+
+* Sat Feb 12 2011 Nathaniel McCallum <nathaniel at natemccallum.com> - 1.7.5-3
+- Disable extra warnings
+
+* Fri Feb 11 2011 Nathaniel McCallum <nathaniel at natemccallum.com> - 1.7.5-2
+- Disable compilation errors on warnings
+
+* Fri Feb 11 2011 Nathaniel McCallum <nathaniel at natemccallum.com> - 1.7.5-1
+- Update to 1.7.5
+- Remove CPPFLAGS override
+- Added libmongodb package
+
+* Tue Feb 08 2011 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 1.6.4-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
+
+* Mon Dec 06 2010 Nathaniel McCallum <nathaniel at natemccallum.com> - 1.6.4-3
+- Add post/postun ldconfig... oops!
+
+* Mon Dec 06 2010 Nathaniel McCallum <nathaniel at natemccallum.com> - 1.6.4-2
+- Enable --sharedclient option, remove static lib
+
+* Sat Dec 04 2010 Nathaniel McCallum <nathaniel at natemccallum.com> - 1.6.4-1
+- New upstream release
+
+* Fri Oct 08 2010 Nathaniel McCallum <nathaniel at natemccallum.com> - 1.6.3-4
+- Put -fPIC onto both the build and install scons calls
+
+* Fri Oct 08 2010 Nathaniel McCallum <nathaniel at natemccallum.com> - 1.6.3-3
+- Define _initddir when it doesn't exist for el5 and others
+
+* Fri Oct 08 2010 Nathaniel McCallum <nathaniel at natemccallum.com> - 1.6.3-2
+- Added -fPIC build option which was dropped by accident
+
+* Thu Oct 7 2010 Ionuț C. Arțăriși <mapleoin at fedoraproject.org> - 1.6.3-1
+- removed js Requires
+- new upstream release
+- added more excludearches: sparc s390, s390x and bugzilla pointer
+
+* Tue Sep 7 2010 Ionuț C. Arțăriși <mapleoin at fedoraproject.org> - 1.6.2-2
+- added ExcludeArch for ppc
+
+* Fri Sep 3 2010 Ionuț C. Arțăriși <mapleoin at fedoraproject.org> - 1.6.2-1
+- new upstream release 1.6.2
+- send mongod the USR1 signal when doing logrotate
+- use config options when starting the daemon from the initfile
+- removed dbpath patch: rely on config
+- added pid directory to config file and created the dir in the spec
+- made the init script use options from the config file
+- changed logpath in mongodb.conf
+
+* Wed Sep 1 2010 Ionuț C. Arțăriși <mapleoin at fedoraproject.org> - 1.6.1-1
+- new upstream release 1.6.1
+- patched SConstruct to allow setting cppflags
+- stopped using sed and chmod macros
+
+* Fri Aug 6 2010 Ionuț C. Arțăriși <mapleoin at fedoraproject.org> - 1.6.0-1
+- new upstream release: 1.6.0
+- added -server package
+- added new license file to %%docs
+- fix spurious permissions and EOF encodings on some files
+
+* Tue Jun 15 2010 Ionuț C. Arțăriși <mapleoin at fedoraproject.org> - 1.4.3-2
+- added explicit js requirement
+- changed some names
+
+* Wed May 26 2010 Ionuț C. Arțăriși <mapleoin at fedoraproject.org> - 1.4.3-1
+- updated to 1.4.3
+- added zlib license for util/md5
+- deleted upstream deb/rpm recipes
+- made scons not strip binaries
+- made naming more consistent in logfile, lockfiles, init scripts etc.
+- included manpages and added corresponding license
+- added mongodb.conf to sources
+
+* Fri Oct 2 2009 Ionuț Arțăriși <mapleoin at fedoraproject.org> - 1.0.0-3
+- fixed libpath issue for 64bit systems
+
+* Thu Oct 1 2009 Ionuț Arțăriși <mapleoin at fedoraproject.org> - 1.0.0-2
+- added virtual -static package
+
+* Mon Aug 31 2009 Ionuț Arțăriși <mapleoin at fedoraproject.org> - 1.0.0-1
+- Initial release.
diff --git a/sources b/sources
new file mode 100644
index 0000000..30a48cf
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+74496298ce47cf3ad70ea02abb2ee8b2 mongodb-src-r2.4.6.tar.gz
More information about the scm-commits
mailing list