gnu: Add mongo-tools.
* gnu/packages/databases.scm (mongo-tools): New variable.
This commit is contained in:
		
							parent
							
								
									cf71edee5a
								
							
						
					
					
						commit
						33c88fcb25
					
				
					 1 changed files with 86 additions and 0 deletions
				
			
		|  | @ -68,6 +68,7 @@ | ||||||
|   #:use-module (gnu packages gnupg) |   #:use-module (gnu packages gnupg) | ||||||
|   #:use-module (gnu packages guile) |   #:use-module (gnu packages guile) | ||||||
|   #:use-module (gnu packages time) |   #:use-module (gnu packages time) | ||||||
|  |   #:use-module (gnu packages golang) | ||||||
|   #:use-module (gnu packages jemalloc) |   #:use-module (gnu packages jemalloc) | ||||||
|   #:use-module (gnu packages language) |   #:use-module (gnu packages language) | ||||||
|   #:use-module (gnu packages libevent) |   #:use-module (gnu packages libevent) | ||||||
|  | @ -87,6 +88,8 @@ | ||||||
|   #:use-module (gnu packages serialization) |   #:use-module (gnu packages serialization) | ||||||
|   #:use-module (gnu packages statistics) |   #:use-module (gnu packages statistics) | ||||||
|   #:use-module (gnu packages tcl) |   #:use-module (gnu packages tcl) | ||||||
|  |   #:use-module (gnu packages terminals) | ||||||
|  |   #:use-module (gnu packages textutils) | ||||||
|   #:use-module (gnu packages tls) |   #:use-module (gnu packages tls) | ||||||
|   #:use-module (gnu packages valgrind) |   #:use-module (gnu packages valgrind) | ||||||
|   #:use-module (gnu packages xml) |   #:use-module (gnu packages xml) | ||||||
|  | @ -2601,3 +2604,86 @@ transforms idiomatic python function calls to well-formed SQL queries.") | ||||||
| 
 | 
 | ||||||
| (define-public python2-sql | (define-public python2-sql | ||||||
|   (package-with-python2 python-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))) | ||||||
|  |  | ||||||
		Reference in a new issue