diff --git a/srcpkgs/mongodb/files/mongodb.conf b/srcpkgs/mongodb/files/mongodb.conf new file mode 100644 index 0000000000..f8d829a5fe --- /dev/null +++ b/srcpkgs/mongodb/files/mongodb.conf @@ -0,0 +1,539 @@ + + + + + + + + + + + PKGBUILDs/community/mongodb/mongodb.conf at master · archlinuxarm/PKGBUILDs · GitHub + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Skip to content +
+ + + + + + + +
+
+ + + + + + + +
+ + +
+ + + + + +
+ + This repository + + + +
+ + + + + + + + +
+
+ +
+
+ + + +
+
+ +
+
+ + + + +

+ public + + + + + / + PKGBUILDs + + + Octocat-spinner-32 + + +

+
+
+ +
+
+
+ + + + +
+ + + + +
+

HTTPS clone URL

+
+ + + +
+
+ + + +
+

Subversion checkout URL

+
+ + + +
+
+ + +

You can clone with + HTTPS + or Subversion. + + + + + +

+ + + + + + Download ZIP + +
+
+ +
+ + + + + + + + + +
+ + +
+ + + branch: + master + + + +
+ + +
+ + +
+ Kevin Mihelich + + + + + + +
+ +
+
+
+
+ + file + + 9 lines (7 sloc) + + 0.246 kb +
+ +
+
+ + + + + +
+ 1 +2 +3 +4 +5 +6 +7 +8 + +
# See http://www.mongodb.org/display/DOCS/File+Based+Configuration for format details
# Run mongod --help to see a list of options

