build: Remove unneeded conditionals for (guix build syscalls).
[jackhill/guix/guix.git] / gnu / packages / databases.scm
CommitLineData
5f96f303 1;;; GNU Guix --- Functional package management for GNU
ff1f39e3 2;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
b86c013c 3;;; Copyright © 2012, 2014, 2015 Andreas Enge <andreas@enge.fr>
5f96f303 4;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
218a2106 5;;; Copyright © 2014, 2016 David Thompson <davet@gnu.org>
8047d13d 6;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
e61fd0f0 7;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
77631745 8;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
b747a9db 9;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
b2476513 10;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
a65e2a02 11;;; Copyright © 2016 Nils Gillmann <niasterisk@grrlz.net>
4c6aa73b 12;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
5f96f303
LC
13;;;
14;;; This file is part of GNU Guix.
15;;;
16;;; GNU Guix is free software; you can redistribute it and/or modify it
17;;; under the terms of the GNU General Public License as published by
18;;; the Free Software Foundation; either version 3 of the License, or (at
19;;; your option) any later version.
20;;;
21;;; GNU Guix is distributed in the hope that it will be useful, but
22;;; WITHOUT ANY WARRANTY; without even the implied warranty of
23;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24;;; GNU General Public License for more details.
25;;;
26;;; You should have received a copy of the GNU General Public License
27;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
28
29(define-module (gnu packages databases)
30 #:use-module (gnu packages)
4c6aa73b
RJ
31 #:use-module (gnu packages autotools)
32 #:use-module (gnu packages avahi)
b747a9db 33 #:use-module (gnu packages bash)
23bbd7dd 34 #:use-module (gnu packages boost)
4c6aa73b
RJ
35 #:use-module (gnu packages gettext)
36 #:use-module (gnu packages glib)
5f96f303 37 #:use-module (gnu packages perl)
708155df 38 #:use-module (gnu packages language)
5f96f303 39 #:use-module (gnu packages linux)
cc2b77df 40 #:use-module (gnu packages tls)
5f96f303
LC
41 #:use-module (gnu packages compression)
42 #:use-module (gnu packages ncurses)
43 #:use-module (gnu packages readline)
44 #:use-module (gnu packages emacs)
45 #:use-module (gnu packages check)
46 #:use-module (gnu packages algebra)
47 #:use-module (gnu packages curl)
4c6aa73b 48 #:use-module (gnu packages cyrus-sasl)
5f96f303 49 #:use-module (gnu packages gnupg)
db60b1d9 50 #:use-module (gnu packages python)
77631745 51 #:use-module (gnu packages pcre)
4c6aa73b
RJ
52 #:use-module (gnu packages pkg-config)
53 #:use-module (gnu packages rdf)
77631745
SB
54 #:use-module (gnu packages xml)
55 #:use-module (gnu packages bison)
56 #:use-module (gnu packages jemalloc)
5f96f303 57 #:use-module ((guix licenses)
6242b314 58 #:select (gpl2 gpl3 gpl3+ lgpl2.1+ lgpl3+ x11-style non-copyleft
463f6766 59 bsd-2 bsd-3 public-domain))
5f96f303
LC
60 #:use-module (guix packages)
61 #:use-module (guix download)
62 #:use-module (guix build-system gnu)
274da61d 63 #:use-module (guix build-system perl)
77631745 64 #:use-module (guix build-system cmake)
329d13b8 65 #:use-module (guix utils)
5f96f303
LC
66 #:use-module (srfi srfi-26)
67 #:use-module (ice-9 match))
68
4c6aa73b
RJ
69(define-public 4store
70 (package
71 (name "4store")
72 (version "1.1.6")
73 (source (origin
74 (method url-fetch)
75 (uri (string-append "https://github.com/garlik/4store/archive/v"
76 version ".tar.gz"))
77 (file-name (string-append name "-" version ".tar.gz"))
78 (sha256
79 (base32 "004fmcf1w75zhc1x3zc6kc97j4jqn2v5nhk6yb3z3cpfrhzi9j50"))
80 (patches (list (search-patch "4store-fix-buildsystem.patch")))))
81 (build-system gnu-build-system)
82 (native-inputs
83 `(("perl" ,perl)
84 ("python" ,python-2)
85 ("autoconf" ,autoconf)
86 ("automake" ,automake)
87 ("gettext" ,gnu-gettext)
88 ("libtool" ,libtool)
89 ("pkg-config" ,pkg-config)))
90 (inputs
91 `(("glib" ,glib)
92 ("rasqal" ,rasqal)
93 ("libxml2" ,libxml2)
94 ("raptor2" ,raptor2)
95 ("readline" ,readline)
96 ("avahi" ,avahi)
97 ("pcre" ,pcre)
98 ("cyrus-sasl" ,cyrus-sasl)
99 ("openssl" ,openssl)
100 ("util-linux" ,util-linux)))
101 (arguments
102 `(#:phases
103 (modify-phases %standard-phases
104 (add-before 'configure 'generate-configure
105 (lambda _
106 (zero? (system* "./autogen.sh")))))))
107 ;; http://www.4store.org has been down for a while now.
108 (home-page "https://github.com/garlik/4store")
109 (synopsis "Clustered RDF storage and query engine")
110 (description "4store is a RDF/SPARQL store written in C, supporting
111either single machines or networked clusters.")
112 (license gpl3+)))
113
b416aadf
LC
114(define-public gdbm
115 (package
116 (name "gdbm")
2135d1eb 117 (version "1.12")
b416aadf
LC
118 (source (origin
119 (method url-fetch)
120 (uri (string-append "mirror://gnu/gdbm/gdbm-"
121 version ".tar.gz"))
122 (sha256
123 (base32
2135d1eb 124 "1smwz4x5qa4js0zf1w3asq6z7mh20zlgwbh2bk5dczw6xrk22yyr"))))
b416aadf
LC
125 (arguments `(#:configure-flags '("--enable-libgdbm-compat")))
126 (build-system gnu-build-system)
127 (home-page "http://www.gnu.org/software/gdbm/")
128 (synopsis
129 "Hash library of database functions compatible with traditional dbm")
130 (description
131 "GDBM is a library for manipulating hashed databases. It is used to
132store key/value pairs in a file in a manner similar to the Unix dbm library
133and provides interfaces to the traditional file format.")
134 (license gpl3+)))
135
5f96f303
LC
136(define-public bdb
137 (package
138 (name "bdb")
18e681bf 139 (version "6.2.23")
5f96f303
LC
140 (source (origin
141 (method url-fetch)
18e681bf
EF
142 (uri (string-append "http://download.oracle.com/berkeley-db/db-"
143 version ".tar.gz"))
144 (sha256
145 (base32
146 "1isxx4jfmnh913jzhp8hhfngbk6dsg46f4kjpvvc56maj64jqqa7"))))
5f96f303
LC
147 (build-system gnu-build-system)
148 (outputs '("out" ; programs, libraries, headers
149 "doc")) ; 94 MiB of HTML docs
150 (arguments
151 '(#:tests? #f ; no check target available
ff1f39e3 152 #:disallowed-references ("doc")
5bef7749
AE
153 #:phases
154 (alist-replace
155 'configure
156 (lambda* (#:key outputs #:allow-other-keys)
157 (let ((out (assoc-ref outputs "out"))
158 (doc (assoc-ref outputs "doc")))
159 ;; '--docdir' is not honored, so we need to patch.
160 (substitute* "dist/Makefile.in"
161 (("docdir[[:blank:]]*=.*")
162 (string-append "docdir = " doc "/share/doc/bdb")))
5f96f303 163
5bef7749
AE
164 (zero?
165 (system* "./dist/configure"
166 (string-append "--prefix=" out)
167 (string-append "CONFIG_SHELL=" (which "bash"))
168 (string-append "SHELL=" (which "bash"))
5f96f303 169
0e50d521
LC
170 ;; Remove 7 MiB of .a files.
171 "--disable-static"
172
5bef7749
AE
173 ;; The compatibility mode is needed by some packages,
174 ;; notably iproute2.
b86c013c
AE
175 "--enable-compat185"
176
177 ;; The following flag is needed so that the inclusion
178 ;; of db_cxx.h into C++ files works; it leads to
179 ;; HAVE_CXX_STDHEADERS being defined in db_cxx.h.
180 "--enable-cxx"))))
5f96f303 181 %standard-phases)))
35b9e423 182 (synopsis "Berkeley database")
5f96f303
LC
183 (description
184 "Berkeley DB is an embeddable database allowing developers the choice of
185SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
166191b3
LC
186 (license (non-copyleft "file://LICENSE"
187 "See LICENSE in the distribution."))
5f96f303
LC
188 (home-page
189 "http://www.oracle.com/us/products/database/berkeley-db/overview/index.html")))
190
557fa39c
EF
191(define-public bdb-5.3
192 (package (inherit bdb)
193 (name "bdb")
194 (version "5.3.28")
195 (source (origin
196 (method url-fetch)
197 (uri (string-append "http://download.oracle.com/berkeley-db/db-"
198 version ".tar.gz"))
199 (sha256
200 (base32
201 "0a1n5hbl7027fbz5lm0vp0zzfp1hmxnz14wx3zl9563h83br5ag0"))))))
202
5f96f303
LC
203(define-public mysql
204 (package
205 (name "mysql")
5d88b4f8 206 (version "5.7.12")
5f96f303
LC
207 (source (origin
208 (method url-fetch)
23bbd7dd
EF
209 (uri (list (string-append
210 "http://dev.mysql.com/get/Downloads/MySQL-"
211 (version-major+minor version) "/"
212 name "-" version ".tar.gz")
213 (string-append
214 "http://downloads.mysql.com/archives/get/file/"
215 name "-" version ".tar.gz")))
5f96f303
LC
216 (sha256
217 (base32
5d88b4f8 218 "11qwbid666fspq143ymi86yva2b01lybaqh26k92rciasav3r11j"))))
329d13b8
SB
219 (build-system cmake-build-system)
220 (arguments
221 '(#:configure-flags
222 '("-DBUILD_CONFIG=mysql_release"
223 "-DWITH_SSL=system"
224 "-DWITH_ZLIB=system"
225 "-DDEFAULT_CHARSET=utf8"
226 "-DDEFAULT_COLLATION=utf8_general_ci"
227 "-DMYSQL_DATADIR=/var/lib/mysql"
228 "-DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock"
229 "-DINSTALL_INFODIR=share/mysql/docs"
230 "-DINSTALL_MANDIR=share/man"
231 "-DINSTALL_PLUGINDIR=lib/mysql/plugin"
232 "-DINSTALL_SCRIPTDIR=bin"
233 "-DINSTALL_INCLUDEDIR=include/mysql"
234 "-DINSTALL_DOCREADMEDIR=share/mysql/docs"
235 "-DINSTALL_SUPPORTFILESDIR=share/mysql"
236 "-DINSTALL_MYSQLSHAREDIR=share/mysql"
237 "-DINSTALL_DOCDIR=share/mysql/docs"
238 "-DINSTALL_SHAREDIR=share/mysql"
239 ;; Get rid of test data.
240 "-DINSTALL_MYSQLTESTDIR="
3f289db6
LC
241 "-DINSTALL_SQLBENCHDIR=")
242 #:phases (modify-phases %standard-phases
243 (add-after
23bbd7dd
EF
244 'unpack 'patch-boost-version
245 (lambda _
246 ;; Mysql wants boost-1.59.0 specifically
247 (substitute* "cmake/boost.cmake"
248 (("59") "60"))))
6a52df50
LC
249 (add-after
250 'install 'remove-extra-binaries
251 (lambda* (#:key outputs #:allow-other-keys)
252 (let ((out (assoc-ref outputs "out")))
253 ;; Remove the 3 *_embedded files, which weigh in at
254 ;; 14 MiB each.
255 (for-each delete-file
256 (find-files (string-append out "/bin")
257 "_embedded$"))
3f289db6 258 #t))))))
329d13b8
SB
259 (native-inputs
260 `(("bison" ,bison)
261 ("perl" ,perl)))
5f96f303 262 (inputs
23bbd7dd
EF
263 `(("boost" ,boost)
264 ("libaio" ,libaio)
265 ("ncurses" ,ncurses)
5f96f303 266 ("openssl" ,openssl)
23bbd7dd 267 ("zlib" ,zlib)))
5f96f303 268 (home-page "http://www.mysql.com/")
9e771e3b 269 (synopsis "Fast, easy to use, and popular database")
5f96f303
LC
270 (description
271 "MySQL is a fast, reliable, and easy to use relational database
272management system that supports the standardized Structured Query
273Language.")
274 (license gpl2)))
275
77631745
SB
276(define-public mariadb
277 (package
278 (name "mariadb")
78d2fd32 279 (version "10.1.14")
77631745
SB
280 (source (origin
281 (method url-fetch)
282 (uri (string-append "https://downloads.mariadb.org/f/"
283 name "-" version "/source/"
284 name "-" version ".tar.gz"))
285 (sha256
286 (base32
78d2fd32 287 "04ysdbvj2qapfpaj7s5d2j3m8k9l0yb5k0c2yaini8jrl1s1krqq"))))
77631745
SB
288 (build-system cmake-build-system)
289 (arguments
290 '(#:configure-flags
291 '("-DBUILD_CONFIG=mysql_release"
292 "-DDEFAULT_CHARSET=utf8"
293 "-DDEFAULT_COLLATION=utf8_general_ci"
294 "-DMYSQL_DATADIR=/var/lib/mysql"
295 "-DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock"
296 "-DINSTALL_INFODIR=share/mysql/docs"
297 "-DINSTALL_MANDIR=share/man"
298 "-DINSTALL_PLUGINDIR=lib/mysql/plugin"
299 "-DINSTALL_SCRIPTDIR=bin"
300 "-DINSTALL_INCLUDEDIR=include/mysql"
301 "-DINSTALL_DOCREADMEDIR=share/mysql/docs"
302 "-DINSTALL_SUPPORTFILESDIR=share/mysql/support-files"
303 "-DINSTALL_MYSQLSHAREDIR=share/mysql"
304 "-DINSTALL_DOCDIR=share/mysql/docs"
305 "-DINSTALL_SHAREDIR=share/mysql")
306 #:phases
307 (modify-phases %standard-phases
308 (add-before
309 'configure 'pre-configure
310 (lambda _
311 (setenv "CONFIG_SHELL" (which "sh"))
77631745
SB
312 #t))
313 (add-after
314 'install 'post-install
315 (lambda* (#:key outputs #:allow-other-keys)
316 (let* ((out (assoc-ref outputs "out"))
317 (test (assoc-ref outputs "test")))
318 (substitute* (string-append out "/bin/mysql_install_db")
319 (("basedir=\"\"")
320 (string-append "basedir=\"" out "\"")))
321 ;; Remove unneeded files for testing.
322 (with-directory-excursion out
323 (for-each delete-file-recursively
324 '("data" "mysql-test" "sql-bench"
325 "share/man/man1/mysql-test-run.pl.1")))))))))
326 (native-inputs
327 `(("bison" ,bison)
328 ("perl" ,perl)))
329 (inputs
330 `(("jemalloc" ,jemalloc)
331 ("libaio" ,libaio)
332 ("libxml2" ,libxml2)
333 ("ncurses" ,ncurses)
334 ("openssl" ,openssl)
335 ("pcre" ,pcre)
336 ("zlib" ,zlib)))
337 (home-page "https://mariadb.org/")
338 (synopsis "SQL database server")
339 (description
340 "MariaDB is a multi-user and multi-threaded SQL database server, designed
341as a drop-in replacement of MySQL.")
342 (license gpl2)))
343
5f96f303
LC
344(define-public postgresql
345 (package
346 (name "postgresql")
ec374039 347 (version "9.5.3")
5f96f303
LC
348 (source (origin
349 (method url-fetch)
dbeaf8f2 350 (uri (string-append "https://ftp.postgresql.org/pub/source/v"
9020890b 351 version "/postgresql-" version ".tar.bz2"))
5f96f303
LC
352 (sha256
353 (base32
ec374039 354 "1d500d2qsdzysnis6qi84xchnz5xh8kx8sjfmkbsijwaqlfw11bk"))))
5f96f303 355 (build-system gnu-build-system)
dd213082
JD
356 (arguments
357 `(#:phases
358 (modify-phases %standard-phases
359 (add-before 'configure 'patch-/bin/sh
360 (lambda _
361 ;; Refer to the actual shell.
362 (substitute* '("src/bin/pg_ctl/pg_ctl.c"
363 "src/bin/psql/command.c")
364 (("/bin/sh") (which "sh")))
365 #t)))))
5f96f303
LC
366 (inputs
367 `(("readline" ,readline)
368 ("zlib" ,zlib)))
369 (home-page "http://www.postgresql.org/")
370 (synopsis "Powerful object-relational database system")
371 (description
372 "PostgreSQL is a powerful object-relational database system. It is fully
373ACID compliant, has full support for foreign keys, joins, views, triggers, and
374stored procedures (in multiple languages). It includes most SQL:2008 data
375types, including INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE, INTERVAL, and
376TIMESTAMP. It also supports storage of binary large objects, including
377pictures, sounds, or video.")
378 (license (x11-style "file://COPYRIGHT"))))
379
380(define-public recutils
381 (package
382 (name "recutils")
383 (version "1.7")
384 (source (origin
385 (method url-fetch)
386 (uri (string-append "mirror://gnu/recutils/recutils-"
387 version ".tar.gz"))
388 (sha256
389 (base32
390 "0cdwa4094x3yx7vn98xykvnlp9rngvd58d19vs3vh5hrvggccg93"))))
391 (build-system gnu-build-system)
392
393 ;; Running tests in parallel leads to test failures and crashes in
394 ;; torture/utils.
b747a9db
LF
395 (arguments '(#:parallel-tests? #f
396 #:configure-flags
397 (list (string-append "--with-bash-headers="
398 (assoc-ref %build-inputs "bash:include")
399 "/include/bash"))))
5f96f303 400
b8fc3622 401 (native-inputs `(("emacs" ,emacs-minimal)
7ae7ca0e 402 ("bc" ,bc)
b747a9db 403 ("bash:include" ,bash "include")
b3546174 404 ("libuuid" ,util-linux)))
5f96f303
LC
405
406 ;; TODO: Add more optional inputs.
5f96f303
LC
407 (inputs `(("curl" ,curl)
408 ("libgcrypt" ,libgcrypt)
409 ("check" ,check)))
410 (synopsis "Manipulate plain text files as databases")
411 (description
412 "GNU Recutils is a set of tools and libraries for creating and
413manipulating text-based, human-editable databases. Despite being text-based,
414databases created with Recutils carry all of the expected features such as
c5779c93
LC
415unique fields, primary keys, time stamps and more. Many different field
416types are supported, as is encryption.")
5f96f303
LC
417 (license gpl3+)
418 (home-page "http://www.gnu.org/software/recutils/")))
419
b92d02d9
RJ
420(define-public sparql-query
421 (package
422 (name "sparql-query")
423 (version "1.1")
424 (source (origin
425 (method url-fetch)
426 (uri (string-append "https://github.com/tialaramex/"
427 name "/archive/" version ".tar.gz"))
428 (sha256
429 (base32 "0yq3k20472rv8npcc420q9ab6idy584g5y0q501d360k5q0ggr8w"))
430 (file-name (string-append name "-" version ".tar.gz"))))
431 (build-system gnu-build-system)
432 (inputs
433 `(("readline" ,readline)
434 ("ncurses" ,ncurses)
435 ("glib" ,glib)
436 ("libxml2" ,libxml2)
437 ("curl" ,curl)))
438 (native-inputs
439 `(("pkg-config" ,pkg-config)))
440 (arguments
441 `(#:make-flags '("CC=gcc")
442 #:phases
443 (modify-phases %standard-phases
444 (delete 'configure)
445 ;; The Makefile uses git to obtain versioning information. This phase
446 ;; substitutes the git invocation with the package version.
447 (add-after 'unpack 'remove-git-dependency
448 (lambda _
449 (substitute* "Makefile"
450 (("^gitrev :=.*$")
451 (string-append "gitrev = \"v" ,version "\"")))))
452 ;; The install phase of the Makefile assumes $PREFIX/usr/local/bin.
453 ;; This replacement does the same thing, except for using $PREFIX/bin
454 ;; instead.
455 (replace 'install
456 (lambda* (#:key outputs #:allow-other-keys)
457 (let* ((out (assoc-ref outputs "out"))
458 (bin (string-append out "/bin")))
459 (install-file "sparql-query" bin)
460 (system* "ln" "--symbolic"
461 (string-append bin "/sparql-query")
462 (string-append bin "/sparql-update")))))
463 (replace 'check
464 (lambda* (#:key make-flags #:allow-other-keys)
465 (and
466 (zero? (apply system* "make" `(,@make-flags "scan-test")))
467 (zero? (system "./scan-test"))))))))
468 (home-page "https://github.com/tialaramex/sparql-query/")
469 (synopsis "Command-line tool for accessing SPARQL endpoints over HTTP")
470 (description "Sparql-query is a command-line tool for accessing SPARQL
471endpoints over HTTP. It has been intentionally designed to 'feel' similar to
472tools for interrogating SQL databases. For example, you can enter a query over
473several lines, using a semi-colon at the end of a line to indicate the end of
474your query. It also supports readline so that you can more easily recall and
475edit previous queries, even across sessions. It can be used non-interactively,
476for example from a shell script.")
477 ;; Some files (like scan-sparql.c) contain a GPLv3+ license header, while
478 ;; others (like sparql-query.c) contain a GPLv2+ license header.
479 (license (list gpl3+))))
480
5f96f303
LC
481(define-public sqlite
482 (package
483 (name "sqlite")
45ff4b56 484 (version "3.12.2")
5f96f303
LC
485 (source (origin
486 (method url-fetch)
487 ;; TODO: Download from sqlite.org once this bug :
488 ;; http://lists.gnu.org/archive/html/bug-guile/2013-01/msg00027.html
489 ;; has been fixed.
490 (uri (let ((numeric-version
491 (match (string-split version #\.)
492 ((first-digit other-digits ...)
493 (string-append first-digit
494 (string-pad-right
495 (string-concatenate
496 (map (cut string-pad <> 2 #\0)
497 other-digits))
498 6 #\0))))))
42e66649
SB
499 (list
500 (string-append
75710da6
LC
501 "https://fossies.org/linux/misc/sqlite-autoconf-"
502 numeric-version ".tar.gz")
42e66649 503 (string-append
75710da6
LC
504 "http://distfiles.gentoo.org/distfiles/"
505 "/sqlite-autoconf-" numeric-version ".tar.gz"))
6f96706d
LC
506
507 ;; XXX: As of 2015-09-08, SourceForge is squatting the URL
508 ;; below, returning 200 and showing an advertising page.
509 ;; (string-append
510 ;; "mirror://sourceforge/sqlite.mirror/SQLite%20" version
511 ;; "/sqlite-autoconf-" numeric-version ".tar.gz")
512 ))
5f96f303
LC
513 (sha256
514 (base32
45ff4b56 515 "1fwss0i2lixv39b27gkqiibdd2syym90wh3qbiaxnfgxk867f07x"))))
5f96f303 516 (build-system gnu-build-system)
8f1d22b7 517 (inputs `(("readline" ,readline)))
49689377
MW
518 (arguments
519 `(#:configure-flags
520 ;; Add -DSQLITE_SECURE_DELETE and -DSQLITE_ENABLE_UNLOCK_NOTIFY to
521 ;; CFLAGS. GNU Icecat will refuse to use the system SQLite unless these
522 ;; options are enabled.
523 '("CFLAGS=-O2 -DSQLITE_SECURE_DELETE -DSQLITE_ENABLE_UNLOCK_NOTIFY")))
5f96f303
LC
524 (home-page "http://www.sqlite.org/")
525 (synopsis "The SQLite database management system")
526 (description
527 "SQLite is a software library that implements a self-contained, serverless,
35b9e423
EB
528zero-configuration, transactional SQL database engine. SQLite is the most
529widely deployed SQL database engine in the world. The source code for SQLite
530is in the public domain.")
5f96f303 531 (license public-domain)))
db60b1d9
LC
532
533(define-public tdb
534 (package
535 (name "tdb")
6747a852 536 (version "1.3.9")
db60b1d9
LC
537 (source (origin
538 (method url-fetch)
ca473fc2 539 (uri (string-append "https://www.samba.org/ftp/tdb/tdb-"
db60b1d9
LC
540 version ".tar.gz"))
541 (sha256
542 (base32
6747a852 543 "1ll4q17scax1arg12faj8p25jq1f7q9irc3pwla0ziymwqkgf0bi"))))
db60b1d9
LC
544 (build-system gnu-build-system)
545 (arguments
546 '(#:phases (alist-replace
547 'configure
548 (lambda* (#:key outputs #:allow-other-keys)
549 (let ((out (assoc-ref outputs "out")))
550 ;; The 'configure' script is a wrapper for Waf and
551 ;; doesn't recognize things like '--enable-fast-install'.
552 (zero? (system* "./configure"
553 (string-append "--prefix=" out)))))
554 %standard-phases)))
555 (native-inputs
556 `(;; TODO: Build the documentation.
557 ;; ("docbook-xsl" ,docbook-xsl)
558 ;; ("libxml2" ,libxml2)
559 ;; ("libxslt" ,libxslt)
560 ("python" ,python-2))) ;for the Waf build system
561 (home-page "http://tdb.samba.org/")
35b9e423 562 (synopsis "Trivial database")
db60b1d9
LC
563 (description
564 "TDB is a Trivial Database. In concept, it is very much like GDBM,
565and BSD's DB except that it allows multiple simultaneous writers and uses
566locking internally to keep writers from trampling on each other. TDB is also
567extremely small.")
568 (license lgpl3+)))
274da61d
LC
569
570(define-public perl-dbi
571 (package
572 (name "perl-dbi")
6138dede 573 (version "1.636")
274da61d
LC
574 (source (origin
575 (method url-fetch)
576 (uri (string-append
577 "mirror://cpan/authors/id/T/TI/TIMB/DBI-"
578 version ".tar.gz"))
579 (sha256
580 (base32
6138dede 581 "0v37vnr5p0bx396cj0lb5kb69jbryq2mspp602hbgd04gklxqzcg"))))
274da61d
LC
582 (build-system perl-build-system)
583 (synopsis "Database independent interface for Perl")
584 (description "This package provides an database interface for Perl.")
6138dede 585 (home-page "http://search.cpan.org/dist/DBI")
274da61d
LC
586 (license (package-license perl))))
587
feae3395
EB
588(define-public perl-dbix-class
589 (package
590 (name "perl-dbix-class")
591 (version "0.082810")
592 (source
593 (origin
594 (method url-fetch)
595 (uri (string-append "mirror://cpan/authors/id/R/RI/RIBASUSHI/"
596 "DBIx-Class-" version ".tar.gz"))
597 (sha256
598 (base32
599 "1zlsswk8j2k024gwhdhia8ksrmb8065n98dahkk8c0r69wv85n04"))))
600 (build-system perl-build-system)
601 (native-inputs
602 `(("perl-dbd-sqlite" ,perl-dbd-sqlite)
603 ("perl-file-temp" ,perl-file-temp)
604 ("perl-package-stash" ,perl-package-stash)
605 ("perl-test-deep" ,perl-test-deep)
606 ("perl-test-exception" ,perl-test-exception)
607 ("perl-test-warn" ,perl-test-warn)))
608 (propagated-inputs
609 `(("perl-class-accessor-grouped" ,perl-class-accessor-grouped)
610 ("perl-class-c3-componentised" ,perl-class-c3-componentised)
611 ("perl-class-inspector" ,perl-class-inspector)
612 ("perl-config-any" ,perl-config-any)
613 ("perl-context-preserve" ,perl-context-preserve)
614 ("perl-data-dumper-concise" ,perl-data-dumper-concise)
615 ("perl-data-page" ,perl-data-page)
616 ("perl-dbi" ,perl-dbi)
617 ("perl-devel-globaldestruction" ,perl-devel-globaldestruction)
618 ("perl-hash-merge" ,perl-hash-merge)
619 ("perl-module-find" ,perl-module-find)
620 ("perl-moo" ,perl-moo)
621 ("perl-mro-compat" ,perl-mro-compat)
622 ("perl-namespace-clean" ,perl-namespace-clean)
623 ("perl-path-class" ,perl-path-class)
624 ("perl-scalar-list-utils" ,perl-scalar-list-utils)
625 ("perl-scope-guard" ,perl-scope-guard)
626 ("perl-sql-abstract" ,perl-sql-abstract)
627 ("perl-sub-name" ,perl-sub-name)
628 ("perl-text-balanced" ,perl-text-balanced)
629 ("perl-try-tiny" ,perl-try-tiny)))
630 (home-page "http://search.cpan.org/dist/DBIx-Class")
631 (synopsis "Extensible and flexible object <-> relational mapper")
632 (description "An SQL to OO mapper with an object API inspired by
633Class::DBI (with a compatibility layer as a springboard for porting) and a
634resultset API that allows abstract encapsulation of database operations. It
635aims to make representing queries in your code as perl-ish as possible while
636still providing access to as many of the capabilities of the database as
637possible, including retrieving related records from multiple tables in a
638single query, \"JOIN\", \"LEFT JOIN\", \"COUNT\", \"DISTINCT\", \"GROUP BY\",
639\"ORDER BY\" and \"HAVING\" support.")
e61fd0f0
EB
640 (license (package-license perl))))
641
4e4039e5
EB
642(define-public perl-dbix-class-cursor-cached
643 (package
644 (name "perl-dbix-class-cursor-cached")
645 (version "1.001002")
646 (source
647 (origin
648 (method url-fetch)
649 (uri (string-append "mirror://cpan/authors/id/A/AR/ARCANEZ/"
650 "DBIx-Class-Cursor-Cached-" version ".tar.gz"))
651 (sha256
652 (base32
653 "19r7jr6pknxiirrybq0cd0lnr76xiw05arnfqgk9nrhp6c7vvil0"))))
654 (build-system perl-build-system)
655 (native-inputs
656 `(("perl-cache-cache" ,perl-cache-cache)
657 ("perl-dbd-sqlite" ,perl-dbd-sqlite)))
658 (propagated-inputs
659 `(("perl-carp-clan" ,perl-carp-clan)
660 ("perl-dbix-class" ,perl-dbix-class)))
661 (home-page "http://search.cpan.org/dist/DBIx-Class-Cursor-Cached")
662 (synopsis "Cursor with built-in caching support")
663 (description "DBIx::Class::Cursor::Cached provides a cursor class with
664built-in caching support.")
665 (license (package-license perl))))
666
e61fd0f0
EB
667(define-public perl-dbix-class-introspectablem2m
668 (package
669 (name "perl-dbix-class-introspectablem2m")
670 (version "0.001001")
671 (source
672 (origin
673 (method url-fetch)
674 (uri (string-append "mirror://cpan/authors/id/G/GR/GRODITI/"
675 "DBIx-Class-IntrospectableM2M-" version ".tar.gz"))
676 (sha256
677 (base32
678 "0p9zx1yc1f6jg583l206wilsni2v8mlngc2vf2q8yn10pmy4y6wm"))))
679 (build-system perl-build-system)
680 (propagated-inputs
681 `(("perl-dbix-class" ,perl-dbix-class)))
682 (home-page "http://search.cpan.org/dist/DBIx-Class-IntrospectableM2M")
683 (synopsis "Introspect many-to-many relationships")
684 (description "Because the many-to-many relationships are not real
685relationships, they can not be introspected with DBIx::Class. Many-to-many
686relationships are actually just a collection of convenience methods installed
687to bridge two relationships. This DBIx::Class component can be used to store
688all relevant information about these non-relationships so they can later be
689introspected and examined.")
708155df
EB
690 (license (package-license perl))))
691
692(define-public perl-dbix-class-schema-loader
693 (package
694 (name "perl-dbix-class-schema-loader")
695 (version "0.07042")
696 (source
697 (origin
698 (method url-fetch)
699 (uri (string-append "mirror://cpan/authors/id/I/IL/ILMARI/"
700 "DBIx-Class-Schema-Loader-" version ".tar.gz"))
701 (sha256
702 (base32
703 "0sb48as7azmj6s4acxh98wcvcik7lxm7dcjz1c3wdrkrbmbbz0jf"))))
704 (build-system perl-build-system)
705 (native-inputs
706 `(("perl-config-any" ,perl-config-any)
707 ("perl-config-general" ,perl-config-general)
708 ("perl-dbd-sqlite" ,perl-dbd-sqlite)
709 ("perl-dbix-class-introspectablem2m" ,perl-dbix-class-introspectablem2m)
710 ("perl-moose" ,perl-moose)
711 ("perl-moosex-markasmethods" ,perl-moosex-markasmethods)
712 ("perl-moosex-nonmoose" ,perl-moosex-nonmoose)
713 ("perl-namespace-autoclean" ,perl-namespace-autoclean)
714 ("perl-test-deep" ,perl-test-deep)
715 ("perl-test-differences" ,perl-test-differences)
716 ("perl-test-exception" ,perl-test-exception)
717 ("perl-test-pod" ,perl-test-pod)
718 ("perl-test-warn" ,perl-test-warn)))
719 (propagated-inputs
720 `(("perl-class-unload" ,perl-class-unload)
721 ("perl-class-inspector" ,perl-class-inspector)
722 ("perl-class-accessor-grouped" ,perl-class-accessor-grouped)
723 ("perl-class-c3-componentised" ,perl-class-c3-componentised)
724 ("perl-carp-clan" ,perl-carp-clan)
725 ("perl-data-dump" ,perl-data-dump)
726 ("perl-dbix-class" ,perl-dbix-class)
727 ("perl-hash-merge" ,perl-hash-merge)
728 ("perl-list-moreutils" ,perl-list-moreutils)
729 ("perl-lingua-en-inflect-phrase" ,perl-lingua-en-inflect-phrase)
730 ("perl-lingua-en-inflect-number" ,perl-lingua-en-inflect-number)
731 ("perl-lingua-en-tagger" ,perl-lingua-en-tagger)
732 ("perl-namespace-clean" ,perl-namespace-clean)
733 ("perl-mro-compat" ,perl-mro-compat)
734 ("perl-scope-guard" ,perl-scope-guard)
735 ("perl-string-camelcase" ,perl-string-camelcase)
736 ("perl-string-toidentifier-en" ,perl-string-toidentifier-en)
737 ("perl-sub-name" ,perl-sub-name)
738 ("perl-try-tiny" ,perl-try-tiny)))
739 (arguments `(#:tests? #f)) ;TODO: t/20invocations.t fails
740 (home-page "http://search.cpan.org/dist/DBIx-Class-Schema-Loader")
741 (synopsis "Create a DBIx::Class::Schema based on a database")
742 (description "DBIx::Class::Schema::Loader automates the definition of a
743DBIx::Class::Schema by scanning database table definitions and setting up the
744columns, primary keys, unique constraints and relationships.")
274da61d
LC
745 (license (package-license perl))))
746
186eb132
EB
747(define-public perl-dbd-pg
748 (package
749 (name "perl-dbd-pg")
750 (version "3.5.1")
751 (source
752 (origin
753 (method url-fetch)
754 (uri (string-append "mirror://cpan/authors/id/T/TU/TURNSTEP/"
755 "DBD-Pg-" version ".tar.gz"))
756 (sha256
757 (base32
758 "0z0kf1kjgbi5f6nr63i2fnrx7629d9lvxg1q8sficwb3zdf1ggzx"))))
759 (build-system perl-build-system)
760 (native-inputs
761 `(("perl-dbi" ,perl-dbi)))
762 (propagated-inputs
763 `(("perl-dbi" ,perl-dbi)
764 ("postgresql" ,postgresql)))
765 (home-page "http://search.cpan.org/dist/DBD-Pg")
766 (synopsis "DBI PostgreSQL interface")
767 (description "")
768 (license (package-license perl))))
769
4b7857a4
RW
770(define-public perl-dbd-mysql
771 (package
772 (name "perl-dbd-mysql")
773 (version "4.033")
774 (source
775 (origin
776 (method url-fetch)
777 (uri (string-append "mirror://cpan/authors/id/C/CA/CAPTTOFU/"
778 "DBD-mysql-" version ".tar.gz"))
779 (sha256
780 (base32
781 "0769xakykps0cx368g4vaips4w3bjk383rianiavq7sq6g6bp66c"))))
782 (build-system perl-build-system)
783 ;; Tests require running MySQL server
784 (arguments `(#:tests? #f))
785 (propagated-inputs
786 `(("perl-dbi" ,perl-dbi)
787 ("mysql" ,mysql)))
788 (home-page "http://search.cpan.org/dist/DBD-mysql")
789 (synopsis "DBI MySQL interface")
790 (description "This package provides a MySQL driver for the Perl5
791@dfn{Database Interface} (DBI).")
792 (license (package-license perl))))
793
274da61d
LC
794(define-public perl-dbd-sqlite
795 (package
796 (name "perl-dbd-sqlite")
797 (version "1.42")
798 (source (origin
799 (method url-fetch)
800 (uri (string-append
801 "mirror://cpan/authors/id/I/IS/ISHIGAKI/DBD-SQLite-"
802 version ".tar.gz"))
803 (sha256
804 (base32
805 "14x9cjsc8dz8ad1nad0bqiq9cbk1rjfb8h5y0rpk3pdl38y6afxb"))))
806 (build-system perl-build-system)
807 (inputs `(("sqlite" ,sqlite)))
808 (propagated-inputs `(("perl-dbi" ,perl-dbi)))
809 (synopsis "SQlite interface for Perl")
810 (description "DBD::SQLite is a Perl DBI driver for SQLite, that includes
811the entire thing in the distribution. So in order to get a fast transaction
812capable RDBMS working for your Perl project you simply have to install this
813module, and nothing else.")
814 (license (package-license perl))
815 (home-page "http://search.cpan.org/~ishigaki/DBD-SQLite/lib/DBD/SQLite.pm")))
14e84b2d 816
dd90952e
EB
817(define-public perl-sql-abstract
818 (package
819 (name "perl-sql-abstract")
820 (version "1.81")
821 (source
822 (origin
823 (method url-fetch)
824 (uri (string-append "mirror://cpan/authors/id/R/RI/RIBASUSHI/"
825 "SQL-Abstract-" version ".tar.gz"))
826 (sha256
827 (base32
828 "17sgwq3mvqjhv3b77cnvrq60xgp8harjhlnvpwmxc914rqc5ckaz"))))
829 (build-system perl-build-system)
830 (native-inputs
831 `(("perl-test-deep" ,perl-test-deep)
832 ("perl-test-exception" ,perl-test-exception)
833 ("perl-test-warn" ,perl-test-warn)))
834 (propagated-inputs
835 `(("perl-hash-merge" ,perl-hash-merge)
836 ("perl-moo" ,perl-moo)
837 ("perl-mro-compat" ,perl-mro-compat)
838 ("perl-text-balanced" ,perl-text-balanced)))
839 (home-page "http://search.cpan.org/dist/SQL-Abstract")
840 (synopsis "Generate SQL from Perl data structures")
841 (description "This module was inspired by the excellent DBIx::Abstract.
842While based on the concepts used by DBIx::Abstract, the concepts used have
843been modified to make the SQL easier to generate from Perl data structures.
844The underlying idea is for this module to do what you mean, based on the data
845structures you provide it, so that you don't have to modify your code every
e881752c 846time your data changes.")
dd90952e 847 (license (package-license perl))))
14e84b2d 848
b4dcb026
EB
849(define-public perl-sql-splitstatement
850 (package
851 (name "perl-sql-splitstatement")
852 (version "1.00020")
853 (source
854 (origin
855 (method url-fetch)
856 (uri (string-append "mirror://cpan/authors/id/E/EM/EMAZEP/"
857 "SQL-SplitStatement-" version ".tar.gz"))
858 (sha256
859 (base32
860 "0bqg45k4c9qkb2ypynlwhpvzsl4ssfagmsalys18s5c79ps30z7p"))))
861 (build-system perl-build-system)
862 (native-inputs
863 `(("perl-test-exception" ,perl-test-exception)))
864 (propagated-inputs
865 `(("perl-class-accessor" ,perl-class-accessor)
866 ("perl-list-moreutils" ,perl-list-moreutils)
867 ("perl-regexp-common" ,perl-regexp-common)
868 ("perl-sql-tokenizer" ,perl-sql-tokenizer)))
869 (home-page "http://search.cpan.org/dist/SQL-SplitStatement")
870 (synopsis "Split SQL code into atomic statements")
871 (description "This module tries to split any SQL code, even including
872non-standard extensions, into the atomic statements it is composed of.")
873 (license (package-license perl))))
874
718c89c1
EB
875(define-public perl-sql-tokenizer
876 (package
877 (name "perl-sql-tokenizer")
878 (version "0.24")
879 (source
880 (origin
881 (method url-fetch)
882 (uri (string-append "mirror://cpan/authors/id/I/IZ/IZUT/"
883 "SQL-Tokenizer-" version ".tar.gz"))
884 (sha256
885 (base32
886 "1qa2dfbzdlr5qqdam9yn78z5w3al5r8577x06qan8wv58ay6ka7s"))))
887 (build-system perl-build-system)
888 (home-page "http://search.cpan.org/dist/SQL-Tokenizer")
889 (synopsis "SQL tokenizer")
890 (description "SQL::Tokenizer is a tokenizer for SQL queries. It does not
891claim to be a parser or query verifier. It just creates sane tokens from a
892valid SQL query.")
893 (license (package-license perl))))
894
14e84b2d
JD
895(define-public unixodbc
896 (package
897 (name "unixodbc")
3fef0a2f 898 (version "2.3.4")
14e84b2d
JD
899 (source (origin
900 (method url-fetch)
e881752c 901 (uri
14e84b2d 902 (string-append
3fef0a2f
EF
903 "ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-"
904 version ".tar.gz"))
14e84b2d 905 (sha256
3fef0a2f 906 (base32 "0f8y88rcc2akjvjv5y66yx7k0ms9h1s0vbcfy25j93didflhj59f"))))
14e84b2d
JD
907 (build-system gnu-build-system)
908 (synopsis "Data source abstraction library")
909 (description "Unixodbc is a library providing an API with which to access
910data sources. Data sources include SQL Servers and any software with an ODBC
911Driver.")
e881752c 912 (license lgpl2.1+)
14e84b2d
JD
913 ;; COPYING contains copy of lgpl2.1 - but copyright notices just say "LGPL"
914 (home-page "http://www.unixodbc.org")))
b4a9c924
EB
915
916(define-public unqlite
917 (package
918 (name "unqlite")
919 (version "1.1.6")
920 (source (origin
921 (method url-fetch)
922 ;; Contains bug fixes against the official release, and has an
923 ;; autotooled build system.
924 (uri (string-append "https://github.com/aidin36/tocc/releases/"
925 "download/v1.0.0/"
926 "unqlite-unofficial-" version ".tar.gz"))
927 (sha256
928 (base32
929 "1sbpvhg15gadq0mpcy16q7k3rkg4b4dicpnn5xifpkpn02sqik3s"))))
930 (build-system gnu-build-system)
931 (arguments `(#:tests? #f)) ;No check target
932 (home-page "http://www.unqlite.org")
933 (synopsis "In-memory key/value and document store")
934 (description
935 "UnQLite is an in-process software library which implements a
936self-contained, serverless, zero-configuration, transactional NoSQL
937database engine. UnQLite is a document store database similar to
938MongoDB, Redis, CouchDB, etc. as well as a standard Key/Value store
69b4ffcf 939similar to BerkeleyDB, LevelDB, etc.")
b4a9c924 940 (license bsd-2)))
463f6766
DT
941
942(define-public redis
943 (package
944 (name "redis")
218a2106 945 (version "3.2.0")
463f6766
DT
946 (source (origin
947 (method url-fetch)
948 (uri (string-append "http://download.redis.io/releases/redis-"
949 version".tar.gz"))
950 (sha256
951 (base32
218a2106 952 "0ql7zp061xr66a1dzpa6a0ijm8zm133dd364va7q5h8avkrim7wq"))))
463f6766
DT
953 (build-system gnu-build-system)
954 (arguments
955 '(#:tests? #f ; tests related to master/slave and replication fail
956 #:phases (modify-phases %standard-phases
957 (delete 'configure))
958 #:make-flags `("CC=gcc"
959 "MALLOC=libc"
960 ,(string-append "PREFIX="
961 (assoc-ref %outputs "out")))))
962 (synopsis "Key-value cache and store")
963 (description "Redis is an advanced key-value cache and store. Redis
964supports many data structures including strings, hashes, lists, sets, sorted
965sets, bitmaps and hyperloglogs.")
966 (home-page "http://redis.io/")
967 (license bsd-3)))
a65e2a02 968
969(define-public kyotocabinet
970 (package
971 (name "kyotocabinet")
972 (version "1.2.76")
973 (source (origin
974 (method url-fetch)
975 (uri (string-append "http://fallabs.com/kyotocabinet/pkg/"
976 name "-" version ".tar.gz"))
977 (sha256
978 (base32
979 "0g6js20x7vnpq4p8ghbw3mh9wpqksya9vwhzdx6dnlf354zjsal1"))))
980 (build-system gnu-build-system)
981 (arguments
982 `(#:configure-flags
983 (list
984 (string-append "LDFLAGS=-Wl,-rpath="
985 (assoc-ref %outputs "out") "/lib"))))
986 (inputs `(("zlib" ,zlib)))
987 (home-page "http://fallabs.com/kyotocabinet/")
988 (synopsis
989 "Kyoto Cabinet is a modern implementation of the DBM database")
990 (description
991 "Kyoto Cabinet is a standalone file-based database that supports Hash
992and B+ Tree data storage models. It is a fast key-value lightweight
993database and supports many programming languages. It is a NoSQL database.")
994 (license gpl3+)))
6242b314
SB
995
996(define-public wiredtiger
997 (package
998 (name "wiredtiger")
999 (version "2.8.0")
1000 (source (origin
1001 (method url-fetch)
1002 (uri (string-append
1003 "http://source.wiredtiger.com/releases/wiredtiger-"
1004 version ".tar.bz2"))
1005 (sha256
1006 (base32
1007 "1qh7y5paisdxq19jgg81ld7i32lz920n5k30hdpxnr8ll9c4hgjr"))))
1008 (build-system gnu-build-system)
1009 (arguments
1010 '(#:configure-flags '("--enable-lz4" "--enable-zlib")
1011 #:phases
1012 (modify-phases %standard-phases
1013 (add-before 'check 'disable-test/fops
1014 (lambda _
1015 ;; XXX: timed out after 3600 seconds of silence
1016 (substitute* "Makefile"
1017 (("test/fops") ""))
1018 #t)))))
1019 (inputs
1020 `(("lz4" ,lz4)
1021 ("zlib" ,zlib)))
1022 (home-page "http://source.wiredtiger.com/")
1023 (synopsis "NoSQL data engine")
1024 (description
1025 "WiredTiger is an extensible platform for data management. It supports
1026row-oriented storage (where all columns of a row are stored together),
1027column-oriented storage (where columns are stored in groups, allowing for
1028more efficient access and storage of column subsets) and log-structured merge
1029trees (LSM), for sustained throughput under random insert workloads.")
1030 (license gpl3) ; or GPL-2
1031 ;; configure.ac: WiredTiger requires a 64-bit build.
1032 (supported-systems '("x86_64-linux" "mips64el-linux"))))