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 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))) | ||||
|  |  | |||
		Reference in a new issue