bind_ip = 127.0.0.1
quiet = true
dbpath = /var/lib/mongodb
logpath = /var/log/mongodb/mongod.log
logappend = true
+
+ +
+
+ + + + +
+ +
+ +
+
+ + +
+ +
+ +
+ + +
+
+
+ +
+
+
+ + + + + + +
+
+ + + +
+ + + Something went wrong with that request. Please try again. +
+ + + + diff --git a/srcpkgs/mongodb/files/mongodb.service b/srcpkgs/mongodb/files/mongodb.service new file mode 100644 index 0000000000..8042ecd5d4 --- /dev/null +++ b/srcpkgs/mongodb/files/mongodb.service @@ -0,0 +1,12 @@ +[Unit] +Description=high-performance, schema-free document-oriented database +After=syslog.target network.target + +[Service] +PrivateTmp=true +User=mongodb +ExecStart=/usr/bin/mongod --quiet --config /etc/mongodb/mongodb.conf +KillSignal=SIGINT + +[Install] +WantedBy=multi-user.target diff --git a/srcpkgs/mongodb/patches/0005-ARM-support-for-ASM-operations-in-MongoDB.patch b/srcpkgs/mongodb/patches/0005-ARM-support-for-ASM-operations-in-MongoDB.patch new file mode 100644 index 0000000000..8314bda031 --- /dev/null +++ b/srcpkgs/mongodb/patches/0005-ARM-support-for-ASM-operations-in-MongoDB.patch @@ -0,0 +1,181 @@ +From: Robie Basak +Date: Sat, 20 Apr 2013 22:05:50 -0300 +Subject: ARM support for ASM operations in MongoDB + +This is a modified version of Jon Masters' ARM patch. I have replaced some of +the calls whose return value semantics didn't quite match the existing x86 +assembler. + +Original-Author: Jon Masters +Origin: http://lists.fedoraproject.org/pipermail/arm/2013-February/005388.html +Last-Update: 2013-03-15 +--- + src/mongo/platform/atomic_intrinsics_gcc.h | 69 +++++++++++++++++++++++++++++- + src/mongo/platform/bits.h | 2 +- + 2 files changed, 68 insertions(+), 3 deletions(-) + +diff --git src/mongo/platform/atomic_intrinsics_gcc.h src/mongo/platform/atomic_intrinsics_gcc.h +index f8f96f0..da36685 100644 +--- src/mongo/platform/atomic_intrinsics_gcc.h ++++ src/mongo/platform/atomic_intrinsics_gcc.h +@@ -14,14 +14,19 @@ + */ + + /** +- * Implementation of the AtomicIntrinsics::* operations for IA-32 and AMD64 systems using a +- * GCC-compatible compiler toolchain. ++ * Implementation of the AtomicIntrinsics::* operations for IA-32, AMD64, and 32-bit ARM ++ * systems using a GCC-compatible compiler toolchain. + */ + + #pragma once + + #include + ++#if defined(__arm__) ++typedef int (__kuser_cmpxchg_t)(int oldval, int newval, volatile int *ptr); ++#define __kuser_cmpxchg (*(__kuser_cmpxchg_t *)0xffff0fc0) ++#endif ++ + namespace mongo { + + /** +@@ -37,31 +42,58 @@ namespace mongo { + static T compareAndSwap(volatile T* dest, T expected, T newValue) { + + T result; ++ ++#if defined(__i386__) || defined(__x86_64__) + asm volatile ("lock cmpxchg %[src], %[dest]" + : [dest] "+m" (*dest), + "=a" (result) + : [src] "r" (newValue), + "a" (expected) + : "memory", "cc"); ++#endif ++ ++#if defined(__arm__) ++ result = __sync_val_compare_and_swap(dest, expected, newValue); ++#endif ++ + return result; + } + + static T swap(volatile T* dest, T newValue) { + + T result = newValue; ++ ++#if defined(__i386__) || defined(__x86_64__) + // No need for "lock" prefix on "xchg". + asm volatile ("xchg %[r], %[dest]" + : [dest] "+m" (*dest), + [r] "+r" (result) + : + : "memory"); ++#endif ++ ++#if defined(__arm__) ++ __sync_synchronize(); ++ result = __sync_lock_test_and_set(dest, newValue); ++#endif ++ + return result; + } + + static T load(volatile const T* value) { ++ ++#if defined(__i386__) || defined(__x86_64__) + asm volatile ("mfence" ::: "memory"); + T result = *value; + asm volatile ("mfence" ::: "memory"); ++#endif ++ ++#if defined(__arm__) ++ asm volatile("mcr p15, 0, r0, c7, c10, 5"); ++ T result = *value; ++ asm volatile("mcr p15, 0, r0, c7, c10, 5"); ++#endif ++ + return result; + } + +@@ -70,19 +102,44 @@ namespace mongo { + } + + static void store(volatile T* dest, T newValue) { ++ ++#if defined(__i386__) || defined(__x86_64__) + asm volatile ("mfence" ::: "memory"); + *dest = newValue; + asm volatile ("mfence" ::: "memory"); ++#endif ++ ++#if defined(__arm__) ++ asm volatile("mcr p15, 0, r0, c7, c10, 5"); ++ *dest = newValue; ++ asm volatile("mcr p15, 0, r0, c7, c10, 5"); ++#endif ++ + } + + static T fetchAndAdd(volatile T* dest, T increment) { + + T result = increment; ++ ++#if defined(__i386__) || defined(__x86_64__) + asm volatile ("lock xadd %[src], %[dest]" + : [dest] "+m" (*dest), + [src] "+r" (result) + : + : "memory", "cc"); ++#endif ++ ++#if defined(__arm__) ++ int old; ++ ++ do { ++ old = (int)(*dest); ++ } while(__kuser_cmpxchg((int)old, (int)(old+increment), ++ (volatile int *)dest)); ++ ++ result = old; ++#endif ++ + return result; + } + +@@ -105,6 +162,8 @@ namespace mongo { + public: + static T compareAndSwap(volatile T* dest, T expected, T newValue) { + T result = expected; ++ ++#if defined(__i386__) || defined(__x86_64__) + asm volatile ("push %%eax\n" + "push %%ebx\n" + "push %%ecx\n" +@@ -125,6 +184,12 @@ namespace mongo { + "D" (&result), + "d" (&newValue) + : "memory", "cc"); ++#endif ++ ++#if defined(__arm__) ++ result = __sync_val_compare_and_swap(dest, expected, newValue); ++#endif ++ + return result; + } + +diff --git src/mongo/platform/bits.h src/mongo/platform/bits.h +index 7afc428..75343dd 100644 +--- src/mongo/platform/bits.h ++++ src/mongo/platform/bits.h +@@ -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/srcpkgs/mongodb/patches/0006-Fix-ARM-alignment-problems.patch b/srcpkgs/mongodb/patches/0006-Fix-ARM-alignment-problems.patch new file mode 100644 index 0000000000..d03ba2739f --- /dev/null +++ b/srcpkgs/mongodb/patches/0006-Fix-ARM-alignment-problems.patch @@ -0,0 +1,67 @@ +From: Robie Basak +Date: Sat, 20 Apr 2013 22:05:50 -0300 +Subject: Fix ARM alignment problems + +This is a temporary workaround. We avoid double alignment issues by using +memcpy to make sure that all doubles are aligned before accessing them. + +Last-Update: 2013-03-15 +--- + src/mongo/bson/bsonelement.h | 16 +++++++++++++++- + src/mongo/db/key.cpp | 2 +- + 2 files changed, 16 insertions(+), 2 deletions(-) + +diff --git src/mongo/bson/bsonelement.h src/mongo/bson/bsonelement.h +index f094ab9..1ecb47f 100644 +--- src/mongo/bson/bsonelement.h ++++ src/mongo/bson/bsonelement.h +@@ -17,7 +17,7 @@ + + #pragma once + +-#include // strlen ++#include // strlen, memcpy + #include + #include + +@@ -529,13 +529,27 @@ namespace mongo { + } + + inline double BSONElement::numberDouble() const { ++#if defined(__arm__) ++ int int_result; ++ long long long_long_result; ++#endif + switch( type() ) { + case NumberDouble: + return _numberDouble(); + case NumberInt: ++#if defined(__arm__) ++ memcpy(&int_result, value(), sizeof(int_result)); ++ return int_result; ++#else + return *reinterpret_cast< const int* >( value() ); ++#endif + case NumberLong: ++#if defined(__arm__) ++ memcpy(&long_long_result, value(), sizeof(long_long_result)); ++ return (double)long_long_result; ++#else + return (double) *reinterpret_cast< const long long* >( value() ); ++#endif + default: + return 0; + } +diff --git src/mongo/db/key.cpp src/mongo/db/key.cpp +index 3d9eaa7..95959d8 100644 +--- src/mongo/db/key.cpp ++++ src/mongo/db/key.cpp +@@ -406,7 +406,7 @@ namespace mongo { + p += 8; + break; + case cdouble: +- b.append("", (double&) *p); ++ b.append("", (reinterpret_cast< const PackedDouble& >(*p)).d); + p += sizeof(double); + break; + case cint: diff --git a/srcpkgs/mongodb/template b/srcpkgs/mongodb/template new file mode 100644 index 0000000000..d5e9496006 --- /dev/null +++ b/srcpkgs/mongodb/template @@ -0,0 +1,57 @@ +# Template file for 'mongodb' +pkgname=mongodb +version=2.4.9 +revision=1 +hostmakedepends="scons" +makedepends="boost-devel pcre-devel snappy-devel openssl-devel libpcap-devel gperftools-devel v8-3.16-devel" +depends="" +conf_files="/etc/mongodb/mongodb.conf" +systemd_services="mongodb.service on" +system_accounts="mongodb" +mongodb_homedir="/var/lib/mongodb" +short_desc="high-performance, schema-free document-oriented database" +maintainer="Enno Boland " +homepage="http://www.mongodb.org" +license="AGPL-3" +distfiles="http://downloads.mongodb.org/src/mongodb-src-r${version}.tar.gz" +checksum=40755d66419a5c9f0d9909a079b092195825773ded188ded3faf07025d02600f +make_dirs=" + /var/lib/mongodb 0700 mongodb mongodb + /var/log/mongodb 0750 mongodb mongodb" +wrksrc="mongodb-src-r${version}" +_scons_args=" --use-system-boost \ + --use-system-pcre \ + --use-system-snappy \ + --use-system-tcmalloc \ + --use-system-v8 \ + --ssl \ + --sharedclient" + +do_configure() { + find . -name SConstruct -print0 | xargs -0 sed -i "s/-Werror/-Wno-error/g" +} + +do_build() { + scons all -j ${makejobs} \ + --cc=$CC \ + --cxx=$CXX \ + --ld=$LD \ + --libpath="${XBPS_CROSS_BASE}/usr/lib" \ + --cpppath="${XBPS_CROSS_BASE}/usr/include" \ + --prefix="/usr" \ + $_scons_args +} + +do_install() { + scons install -j ${makejobs} \ + --cc=$CC \ + --cxx=$CXX \ + --ld=$LD \ + --libpath=${XBPS_CROSS_BASE}/usr/lib \ + --cpppath=${XBPS_CROSS_BASE}/usr/include \ + --prefix="${DESTDIR}/usr" \ + $_scons_args + + vinstall "${FILESDIR}/mongodb.conf" 644 "etc/mongodb" + vinstall "${FILESDIR}/mongodb.service" 644 "usr/lib/systemd/system" +}