~ruther/guix-local

33c88fcb2588e5b74f8f2f7a78227950e5199a3c — Christopher Baines 8 years ago cf71ede
gnu: Add mongo-tools.

* gnu/packages/databases.scm (mongo-tools): New variable.
1 files changed, 86 insertions(+), 0 deletions(-)

M gnu/packages/databases.scm
M gnu/packages/databases.scm => gnu/packages/databases.scm +86 -0
@@ 68,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)


@@ 87,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)


@@ 2601,3 2604,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)))