gnu: Add mongodb.
* gnu/packages/databases.scm (mongodb): New variable.
This commit is contained in:
parent
4bbc27aca0
commit
6bbbca9073
|
@ -69,8 +69,10 @@
|
||||||
#:use-module (gnu packages rdf)
|
#:use-module (gnu packages rdf)
|
||||||
#:use-module (gnu packages readline)
|
#:use-module (gnu packages readline)
|
||||||
#:use-module (gnu packages ruby)
|
#:use-module (gnu packages ruby)
|
||||||
|
#:use-module (gnu packages serialization)
|
||||||
#:use-module (gnu packages tcl)
|
#:use-module (gnu packages tcl)
|
||||||
#:use-module (gnu packages tls)
|
#:use-module (gnu packages tls)
|
||||||
|
#:use-module (gnu packages valgrind)
|
||||||
#:use-module (gnu packages xml)
|
#:use-module (gnu packages xml)
|
||||||
#:use-module ((guix licenses) #:prefix license:)
|
#:use-module ((guix licenses) #:prefix license:)
|
||||||
#:use-module (guix packages)
|
#:use-module (guix packages)
|
||||||
|
@ -357,6 +359,98 @@ and generic API, and was originally intended for use with dynamic web
|
||||||
applications.")
|
applications.")
|
||||||
(license license:bsd-3)))
|
(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
|
(define-public mysql
|
||||||
(package
|
(package
|
||||||
(name "mysql")
|
(name "mysql")
|
||||||
|
|
|
@ -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");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
Loading…
Reference in New Issue