diff options
Diffstat (limited to 'gnu/packages/databases.scm')
-rw-r--r-- | gnu/packages/databases.scm | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index 42a2067d5f..01dbf91100 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -49,6 +49,7 @@ (define-module (gnu packages databases) #:use-module (gnu packages) + #:use-module (gnu packages admin) #:use-module (gnu packages algebra) #:use-module (gnu packages autotools) #:use-module (gnu packages avahi) @@ -67,6 +68,7 @@ #:use-module (gnu packages gnupg) #:use-module (gnu packages guile) #:use-module (gnu packages time) + #:use-module (gnu packages golang) #:use-module (gnu packages jemalloc) #:use-module (gnu packages language) #:use-module (gnu packages libevent) @@ -86,6 +88,8 @@ #:use-module (gnu packages serialization) #:use-module (gnu packages statistics) #:use-module (gnu packages tcl) + #:use-module (gnu packages terminals) + #:use-module (gnu packages textutils) #:use-module (gnu packages tls) #:use-module (gnu packages valgrind) #:use-module (gnu packages xml) @@ -94,6 +98,7 @@ #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix build-system gnu) + #:use-module (guix build-system go) #:use-module (guix build-system perl) #:use-module (guix build-system python) #:use-module (guix build-system ruby) @@ -173,6 +178,50 @@ store key/value pairs in a file in a manner similar to the Unix dbm library and provides interfaces to the traditional file format.") (license license:gpl3+))) +(define-public go-gopkg.in-mgo.v2 + (package + (name "go-gopkg.in-mgo.v2") + (version "2016.08.01") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/go-mgo/mgo") + (commit (string-append "r" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0rwbi1z63w43b0z9srm8m7iz1fdwx7bq7n2mz862d6liiaqa59jd")))) + (build-system go-build-system) + (arguments + `(#:import-path "gopkg.in/mgo.v2" + ;; TODO: The tests fail as MongoDB fails to start + ;; Error parsing command line: unrecognised option '--chunkSize' + #:tests? #f + #:phases + (modify-phases %standard-phases + (delete 'reset-gzip-timestamps) + (add-before 'check 'start-mongodb + (lambda* (#:key tests? #:allow-other-keys) + (or (not tests?) + (with-directory-excursion "src/gopkg.in/mgo.v2" + (invoke "make" "startdb"))))) + (add-after 'check 'stop'mongodb + (lambda* (#:key tests? #:allow-other-keys) + (or (not tests?) + (with-directory-excursion "src/gopkg.in/mgo.v2" + (invoke "make" "stopdb")))))))) + (native-inputs + `(("go-gopkg.in-check.v1" ,go-gopkg.in-check.v1) + ("mongodb" ,mongodb) + ("daemontools" ,daemontools))) + (synopsis "@code{mgo} offers a rich MongoDB driver for Go.") + (description + "@code{mgo} (pronounced as mango) is a MongoDB driver for the Go language. +It implements a rich selection of features under a simple API following +standard Go idioms.") + (home-page "http://labix.org/mgo") + (license license:bsd-2))) + (define-public bdb (package (name "bdb") @@ -2565,3 +2614,86 @@ transforms idiomatic python function calls to well-formed SQL queries.") (define-public python2-sql (package-with-python2 python-sql)) + +(define-public mongo-tools + (package + (name "mongo-tools") + (version "3.4.0") + (source + (origin (method git-fetch) + (uri (git-reference + (url "https://github.com/mongodb/mongo-tools") + (commit (string-append "r" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "095nc57k4m4iyim0x3fgpw681qba123iyl4qz7xysbv5ngbr19mc")))) + (build-system go-build-system) + (arguments + `(#:unpack-path "github.com/mongodb" + #:import-path "github.com/mongodb/mongo-tools" + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'delete-bundled-source-code + (lambda _ + (delete-file-recursively + "src/github.com/mongodb/mongo-tools/vendor") + #t)) + + ;; We don't need to install the source code for end-user application + (delete 'install-source) + + (replace 'build + (lambda* (#:key inputs outputs #:allow-other-keys) + (let build ((tools + '("bsondump" "mongodump" "mongoexport" "mongofiles" + "mongoimport" "mongooplog" "mongorestore" + "mongostat" "mongotop"))) + (if (null? tools) + #t + (if (let* ((tool (car tools)) + (command + `("go" "install" "-v" + "-tags=\"ssl sasl\"" + "-ldflags" + "-extldflags=-Wl,-z,now,-z,relro" + ,(string-append + "src/github.com/mongodb/mongo-tools/" + tool "/main/" tool ".go")))) + (simple-format #t "build: running ~A\n" + (string-join command)) + (zero? (apply system* command))) + (build (cdr tools)) + #f)))))))) + (native-inputs + `(("go-github.com-howeyc-gopass" ,go-github.com-howeyc-gopass) + ("go-github.com-jessevdk-go-flags" ,go-github.com-jessevdk-go-flags) + ("go-golang.org-x-crypto-ssh-terminal" ,go-golang.org-x-crypto-ssh-terminal) + ("go-gopkg.in-mgo.v2" ,go-gopkg.in-mgo.v2) + ("go-gopkg.in-tomb.v2" ,go-gopkg.in-tomb.v2) + ("go-github.com-nsf-termbox-go" ,go-github.com-nsf-termbox-go))) + (home-page "https://github.com/mongodb/mongo-tools") + (synopsis "Various tools for interacting with MongoDB and BSON") + (description + "This package includes a collection of tools related to MongoDB. +@table @code +@item bsondump +Display BSON files in a human-readable format +@item mongoimport +Convert data from JSON, TSV or CSV and insert them into a collection +@item mongoexport +Write an existing collection to CSV or JSON format +@item mongodump/mongorestore +Dump MongoDB backups to disk in the BSON format +@item mongorestore +Read MongoDB backups in the BSON format, and restore them to a live database +@item mongostat +Monitor live MongoDB servers, replica sets, or sharded clusters +@item mongofiles +Read, write, delete, or update files in GridFS +@item mongooplog +Replay oplog entries between MongoDB servers +@item mongotop +Monitor read/write activity on a mongo server +@end table") + (license license:asl2.0))) |