gnu: Add go-github.com-nsf-termbox-go.
[jackhill/guix/guix.git] / gnu / packages / databases.scm
CommitLineData
5f96f303 1;;; GNU Guix --- Functional package management for GNU
ff1f39e3 2;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
a8714bf6
RW
3;;; Copyright © 2012, 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr>
4;;; Copyright © 2013, 2017 Cyril Roelandt <tipecaml@gmail.com>
218a2106 5;;; Copyright © 2014, 2016 David Thompson <davet@gnu.org>
8047d13d 6;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
a8714bf6 7;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org>
da1f7a9e 8;;; Copyright © 2015, 2016 Sou Bunnbu <iyzsong@gmail.com>
b747a9db 9;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
a8714bf6
RW
10;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
11;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
12;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
7f6a607e 13;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
bdc11dc4 14;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
61ce0998 15;;; Copyright © 2016, 2017 Roel Janssen <roel@gnu.org>
0e1b262e 16;;; Copyright © 2016 David Craven <david@craven.ch>
fe71eee0 17;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
62ea44fc 18;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
a8714bf6
RW
19;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
20;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
21;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
259a94e9 22;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
a8714bf6
RW
23;;; Copyright © 2017 Jelle Licht <jlicht@fsfe.org>
24;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
d39a84e8 25;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
fda852ff 26;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
f30ff28b 27;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
da1f7a9e 28;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
231123ee 29;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
6a23c8b1 30;;; Copyright © 2017 Pierre Langlois <pierre.langlois@gmx.com>
a8714bf6 31;;; Copyright © 2015, 2017 Ricardo Wurmus <rekado@elephly.net>
16973071 32;;; Copyright © 2017 Kristofer Buffington <kristoferbuffington@gmail.com>
3926a099 33;;; Copyright © 2018 Amirouche Boubekki <amirouche@hypermove.net>
5f96f303
LC
34;;;
35;;; This file is part of GNU Guix.
36;;;
37;;; GNU Guix is free software; you can redistribute it and/or modify it
38;;; under the terms of the GNU General Public License as published by
39;;; the Free Software Foundation; either version 3 of the License, or (at
40;;; your option) any later version.
41;;;
42;;; GNU Guix is distributed in the hope that it will be useful, but
43;;; WITHOUT ANY WARRANTY; without even the implied warranty of
44;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
45;;; GNU General Public License for more details.
46;;;
47;;; You should have received a copy of the GNU General Public License
48;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
49
50(define-module (gnu packages databases)
51 #:use-module (gnu packages)
58071723 52 #:use-module (gnu packages admin)
06a035db 53 #:use-module (gnu packages algebra)
4c6aa73b
RJ
54 #:use-module (gnu packages autotools)
55 #:use-module (gnu packages avahi)
77e52190 56 #:use-module (gnu packages base)
b747a9db 57 #:use-module (gnu packages bash)
06a035db 58 #:use-module (gnu packages bison)
23bbd7dd 59 #:use-module (gnu packages boost)
06a035db
MB
60 #:use-module (gnu packages check)
61 #:use-module (gnu packages compression)
62ea44fc 62 #:use-module (gnu packages crypto)
06a035db
MB
63 #:use-module (gnu packages curl)
64 #:use-module (gnu packages cyrus-sasl)
65 #:use-module (gnu packages emacs)
4c6aa73b
RJ
66 #:use-module (gnu packages gettext)
67 #:use-module (gnu packages glib)
06a035db 68 #:use-module (gnu packages gnupg)
16973071 69 #:use-module (gnu packages guile)
da1f7a9e 70 #:use-module (gnu packages time)
06a035db 71 #:use-module (gnu packages jemalloc)
708155df 72 #:use-module (gnu packages language)
686144e9 73 #:use-module (gnu packages libevent)
5f96f303 74 #:use-module (gnu packages linux)
d39a84e8 75 #:use-module (gnu packages man)
5f96f303 76 #:use-module (gnu packages ncurses)
d3c6ad0a 77 #:use-module (gnu packages parallel)
77631745 78 #:use-module (gnu packages pcre)
06a035db 79 #:use-module (gnu packages perl)
5ccde207 80 #:use-module (gnu packages perl-check)
4c6aa73b 81 #:use-module (gnu packages pkg-config)
d3c6ad0a 82 #:use-module (gnu packages popt)
06a035db 83 #:use-module (gnu packages python)
4c6aa73b 84 #:use-module (gnu packages rdf)
06a035db 85 #:use-module (gnu packages readline)
afcbb020 86 #:use-module (gnu packages ruby)
6bbbca90 87 #:use-module (gnu packages serialization)
74248d22 88 #:use-module (gnu packages statistics)
06a035db
MB
89 #:use-module (gnu packages tcl)
90 #:use-module (gnu packages tls)
6bbbca90 91 #:use-module (gnu packages valgrind)
77631745 92 #:use-module (gnu packages xml)
0e1b262e 93 #:use-module ((guix licenses) #:prefix license:)
5f96f303
LC
94 #:use-module (guix packages)
95 #:use-module (guix download)
16973071 96 #:use-module (guix git-download)
5f96f303 97 #:use-module (guix build-system gnu)
58071723 98 #:use-module (guix build-system go)
274da61d 99 #:use-module (guix build-system perl)
4d98bfaf 100 #:use-module (guix build-system python)
afcbb020 101 #:use-module (guix build-system ruby)
77631745 102 #:use-module (guix build-system cmake)
74248d22 103 #:use-module (guix build-system r)
6e385b76 104 #:use-module (guix build-system scons)
51b0f09e 105 #:use-module ((guix build utils) #:hide (which))
329d13b8 106 #:use-module (guix utils)
29cfbfca 107 #:use-module (srfi srfi-1)
5f96f303
LC
108 #:use-module (srfi srfi-26)
109 #:use-module (ice-9 match))
110
4c6aa73b
RJ
111(define-public 4store
112 (package
113 (name "4store")
114 (version "1.1.6")
115 (source (origin
116 (method url-fetch)
bbf9092b 117 (uri (string-append "https://github.com/4store/4store/archive/v"
4c6aa73b
RJ
118 version ".tar.gz"))
119 (file-name (string-append name "-" version ".tar.gz"))
120 (sha256
121 (base32 "004fmcf1w75zhc1x3zc6kc97j4jqn2v5nhk6yb3z3cpfrhzi9j50"))
122 (patches (list (search-patch "4store-fix-buildsystem.patch")))))
123 (build-system gnu-build-system)
124 (native-inputs
125 `(("perl" ,perl)
126 ("python" ,python-2)
127 ("autoconf" ,autoconf)
128 ("automake" ,automake)
b94a6ca0 129 ("gettext" ,gettext-minimal)
4c6aa73b 130 ("libtool" ,libtool)
74c8b174 131 ("pcre" ,pcre "bin") ;for 'pcre-config'
4c6aa73b
RJ
132 ("pkg-config" ,pkg-config)))
133 (inputs
134 `(("glib" ,glib)
135 ("rasqal" ,rasqal)
136 ("libxml2" ,libxml2)
137 ("raptor2" ,raptor2)
138 ("readline" ,readline)
139 ("avahi" ,avahi)
4c6aa73b
RJ
140 ("cyrus-sasl" ,cyrus-sasl)
141 ("openssl" ,openssl)
142 ("util-linux" ,util-linux)))
143 (arguments
144 `(#:phases
145 (modify-phases %standard-phases
d10092b8 146 (add-after 'unpack 'generate-configure
4c6aa73b 147 (lambda _
d10092b8 148 (zero? (system* "sh" "autogen.sh")))))))
4c6aa73b 149 ;; http://www.4store.org has been down for a while now.
bbf9092b 150 (home-page "https://github.com/4store/4store")
4c6aa73b
RJ
151 (synopsis "Clustered RDF storage and query engine")
152 (description "4store is a RDF/SPARQL store written in C, supporting
153either single machines or networked clusters.")
ba8b9f8d 154 (license license:gpl3+)))
4c6aa73b 155
b416aadf
LC
156(define-public gdbm
157 (package
158 (name "gdbm")
821072e2 159 (version "1.13")
b416aadf
LC
160 (source (origin
161 (method url-fetch)
162 (uri (string-append "mirror://gnu/gdbm/gdbm-"
163 version ".tar.gz"))
164 (sha256
165 (base32
821072e2 166 "0lx201q20dvc70f8a3c9s7s18z15inlxvbffph97ngvrgnyjq9cx"))))
b416aadf
LC
167 (arguments `(#:configure-flags '("--enable-libgdbm-compat")))
168 (build-system gnu-build-system)
6fd52309 169 (home-page "http://www.gnu.org.ua/software/gdbm")
b416aadf
LC
170 (synopsis
171 "Hash library of database functions compatible with traditional dbm")
172 (description
173 "GDBM is a library for manipulating hashed databases. It is used to
174store key/value pairs in a file in a manner similar to the Unix dbm library
175and provides interfaces to the traditional file format.")
ba8b9f8d 176 (license license:gpl3+)))
b416aadf 177
58071723
CB
178(define-public go-gopkg.in-mgo.v2
179 (package
180 (name "go-gopkg.in-mgo.v2")
181 (version "2016.08.01")
182 (source (origin
183 (method git-fetch)
184 (uri (git-reference
185 (url "https://github.com/go-mgo/mgo")
186 (commit (string-append "r" version))))
187 (file-name (git-file-name name version))
188 (sha256
189 (base32
190 "0rwbi1z63w43b0z9srm8m7iz1fdwx7bq7n2mz862d6liiaqa59jd"))))
191 (build-system go-build-system)
192 (arguments
193 `(#:import-path "gopkg.in/mgo.v2"
194 ;; TODO: The tests fail as MongoDB fails to start
195 ;; Error parsing command line: unrecognised option '--chunkSize'
196 #:tests? #f
197 #:phases
198 (modify-phases %standard-phases
199 (delete 'reset-gzip-timestamps)
200 (add-before 'check 'start-mongodb
201 (lambda* (#:key tests? #:allow-other-keys)
202 (or (not tests?)
203 (with-directory-excursion "src/gopkg.in/mgo.v2"
204 (invoke "make" "startdb")))))
205 (add-after 'check 'stop'mongodb
206 (lambda* (#:key tests? #:allow-other-keys)
207 (or (not tests?)
208 (with-directory-excursion "src/gopkg.in/mgo.v2"
209 (invoke "make" "stopdb"))))))))
210 (native-inputs
211 `(("go-gopkg.in-check.v1" ,go-gopkg.in-check.v1)
212 ("mongodb" ,mongodb)
213 ("daemontools" ,daemontools)))
214 (synopsis "@code{mgo} offers a rich MongoDB driver for Go.")
215 (description
216 "@code{mgo} (pronounced as mango) is a MongoDB driver for the Go language.
217It implements a rich selection of features under a simple API following
218standard Go idioms.")
219 (home-page "http://labix.org/mgo")
220 (license license:bsd-2)))
221
5f96f303
LC
222(define-public bdb
223 (package
224 (name "bdb")
595dcd48 225 (version "6.2.32")
5f96f303
LC
226 (source (origin
227 (method url-fetch)
18e681bf
EF
228 (uri (string-append "http://download.oracle.com/berkeley-db/db-"
229 version ".tar.gz"))
230 (sha256
231 (base32
595dcd48 232 "1yx8wzhch5wwh016nh0kfxvknjkafv6ybkqh6nh7lxx50jqf5id9"))))
5f96f303
LC
233 (build-system gnu-build-system)
234 (outputs '("out" ; programs, libraries, headers
235 "doc")) ; 94 MiB of HTML docs
236 (arguments
237 '(#:tests? #f ; no check target available
ff1f39e3 238 #:disallowed-references ("doc")
5bef7749 239 #:phases
dc1d3cde
KK
240 (modify-phases %standard-phases
241 (replace 'configure
242 (lambda* (#:key outputs #:allow-other-keys)
243 (let ((out (assoc-ref outputs "out"))
244 (doc (assoc-ref outputs "doc")))
245 ;; '--docdir' is not honored, so we need to patch.
246 (substitute* "dist/Makefile.in"
247 (("docdir[[:blank:]]*=.*")
248 (string-append "docdir = " doc "/share/doc/bdb")))
5f96f303 249
dc1d3cde
KK
250 (zero?
251 (system* "./dist/configure"
252 (string-append "--prefix=" out)
253 (string-append "CONFIG_SHELL=" (which "bash"))
254 (string-append "SHELL=" (which "bash"))
5f96f303 255
dc1d3cde
KK
256 ;; Remove 7 MiB of .a files.
257 "--disable-static"
0e50d521 258
dc1d3cde
KK
259 ;; The compatibility mode is needed by some packages,
260 ;; notably iproute2.
261 "--enable-compat185"
b86c013c 262
dc1d3cde
KK
263 ;; The following flag is needed so that the inclusion
264 ;; of db_cxx.h into C++ files works; it leads to
265 ;; HAVE_CXX_STDHEADERS being defined in db_cxx.h.
266 "--enable-cxx"))))))))
35b9e423 267 (synopsis "Berkeley database")
5f96f303
LC
268 (description
269 "Berkeley DB is an embeddable database allowing developers the choice of
270SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
a24fda81
MB
271 ;; Starting with version 6, BDB is distributed under AGPL3. Many individual
272 ;; files are covered by the 3-clause BSD license.
ba8b9f8d 273 (license (list license:agpl3+ license:bsd-3))
5f96f303
LC
274 (home-page
275 "http://www.oracle.com/us/products/database/berkeley-db/overview/index.html")))
276
557fa39c
EF
277(define-public bdb-5.3
278 (package (inherit bdb)
279 (name "bdb")
280 (version "5.3.28")
ba8b9f8d
MB
281 (license (license:non-copyleft "file://LICENSE"
282 "See LICENSE in the distribution."))
557fa39c
EF
283 (source (origin
284 (method url-fetch)
285 (uri (string-append "http://download.oracle.com/berkeley-db/db-"
286 version ".tar.gz"))
287 (sha256
288 (base32
9a9d6d78
EF
289 "0a1n5hbl7027fbz5lm0vp0zzfp1hmxnz14wx3zl9563h83br5ag0"))))
290 (arguments
291 `(#:tests? #f ; no check target available
292 #:disallowed-references ("doc")
293 #:phases
dc1d3cde
KK
294 (modify-phases %standard-phases
295 (replace 'configure
296 (lambda* (#:key outputs #:allow-other-keys)
297 (let ((out (assoc-ref outputs "out"))
298 (doc (assoc-ref outputs "doc")))
299 ;; '--docdir' is not honored, so we need to patch.
300 (substitute* "dist/Makefile.in"
301 (("docdir[[:blank:]]*=.*")
302 (string-append "docdir = " doc "/share/doc/bdb")))
9a9d6d78 303
dc1d3cde
KK
304 (zero?
305 (system* "./dist/configure"
306 (string-append "--prefix=" out)
307 (string-append "CONFIG_SHELL=" (which "bash"))
308 (string-append "SHELL=" (which "bash"))
9a9d6d78 309
dc1d3cde
KK
310 ;; Bdb doesn't recognize aarch64 as an architecture.
311 ,@(if (string=? "aarch64-linux" (%current-system))
312 '("--build=aarch64-unknown-linux-gnu")
313 '())
9a9d6d78 314
dc1d3cde
KK
315 ;; Remove 7 MiB of .a files.
316 "--disable-static"
9a9d6d78 317
dc1d3cde
KK
318 ;; The compatibility mode is needed by some packages,
319 ;; notably iproute2.
320 "--enable-compat185"
9a9d6d78 321
dc1d3cde
KK
322 ;; The following flag is needed so that the inclusion
323 ;; of db_cxx.h into C++ files works; it leads to
324 ;; HAVE_CXX_STDHEADERS being defined in db_cxx.h.
325 "--enable-cxx"))))))))))
557fa39c 326
afcbb020
CB
327(define-public es-dump-restore
328 (package
329 (name "es-dump-restore")
330 (version "2.1.0")
331 (source
332 (origin
333 (method url-fetch)
334 (uri (rubygems-uri "es_dump_restore" version))
335 (sha256
336 (base32
337 "020yk7f1hw48clmf5501z3xv9shsdchyymcv0y2cci2c1xvr1mim"))))
338 (build-system ruby-build-system)
339 (arguments
0076f5a9 340 '(#:tests? #f)) ;; No testsuite.
afcbb020
CB
341 (propagated-inputs
342 `(("ruby-httpclient" ,ruby-httpclient)
343 ("ruby-multi-json" ,ruby-multi-json)
344 ("ruby-progress_bar" ,ruby-progress_bar)
345 ("ruby-rubyzip" ,ruby-rubyzip)
346 ("ruby-thor" ,ruby-thor)))
347 (synopsis "Utility for dumping and restoring ElasticSearch indexes")
348 (description
349 "This package provides a utility for dumping the contents of an
350ElasticSearch index to a compressed file and restoring the dumpfile back to an
351ElasticSearch server")
352 (home-page "https://github.com/patientslikeme/es_dump_restore")
353 (license license:expat)))
354
b9f771a7
MB
355(define-public leveldb
356 (package
357 (name "leveldb")
04c88363 358 (version "1.20")
b9f771a7
MB
359 (source (origin
360 (method url-fetch)
361 (uri (string-append "https://github.com/google/leveldb"
362 "/archive/v" version ".tar.gz"))
363 (file-name (string-append name "-" version ".tar.gz"))
364 (sha256
365 (base32
04c88363 366 "0r36bcrj6b2afsp4aw1gjai3jbs1c7734pxpc1jz7hh9nasyiazm"))))
b9f771a7
MB
367 (build-system gnu-build-system)
368 (arguments
369 '(#:make-flags (list "CC=gcc")
370 #:phases
371 (modify-phases %standard-phases
372 (delete 'configure)
373 (replace 'install
374 ;; There is no install target, so we do it here.
375 (lambda* (#:key outputs #:allow-other-keys)
376 (let* ((out (assoc-ref outputs "out"))
377 (lib (string-append out "/lib"))
378 (include (string-append out "/include")))
379 (for-each (lambda (file)
380 (install-file file lib))
381 (find-files "out-shared" "^libleveldb\\.so.*$"))
382 (copy-recursively "include" include)
383 #t))))))
384 (inputs
385 `(("snappy" ,snappy)))
386 (home-page "http://leveldb.org/")
387 (synopsis "Fast key-value storage library")
388 (description
389 "LevelDB is a fast key-value storage library that provides an ordered
390mapping from string keys to string values.")
ba8b9f8d 391 (license license:bsd-3)))
b9f771a7 392
686144e9
CB
393(define-public memcached
394 (package
395 (name "memcached")
396 (version "1.5.0")
397 (source
398 (origin
399 (method url-fetch)
400 (uri (string-append
401 "https://memcached.org/files/memcached-" version ".tar.gz"))
402 (sha256
403 (base32 "0chwc0g7wfvcad36z8pf2jbgygdnm9nm1l6pwjsn3d2b089gh0f0"))))
404 (build-system gnu-build-system)
405 (inputs
406 `(("libevent" ,libevent)
407 ("cyrus-sasl" ,cyrus-sasl)))
408 (home-page "https://memcached.org/")
409 (synopsis "In memory caching service")
410 (description "Memcached is a in memory key value store. It has a small
411and generic API, and was originally intended for use with dynamic web
412applications.")
413 (license license:bsd-3)))
414
6bbbca90
CB
415(define-public mongodb
416 (package
417 (name "mongodb")
f1c49e75 418 (version "3.4.10")
6bbbca90
CB
419 (source (origin
420 (method url-fetch)
421 (uri (string-append "https://github.com/mongodb/mongo/archive/r"
422 version ".tar.gz"))
423 (file-name (string-append name "-" version ".tar.gz"))
424 (sha256
f1c49e75 425 (base32 "0676lvkljj7a5hdhv78dbykqnqrj9lbn9799mi84b8vbnzsq961r"))
51b0f09e
EF
426 (modules '((guix build utils)))
427 (snippet
428 '(begin
429 (for-each (lambda (dir)
430 (delete-file-recursively
431 (string-append "src/third_party/" dir)))
432 '("pcre-8.41" "scons-2.5.0" "snappy-1.1.3"
433 "valgrind-3.11.0" "wiredtiger"
434 "yaml-cpp-0.5.3" "zlib-1.2.8"))))
6bbbca90
CB
435 (patches
436 (list
437 (search-patch "mongodb-support-unknown-linux-distributions.patch")))))
6e385b76 438 (build-system scons-build-system)
6bbbca90
CB
439 (inputs
440 `(("openssl" ,openssl)
441 ("pcre" ,pcre)
319b52c3
EF
442 ,@(match (%current-system)
443 ((or "x86_64-linux" "aarch64-linux" "mips64el-linux")
444 `(("wiredtiger" ,wiredtiger)))
445 (_ `()))
6bbbca90
CB
446 ("yaml-cpp" ,yaml-cpp)
447 ("zlib" ,zlib)
51b0f09e 448 ("snappy" ,snappy)))
6bbbca90 449 (native-inputs
6e385b76 450 `(("valgrind" ,valgrind)
90205b62
CB
451 ("perl" ,perl)
452 ("python" ,python2-minimal)
453 ("python2-pymongo" ,python2-pymongo)
454 ("python2-pyyaml" ,python2-pyyaml)
455 ("tzdata" ,tzdata)))
6bbbca90 456 (arguments
6e385b76
AI
457 `(#:scons ,scons-python2
458 #:phases
6bbbca90
CB
459 (let ((common-options
460 `(;; "--use-system-tcmalloc" TODO: Missing gperftools
461 "--use-system-pcre"
29cfbfca
EF
462 ;; wiredtiger is 64-bit only
463 ,,(if (any (cute string-prefix? <> (or (%current-target-system)
464 (%current-system)))
465 '("i686-linux" "armhf-linux"))
466 ``"--wiredtiger=off"
319b52c3 467 ``"--use-system-wiredtiger")
6bbbca90
CB
468 ;; TODO
469 ;; build/opt/mongo/db/fts/unicode/string.o failed: Error 1
470 ;; --use-system-boost
471 "--use-system-snappy"
472 "--use-system-zlib"
473 "--use-system-valgrind"
474 ;; "--use-system-stemmer" TODO: Missing relevant package
475 "--use-system-yaml"
476 "--disable-warnings-as-errors"
477 ,(format #f "--jobs=~a" (parallel-job-count))
478 "--ssl")))
479 (modify-phases %standard-phases
6bbbca90
CB
480 (add-after 'unpack 'scons-propagate-environment
481 (lambda _
482 ;; Modify the SConstruct file to arrange for
483 ;; environment variables to be propagated.
484 (substitute* "SConstruct"
485 (("^env = Environment\\(")
486 "env = Environment(ENV=os.environ, "))
487 #t))
488 (add-after 'unpack 'create-version-file
489 (lambda _
490 (call-with-output-file "version.json"
491 (lambda (port)
492 (display ,(simple-format #f "{
493 \"version\": \"~A\"
494}" version) port)))
495 #t))
496 (replace 'build
497 (lambda _
498 (zero? (apply system*
499 `("scons"
500 ,@common-options
501 "mongod" "mongo" "mongos")))))
502 (replace 'check
90205b62
CB
503 (lambda* (#:key tests? inputs #:allow-other-keys)
504 (setenv "TZDIR"
505 (string-append (assoc-ref inputs "tzdata")
506 "/share/zoneinfo"))
6bbbca90 507 (or (not tests?)
90205b62
CB
508 ;; Note that with the tests, especially the unittests, the
509 ;; build can take up to ~45GB of space, as many tests are
510 ;; individual executable files, with some being hundreds of
511 ;; megabytes in size.
512 (begin
8d7b476b
EF
513 (apply
514 invoke `("scons" ,@common-options "dbtest" "unittests"))
90205b62
CB
515 (substitute* "build/unittests.txt"
516 ;; TODO: Don't run the async_stream_test, as it hangs
517 (("^build\\/opt\\/mongo\\/executor\\/async\\_stream\\_test\n$")
518 "")
519 ;; TODO: This test fails
520 ;; Expected 0UL != disks.size() (0 != 0) @src/mongo/util/procparser_test.cpp:476
521 (("^build\\/opt\\/mongo\\/util\\/procparser\\_test\n$")
522 ""))
8d7b476b
EF
523 (invoke "python" "buildscripts/resmoke.py"
524 "--suites=dbtest,unittests"
90205b62 525 (format #f "--jobs=~a" (parallel-job-count)))))))
6bbbca90
CB
526 (replace 'install
527 (lambda _
528 (let ((bin (string-append (assoc-ref %outputs "out") "/bin")))
529 (install-file "mongod" bin)
530 (install-file "mongos" bin)
531 (install-file "mongo" bin))
532 #t))))))
533 (home-page "https://www.mongodb.org/")
534 (synopsis "High performance and high availability document database")
535 (description
536 "Mongo is a high-performance, high availability, schema-free
537document-oriented database. A key goal of MongoDB is to bridge the gap
538between key/value stores (which are fast and highly scalable) and traditional
539RDBMS systems (which are deep in functionality).")
540 (license (list license:agpl3
541 ;; Some parts are licensed under the Apache License
542 license:asl2.0))))
543
5f96f303
LC
544(define-public mysql
545 (package
546 (name "mysql")
7f6a607e 547 (version "5.7.21")
5f96f303
LC
548 (source (origin
549 (method url-fetch)
23bbd7dd
EF
550 (uri (list (string-append
551 "http://dev.mysql.com/get/Downloads/MySQL-"
552 (version-major+minor version) "/"
553 name "-" version ".tar.gz")
554 (string-append
555 "http://downloads.mysql.com/archives/get/file/"
556 name "-" version ".tar.gz")))
5f96f303
LC
557 (sha256
558 (base32
7f6a607e 559 "1dq9bgnajf7cq3mrjkwv6w5nwslhs26lkrw56i7w4fbsq9wm087s"))))
329d13b8
SB
560 (build-system cmake-build-system)
561 (arguments
69419655 562 `(#:configure-flags
329d13b8
SB
563 '("-DBUILD_CONFIG=mysql_release"
564 "-DWITH_SSL=system"
565 "-DWITH_ZLIB=system"
566 "-DDEFAULT_CHARSET=utf8"
567 "-DDEFAULT_COLLATION=utf8_general_ci"
568 "-DMYSQL_DATADIR=/var/lib/mysql"
569 "-DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock"
570 "-DINSTALL_INFODIR=share/mysql/docs"
571 "-DINSTALL_MANDIR=share/man"
572 "-DINSTALL_PLUGINDIR=lib/mysql/plugin"
573 "-DINSTALL_SCRIPTDIR=bin"
574 "-DINSTALL_INCLUDEDIR=include/mysql"
575 "-DINSTALL_DOCREADMEDIR=share/mysql/docs"
576 "-DINSTALL_SUPPORTFILESDIR=share/mysql"
577 "-DINSTALL_MYSQLSHAREDIR=share/mysql"
578 "-DINSTALL_DOCDIR=share/mysql/docs"
579 "-DINSTALL_SHAREDIR=share/mysql"
580 ;; Get rid of test data.
581 "-DINSTALL_MYSQLTESTDIR="
3f289db6
LC
582 "-DINSTALL_SQLBENCHDIR=")
583 #:phases (modify-phases %standard-phases
584 (add-after
23bbd7dd
EF
585 'unpack 'patch-boost-version
586 (lambda _
587 ;; Mysql wants boost-1.59.0 specifically
588 (substitute* "cmake/boost.cmake"
69419655
EB
589 (("59")
590 ,(match (string-split (package-version boost) #\.)
591 ((_ minor . _) minor))))))
6a52df50
LC
592 (add-after
593 'install 'remove-extra-binaries
594 (lambda* (#:key outputs #:allow-other-keys)
595 (let ((out (assoc-ref outputs "out")))
596 ;; Remove the 3 *_embedded files, which weigh in at
597 ;; 14 MiB each.
598 (for-each delete-file
599 (find-files (string-append out "/bin")
600 "_embedded$"))
7d099cbe 601 #t))))))
329d13b8
SB
602 (native-inputs
603 `(("bison" ,bison)
604 ("perl" ,perl)))
5f96f303 605 (inputs
23bbd7dd
EF
606 `(("boost" ,boost)
607 ("libaio" ,libaio)
608 ("ncurses" ,ncurses)
5f96f303 609 ("openssl" ,openssl)
23bbd7dd 610 ("zlib" ,zlib)))
5f96f303 611 (home-page "http://www.mysql.com/")
9e771e3b 612 (synopsis "Fast, easy to use, and popular database")
5f96f303
LC
613 (description
614 "MySQL is a fast, reliable, and easy to use relational database
615management system that supports the standardized Structured Query
616Language.")
ba8b9f8d 617 (license license:gpl2)))
5f96f303 618
77631745
SB
619(define-public mariadb
620 (package
621 (name "mariadb")
0054564b 622 (version "10.1.29")
77631745
SB
623 (source (origin
624 (method url-fetch)
625 (uri (string-append "https://downloads.mariadb.org/f/"
626 name "-" version "/source/"
627 name "-" version ".tar.gz"))
628 (sha256
629 (base32
0054564b 630 "1m3ya6c3snnsyscd0waklayqfv0vhws52iizv2j5masj5xhdbfvk"))))
77631745
SB
631 (build-system cmake-build-system)
632 (arguments
633 '(#:configure-flags
634 '("-DBUILD_CONFIG=mysql_release"
6cf8e576
LF
635 ;; Linking with libarchive fails, like this:
636
637 ;; ld: /gnu/store/...-libarchive-3.2.2/lib/libarchive.a(archive_entry.o):
638 ;; relocation R_X86_64_32 against `.bss' can not be used when
639 ;; making a shared object; recompile with -fPIC
640
641 ;; For now, disable the features that that use libarchive (xtrabackup).
642 "-DWITH_LIBARCHIVE=OFF"
643
77631745
SB
644 "-DDEFAULT_CHARSET=utf8"
645 "-DDEFAULT_COLLATION=utf8_general_ci"
646 "-DMYSQL_DATADIR=/var/lib/mysql"
647 "-DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock"
648 "-DINSTALL_INFODIR=share/mysql/docs"
649 "-DINSTALL_MANDIR=share/man"
650 "-DINSTALL_PLUGINDIR=lib/mysql/plugin"
651 "-DINSTALL_SCRIPTDIR=bin"
652 "-DINSTALL_INCLUDEDIR=include/mysql"
653 "-DINSTALL_DOCREADMEDIR=share/mysql/docs"
654 "-DINSTALL_SUPPORTFILESDIR=share/mysql/support-files"
655 "-DINSTALL_MYSQLSHAREDIR=share/mysql"
656 "-DINSTALL_DOCDIR=share/mysql/docs"
657 "-DINSTALL_SHAREDIR=share/mysql")
658 #:phases
659 (modify-phases %standard-phases
660 (add-before
661 'configure 'pre-configure
662 (lambda _
663 (setenv "CONFIG_SHELL" (which "sh"))
77631745
SB
664 #t))
665 (add-after
666 'install 'post-install
667 (lambda* (#:key outputs #:allow-other-keys)
668 (let* ((out (assoc-ref outputs "out"))
669 (test (assoc-ref outputs "test")))
670 (substitute* (string-append out "/bin/mysql_install_db")
671 (("basedir=\"\"")
672 (string-append "basedir=\"" out "\"")))
673 ;; Remove unneeded files for testing.
674 (with-directory-excursion out
675 (for-each delete-file-recursively
676 '("data" "mysql-test" "sql-bench"
677 "share/man/man1/mysql-test-run.pl.1")))))))))
678 (native-inputs
679 `(("bison" ,bison)
680 ("perl" ,perl)))
681 (inputs
682 `(("jemalloc" ,jemalloc)
683 ("libaio" ,libaio)
684 ("libxml2" ,libxml2)
685 ("ncurses" ,ncurses)
686 ("openssl" ,openssl)
687 ("pcre" ,pcre)
688 ("zlib" ,zlib)))
689 (home-page "https://mariadb.org/")
690 (synopsis "SQL database server")
691 (description
692 "MariaDB is a multi-user and multi-threaded SQL database server, designed
693as a drop-in replacement of MySQL.")
ba8b9f8d 694 (license license:gpl2)))
77631745 695
5f96f303
LC
696(define-public postgresql
697 (package
698 (name "postgresql")
1d8e73ba 699 (version "10.1")
5f96f303
LC
700 (source (origin
701 (method url-fetch)
dbeaf8f2 702 (uri (string-append "https://ftp.postgresql.org/pub/source/v"
9020890b 703 version "/postgresql-" version ".tar.bz2"))
5f96f303
LC
704 (sha256
705 (base32
1d8e73ba 706 "04z7lm4h94625vbncwv98svycqr942n3q47ailqaczkszqjlxjrw"))))
5f96f303 707 (build-system gnu-build-system)
dd213082 708 (arguments
b7aa3f5d
DM
709 `(#:configure-flags '("--with-uuid=e2fs")
710 #:phases
dd213082
JD
711 (modify-phases %standard-phases
712 (add-before 'configure 'patch-/bin/sh
713 (lambda _
714 ;; Refer to the actual shell.
715 (substitute* '("src/bin/pg_ctl/pg_ctl.c"
716 "src/bin/psql/command.c")
717 (("/bin/sh") (which "sh")))
b7aa3f5d
DM
718 #t))
719 (add-after 'build 'build-contrib
720 (lambda _
721 (zero? (system* "make" "-C" "contrib"))))
722 (add-after 'install 'install-contrib
723 (lambda _
724 (zero? (system* "make" "-C" "contrib" "install")))))))
5f96f303
LC
725 (inputs
726 `(("readline" ,readline)
b7aa3f5d 727 ("libuuid" ,util-linux)
5f96f303 728 ("zlib" ,zlib)))
d887f420 729 (home-page "https://www.postgresql.org/")
5f96f303
LC
730 (synopsis "Powerful object-relational database system")
731 (description
732 "PostgreSQL is a powerful object-relational database system. It is fully
733ACID compliant, has full support for foreign keys, joins, views, triggers, and
734stored procedures (in multiple languages). It includes most SQL:2008 data
735types, including INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE, INTERVAL, and
736TIMESTAMP. It also supports storage of binary large objects, including
737pictures, sounds, or video.")
ba8b9f8d 738 (license (license:x11-style "file://COPYRIGHT"))))
5f96f303 739
7658d89b
EF
740(define-public postgresql-9.6
741 (package
742 (inherit postgresql)
743 (name "postgresql")
179b7ac6 744 (version "9.6.6")
7658d89b
EF
745 (source (origin
746 (method url-fetch)
747 (uri (string-append "https://ftp.postgresql.org/pub/source/v"
748 version "/postgresql-" version ".tar.bz2"))
749 (sha256
750 (base32
179b7ac6 751 "0m417h30s18rwa7yzkqqcdb22ifpcda2fpg2cyx8bxvjp3ydz71r"))))))
7658d89b 752
259a94e9
TD
753(define-public qdbm
754 (package
755 (name "qdbm")
756 (version "1.8.78")
757 (source
758 (origin
759 (method url-fetch)
760 (uri (string-append "http://fallabs.com/" name "/"
761 name "-" version ".tar.gz"))
762 (sha256
763 (base32
764 "0gmpvhn02pkq280ffmn4da1g4mdr1xxz7l80b7y4n7km1mrzwrml"))))
765 (build-system gnu-build-system)
766 (arguments
767 `( #:configure-flags (list (string-append "LDFLAGS=-Wl,-rpath="
768 (assoc-ref %outputs "out")
769 "/lib"))))
770 (home-page "http://fallabs.com/qdbm")
771 (synopsis "Key-value database")
772 (description "QDBM is a library of routines for managing a
773database. The database is a simple data file containing key-value
774pairs. Every key and value is serial bytes with variable length.
775Binary data as well as character strings can be used as a key or a
776value. There is no concept of data tables or data types. Records are
777organized in a hash table or B+ tree.")
778 (license license:lgpl2.1+)))
779
5f96f303
LC
780(define-public recutils
781 (package
782 (name "recutils")
783 (version "1.7")
784 (source (origin
785 (method url-fetch)
786 (uri (string-append "mirror://gnu/recutils/recutils-"
787 version ".tar.gz"))
788 (sha256
789 (base32
790 "0cdwa4094x3yx7vn98xykvnlp9rngvd58d19vs3vh5hrvggccg93"))))
791 (build-system gnu-build-system)
792
793 ;; Running tests in parallel leads to test failures and crashes in
794 ;; torture/utils.
b747a9db
LF
795 (arguments '(#:parallel-tests? #f
796 #:configure-flags
797 (list (string-append "--with-bash-headers="
798 (assoc-ref %build-inputs "bash:include")
c21af659
LC
799 "/include/bash"))
800
801 #:phases (modify-phases %standard-phases
802 (add-before 'build 'set-bash4.4-header-location
803 (lambda _
804 (substitute* "bash/Makefile.in"
805 ;; Adjust the header search path for Bash
806 ;; 4.4 in accordance with 'bash.pc'.
807 (("AM_CPPFLAGS = (.*)$" _ rest)
808 (string-append "AM_CPPFLAGS = "
809 "-I$(BASH_HEADERS)/include "
810 rest))
811
812 ;; Install to PREFIX/lib/bash to match Bash
813 ;; 4.4's search path.
814 (("^libdir = .*$")
815 "libdir = @libdir@/bash\n"))
816 #t)))))
5f96f303 817
b8fc3622 818 (native-inputs `(("emacs" ,emacs-minimal)
7ae7ca0e 819 ("bc" ,bc)
b747a9db 820 ("bash:include" ,bash "include")
b3546174 821 ("libuuid" ,util-linux)))
5f96f303
LC
822
823 ;; TODO: Add more optional inputs.
5f96f303
LC
824 (inputs `(("curl" ,curl)
825 ("libgcrypt" ,libgcrypt)
826 ("check" ,check)))
827 (synopsis "Manipulate plain text files as databases")
828 (description
829 "GNU Recutils is a set of tools and libraries for creating and
830manipulating text-based, human-editable databases. Despite being text-based,
831databases created with Recutils carry all of the expected features such as
c5779c93
LC
832unique fields, primary keys, time stamps and more. Many different field
833types are supported, as is encryption.")
ba8b9f8d 834 (license license:gpl3+)
6fd52309 835 (home-page "https://www.gnu.org/software/recutils/")))
5f96f303 836
d3c6ad0a
MB
837(define-public rocksdb
838 (package
839 (name "rocksdb")
2e93ee5f 840 (version "5.2.1")
d3c6ad0a
MB
841 (source (origin
842 (method url-fetch)
843 (uri (string-append "https://github.com/facebook/rocksdb"
844 "/archive/v" version ".tar.gz"))
845 (file-name (string-append name "-" version ".tar.gz"))
846 (sha256
847 (base32
2e93ee5f 848 "1v2q05bl56sfp51m09z7g6489hkfq4vf6b4qgfg3d96ylgmay9yb"))
d3c6ad0a
MB
849 (modules '((guix build utils)))
850 (snippet
851 '(begin
852 ;; TODO: unbundle gtest.
853 (delete-file "build_tools/gnu_parallel")
854 #t))))
855 (build-system gnu-build-system)
856 (arguments
d7b344c5 857 `(#:make-flags (list "CC=gcc"
d3c6ad0a
MB
858 (string-append "INSTALL_PATH="
859 (assoc-ref %outputs "out")))
d7b344c5
MB
860 ;; Many tests fail on 32-bit platforms. There are multiple reports about
861 ;; this upstream, but it's not going to be supported any time soon.
862 #:tests? (let ((system ,(or (%current-target-system)
863 (%current-system))))
864 (or (string-prefix? "x86_64-linux" system)
865 (string-prefix? "aarch64-linux" system)))
d3c6ad0a
MB
866 #:phases
867 (modify-phases %standard-phases
868 (add-after 'unpack 'patch-Makefile
869 (lambda _
870 (substitute* "Makefile"
871 (("build_tools/gnu_parallel") "parallel")
f91c677c
MB
872 ;; Don't depend on the static library when installing.
873 (("install: install-static")
874 "install: install-shared")
d3c6ad0a
MB
875 (("#!/bin/sh") (string-append "#!" (which "sh"))))
876 #t))
877 (delete 'configure)
d7b344c5
MB
878 ;; The default target is only needed for tests and built on demand.
879 (delete 'build)
880 (add-before 'check 'disable-optimizations
881 (lambda _
882 ;; Prevent the build from passing '-march=native' to the compiler.
883 (setenv "PORTABLE" "1")
884 #t))
d3c6ad0a
MB
885 (add-before 'check 'disable-failing-tests
886 (lambda _
887 (substitute* "Makefile"
bf144793
MB
888 ;; This test fails with GCC-5 and is unmaintained.
889 ;; https://github.com/facebook/rocksdb/issues/2148
890 (("^[[:blank:]]+spatial_db_test[[:blank:]]+\\\\") "\\")
d3c6ad0a
MB
891 ;; These tests reliably fail due to "Too many open files".
892 (("^[[:blank:]]+env_test[[:blank:]]+\\\\") "\\")
893 (("^[[:blank:]]+persistent_cache_test[[:blank:]]+\\\\") "\\"))
894 #t))
f91c677c
MB
895 (add-after 'check 'build-release-libraries
896 ;; The default build target is a debug build for tests. The
897 ;; install target depends on "shared_lib" and "static_lib"
898 ;; targets for release builds so we build them here for clarity.
899 ;; TODO: Add debug output.
900 (lambda* (#:key (make-flags '()) #:allow-other-keys)
f91c677c 901 (zero? (apply system* "make" "shared_lib" make-flags)))))))
d3c6ad0a
MB
902 (native-inputs
903 `(("parallel" ,parallel)
904 ("perl" ,perl)
905 ("procps" ,procps)
77e52190
MB
906 ("python" ,python-2)
907 ("which" ,which)))
d3c6ad0a
MB
908 (inputs
909 `(("bzip2" ,bzip2)
910 ("gflags" ,gflags)
911 ("jemalloc" ,jemalloc)
912 ("lz4" ,lz4)
913 ("snappy" ,snappy)
914 ("zlib" ,zlib)))
915 (home-page "http://rocksdb.org/")
916 (synopsis "Persistent key-value store for fast storage")
917 (description
918 "RocksDB is a library that forms the core building block for a fast
919key-value server, especially suited for storing data on flash drives. It
920has a @dfn{Log-Structured-Merge-Database} (LSM) design with flexible tradeoffs
921between @dfn{Write-Amplification-Factor} (WAF), @dfn{Read-Amplification-Factor}
922(RAF) and @dfn{Space-Amplification-Factor} (SAF). It has multi-threaded
923compactions, making it specially suitable for storing multiple terabytes of
924data in a single database. RocksDB is partially based on @code{LevelDB}.")
925 ;; RocksDB is BSD-3 and the JNI adapter is Apache 2.0.
ba8b9f8d 926 (license (list license:bsd-3 license:asl2.0))))
d3c6ad0a 927
b92d02d9
RJ
928(define-public sparql-query
929 (package
930 (name "sparql-query")
931 (version "1.1")
932 (source (origin
933 (method url-fetch)
934 (uri (string-append "https://github.com/tialaramex/"
935 name "/archive/" version ".tar.gz"))
936 (sha256
937 (base32 "0yq3k20472rv8npcc420q9ab6idy584g5y0q501d360k5q0ggr8w"))
938 (file-name (string-append name "-" version ".tar.gz"))))
939 (build-system gnu-build-system)
940 (inputs
941 `(("readline" ,readline)
942 ("ncurses" ,ncurses)
943 ("glib" ,glib)
944 ("libxml2" ,libxml2)
945 ("curl" ,curl)))
946 (native-inputs
947 `(("pkg-config" ,pkg-config)))
948 (arguments
949 `(#:make-flags '("CC=gcc")
950 #:phases
951 (modify-phases %standard-phases
952 (delete 'configure)
953 ;; The Makefile uses git to obtain versioning information. This phase
954 ;; substitutes the git invocation with the package version.
955 (add-after 'unpack 'remove-git-dependency
956 (lambda _
957 (substitute* "Makefile"
958 (("^gitrev :=.*$")
959 (string-append "gitrev = \"v" ,version "\"")))))
960 ;; The install phase of the Makefile assumes $PREFIX/usr/local/bin.
961 ;; This replacement does the same thing, except for using $PREFIX/bin
962 ;; instead.
963 (replace 'install
964 (lambda* (#:key outputs #:allow-other-keys)
965 (let* ((out (assoc-ref outputs "out"))
966 (bin (string-append out "/bin")))
967 (install-file "sparql-query" bin)
968 (system* "ln" "--symbolic"
969 (string-append bin "/sparql-query")
970 (string-append bin "/sparql-update")))))
971 (replace 'check
972 (lambda* (#:key make-flags #:allow-other-keys)
973 (and
974 (zero? (apply system* "make" `(,@make-flags "scan-test")))
975 (zero? (system "./scan-test"))))))))
976 (home-page "https://github.com/tialaramex/sparql-query/")
977 (synopsis "Command-line tool for accessing SPARQL endpoints over HTTP")
978 (description "Sparql-query is a command-line tool for accessing SPARQL
979endpoints over HTTP. It has been intentionally designed to 'feel' similar to
980tools for interrogating SQL databases. For example, you can enter a query over
981several lines, using a semi-colon at the end of a line to indicate the end of
982your query. It also supports readline so that you can more easily recall and
983edit previous queries, even across sessions. It can be used non-interactively,
984for example from a shell script.")
985 ;; Some files (like scan-sparql.c) contain a GPLv3+ license header, while
986 ;; others (like sparql-query.c) contain a GPLv2+ license header.
ba8b9f8d 987 (license (list license:gpl3+))))
b92d02d9 988
5f96f303
LC
989(define-public sqlite
990 (package
991 (name "sqlite")
70eea6ea 992 (version "3.19.3")
5f96f303
LC
993 (source (origin
994 (method url-fetch)
5f96f303
LC
995 (uri (let ((numeric-version
996 (match (string-split version #\.)
997 ((first-digit other-digits ...)
998 (string-append first-digit
999 (string-pad-right
1000 (string-concatenate
1001 (map (cut string-pad <> 2 #\0)
1002 other-digits))
1003 6 #\0))))))
e58db46b 1004 (string-append "https://sqlite.org/2017/sqlite-autoconf-"
3ad8cb41 1005 numeric-version ".tar.gz")))
5f96f303
LC
1006 (sha256
1007 (base32
70eea6ea 1008 "00b3l2qglpl1inx21fckiwxnfq5xf6441flc79rqg7zdvh1rq4h6"))))
5f96f303 1009 (build-system gnu-build-system)
8f1d22b7 1010 (inputs `(("readline" ,readline)))
49689377
MW
1011 (arguments
1012 `(#:configure-flags
73dc727e
DC
1013 ;; Add -DSQLITE_SECURE_DELETE, -DSQLITE_ENABLE_UNLOCK_NOTIFY and
1014 ;; -DSQLITE_ENABLE_DBSTAT_VTAB to CFLAGS. GNU Icecat will refuse
1015 ;; to use the system SQLite unless these options are enabled.
1016 (list (string-append "CFLAGS=-O2 -DSQLITE_SECURE_DELETE "
1017 "-DSQLITE_ENABLE_UNLOCK_NOTIFY "
1018 "-DSQLITE_ENABLE_DBSTAT_VTAB"))))
3ad8cb41 1019 (home-page "https://www.sqlite.org/")
5f96f303
LC
1020 (synopsis "The SQLite database management system")
1021 (description
1022 "SQLite is a software library that implements a self-contained, serverless,
35b9e423
EB
1023zero-configuration, transactional SQL database engine. SQLite is the most
1024widely deployed SQL database engine in the world. The source code for SQLite
1025is in the public domain.")
ba8b9f8d 1026 (license license:public-domain)))
db60b1d9 1027
6a23c8b1
RW
1028;; This is used by Clementine.
1029(define-public sqlite-with-fts3
1030 (package (inherit sqlite)
1031 (name "sqlite-with-fts3")
1032 (arguments
1033 (substitute-keyword-arguments (package-arguments sqlite)
1034 ((#:configure-flags flags)
1035 `(list (string-append "CFLAGS=-O2 -DSQLITE_SECURE_DELETE "
1036 "-DSQLITE_ENABLE_UNLOCK_NOTIFY "
1037 "-DSQLITE_ENABLE_DBSTAT_VTAB "
1038 "-DSQLITE_ENABLE_FTS3 "
1039 "-DSQLITE_ENABLE_FTS3_PARENTHESIS "
1040 "-DSQLITE_ENABLE_FTS3_TOKENIZER")))))))
1041
db60b1d9
LC
1042(define-public tdb
1043 (package
1044 (name "tdb")
fab46af8 1045 (version "1.3.15")
db60b1d9
LC
1046 (source (origin
1047 (method url-fetch)
ca473fc2 1048 (uri (string-append "https://www.samba.org/ftp/tdb/tdb-"
db60b1d9
LC
1049 version ".tar.gz"))
1050 (sha256
1051 (base32
fab46af8 1052 "0a37jhpij8wr4f4pjqdlwnffy2l6a2vkqdpz1bqxj6v06cwbz8dl"))))
db60b1d9
LC
1053 (build-system gnu-build-system)
1054 (arguments
6ccb7814
EF
1055 '(#:phases
1056 (modify-phases %standard-phases
1057 (replace 'configure
1058 (lambda* (#:key outputs #:allow-other-keys)
1059 (let ((out (assoc-ref outputs "out")))
1060 ;; The 'configure' script is a wrapper for Waf and
1061 ;; doesn't recognize things like '--enable-fast-install'.
1062 (zero? (system* "./configure"
1063 (string-append "--prefix=" out)))))))))
db60b1d9
LC
1064 (native-inputs
1065 `(;; TODO: Build the documentation.
1066 ;; ("docbook-xsl" ,docbook-xsl)
1067 ;; ("libxml2" ,libxml2)
1068 ;; ("libxslt" ,libxslt)
1069 ("python" ,python-2))) ;for the Waf build system
1abd0904 1070 (home-page "https://tdb.samba.org/")
35b9e423 1071 (synopsis "Trivial database")
db60b1d9
LC
1072 (description
1073 "TDB is a Trivial Database. In concept, it is very much like GDBM,
1074and BSD's DB except that it allows multiple simultaneous writers and uses
1075locking internally to keep writers from trampling on each other. TDB is also
1076extremely small.")
ba8b9f8d 1077 (license license:lgpl3+)))
274da61d
LC
1078
1079(define-public perl-dbi
1080 (package
1081 (name "perl-dbi")
84a0008a 1082 (version "1.637")
274da61d
LC
1083 (source (origin
1084 (method url-fetch)
1085 (uri (string-append
1086 "mirror://cpan/authors/id/T/TI/TIMB/DBI-"
1087 version ".tar.gz"))
1088 (sha256
1089 (base32
84a0008a 1090 "1ikbsb6sb0bd2m1dqknl4vx7ikmnd41y0xq8np1l40g8jcjp2mr5"))))
274da61d
LC
1091 (build-system perl-build-system)
1092 (synopsis "Database independent interface for Perl")
1093 (description "This package provides an database interface for Perl.")
6138dede 1094 (home-page "http://search.cpan.org/dist/DBI")
2f3108ad 1095 (license license:perl-license)))
274da61d 1096
feae3395
EB
1097(define-public perl-dbix-class
1098 (package
1099 (name "perl-dbix-class")
5d78d746 1100 (version "0.082840")
feae3395
EB
1101 (source
1102 (origin
1103 (method url-fetch)
1104 (uri (string-append "mirror://cpan/authors/id/R/RI/RIBASUSHI/"
1105 "DBIx-Class-" version ".tar.gz"))
1106 (sha256
1107 (base32
5d78d746 1108 "1vw1f756g8m5hq11nqf5dk2cw2y4mqq91ca5p75fn5g3fp8syja0"))))
feae3395
EB
1109 (build-system perl-build-system)
1110 (native-inputs
1111 `(("perl-dbd-sqlite" ,perl-dbd-sqlite)
1112 ("perl-file-temp" ,perl-file-temp)
2f837cf7 1113 ("perl-module-install" ,perl-module-install)
feae3395
EB
1114 ("perl-package-stash" ,perl-package-stash)
1115 ("perl-test-deep" ,perl-test-deep)
1116 ("perl-test-exception" ,perl-test-exception)
1117 ("perl-test-warn" ,perl-test-warn)))
1118 (propagated-inputs
1119 `(("perl-class-accessor-grouped" ,perl-class-accessor-grouped)
1120 ("perl-class-c3-componentised" ,perl-class-c3-componentised)
1121 ("perl-class-inspector" ,perl-class-inspector)
1122 ("perl-config-any" ,perl-config-any)
1123 ("perl-context-preserve" ,perl-context-preserve)
1124 ("perl-data-dumper-concise" ,perl-data-dumper-concise)
1125 ("perl-data-page" ,perl-data-page)
1126 ("perl-dbi" ,perl-dbi)
1127 ("perl-devel-globaldestruction" ,perl-devel-globaldestruction)
1128 ("perl-hash-merge" ,perl-hash-merge)
1129 ("perl-module-find" ,perl-module-find)
1130 ("perl-moo" ,perl-moo)
1131 ("perl-mro-compat" ,perl-mro-compat)
1132 ("perl-namespace-clean" ,perl-namespace-clean)
1133 ("perl-path-class" ,perl-path-class)
1134 ("perl-scalar-list-utils" ,perl-scalar-list-utils)
1135 ("perl-scope-guard" ,perl-scope-guard)
1136 ("perl-sql-abstract" ,perl-sql-abstract)
1137 ("perl-sub-name" ,perl-sub-name)
1138 ("perl-text-balanced" ,perl-text-balanced)
1139 ("perl-try-tiny" ,perl-try-tiny)))
1140 (home-page "http://search.cpan.org/dist/DBIx-Class")
1141 (synopsis "Extensible and flexible object <-> relational mapper")
1142 (description "An SQL to OO mapper with an object API inspired by
1143Class::DBI (with a compatibility layer as a springboard for porting) and a
1144resultset API that allows abstract encapsulation of database operations. It
1145aims to make representing queries in your code as perl-ish as possible while
1146still providing access to as many of the capabilities of the database as
1147possible, including retrieving related records from multiple tables in a
1148single query, \"JOIN\", \"LEFT JOIN\", \"COUNT\", \"DISTINCT\", \"GROUP BY\",
1149\"ORDER BY\" and \"HAVING\" support.")
2f3108ad 1150 (license license:perl-license)))
e61fd0f0 1151
4e4039e5
EB
1152(define-public perl-dbix-class-cursor-cached
1153 (package
1154 (name "perl-dbix-class-cursor-cached")
180cb81b 1155 (version "1.001004")
4e4039e5
EB
1156 (source
1157 (origin
1158 (method url-fetch)
1159 (uri (string-append "mirror://cpan/authors/id/A/AR/ARCANEZ/"
1160 "DBIx-Class-Cursor-Cached-" version ".tar.gz"))
1161 (sha256
1162 (base32
180cb81b 1163 "09b2jahn2x12qm4f7qm1jzsxbz7qn1czp6a3fnl5l2i3l4r5421p"))))
4e4039e5
EB
1164 (build-system perl-build-system)
1165 (native-inputs
1166 `(("perl-cache-cache" ,perl-cache-cache)
2f837cf7
MB
1167 ("perl-dbd-sqlite" ,perl-dbd-sqlite)
1168 ("perl-module-install" ,perl-module-install)))
4e4039e5
EB
1169 (propagated-inputs
1170 `(("perl-carp-clan" ,perl-carp-clan)
1171 ("perl-dbix-class" ,perl-dbix-class)))
1172 (home-page "http://search.cpan.org/dist/DBIx-Class-Cursor-Cached")
1173 (synopsis "Cursor with built-in caching support")
1174 (description "DBIx::Class::Cursor::Cached provides a cursor class with
1175built-in caching support.")
2f3108ad 1176 (license license:perl-license)))
4e4039e5 1177
e61fd0f0
EB
1178(define-public perl-dbix-class-introspectablem2m
1179 (package
1180 (name "perl-dbix-class-introspectablem2m")
7a462b80 1181 (version "0.001002")
e61fd0f0
EB
1182 (source
1183 (origin
1184 (method url-fetch)
68a9d6df 1185 (uri (string-append "mirror://cpan/authors/id/I/IL/ILMARI/"
e61fd0f0
EB
1186 "DBIx-Class-IntrospectableM2M-" version ".tar.gz"))
1187 (sha256
1188 (base32
7a462b80 1189 "1w47rh2241iy5x3a9bqsyd5kdp9sk43dksr99frzv4qn4jsazfn6"))))
e61fd0f0 1190 (build-system perl-build-system)
2f837cf7
MB
1191 (native-inputs
1192 `(("perl-module-install" ,perl-module-install)))
e61fd0f0
EB
1193 (propagated-inputs
1194 `(("perl-dbix-class" ,perl-dbix-class)))
1195 (home-page "http://search.cpan.org/dist/DBIx-Class-IntrospectableM2M")
1196 (synopsis "Introspect many-to-many relationships")
1197 (description "Because the many-to-many relationships are not real
1198relationships, they can not be introspected with DBIx::Class. Many-to-many
1199relationships are actually just a collection of convenience methods installed
1200to bridge two relationships. This DBIx::Class component can be used to store
1201all relevant information about these non-relationships so they can later be
1202introspected and examined.")
2f3108ad 1203 (license license:perl-license)))
708155df
EB
1204
1205(define-public perl-dbix-class-schema-loader
1206 (package
1207 (name "perl-dbix-class-schema-loader")
b2b99562 1208 (version "0.07047")
708155df
EB
1209 (source
1210 (origin
1211 (method url-fetch)
1212 (uri (string-append "mirror://cpan/authors/id/I/IL/ILMARI/"
1213 "DBIx-Class-Schema-Loader-" version ".tar.gz"))
1214 (sha256
1215 (base32
b2b99562 1216 "06s2q6xj95600sdlfph57spjk2z1gjs4zwq5b7mz7d5izcxgnwb6"))))
708155df
EB
1217 (build-system perl-build-system)
1218 (native-inputs
1219 `(("perl-config-any" ,perl-config-any)
1220 ("perl-config-general" ,perl-config-general)
1221 ("perl-dbd-sqlite" ,perl-dbd-sqlite)
1222 ("perl-dbix-class-introspectablem2m" ,perl-dbix-class-introspectablem2m)
2f837cf7 1223 ("perl-module-install" ,perl-module-install)
708155df
EB
1224 ("perl-moose" ,perl-moose)
1225 ("perl-moosex-markasmethods" ,perl-moosex-markasmethods)
1226 ("perl-moosex-nonmoose" ,perl-moosex-nonmoose)
1227 ("perl-namespace-autoclean" ,perl-namespace-autoclean)
1228 ("perl-test-deep" ,perl-test-deep)
1229 ("perl-test-differences" ,perl-test-differences)
1230 ("perl-test-exception" ,perl-test-exception)
1231 ("perl-test-pod" ,perl-test-pod)
1232 ("perl-test-warn" ,perl-test-warn)))
1233 (propagated-inputs
1234 `(("perl-class-unload" ,perl-class-unload)
1235 ("perl-class-inspector" ,perl-class-inspector)
1236 ("perl-class-accessor-grouped" ,perl-class-accessor-grouped)
1237 ("perl-class-c3-componentised" ,perl-class-c3-componentised)
1238 ("perl-carp-clan" ,perl-carp-clan)
1239 ("perl-data-dump" ,perl-data-dump)
1240 ("perl-dbix-class" ,perl-dbix-class)
1241 ("perl-hash-merge" ,perl-hash-merge)
1242 ("perl-list-moreutils" ,perl-list-moreutils)
1243 ("perl-lingua-en-inflect-phrase" ,perl-lingua-en-inflect-phrase)
1244 ("perl-lingua-en-inflect-number" ,perl-lingua-en-inflect-number)
1245 ("perl-lingua-en-tagger" ,perl-lingua-en-tagger)
1246 ("perl-namespace-clean" ,perl-namespace-clean)
1247 ("perl-mro-compat" ,perl-mro-compat)
1248 ("perl-scope-guard" ,perl-scope-guard)
1249 ("perl-string-camelcase" ,perl-string-camelcase)
1250 ("perl-string-toidentifier-en" ,perl-string-toidentifier-en)
1251 ("perl-sub-name" ,perl-sub-name)
1252 ("perl-try-tiny" ,perl-try-tiny)))
1253 (arguments `(#:tests? #f)) ;TODO: t/20invocations.t fails
1254 (home-page "http://search.cpan.org/dist/DBIx-Class-Schema-Loader")
1255 (synopsis "Create a DBIx::Class::Schema based on a database")
1256 (description "DBIx::Class::Schema::Loader automates the definition of a
1257DBIx::Class::Schema by scanning database table definitions and setting up the
1258columns, primary keys, unique constraints and relationships.")
2f3108ad 1259 (license license:perl-license)))
274da61d 1260
186eb132
EB
1261(define-public perl-dbd-pg
1262 (package
1263 (name "perl-dbd-pg")
b10ac215 1264 (version "3.7.0")
186eb132
EB
1265 (source
1266 (origin
1267 (method url-fetch)
1268 (uri (string-append "mirror://cpan/authors/id/T/TU/TURNSTEP/"
1269 "DBD-Pg-" version ".tar.gz"))
1270 (sha256
1271 (base32
b10ac215 1272 "0nb4wmkhq1q9f4g42sxy1m3d0xjqd3plqkxpmzni43ygr5ch8vp3"))))
186eb132
EB
1273 (build-system perl-build-system)
1274 (native-inputs
1275 `(("perl-dbi" ,perl-dbi)))
1276 (propagated-inputs
1277 `(("perl-dbi" ,perl-dbi)
1278 ("postgresql" ,postgresql)))
1279 (home-page "http://search.cpan.org/dist/DBD-Pg")
1280 (synopsis "DBI PostgreSQL interface")
f33e71fc
LC
1281 (description "This package provides a PostgreSQL driver for the Perl5
1282@dfn{Database Interface} (DBI).")
2f3108ad 1283 (license license:perl-license)))
186eb132 1284
4b7857a4
RW
1285(define-public perl-dbd-mysql
1286 (package
1287 (name "perl-dbd-mysql")
0ca1e77c 1288 (version "4.043")
4b7857a4
RW
1289 (source
1290 (origin
1291 (method url-fetch)
7c635ed6 1292 (uri (string-append "mirror://cpan/authors/id/M/MI/MICHIELB/"
4b7857a4
RW
1293 "DBD-mysql-" version ".tar.gz"))
1294 (sha256
1295 (base32
c7db7b86
KK
1296 "16bg7l28n65ngi1abjxvwk906a80i2vd5vzjn812dx8phdg8d7v2"))
1297 (patches (search-patches "perl-dbd-mysql-CVE-2017-10788.patch"))))
4b7857a4
RW
1298 (build-system perl-build-system)
1299 ;; Tests require running MySQL server
1300 (arguments `(#:tests? #f))
1301 (propagated-inputs
1302 `(("perl-dbi" ,perl-dbi)
1303 ("mysql" ,mysql)))
1304 (home-page "http://search.cpan.org/dist/DBD-mysql")
1305 (synopsis "DBI MySQL interface")
1306 (description "This package provides a MySQL driver for the Perl5
1307@dfn{Database Interface} (DBI).")
2f3108ad 1308 (license license:perl-license)))
4b7857a4 1309
274da61d
LC
1310(define-public perl-dbd-sqlite
1311 (package
1312 (name "perl-dbd-sqlite")
2273b751 1313 (version "1.54")
274da61d
LC
1314 (source (origin
1315 (method url-fetch)
1316 (uri (string-append
1317 "mirror://cpan/authors/id/I/IS/ISHIGAKI/DBD-SQLite-"
1318 version ".tar.gz"))
1319 (sha256
1320 (base32
2273b751 1321 "0sbj9lx9syzpknvjv8cz9jndg32qz775vy2prgq305npv3dsca9r"))))
274da61d
LC
1322 (build-system perl-build-system)
1323 (inputs `(("sqlite" ,sqlite)))
1324 (propagated-inputs `(("perl-dbi" ,perl-dbi)))
1325 (synopsis "SQlite interface for Perl")
1326 (description "DBD::SQLite is a Perl DBI driver for SQLite, that includes
1327the entire thing in the distribution. So in order to get a fast transaction
1328capable RDBMS working for your Perl project you simply have to install this
1329module, and nothing else.")
2f3108ad 1330 (license license:perl-license)
274da61d 1331 (home-page "http://search.cpan.org/~ishigaki/DBD-SQLite/lib/DBD/SQLite.pm")))
14e84b2d 1332
dd90952e
EB
1333(define-public perl-sql-abstract
1334 (package
1335 (name "perl-sql-abstract")
47b05919 1336 (version "1.84")
dd90952e
EB
1337 (source
1338 (origin
1339 (method url-fetch)
439980b7 1340 (uri (string-append "mirror://cpan/authors/id/I/IL/ILMARI/"
dd90952e
EB
1341 "SQL-Abstract-" version ".tar.gz"))
1342 (sha256
1343 (base32
47b05919 1344 "0xayvgv6nic61jm3nhg41rzwgm8h83wfyazvpaks0z7asjillpv5"))))
dd90952e
EB
1345 (build-system perl-build-system)
1346 (native-inputs
9dab5017
MB
1347 `(("perl-module-install" ,perl-module-install)
1348 ("perl-test-deep" ,perl-test-deep)
dd90952e
EB
1349 ("perl-test-exception" ,perl-test-exception)
1350 ("perl-test-warn" ,perl-test-warn)))
1351 (propagated-inputs
1352 `(("perl-hash-merge" ,perl-hash-merge)
1353 ("perl-moo" ,perl-moo)
1354 ("perl-mro-compat" ,perl-mro-compat)
1355 ("perl-text-balanced" ,perl-text-balanced)))
1356 (home-page "http://search.cpan.org/dist/SQL-Abstract")
1357 (synopsis "Generate SQL from Perl data structures")
1358 (description "This module was inspired by the excellent DBIx::Abstract.
1359While based on the concepts used by DBIx::Abstract, the concepts used have
1360been modified to make the SQL easier to generate from Perl data structures.
1361The underlying idea is for this module to do what you mean, based on the data
1362structures you provide it, so that you don't have to modify your code every
e881752c 1363time your data changes.")
2f3108ad 1364 (license license:perl-license)))
14e84b2d 1365
b4dcb026
EB
1366(define-public perl-sql-splitstatement
1367 (package
1368 (name "perl-sql-splitstatement")
1369 (version "1.00020")
1370 (source
1371 (origin
1372 (method url-fetch)
1373 (uri (string-append "mirror://cpan/authors/id/E/EM/EMAZEP/"
1374 "SQL-SplitStatement-" version ".tar.gz"))
1375 (sha256
1376 (base32
1377 "0bqg45k4c9qkb2ypynlwhpvzsl4ssfagmsalys18s5c79ps30z7p"))))
1378 (build-system perl-build-system)
1379 (native-inputs
1380 `(("perl-test-exception" ,perl-test-exception)))
1381 (propagated-inputs
1382 `(("perl-class-accessor" ,perl-class-accessor)
1383 ("perl-list-moreutils" ,perl-list-moreutils)
1384 ("perl-regexp-common" ,perl-regexp-common)
1385 ("perl-sql-tokenizer" ,perl-sql-tokenizer)))
1386 (home-page "http://search.cpan.org/dist/SQL-SplitStatement")
1387 (synopsis "Split SQL code into atomic statements")
1388 (description "This module tries to split any SQL code, even including
1389non-standard extensions, into the atomic statements it is composed of.")
2f3108ad 1390 (license license:perl-license)))
b4dcb026 1391
718c89c1
EB
1392(define-public perl-sql-tokenizer
1393 (package
1394 (name "perl-sql-tokenizer")
1395 (version "0.24")
1396 (source
1397 (origin
1398 (method url-fetch)
1399 (uri (string-append "mirror://cpan/authors/id/I/IZ/IZUT/"
1400 "SQL-Tokenizer-" version ".tar.gz"))
1401 (sha256
1402 (base32
1403 "1qa2dfbzdlr5qqdam9yn78z5w3al5r8577x06qan8wv58ay6ka7s"))))
1404 (build-system perl-build-system)
1405 (home-page "http://search.cpan.org/dist/SQL-Tokenizer")
1406 (synopsis "SQL tokenizer")
1407 (description "SQL::Tokenizer is a tokenizer for SQL queries. It does not
1408claim to be a parser or query verifier. It just creates sane tokens from a
1409valid SQL query.")
2f3108ad 1410 (license license:perl-license)))
718c89c1 1411
14e84b2d
JD
1412(define-public unixodbc
1413 (package
1414 (name "unixodbc")
3fef0a2f 1415 (version "2.3.4")
14e84b2d
JD
1416 (source (origin
1417 (method url-fetch)
e881752c 1418 (uri
14e84b2d 1419 (string-append
3fef0a2f
EF
1420 "ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-"
1421 version ".tar.gz"))
14e84b2d 1422 (sha256
3fef0a2f 1423 (base32 "0f8y88rcc2akjvjv5y66yx7k0ms9h1s0vbcfy25j93didflhj59f"))))
14e84b2d
JD
1424 (build-system gnu-build-system)
1425 (synopsis "Data source abstraction library")
1426 (description "Unixodbc is a library providing an API with which to access
1427data sources. Data sources include SQL Servers and any software with an ODBC
1428Driver.")
ba8b9f8d 1429 (license license:lgpl2.1+)
14e84b2d
JD
1430 ;; COPYING contains copy of lgpl2.1 - but copyright notices just say "LGPL"
1431 (home-page "http://www.unixodbc.org")))
b4a9c924
EB
1432
1433(define-public unqlite
1434 (package
1435 (name "unqlite")
1436 (version "1.1.6")
1437 (source (origin
1438 (method url-fetch)
1439 ;; Contains bug fixes against the official release, and has an
1440 ;; autotooled build system.
1441 (uri (string-append "https://github.com/aidin36/tocc/releases/"
1442 "download/v1.0.0/"
1443 "unqlite-unofficial-" version ".tar.gz"))
1444 (sha256
1445 (base32
1446 "1sbpvhg15gadq0mpcy16q7k3rkg4b4dicpnn5xifpkpn02sqik3s"))))
1447 (build-system gnu-build-system)
1448 (arguments `(#:tests? #f)) ;No check target
1449 (home-page "http://www.unqlite.org")
1450 (synopsis "In-memory key/value and document store")
1451 (description
1452 "UnQLite is an in-process software library which implements a
1453self-contained, serverless, zero-configuration, transactional NoSQL
1454database engine. UnQLite is a document store database similar to
1455MongoDB, Redis, CouchDB, etc. as well as a standard Key/Value store
69b4ffcf 1456similar to BerkeleyDB, LevelDB, etc.")
ba8b9f8d 1457 (license license:bsd-2)))
463f6766
DT
1458
1459(define-public redis
1460 (package
1461 (name "redis")
aa70cf8c 1462 (version "4.0.2")
463f6766
DT
1463 (source (origin
1464 (method url-fetch)
1465 (uri (string-append "http://download.redis.io/releases/redis-"
1466 version".tar.gz"))
1467 (sha256
1468 (base32
aa70cf8c 1469 "04s8cgvwjj1979s3hg8zkwc9pyn3jkjpz5zidp87kfcipifr385i"))))
463f6766
DT
1470 (build-system gnu-build-system)
1471 (arguments
1472 '(#:tests? #f ; tests related to master/slave and replication fail
1473 #:phases (modify-phases %standard-phases
1474 (delete 'configure))
1475 #:make-flags `("CC=gcc"
1476 "MALLOC=libc"
b25f060f 1477 "LDFLAGS=-ldl"
463f6766
DT
1478 ,(string-append "PREFIX="
1479 (assoc-ref %outputs "out")))))
1480 (synopsis "Key-value cache and store")
1481 (description "Redis is an advanced key-value cache and store. Redis
1482supports many data structures including strings, hashes, lists, sets, sorted
1483sets, bitmaps and hyperloglogs.")
1484 (home-page "http://redis.io/")
ba8b9f8d 1485 (license license:bsd-3)))
a65e2a02 1486
1487(define-public kyotocabinet
1488 (package
1489 (name "kyotocabinet")
1490 (version "1.2.76")
1491 (source (origin
1492 (method url-fetch)
1493 (uri (string-append "http://fallabs.com/kyotocabinet/pkg/"
1494 name "-" version ".tar.gz"))
1495 (sha256
1496 (base32
1497 "0g6js20x7vnpq4p8ghbw3mh9wpqksya9vwhzdx6dnlf354zjsal1"))))
1498 (build-system gnu-build-system)
1499 (arguments
1500 `(#:configure-flags
1501 (list
9d59023e 1502 "--disable-opt" ;"-march=native". XXX this also turns off -O0.
a65e2a02 1503 (string-append "LDFLAGS=-Wl,-rpath="
1504 (assoc-ref %outputs "out") "/lib"))))
1505 (inputs `(("zlib" ,zlib)))
1506 (home-page "http://fallabs.com/kyotocabinet/")
1507 (synopsis
1508 "Kyoto Cabinet is a modern implementation of the DBM database")
1509 (description
1510 "Kyoto Cabinet is a standalone file-based database that supports Hash
1511and B+ Tree data storage models. It is a fast key-value lightweight
1512database and supports many programming languages. It is a NoSQL database.")
ba8b9f8d 1513 (license license:gpl3+)))
6242b314 1514
bdc11dc4 1515(define-public tokyocabinet
1516 (package
1517 (name "tokyocabinet")
1518 (version "1.4.48")
1519 (source
1520 (origin
1521 (method url-fetch)
1522 (uri (string-append "http://fallabs.com/tokyocabinet/"
1523 name "-" version ".tar.gz"))
1524 (sha256
1525 (base32
1526 "140zvr0n8kvsl0fbn2qn3f2kh3yynfwnizn4dgbj47m975yg80x0"))))
1527 (build-system gnu-build-system)
1528 (arguments
1529 `(#:configure-flags
1530 (list "--enable-pthread" "--enable-off64" "--enable-fastest"
1531 (string-append "LDFLAGS=-Wl,-rpath="
1532 (assoc-ref %outputs "out") "/lib"))))
1533 (inputs
1534 `(("zlib" ,zlib)))
1535 (home-page "http://fallabs.com/tokyocabinet/")
1536 (synopsis "Tokyo Cabinet is a modern implementation of the DBM database")
1537 (description
1538 "Tokyo Cabinet is a library of routines for managing a database.
1539The database is a simple data file containing records, each is a pair of a
1540key and a value. Every key and value is serial bytes with variable length.
1541Both binary data and character string can be used as a key and a value.
1542There is neither concept of data tables nor data types. Records are
1543organized in hash table, B+ tree, or fixed-length array.")
1544 (license license:lgpl2.1+)))
1545
6242b314
SB
1546(define-public wiredtiger
1547 (package
1548 (name "wiredtiger")
81e95821 1549 (version "2.9.1")
6242b314
SB
1550 (source (origin
1551 (method url-fetch)
1552 (uri (string-append
1553 "http://source.wiredtiger.com/releases/wiredtiger-"
1554 version ".tar.bz2"))
1555 (sha256
1556 (base32
81e95821 1557 "0krwnb2zfbhvjaskwl875qzd3y626s84zcciq2mxr5c5riw3yh6s"))))
6242b314
SB
1558 (build-system gnu-build-system)
1559 (arguments
a469c695 1560 '(#:configure-flags '("--enable-lz4" "--with-builtins=snappy,zlib")
6242b314
SB
1561 #:phases
1562 (modify-phases %standard-phases
1563 (add-before 'check 'disable-test/fops
1564 (lambda _
1565 ;; XXX: timed out after 3600 seconds of silence
1566 (substitute* "Makefile"
1567 (("test/fops") ""))
1568 #t)))))
1569 (inputs
1570 `(("lz4" ,lz4)
3faa422d
CB
1571 ("zlib" ,zlib)
1572 ("snappy" ,snappy)))
6242b314
SB
1573 (home-page "http://source.wiredtiger.com/")
1574 (synopsis "NoSQL data engine")
1575 (description
1576 "WiredTiger is an extensible platform for data management. It supports
1577row-oriented storage (where all columns of a row are stored together),
1578column-oriented storage (where columns are stored in groups, allowing for
1579more efficient access and storage of column subsets) and log-structured merge
1580trees (LSM), for sustained throughput under random insert workloads.")
ba8b9f8d 1581 (license license:gpl3) ; or GPL-2
6242b314 1582 ;; configure.ac: WiredTiger requires a 64-bit build.
092b7b3e 1583 (supported-systems '("x86_64-linux" "mips64el-linux" "aarch64-linux"))))
90c2ee88 1584
16973071
KB
1585(define-public guile-wiredtiger
1586 (package
1587 (name "guile-wiredtiger")
3926a099 1588 (version "0.6.3")
16973071
KB
1589 (source (origin
1590 (method git-fetch)
1591 (uri (git-reference
1592 (url "https://framagit.org/a-guile-mind/guile-wiredtiger.git")
3926a099 1593 (commit "070ed68139d99c279f058a6c293f00292d35dbd7")))
16973071
KB
1594 (file-name (string-append name "-" version "-checkout"))
1595 (sha256
1596 (base32
3926a099 1597 "14rna97wsylajzxfif95wnblq85csgcfc666gh5dl0ssgd7x8llh"))))
16973071
KB
1598 (build-system gnu-build-system)
1599 (arguments
3926a099 1600 '(#:parallel-tests? #f ;; tests can't be run in parallel, yet.
16973071
KB
1601 #:configure-flags
1602 (list (string-append "--with-libwiredtiger-prefix="
1603 (assoc-ref %build-inputs "wiredtiger")))
1604 #:make-flags '("GUILE_AUTO_COMPILE=0")
1605 #:phases
1606 (modify-phases %standard-phases
1607 (add-after 'unpack 'bootstrap
1608 (lambda _
3926a099 1609 (invoke "sh" "bootstrap"))))))
1610 ;; TODO: Remove microkanren.scm when we have a separate package
1611 ;; for it.
16973071
KB
1612 (native-inputs
1613 `(("autoconf" ,autoconf)
1614 ("automake" ,automake)
1615 ("pkg-config" ,pkg-config)))
1616 (inputs
1617 `(("wiredtiger" ,wiredtiger)
1618 ("guile" ,guile-2.2)))
1619 (propagated-inputs
1620 `(("guile-lib" ,guile-lib))) ;for (htmlprag)
3926a099 1621 (synopsis "WiredTiger bindings for GNU Guile")
16973071
KB
1622 (description
1623 "This package provides Guile bindings to the WiredTiger ``NoSQL''
3926a099 1624database. Various higher level database abstractions.")
16973071
KB
1625 (home-page "https://framagit.org/a-guile-mind/guile-wiredtiger")
1626 (license license:gpl3+)))
1627
90c2ee88
DM
1628(define-public perl-db-file
1629 (package
1630 (name "perl-db-file")
dd0cfb37 1631 (version "1.840")
90c2ee88
DM
1632 (source
1633 (origin
1634 (method url-fetch)
1635 (uri (string-append
1636 "mirror://cpan/authors/id/P/PM/PMQS/DB_File-"
1637 version
1638 ".tar.gz"))
1639 (sha256
1640 (base32
dd0cfb37 1641 "1i5jz85z4hpx15lw6ix27pyvrf0ziyh4z33lii4d3wnhz83lg1mp"))))
90c2ee88
DM
1642 (build-system perl-build-system)
1643 (inputs `(("bdb" ,bdb)))
1644 (native-inputs `(("perl-test-pod" ,perl-test-pod)))
1645 (arguments
1646 `(#:phases (modify-phases %standard-phases
1647 (add-before
1648 'configure 'modify-config.in
1649 (lambda* (#:key inputs #:allow-other-keys)
1650 (substitute* "config.in"
1651 (("/usr/local/BerkeleyDB") (assoc-ref inputs "bdb")))
1652 #t)))))
1653 (home-page "http://search.cpan.org/dist/DB_File")
1654 (synopsis
1655 "Perl5 access to Berkeley DB version 1.x")
1656 (description
1657 "The DB::File module provides Perl bindings to the Berkeley DB version 1.x.")
2f3108ad 1658 (license license:perl-license)))
0e1b262e
DC
1659
1660(define-public lmdb
1661 (package
1662 (name "lmdb")
603fd6b9 1663 (version "0.9.21")
0e1b262e
DC
1664 (source (origin
1665 (method url-fetch)
1666 (uri (string-append "https://github.com/LMDB/lmdb/archive/"
1667 "LMDB_" version ".tar.gz"))
1668 (sha256
1669 (base32
603fd6b9 1670 "0ndmj07hkm2ic60z1f4rdscxs7pq45hk9fibjyv5nhfclhsvd1qi"))))
0e1b262e
DC
1671 (build-system gnu-build-system)
1672 (arguments
1673 `(#:test-target "test"
1674 #:phases
1675 (modify-phases %standard-phases
1676 (replace 'configure
1677 (lambda* (#:key outputs #:allow-other-keys)
1678 (chdir (string-append
1679 (getenv "PWD") "/lmdb-LMDB_" ,version "/libraries/liblmdb"))
1680 (substitute* "Makefile"
1681 (("/usr/local") (assoc-ref outputs "out")))
1682 #t)))))
1683 (home-page "https://symas.com/products/lightning-memory-mapped-database")
fda852ff
TGR
1684 (synopsis "Lightning Memory-Mapped Database library")
1685 (description
1686 "The @dfn{Lightning Memory-Mapped Database} (LMDB) is a high-performance
1687transactional database. Unlike more complex relational databases, LMDB handles
1688only key-value pairs (stored as arbitrary byte arrays) and relies on the
1689underlying operating system for caching and locking, keeping the code small and
1690simple.
1691The use of ‘zero-copy’ memory-mapped files combines the persistence of classic
1692disk-based databases with high read performance that scales linearly over
1693multiple cores. The size of each database is limited only by the size of the
1694virtual address space — not physical RAM.")
0e1b262e 1695 (license license:openldap2.8)))
fe71eee0
JN
1696
1697(define-public libpqxx
1698 (package
1699 (name "libpqxx")
1700 (version "4.0.1")
1701 (source (origin
1702 (method url-fetch)
1703 (uri (string-append
1704 "http://pqxx.org/download/software/libpqxx/"
1705 name "-" version ".tar.gz"))
1706 (sha256
1707 (base32
1708 "0f6wxspp6rx12fkasanb0z2g2gc8dhcfwnxagx8wwqbpg6ifsz09"))))
1709 (build-system gnu-build-system)
1710 (native-inputs
1711 `(("python" ,python-2)))
1712 (inputs `(("postgresql" ,postgresql)))
1713 (arguments
5ac097e2
MB
1714 `(#:tests? #f ; # FAIL: 1
1715 #:phases
1716 (modify-phases %standard-phases
1717 (add-before 'configure 'fix-sed-command
1718 (lambda _
1719 ;; Newer sed versions error out if double brackets are not used.
1720 (substitute* "configure"
1721 (("\\[:space:\\]") "[[:space:]]"))
1722 #t)))))
fe71eee0
JN
1723 (synopsis "C++ connector for PostgreSQL")
1724 (description
1725 "Libpqxx is a C++ library to enable user programs to communicate with the
1726PostgreSQL database back-end. The database back-end can be local or it may be
1727on another machine, accessed via TCP/IP.")
1728 (home-page "http://pqxx.org/")
1729 (license license:bsd-3)))
4d98bfaf
EF
1730
1731(define-public python-peewee
1732 (package
1733 (name "python-peewee")
afd84536 1734 (version "2.10.2")
4d98bfaf
EF
1735 (source
1736 (origin
1737 (method url-fetch)
1738 (uri (pypi-uri "peewee" version))
1739 (sha256
1740 (base32
afd84536 1741 "10f2mrd5hw6rjklrzaix2lsxlgc8vx3xak54arcy6yd791zhchi3"))))
4d98bfaf
EF
1742 (build-system python-build-system)
1743 (arguments
1744 `(#:tests? #f)) ; Fails to import test data
1745 (native-inputs
1746 `(("python-cython" ,python-cython)))
1747 (home-page "https://github.com/coleifer/peewee/")
1748 (synopsis "Small object-relational mapping utility")
1749 (description
1750 "Peewee is a simple and small ORM (object-relation mapping) tool. Peewee
1751handles converting between pythonic values and those used by databases, so you
1752can use Python types in your code without having to worry. It has built-in
1753support for sqlite, mysql and postgresql. If you already have a database, you
1754can autogenerate peewee models using @code{pwiz}, a model generator.")
1755 (license license:expat)))
1756
1757(define-public python2-peewee
1758 (package-with-python2 python-peewee))
62ea44fc
AP
1759
1760(define-public sqlcipher
1761 (package
1762 (name "sqlcipher")
1763 (version "3.3.1")
1764 (source
1765 (origin
1766 (method url-fetch)
1767 (uri (string-append "https://github.com/sqlcipher/" name
1768 "/archive/v" version ".tar.gz"))
1769 (sha256
1770 (base32 "1gv58dlbpzrmznly52yqbxgvii0ib88zr3aszla1bsypwjr6flff"))
1771 (file-name (string-append name "-" version ".tar.gz"))))
1772 (build-system gnu-build-system)
1773 (inputs
1774 `(("libcrypto" ,openssl)
1775 ("libtcl8.6" ,tcl))) ; required for running the tests
1776 (native-inputs
1777 `(("tcl" ,tcl)))
1778 (arguments
1779 '(#:configure-flags
1780 '("--enable-tempstore=yes"
1781 "CFLAGS=-DSQLITE_HAS_CODEC -DSQLITE_ENABLE_FTS3"
1782 "LDFLAGS=-lcrypto -ltcl8.6"
1783 "--disable-tcl")
1784 ;; tests cannot be run from the Makefile
1785 ;; see: <https://github.com/sqlcipher/sqlcipher/issues/172>
1786 #:test-target "testfixture"
1787 #:phases
1788 (modify-phases %standard-phases
1789 (add-before 'check 'build-test-runner
1790 (assoc-ref %standard-phases 'check))
1791 (replace 'check
1792 (lambda _
1793 (zero?
1794 (system* "./testfixture" "test/crypto.test")))))))
1795 (home-page "https://www.zetetic.net/sqlcipher/")
1796 (synopsis
1797 "Library providing transparent encryption of SQLite database files")
1798 (description "SQLCipher is an implementation of SQLite, extended to
1799provide transparent 256-bit AES encryption of database files. Pages are
1800encrypted before being written to disk and are decrypted when read back. It’s
1801well suited for protecting embedded application databases and for mobile
1802development.")
1803 ;; The source files
1804 ;; src/{crypto.c,crypto_impl.c,crypto.h,crypto_cc.c,crypto_libtomcrypt.c},
1805 ;; src/{crypto_openssl.c,sqlcipher.h}, tool/crypto-speedtest.tcl,
1806 ;; test/crypto.test are licensed under a 3-clause BSD license. All other
1807 ;; source files are in the public domain.
1808 (license (list license:public-domain license:bsd-3))))
98d403bb
DM
1809
1810(define-public python-pyodbc-c
1811 (package
1812 (name "python-pyodbc-c")
c6b6a74e 1813 (version "3.1.4")
98d403bb
DM
1814 (source
1815 (origin
1816 (method url-fetch)
1817 (uri (string-append "https://gitlab.com/daym/pyodbc-c/repository/"
1818 "archive.tar.gz?ref=v" version))
1819 (sha256
1820 (base32
c6b6a74e 1821 "05aq2297k779xidmxcwkrrxjvj1bh2q7d9a1rcjv6zr15y764ga9"))
98d403bb
DM
1822 (file-name (string-append name "-" version ".tar.gz"))))
1823 (build-system python-build-system)
1824 (inputs
1825 `(("unixodbc" ,unixodbc)))
1826 (arguments
1827 `(;; No unit tests exist.
1828 #:tests? #f))
1829 (home-page "https://github.com/mkleehammer/pyodbc")
1830 (synopsis "Python ODBC Library")
1831 (description "@code{python-pyodbc-c} provides a Python DB-API driver
1832for ODBC.")
1833 (license (license:x11-style "file://LICENSE.TXT"))))
1834
1835(define-public python2-pyodbc-c
1836 (package-with-python2 python-pyodbc-c))
d39a84e8 1837
41916bea
DM
1838(define-public python-pyodbc
1839 (package
1840 (name "python-pyodbc")
1841 (version "4.0.21")
1842 (source
1843 (origin
1844 (method url-fetch)
1845 (uri (pypi-uri "pyodbc" version))
1846 (sha256
1847 (base32
1848 "0a83zwz3h1agshnsc6r7al6q83222w8601gpzzzjvjz5m56ghmcn"))
1849 (file-name (string-append name "-" version ".tar.gz"))))
1850 (build-system python-build-system)
1851 (inputs
1852 `(("unixodbc" ,unixodbc)))
1853 (arguments
1854 `(;; No unit tests exist.
1855 #:tests? #f))
1856 (home-page "https://github.com/mkleehammer/pyodbc")
1857 (synopsis "Python ODBC Library")
1858 (description "@code{python-pyodbc} provides a Python DB-API driver
1859for ODBC.")
1860 (license (license:x11-style "file:///LICENSE.TXT"))))
1861
1862(define-public python2-pyodbc
1863 (package-with-python2 python-pyodbc))
1864
d39a84e8
AI
1865(define-public mdbtools
1866 (package
1867 (name "mdbtools")
1868 (version "0.7.1")
1869 (source
1870 (origin
1871 (method url-fetch)
1872 (uri (string-append "https://github.com/brianb/mdbtools/archive/"
1873 version ".tar.gz"))
1874 (sha256
1875 (base32
1876 "05hbmxcq173kzb899gdi3bz2qcc1vi3n1qbbkwpsvrq7ggf11wyw"))
1877 (file-name (string-append name "-" version ".tar.gz"))))
1878 (build-system gnu-build-system)
1879 (inputs
1880 `(("glib" ,glib)))
1881 (native-inputs
1882 `(("autoconf" ,autoconf)
1883 ("automake" ,automake)
1884 ("libtool" ,libtool)
1885 ("pkg-config" ,pkg-config)
1886 ("txt2man" ,txt2man)
1887 ("which" ,which)))
1888 (arguments
1889 `(#:phases
1890 (modify-phases %standard-phases
d10092b8 1891 (add-after 'unpack 'autoreconf
d39a84e8
AI
1892 (lambda _
1893 (zero? (system* "autoreconf" "-vfi")))))))
1894 (home-page "http://mdbtools.sourceforge.net/")
1895 (synopsis "Read Microsoft Access databases")
1896 (description "MDB Tools is a set of tools and applications to read the
1897proprietary MDB file format used in Microsoft's Access database package. This
1898includes programs to export schema and data from Microsoft's Access database
1899file format to other databases such as MySQL, Oracle, Sybase, PostgreSQL,
1900etc., and an SQL engine for performing simple SQL queries.")
1901 (license (list license:lgpl2.0
1902 license:gpl2+))))
07041d95
TGR
1903
1904(define-public python-lmdb
1905 (package
1906 (name "python-lmdb")
57af0d13 1907 (version "0.93")
07041d95
TGR
1908 (source (origin
1909 (method url-fetch)
1910 (uri (pypi-uri "lmdb" version))
1911 (sha256
1912 (base32
57af0d13 1913 "0xdpb298fyl68acadbwv5801wcwfpnhc7sm4bnrq1x4bd5dhhsql"))
07041d95
TGR
1914 (modules '((guix build utils)))
1915 (snippet
1916 ;; Delete bundled lmdb source files.
1917 '(for-each delete-file (list "lib/lmdb.h"
1918 "lib/mdb.c"
1919 "lib/midl.c"
1920 "lib/midl.h")))))
1921 (build-system python-build-system)
1922 (inputs
1923 `(("lmdb" ,lmdb)))
1924 (arguments
1925 `(#:phases
1926 (modify-phases %standard-phases
1927 (add-before 'build 'use-system-lmdb
1928 (lambda* (#:key inputs #:allow-other-keys)
1929 (let ((lmdb (assoc-ref inputs "lmdb")))
1930 (setenv "LMDB_FORCE_SYSTEM" "set")
1931 (setenv "LMDB_INCLUDEDIR" (string-append lmdb "/include"))
1932 (setenv "LMDB_LIBDIR" (string-append lmdb "/lib"))
1933 #t))))
1934 ;; Tests fail with: ‘lmdb.tool: Please specify environment (--env)’.
1935 #:tests? #f))
1936 (home-page "https://github.com/dw/py-lmdb")
1937 (synopsis "Python binding for the ‘Lightning’ database (LMDB)")
1938 (description
1939 "python-lmdb or py-lmdb is a Python binding for the @dfn{Lightning
1940Memory-Mapped Database} (LMDB), a high-performance key-value store.")
1941 (license
1942 (list license:openldap2.8
1943 ;; ‘lib/win32/inttypes.h’ and ‘lib/win32-stdint/stdint.h’ are BSD-3,
1944 ;; but not actually needed on platforms currently supported by Guix.
1945 license:bsd-3))))
1946
1947(define-public python2-lmdb
1948 (package-with-python2 python-lmdb))
da1f7a9e
BW
1949
1950(define-public python-orator
1951 (package
1952 (name "python-orator")
1953 (version "0.9.7")
1954 (source (origin
1955 (method url-fetch)
1956 (uri (pypi-uri "orator" version))
1957 (sha256
1958 (base32
1959 "14r58z64fdp76ixnvmi4lni762b405ynmsx6chr1qihs3yl9zn6c"))))
1960 (build-system python-build-system)
1961 (arguments
1962 `(#:phases
1963 (modify-phases %standard-phases
1964 (add-after 'unpack 'loosen-dependencies
1965 ;; Tests are not actually run since they are not included with the
1966 ;; distributed package, but dependencies are checked.
1967 (lambda _
1968 (substitute* "setup.py"
1969 ((",<.*'") "'")
1970 (("flexmock==0.9.7") "flexmock")
1971 ;; The pytest-mock package is out of date, so we remove minimum
1972 ;; version requirement.
1973 (("pytest-mock.*'") "pytest-mock'"))
1974 #t)))))
1975 (native-inputs
1976 `(("python-pytest-mock" ,python-pytest-mock)
1977 ("python-pytest" ,python-pytest-3.0)
1978 ("python-flexmock" ,python-flexmock)))
1979 (propagated-inputs
1980 `(("python-backpack" ,python-backpack)
1981 ("python-blinker" ,python-blinker)
1982 ("python-cleo" ,python-cleo)
1983 ("python-faker" ,python-faker)
1984 ("python-inflection" ,python-inflection)
1985 ("python-lazy-object-proxy" ,python-lazy-object-proxy)
1986 ("python-pendulum" ,python-pendulum)
1987 ("python-pyaml" ,python-pyaml)
1988 ("python-pygments" ,python-pygments)
1989 ("python-simplejson" ,python-simplejson)
1990 ("python-six" ,python-six)
1991 ("python-wrapt" ,python-wrapt)))
1992 (home-page "https://orator-orm.com/")
1993 (synopsis "ActiveRecord ORM for Python")
1994 (description
1995 "Orator provides a simple ActiveRecord-like Object Relational Mapping
1996implementation for Python.")
1997 (license license:expat)
1998 (properties `((python2-variant . ,(delay python2-orator))))))
1999
2000(define-public python2-orator
2001 (package-with-python2 (strip-python2-variant python-orator)))
61ce0998
RJ
2002
2003(define-public virtuoso-ose
2004 (package
2005 (name "virtuoso-ose")
2006 (version "7.2.4.2")
2007 (source
2008 (origin
2009 (method url-fetch)
2010 (uri (string-append
2011 "https://github.com/openlink/virtuoso-opensource/releases/"
2012 "download/v" version "/virtuoso-opensource-" version ".tar.gz"))
2013 (sha256
2014 (base32 "12dqam1gc1v93l0bj0vlpvjqppki6y1hqrlznywxnw0rrz9pb002"))))
2015 (build-system gnu-build-system)
2016 (arguments
2017 `(#:tests? #f)) ; Tests require a network connection.
2018 (inputs
2019 `(("openssl" ,openssl)
2020 ("net-tools" ,net-tools)))
2021 (home-page "http://vos.openlinksw.com/owiki/wiki/VOS/")
2022 (synopsis "Multi-model database system")
2023 (description "Virtuoso is a scalable cross-platform server that combines
2024relational, graph, and document data management with web application server
2025and web services platform functionality.")
48b68c61
EF
2026 ;; configure: error: ... can only be build on 64bit platforms
2027 (supported-systems '("x86_64-linux" "mips64el-linux" "aarch64-linux"))
61ce0998 2028 (license license:gpl2)))
74248d22
RW
2029
2030(define-public r-rmysql
2031 (package
2032 (name "r-rmysql")
2033 (version "0.10.13")
2034 (source
2035 (origin
2036 (method url-fetch)
2037 (uri (cran-uri "RMySQL" version))
2038 (sha256
2039 (base32
2040 "1j0vr2l4s02cg2hzgr3pla96pjj4h85sxw28lidy58rg5awnsf82"))))
2041 (properties `((upstream-name . "RMySQL")))
2042 (build-system r-build-system)
2043 (native-inputs
2044 `(("pkg-config" ,pkg-config)))
2045 (inputs
2046 `(("mariadb" ,mariadb)
2047 ("zlib" ,zlib)))
2048 (propagated-inputs
2049 `(("r-dbi" ,r-dbi)))
2050 (home-page "https://github.com/r-dbi/RMySQL")
2051 (synopsis "Database interface and MySQL driver for R")
2052 (description
2053 "This package provides a DBI interface to MySQL / MariaDB. The RMySQL
2054package contains an old implementation based on legacy code from S-PLUS which
2055is being phased out. A modern MySQL client based on Rcpp is available from
2056the RMariaDB package.")
2057 (license license:gpl2)))
a8714bf6
RW
2058
2059(define-public python-ccm
2060 (package
2061 (name "python-ccm")
2062 (version "2.1.6")
2063 (source
2064 (origin
2065 (method url-fetch)
2066 (uri (pypi-uri "ccm" version))
2067 (sha256
2068 (base32
2069 "177dfxsmk3k4cih6fh6v8d91bh4nqx7ns6pc07w7m7i3cvdx3c8n"))))
2070 (build-system python-build-system)
2071 (propagated-inputs
2072 `(("python-pyyaml" ,python-pyyaml)
2073 ;; Not listed in setup.py, but used in ccmlib/node.py for full
2074 ;; functionality
2075 ("python-psutil" ,python-psutil)
2076 ("python-six" ,python-six)))
2077 (home-page "https://github.com/pcmanus/ccm")
2078 (synopsis "Cassandra Cluster Manager for Apache Cassandra clusters on
2079localhost")
2080 (description "Cassandra Cluster Manager is a development tool for testing
2081local Cassandra clusters. It creates, launches and removes Cassandra clusters
2082on localhost.")
2083 (license license:asl2.0)))
2084
2085(define-public python2-ccm
2086 (package-with-python2 python-ccm))
2087
2088(define-public python2-pysqlite
2089 (package
2090 (name "python2-pysqlite")
2091 (version "2.8.3")
2092 (source
2093 (origin
2094 (method url-fetch)
2095 (uri (pypi-uri "pysqlite" version))
2096 (sha256
2097 (base32
2098 "1424gwq9sil2ffmnizk60q36vydkv8rxs6m7xs987kz8cdc37lqp"))))
2099 (build-system python-build-system)
2100 (inputs
2101 `(("sqlite" ,sqlite)))
2102 (arguments
2103 `(#:python ,python-2 ; incompatible with Python 3
2104 #:tests? #f)) ; no test target
2105 (home-page "https://github.com/ghaering/pysqlite")
2106 (synopsis "SQLite bindings for Python")
2107 (description
2108 "Pysqlite provides SQLite bindings for Python that comply to the
2109Database API 2.0T.")
2110 (license license:zlib)))
2111
2112(define-public python-sqlalchemy
2113 (package
2114 (name "python-sqlalchemy")
2115 (version "1.0.12")
2116 (source
2117 (origin
2118 (method url-fetch)
2119 (uri (string-append "https://pypi.python.org/packages/source/S/"
2120 "SQLAlchemy/SQLAlchemy-" version ".tar.gz"))
2121 (sha256
2122 (base32
2123 "1l8qclhd0s90w3pvwhi5mjxdwr5j7gw7cjka2fx6f2vqmq7f4yb6"))))
2124 (build-system python-build-system)
2125 (native-inputs
2126 `(("python-cython" ,python-cython) ;for c extensions
2127 ("python-pytest" ,python-pytest)
2128 ("python-mock" ,python-mock))) ;for tests
2129 (arguments
2130 `(#:phases
2131 (modify-phases %standard-phases
2132 (replace 'check
2133 (lambda _ (zero? (system* "py.test")))))))
2134 (home-page "http://www.sqlalchemy.org")
2135 (synopsis "Database abstraction library")
2136 (description
2137 "SQLAlchemy is the Python SQL toolkit and Object Relational Mapper that
2138gives application developers the full power and flexibility of SQL. It
2139provides a full suite of well known enterprise-level persistence patterns,
2140designed for efficient and high-performing database access, adapted into a
2141simple and Pythonic domain language.")
2142 (license license:x11)))
2143
2144(define-public python2-sqlalchemy
2145 (package-with-python2 python-sqlalchemy))
2146
2147(define-public python-sqlalchemy-utils
2148 (package
2149 (name "python-sqlalchemy-utils")
53ae35e4 2150 (version "0.32.21")
a8714bf6
RW
2151 (source
2152 (origin
2153 (method url-fetch)
2154 (uri (pypi-uri "SQLAlchemy-Utils" version))
2155 (sha256
2156 (base32
53ae35e4 2157 "1myn71dn8j74xglyh46f12sh8ywb7j0j732rzwq70kvwwnq32m73"))))
a8714bf6
RW
2158 (build-system python-build-system)
2159 (arguments
2160 '(#:tests? #f)) ; FIXME: Many tests require a running database server.
2161 ;; #:phases
2162 ;; (modify-phases %standard-phases
2163 ;; (replace 'check
2164 ;; (lambda _
2165 ;; (zero? (system* "py.test" "sqlalchemy_utils" "tests")))))
2166 (propagated-inputs
2167 `(("python-six" ,python-six)
2168 ("python-sqlalchemy" ,python-sqlalchemy)))
2169 (native-inputs
2170 `(("python-dateutil" ,python-dateutil)
2171 ("python-flexmock" ,python-flexmock)
2172 ("python-psycopg2" ,python-psycopg2)
2173 ("python-pytest" ,python-pytest)
2174 ("python-pytz" ,python-pytz)))
2175 (home-page "https://github.com/kvesteri/sqlalchemy-utils")
2176 (synopsis "Various utility functions for SQLAlchemy")
2177 (description
2178 "SQLAlchemy-utils provides various utility functions and custom data types
2179for SQLAlchemy. SQLAlchemy is an SQL database abstraction library for Python.
2180
2181You might also want to install the following optional dependencies:
2182@enumerate
2183@item @code{python-passlib}
2184@item @code{python-babel}
2185@item @code{python-cryptography}
2186@item @code{python-pytz}
2187@item @code{python-psycopg2}
2188@item @code{python-furl}
2189@item @code{python-flask-babel}
2190@end enumerate
2191")
2192 (license license:bsd-3)))
2193
2194(define-public python2-sqlalchemy-utils
2195 (package-with-python2 python-sqlalchemy-utils))
2196
2197(define-public python-alembic
2198 (package
2199 (name "python-alembic")
030274cc 2200 (version "0.9.6")
a8714bf6
RW
2201 (source
2202 (origin
2203 (method url-fetch)
2204 (uri (pypi-uri "alembic" version))
2205 (sha256
2206 (base32
030274cc 2207 "0cm73vabrqj92v7a0wwvldj8j7bc7dwv358kvkk7p87gx7mm2a04"))))
a8714bf6
RW
2208 (build-system python-build-system)
2209 (native-inputs
2210 `(("python-mock" ,python-mock)
2211 ("python-pytest-cov" ,python-pytest-cov)))
2212 (propagated-inputs
2213 `(("python-dateutil" ,python-dateutil)
2214 ("python-sqlalchemy" ,python-sqlalchemy)
2215 ("python-mako" ,python-mako)
2216 ("python-editor" ,python-editor)))
a7f27da7 2217 (home-page "https://bitbucket.org/zzzeek/alembic")
a8714bf6
RW
2218 (synopsis
2219 "Database migration tool for SQLAlchemy")
2220 (description
2221 "Alembic is a lightweight database migration tool for usage with the
2222SQLAlchemy Database Toolkit for Python.")
2223 (license license:expat)))
2224
2225(define-public python2-alembic
2226 (package-with-python2 python-alembic))
2227
2228(define-public python-pickleshare
2229 (package
2230 (name "python-pickleshare")
2231 (version "0.5")
2232 (source
2233 (origin
2234 (method url-fetch)
2235 (uri (string-append "https://pypi.python.org/packages/source/p/"
2236 "pickleshare/pickleshare-" version ".tar.gz"))
2237 (sha256
2238 (base32 "11ljr90j3p6qswdrbl7p4cjb2i93f6vn0vx9anzpshsx0d2mggn0"))))
2239 (build-system python-build-system)
2240 (propagated-inputs
2241 `(("python-pathpy" ,python-pathpy)))
2242 (home-page "https://github.com/vivainio/pickleshare")
2243 (synopsis "Tiny key value database with concurrency support")
2244 (description
2245 "PickleShare is a small ‘shelve’-like datastore with concurrency support.
2246Like shelve, a PickleShareDB object acts like a normal dictionary. Unlike
2247shelve, many processes can access the database simultaneously. Changing a
2248value in database is immediately visible to other processes accessing the same
2249database. Concurrency is possible because the values are stored in separate
2250files. Hence the “database” is a directory where all files are governed by
2251PickleShare.")
2252 (license license:expat)))
2253
2254(define-public python2-pickleshare
2255 (package-with-python2 python-pickleshare))
2256
2257(define-public python-apsw
2258 (package
2259 (name "python-apsw")
2260 (version "3.9.2-r1")
2261 (source
2262 (origin
2263 (method url-fetch)
2264 (uri (pypi-uri "apsw" version))
2265 (sha256
2266 (base32
2267 "0w4jb0wpx785qw42r3h4fh7gl5w2968q48i7gygybsfxck8nzffs"))))
2268 (build-system python-build-system)
2269 (inputs
2270 `(("sqlite" ,sqlite)))
2271 (arguments
2272 `(#:phases
2273 (modify-phases %standard-phases
2274 (replace 'build
2275 (lambda _
2276 (zero?
2277 (system* "python" "setup.py" "build" "--enable-all-extensions"))))
2278 (add-after 'build 'build-test-helper
2279 (lambda _
2280 (zero?
2281 (system
2282 (string-append "gcc -fPIC -shared -o ./testextension.sqlext "
2283 "-I. -Isqlite3 src/testextension.c") ))))
2284 (delete 'check)
2285 (add-after 'install 'check
2286 (lambda* (#:key inputs outputs #:allow-other-keys)
2287 (add-installed-pythonpath inputs outputs)
2288 (zero? (system* "python" "setup.py" "test")))))))
2289 (home-page "https://github.com/rogerbinns/apsw/")
2290 (synopsis "Another Python SQLite Wrapper")
2291 (description "APSW is a Python wrapper for the SQLite
2292embedded relational database engine. In contrast to other wrappers such as
2293pysqlite it focuses on being a minimal layer over SQLite attempting just to
2294translate the complete SQLite API into Python.")
2295 (license license:zlib)))
2296
2297(define-public python2-apsw
2298 (package-with-python2 python-apsw))
2299
2300(define-public python2-neo4j-driver
2301 (package
2302 (name "python2-neo4j-driver")
2303 ;; NOTE: When upgrading to 1.5.0, please add a python3 variant.
2304 (version "1.4.0")
2305 (source (origin
2306 (method url-fetch)
2307 (uri (pypi-uri "neo4j-driver" version))
2308 (sha256
2309 (base32
2310 "011r1vh182p8mm83d8dz9rfnc3l7rf7fd00cyrbyfzi71jmc4g98"))))
2311 (build-system python-build-system)
2312 (arguments
2313 `(#:python ,python-2))
2314 (home-page "https://neo4j.com/developer/python/")
2315 (synopsis "Neo4j driver code written in Python")
2316 (description "This package provides the Neo4j Python driver that connects
2317to the database using Neo4j's binary protocol. It aims to be minimal, while
2318being idiomatic to Python.")
2319 (license license:asl2.0)))
2320
2321(define-public python2-py2neo
2322 (package
2323 (name "python2-py2neo")
2324 (version "3.1.2")
2325 (source (origin
2326 (method url-fetch)
2327 (uri (pypi-uri "py2neo" version))
2328 (sha256
2329 (base32
2330 "1f1q95vqcvlc3nsc33p841swnjdcjazddlq2dzi3qfnjqjrajxw1"))))
2331 (build-system python-build-system)
2332 (arguments
2333 `(#:python ,python-2))
2334 (home-page "http://py2neo.org")
2335 (synopsis "Library and toolkit for working with Neo4j in Python")
2336 (description "This package provides a client library and toolkit for
2337working with Neo4j from within Python applications and from the command
2338line. The core library has no external dependencies and has been carefully
2339designed to be easy and intuitive to use.")
2340 (license license:asl2.0)))
2341
2342(define-public python-psycopg2
2343 (package
2344 (name "python-psycopg2")
2345 (version "2.7.3.1")
2346 (source
2347 (origin
2348 (method url-fetch)
2349 (uri (pypi-uri "psycopg2" version))
2350 (sha256
2351 (base32
2352 "0rda1j02ds6s28752fhmpwg761sh6jsxi1gpczqkrd28cki1cywv"))))
2353 (build-system python-build-system)
2354 (arguments
2355 ;; Tests would require a postgresql database "psycopg2_test"
2356 ;; and a running postgresql database management service.
2357 `(#:tests? #f)) ; TODO re-enable after providing a test-db.
2358 (inputs
2359 `(("postgresql" ,postgresql))) ; libpq
2360 (home-page "http://initd.org/psycopg/")
2361 (synopsis "Python PostgreSQL adapter")
2362 (description
2363 "psycopg2 is a thread-safe PostgreSQL adapter that implements DB-API 2.0. ")
2364 (license license:lgpl3+)))
2365
2366(define-public python2-psycopg2
2367 (package-with-python2 python-psycopg2))
2368
2369(define-public python-sadisplay
2370 (package
2371 (name "python-sadisplay")
bcdc5cae 2372 (version "0.4.8")
a8714bf6
RW
2373 (source
2374 (origin
2375 (method url-fetch)
2376 (uri (pypi-uri "sadisplay" version))
2377 (sha256
2378 (base32
bcdc5cae 2379 "01d9lxhmgpb68gy8rd6zj6fcwp84n2qq210n1qsk3qbsir79bzh4"))))
a8714bf6
RW
2380 (build-system python-build-system)
2381 (propagated-inputs
2382 `(("python-sqlalchemy" ,python-sqlalchemy)))
2383 (native-inputs
bcdc5cae 2384 ;; For tests.
a8714bf6
RW
2385 `(("python-nose" ,python-nose)))
2386 (home-page "https://bitbucket.org/estin/sadisplay")
2387 (synopsis "SQLAlchemy schema displayer")
2388 (description "This package provides a program to build Entity
2389Relationship diagrams from a SQLAlchemy model (or directly from the
2390database).")
2391 (license license:bsd-3)))
2392
2393(define-public python2-sadisplay
2394 (package-with-python2 python-sadisplay))
2395
2396(define-public python-mysqlclient
2397 (package
2398 (name "python-mysqlclient")
2399 (version "1.3.10")
2400 (source
2401 (origin
2402 (method url-fetch)
2403 (uri (pypi-uri "mysqlclient" version))
2404 (sha256
2405 (base32
2406 "0qkj570x4rbsblji6frvsvp2v1ap32dqzj1lq62zp9515ffsyaj5"))))
2407 (build-system python-build-system)
2408 (native-inputs
2409 `(("mariadb" ,mariadb)
2410 ("nose" ,python-nose)
2411 ("mock" ,python-mock)
2412 ("py.test" ,python-pytest)))
2413 (inputs
2414 `(("mysql" ,mysql)
2415 ("libz" ,zlib)
2416 ("openssl" ,openssl)))
2417 (home-page "https://github.com/PyMySQL/mysqlclient-python")
2418 (synopsis "MySQLdb is an interface to the popular MySQL database server for Python")
2419 (description "MySQLdb is an interface to the popular MySQL database server
2420for Python. The design goals are:
2421@enumerate
2422@item Compliance with Python database API version 2.0 [PEP-0249],
2423@item Thread-safety,
2424@item Thread-friendliness (threads will not block each other).
2425@end enumerate")
2426 (license license:gpl2)))
2427
2428(define-public python2-mysqlclient
2429 (package-with-python2 python-mysqlclient))
2430
2431(define-public python-hiredis
2432 (package
2433 (name "python-hiredis")
2434 (version "0.2.0")
2435 (source
2436 (origin
2437 (method url-fetch)
2438 (uri (pypi-uri "hiredis" version))
2439 (sha256
2440 (base32
2441 "1dfm2k9l9zar9nw9fwmm74zrgraxdxs04vx9li56fjcf289qx5fa"))))
2442 (build-system python-build-system)
2443 (arguments
2444 ;; no tests
2445 `(#:tests? #f))
2446 (home-page "https://github.com/redis/hiredis-py")
2447 (synopsis "Python extension that wraps protocol parsing code in hiredis")
2448 (description "Python-hiredis is a python extension that wraps protocol
2449parsing code in hiredis. It primarily speeds up parsing of multi bulk replies.")
2450 (license license:bsd-3)))
2451
2452(define-public python2-hiredis
2453 (package-with-python2 python-hiredis))
2454
2455(define-public python-fakeredis
2456 (package
2457 (name "python-fakeredis")
2458 (version "0.8.2")
2459 (source
2460 (origin
2461 (method url-fetch)
2462 (uri (pypi-uri "fakeredis" version))
2463 (sha256
2464 (base32
2465 "0zncahj3byyasyfx9i7k991ph0n0lq8v3a21pqri5qxn9564bk9r"))))
2466 (build-system python-build-system)
2467 (arguments
2468 ;; no tests
2469 `(#:tests? #f))
2470 (home-page "https://github.com/jamesls/fakeredis")
2471 (synopsis "Fake implementation of redis API for testing purposes")
2472 (description "Fakeredis is a pure python implementation of the redis-py
2473python client that simulates talking to a redis server. This was created for a
2474single purpose: to write unittests. Setting up redis is not hard, but many time
2475 you want to write unittests that do not talk to an external server (such as
2476redis). This module now allows tests to simply use this module as a reasonable
2477substitute for redis.")
2478 (license license:bsd-3)))
2479
2480(define-public python2-fakeredis
2481 (package-with-python2 python-fakeredis))
2482
2483(define-public python-redis
2484 (package
2485 (name "python-redis")
08455a34 2486 (version "2.10.6")
a8714bf6
RW
2487 (source
2488 (origin
2489 (method url-fetch)
2490 (uri (pypi-uri "redis" version))
2491 (sha256
08455a34 2492 (base32 "03vcgklykny0g0wpvqmy8p6azi2s078317wgb2xjv5m2rs9sjb52"))))
a8714bf6
RW
2493 (build-system python-build-system)
2494 ;; Tests require a running Redis server
2495 (arguments '(#:tests? #f))
2496 ;; As long as we are not running test, we do not need this input :-)
2497 ;;(native-inputs
2498 ;; `(("python-pytest" ,python-pytest)))
2499 (home-page "https://github.com/andymccurdy/redis-py")
2500 (synopsis "Redis Python client")
2501 (description
2502 "This package provides a Python interface to the Redis key-value store.")
2503 (license license:expat)))
2504
2505(define-public python2-redis
2506 (package-with-python2 python-redis))
2507
2508(define-public python-rq
2509 (package
2510 (name "python-rq")
2511 (version "0.7.1")
2512 (source
2513 (origin
2514 (method url-fetch)
2515 (uri (pypi-uri "rq" version))
2516 (sha256
2517 (base32 "0gaq5pnh0zy46r8jvygi0ifbvz3pq6i7xla78ijcgjw0x77qzsdh"))))
2518 (build-system python-build-system)
2519 (propagated-inputs
2520 `(("python-click" ,python-click)
2521 ("python-redis" ,python-redis)))
2522 (home-page "http://python-rq.org/")
2523 (synopsis "Simple job queues for Python")
2524 (description
2525 "RQ (Redis Queue) is a simple Python library for queueing jobs and
2526processing them in the background with workers. It is backed by Redis and it
2527is designed to have a low barrier to entry.")
2528 (license license:bsd-2)))
2529
2530(define-public python2-rq
2531 (package-with-python2 python-rq))
2532
2533(define-public python-trollius-redis
2534 (package
2535 (name "python-trollius-redis")
2536 (version "0.1.4")
2537 (source
2538 (origin
2539 (method url-fetch)
2540 (uri (pypi-uri "trollius_redis" version))
2541 (sha256
2542 (base32
2543 "0k3vypszmgmaipgw9xscvgm79h2zd6p6ci8gdp5sxl6g5kbqr9fy"))))
2544 (build-system python-build-system)
2545 ;; TODO: Tests require packaging 'hiredis'.
2546 (arguments '(#:tests? #f))
2547 (home-page "https://github.com/benjolitz/trollius-redis")
2548 (synopsis "Port of asyncio-redis to trollius")
2549 (description "@code{trollius-redis} is a Redis client for Python
2550 trollius. It is an asynchronious IO (PEP 3156) implementation of the
2551 Redis protocol.")
2552 (license license:bsd-2)))
2553
2554(define-public python2-trollius-redis
2555 (package-with-python2 python-trollius-redis))
2556
2557(define-public python-sqlparse
2558 (package
2559 (name "python-sqlparse")
2560 (version "0.2.4")
2561 (source (origin
2562 (method url-fetch)
2563 (uri (pypi-uri "sqlparse" version))
2564 (sha256
2565 (base32
2566 "1v3xh0bkfhb262dbndgzhivpnhdwavdzz8jjhx9vx0xbrx2880nf"))))
2567 (build-system python-build-system)
2568 (arguments
2569 `(#:phases
2570 (modify-phases %standard-phases
2571 (replace 'check
2572 (lambda _ (zero? (system* "py.test")))))))
2573 (native-inputs
2574 `(("python-pytest" ,python-pytest)))
2575 (home-page "https://github.com/andialbrecht/sqlparse")
2576 (synopsis "Non-validating SQL parser")
2577 (description "Sqlparse is a non-validating SQL parser for Python. It
2578provides support for parsing, splitting and formatting SQL statements.")
2579 (license license:bsd-3)))
2580
2581(define-public python2-sqlparse
2582 (package-with-python2 python-sqlparse))
2583
2584(define-public python-sql
2585 (package
2586 (name "python-sql")
2587 (version "0.9")
2588 (source
2589 (origin
2590 (method url-fetch)
2591 (uri (pypi-uri "python-sql" version))
2592 (sha256
2593 (base32
2594 "0p6kaqj02vz0habmdx37zjk6hjxdfm8aw737zs059vvpr70ird87"))))
2595 (build-system python-build-system)
2596 (home-page "https://python-sql.tryton.org/")
2597 (synopsis "Library to write SQL queries in a pythonic way")
2598 (description "@code{python-sql} is a library to write SQL queries, that
2599transforms idiomatic python function calls to well-formed SQL queries.")
2600 (license license:bsd-3)))
2601
2602(define-public python2-sql
2603 (package-with-python2 python-sql))