diff options
author | Christopher Baines <mail@cbaines.net> | 2017-10-06 21:24:23 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2017-10-06 21:24:23 +0100 |
commit | 6bbbca90736b6a34776a4ef15e954c80d8085878 (patch) | |
tree | 6a1fc6872b1f45d13f5579511d6cdca631c45559 | |
parent | 4bbc27aca039e9babedb5a1dad474c19e8f84a2f (diff) |
gnu: Add mongodb.
* gnu/packages/databases.scm (mongodb): New variable.
-rw-r--r-- | gnu/packages/databases.scm | 94 | ||||
-rw-r--r-- | gnu/packages/patches/mongodb-support-unknown-linux-distributions.patch | 55 |
2 files changed, 149 insertions, 0 deletions
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index fbfb341026..62f940e909 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -69,8 +69,10 @@ #:use-module (gnu packages rdf) #:use-module (gnu packages readline) #:use-module (gnu packages ruby) + #:use-module (gnu packages serialization) #:use-module (gnu packages tcl) #:use-module (gnu packages tls) + #:use-module (gnu packages valgrind) #:use-module (gnu packages xml) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) @@ -357,6 +359,98 @@ and generic API, and was originally intended for use with dynamic web applications.") (license license:bsd-3))) +(define-public mongodb + (package + (name "mongodb") + (version "3.4.9") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/mongodb/mongo/archive/r" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0gidwyvh3bdwmk2pccgkqkaln4ysgn8iwa7ihjzllsq0rdg95045")) + (patches + (list + (search-patch "mongodb-support-unknown-linux-distributions.patch"))))) + (build-system gnu-build-system) + (inputs + `(("openssl" ,openssl) + ("pcre" ,pcre) + ("yaml-cpp" ,yaml-cpp) + ("zlib" ,zlib) + ("snappy" ,snappy) + ("boost" ,boost))) + (native-inputs + `(("scons" ,scons) + ("python" ,python-2) + ("valgrind" ,valgrind) + ("perl" ,perl))) + (arguments + `(#:phases + (let ((common-options + `(;; "--use-system-tcmalloc" TODO: Missing gperftools + "--use-system-pcre" + ;; TODO + ;; build/opt/mongo/db/fts/unicode/string.o failed: Error 1 + ;; --use-system-boost + "--use-system-snappy" + "--use-system-zlib" + "--use-system-valgrind" + ;; "--use-system-stemmer" TODO: Missing relevant package + "--use-system-yaml" + "--disable-warnings-as-errors" + ,(format #f "--jobs=~a" (parallel-job-count)) + "--ssl"))) + (modify-phases %standard-phases + (delete 'configure) ; There is no configure phase + (add-after 'unpack 'scons-propagate-environment + (lambda _ + ;; Modify the SConstruct file to arrange for + ;; environment variables to be propagated. + (substitute* "SConstruct" + (("^env = Environment\\(") + "env = Environment(ENV=os.environ, ")) + #t)) + (add-after 'unpack 'create-version-file + (lambda _ + (call-with-output-file "version.json" + (lambda (port) + (display ,(simple-format #f "{ + \"version\": \"~A\" +}" version) port))) + #t)) + (replace 'build + (lambda _ + (zero? (apply system* + `("scons" + ,@common-options + "mongod" "mongo" "mongos"))))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (or (not tests?) + (zero? (apply system* + `("scons" + ,@common-options + "dbtest" "unittests")))))) + (replace 'install + (lambda _ + (let ((bin (string-append (assoc-ref %outputs "out") "/bin"))) + (install-file "mongod" bin) + (install-file "mongos" bin) + (install-file "mongo" bin)) + #t)))))) + (home-page "https://www.mongodb.org/") + (synopsis "High performance and high availability document database") + (description + "Mongo is a high-performance, high availability, schema-free +document-oriented database. 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).") + (license (list license:agpl3 + ;; Some parts are licensed under the Apache License + license:asl2.0)))) + (define-public mysql (package (name "mysql") diff --git a/gnu/packages/patches/mongodb-support-unknown-linux-distributions.patch b/gnu/packages/patches/mongodb-support-unknown-linux-distributions.patch new file mode 100644 index 0000000000..6057ebeb08 --- /dev/null +++ b/gnu/packages/patches/mongodb-support-unknown-linux-distributions.patch @@ -0,0 +1,55 @@ +From e724bb7018a482640c4f194f88b554af2c59d76e Mon Sep 17 00:00:00 2001 +From: Mark Benvenuto <mark.benvenuto@mongodb.com> +Date: Wed, 20 Sep 2017 11:50:02 -0400 +Subject: [PATCH] SERVER-30857 Support unknown Linux distributions + +--- + src/mongo/rpc/metadata/client_metadata.cpp | 6 ------ + src/mongo/util/processinfo_linux.cpp | 9 ++++++--- + 2 files changed, 6 insertions(+), 9 deletions(-) + +diff --git a/src/mongo/rpc/metadata/client_metadata.cpp b/src/mongo/rpc/metadata/client_metadata.cpp +index 845a315dd74..a959a4e31e9 100644 +--- a/src/mongo/rpc/metadata/client_metadata.cpp ++++ b/src/mongo/rpc/metadata/client_metadata.cpp +@@ -302,9 +302,6 @@ void ClientMetadata::serializePrivate(StringData driverName, + StringData osArchitecture, + StringData osVersion, + BSONObjBuilder* builder) { +- invariant(!driverName.empty() && !driverVersion.empty() && !osType.empty() && !osName.empty() && +- !osArchitecture.empty() && !osVersion.empty()); +- + BSONObjBuilder metaObjBuilder(builder->subobjStart(kMetadataDocumentName)); + + { +@@ -347,9 +344,6 @@ Status ClientMetadata::serializePrivate(StringData driverName, + StringData osVersion, + StringData appName, + BSONObjBuilder* builder) { +- invariant(!driverName.empty() && !driverVersion.empty() && !osType.empty() && !osName.empty() && +- !osArchitecture.empty() && !osVersion.empty()); +- + if (appName.size() > kMaxApplicationNameByteLength) { + return Status(ErrorCodes::ClientMetadataAppNameTooLarge, + str::stream() << "The '" << kApplication << "." << kName +diff --git a/src/mongo/util/processinfo_linux.cpp b/src/mongo/util/processinfo_linux.cpp +index c3debf377bd..c2813b026b0 100644 +--- a/src/mongo/util/processinfo_linux.cpp ++++ b/src/mongo/util/processinfo_linux.cpp +@@ -376,10 +376,13 @@ class LinuxSysHelper { + if ((nl = name.find('\n', nl)) != string::npos) + // stop at first newline + name.erase(nl); +- // no standard format for name and version. use kernel version +- version = "Kernel "; +- version += LinuxSysHelper::readLineFromFile("/proc/sys/kernel/osrelease"); ++ } else { ++ name = "unknown"; + } ++ ++ // There is no standard format for name and version so use the kernel version. ++ version = "Kernel "; ++ version += LinuxSysHelper::readLineFromFile("/proc/sys/kernel/osrelease"); + } + + /** |