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