services: avahi: Add Avahi to the system profile.
[guix.git] / gnu / packages / databases.scm
blob51e2a3e0586fc1b8c7743f447eebe4b6e50eca52
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
3 ;;; Copyright © 2012, 2014, 2015 Andreas Enge <andreas@enge.fr>
4 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
5 ;;; Copyright © 2014 David Thompson <davet@gnu.org>
6 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
7 ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
8 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
9 ;;;
10 ;;; This file is part of GNU Guix.
11 ;;;
12 ;;; GNU Guix is free software; you can redistribute it and/or modify it
13 ;;; under the terms of the GNU General Public License as published by
14 ;;; the Free Software Foundation; either version 3 of the License, or (at
15 ;;; your option) any later version.
16 ;;;
17 ;;; GNU Guix is distributed in the hope that it will be useful, but
18 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
19 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20 ;;; GNU General Public License for more details.
21 ;;;
22 ;;; You should have received a copy of the GNU General Public License
23 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
25 (define-module (gnu packages databases)
26   #:use-module (gnu packages)
27   #:use-module (gnu packages perl)
28   #:use-module (gnu packages language)
29   #:use-module (gnu packages linux)
30   #:use-module (gnu packages tls)
31   #:use-module (gnu packages compression)
32   #:use-module (gnu packages ncurses)
33   #:use-module (gnu packages readline)
34   #:use-module (gnu packages emacs)
35   #:use-module (gnu packages check)
36   #:use-module (gnu packages algebra)
37   #:use-module (gnu packages curl)
38   #:use-module (gnu packages gnupg)
39   #:use-module (gnu packages python)
40   #:use-module (gnu packages pcre)
41   #:use-module (gnu packages xml)
42   #:use-module (gnu packages bison)
43   #:use-module (gnu packages jemalloc)
44   #:use-module ((guix licenses)
45                 #:select (gpl2 gpl3+ lgpl2.1+ lgpl3+ x11-style non-copyleft
46                           bsd-2 bsd-3 public-domain))
47   #:use-module (guix packages)
48   #:use-module (guix download)
49   #:use-module (guix build-system gnu)
50   #:use-module (guix build-system perl)
51   #:use-module (guix build-system cmake)
52   #:use-module (guix utils)
53   #:use-module (srfi srfi-26)
54   #:use-module (ice-9 match))
56 (define-public gdbm
57   (package
58     (name "gdbm")
59     (version "1.11")
60     (source (origin
61               (method url-fetch)
62               (uri (string-append "mirror://gnu/gdbm/gdbm-"
63                                   version ".tar.gz"))
64               (sha256
65                (base32
66                 "1hz3jgh3pd4qzp6jy0l8pd8x01g9abw7csnrlnj1a2sxy122z4cd"))))
67     (arguments `(#:configure-flags '("--enable-libgdbm-compat")))
68     (build-system gnu-build-system)
69     (home-page "http://www.gnu.org/software/gdbm/")
70     (synopsis
71      "Hash library of database functions compatible with traditional dbm")
72     (description
73      "GDBM is a library for manipulating hashed databases.  It is used to
74 store key/value pairs in a file in a manner similar to the Unix dbm library
75 and provides interfaces to the traditional file format.")
76     (license gpl3+)))
78 (define-public bdb
79   (package
80     (name "bdb")
81     (version "5.3.21")
82     (source (origin
83               (method url-fetch)
84               (uri (string-append "http://download.oracle.com/berkeley-db/db-" version
85                                   ".tar.gz"))
86               (sha256 (base32
87                        "1f2g2612lf8djbwbwhxsvmffmf9d7693kh2l20195pqp0f9jmnfx"))))
88     (build-system gnu-build-system)
89     (outputs '("out"                             ; programs, libraries, headers
90                "doc"))                           ; 94 MiB of HTML docs
91     (arguments
92      '(#:tests? #f                            ; no check target available
93        #:phases
94        (alist-replace
95         'configure
96         (lambda* (#:key outputs #:allow-other-keys)
97           (let ((out (assoc-ref outputs "out"))
98                 (doc (assoc-ref outputs "doc")))
99             ;; '--docdir' is not honored, so we need to patch.
100             (substitute* "dist/Makefile.in"
101               (("docdir[[:blank:]]*=.*")
102                (string-append "docdir = " doc "/share/doc/bdb")))
104             (zero?
105              (system* "./dist/configure"
106                       (string-append "--prefix=" out)
107                       (string-append "CONFIG_SHELL=" (which "bash"))
108                       (string-append "SHELL=" (which "bash"))
110                       ;; The compatibility mode is needed by some packages,
111                       ;; notably iproute2.
112                       "--enable-compat185"
114                       ;; The following flag is needed so that the inclusion
115                       ;; of db_cxx.h into C++ files works; it leads to
116                       ;; HAVE_CXX_STDHEADERS being defined in db_cxx.h.
117                       "--enable-cxx"))))
118                  %standard-phases)))
119     (synopsis "Berkeley database")
120     (description
121      "Berkeley DB is an embeddable database allowing developers the choice of
122 SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
123     (license (non-copyleft "file://LICENSE"
124                            "See LICENSE in the distribution."))
125     (home-page
126      "http://www.oracle.com/us/products/database/berkeley-db/overview/index.html")))
128 (define-public mysql
129   (package
130     (name "mysql")
131     (version "5.6.25")
132     (source (origin
133              (method url-fetch)
134              (uri (string-append
135                    "http://dev.mysql.com/get/Downloads/MySQL-"
136                    (version-major+minor version) "/"
137                    name "-" version ".tar.gz"))
138              (sha256
139               (base32
140                "1gbz5i1z3nswpq3q8f477vrx7g15j8n41pyb94k0jfnkhc5rq1qm"))))
141     (build-system cmake-build-system)
142     (arguments
143      '(#:configure-flags
144        '("-DBUILD_CONFIG=mysql_release"
145          "-DWITH_SSL=system"
146          "-DWITH_ZLIB=system"
147          "-DDEFAULT_CHARSET=utf8"
148          "-DDEFAULT_COLLATION=utf8_general_ci"
149          "-DMYSQL_DATADIR=/var/lib/mysql"
150          "-DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock"
151          "-DINSTALL_INFODIR=share/mysql/docs"
152          "-DINSTALL_MANDIR=share/man"
153          "-DINSTALL_PLUGINDIR=lib/mysql/plugin"
154          "-DINSTALL_SCRIPTDIR=bin"
155          "-DINSTALL_INCLUDEDIR=include/mysql"
156          "-DINSTALL_DOCREADMEDIR=share/mysql/docs"
157          "-DINSTALL_SUPPORTFILESDIR=share/mysql"
158          "-DINSTALL_MYSQLSHAREDIR=share/mysql"
159          "-DINSTALL_DOCDIR=share/mysql/docs"
160          "-DINSTALL_SHAREDIR=share/mysql"
161          ;; Get rid of test data.
162          "-DINSTALL_MYSQLTESTDIR="
163          "-DINSTALL_SQLBENCHDIR=")
164        #:phases (modify-phases %standard-phases
165                   (add-after
166                    'install 'strip-extra-references
167                    (lambda* (#:key outputs #:allow-other-keys)
168                      ;; Strip references to GCC and other build-time
169                      ;; dependencies.
170                      (let ((out (assoc-ref outputs "out")))
171                        (for-each remove-store-references
172                                  (list (string-append out "/bin/mysqlbug")
173                                        (string-append
174                                         out "/share/mysql/docs/INFO_BIN")))
175                        #t)))
176                   (add-after
177                    'install 'remove-extra-binaries
178                    (lambda* (#:key outputs #:allow-other-keys)
179                      (let ((out (assoc-ref outputs "out")))
180                        ;; Remove the 3 *_embedded files, which weigh in at
181                        ;; 14 MiB each.
182                        (for-each delete-file
183                                  (find-files (string-append out "/bin")
184                                              "_embedded$"))
185                        #t))))))
186     (native-inputs
187      `(("bison" ,bison)
188        ("perl" ,perl)))
189     (inputs
190      `(("libaio" ,libaio)
191        ("openssl" ,openssl)
192        ("zlib" ,zlib)
193        ("ncurses" ,ncurses)))
194     (home-page "http://www.mysql.com/")
195     (synopsis "Fast, easy to use, and popular database")
196     (description
197      "MySQL is a fast, reliable, and easy to use relational database
198 management system that supports the standardized Structured Query
199 Language.")
200     (license gpl2)))
202 (define-public mariadb
203   (package
204     (name "mariadb")
205     (version "10.0.20")
206     (source (origin
207               (method url-fetch)
208               (uri (string-append "https://downloads.mariadb.org/f/"
209                                   name "-" version "/source/"
210                                   name "-" version ".tar.gz"))
211               (sha256
212                (base32
213                 "0ywb730l68mxvmpik1x2ndbdaaks6dmc17pxspspm5wlqxinjkrs"))))
214     (build-system cmake-build-system)
215     (arguments
216      '(#:configure-flags
217        '("-DBUILD_CONFIG=mysql_release"
218          "-DDEFAULT_CHARSET=utf8"
219          "-DDEFAULT_COLLATION=utf8_general_ci"
220          "-DMYSQL_DATADIR=/var/lib/mysql"
221          "-DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock"
222          "-DINSTALL_INFODIR=share/mysql/docs"
223          "-DINSTALL_MANDIR=share/man"
224          "-DINSTALL_PLUGINDIR=lib/mysql/plugin"
225          "-DINSTALL_SCRIPTDIR=bin"
226          "-DINSTALL_INCLUDEDIR=include/mysql"
227          "-DINSTALL_DOCREADMEDIR=share/mysql/docs"
228          "-DINSTALL_SUPPORTFILESDIR=share/mysql/support-files"
229          "-DINSTALL_MYSQLSHAREDIR=share/mysql"
230          "-DINSTALL_DOCDIR=share/mysql/docs"
231          "-DINSTALL_SHAREDIR=share/mysql")
232        #:phases
233        (modify-phases %standard-phases
234          (add-before
235           'configure 'pre-configure
236           (lambda _
237             (setenv "CONFIG_SHELL" (which "sh"))
238             #t))
239          (add-after
240           'install 'post-install
241           (lambda* (#:key outputs #:allow-other-keys)
242             (let* ((out     (assoc-ref outputs "out"))
243                    (test    (assoc-ref outputs "test")))
244               (substitute* (string-append out "/bin/mysql_install_db")
245                 (("basedir=\"\"")
246                  (string-append "basedir=\"" out "\"")))
247               ;; Remove unneeded files for testing.
248               (with-directory-excursion out
249                 (for-each delete-file-recursively
250                           '("data" "mysql-test" "sql-bench"
251                             "share/man/man1/mysql-test-run.pl.1")))))))))
252     (native-inputs
253      `(("bison" ,bison)
254        ("perl" ,perl)))
255     (inputs
256      `(("jemalloc" ,jemalloc)
257        ("libaio" ,libaio)
258        ("libxml2" ,libxml2)
259        ("ncurses" ,ncurses)
260        ("openssl" ,openssl)
261        ("pcre" ,pcre)
262        ("zlib" ,zlib)))
263     (home-page "https://mariadb.org/")
264     (synopsis "SQL database server")
265     (description
266      "MariaDB is a multi-user and multi-threaded SQL database server, designed
267 as a drop-in replacement of MySQL.")
268     (license gpl2)))
270 (define-public postgresql
271   (package
272     (name "postgresql")
273     (version "9.3.8")
274     (source (origin
275               (method url-fetch)
276               (uri (string-append "http://ftp.postgresql.org/pub/source/v"
277                                   version "/postgresql-" version ".tar.bz2"))
278               (sha256
279                (base32
280                 "1ymd98szvx12gyjdb9gr2hlkrb5bjx7mcshqq3xzdifzapkkqp5w"))))
281     (build-system gnu-build-system)
282     (inputs
283      `(("readline" ,readline)
284        ("zlib" ,zlib)))
285     (home-page "http://www.postgresql.org/")
286     (synopsis "Powerful object-relational database system")
287     (description
288      "PostgreSQL is a powerful object-relational database system.  It is fully
289 ACID compliant, has full support for foreign keys, joins, views, triggers, and
290 stored procedures (in multiple languages).  It includes most SQL:2008 data
291 types, including INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE, INTERVAL, and
292 TIMESTAMP.  It also supports storage of binary large objects, including
293 pictures, sounds, or video.")
294     (license (x11-style "file://COPYRIGHT"))))
296 (define-public recutils
297   (package
298     (name "recutils")
299     (version "1.7")
300     (source (origin
301               (method url-fetch)
302               (uri (string-append "mirror://gnu/recutils/recutils-"
303                                   version ".tar.gz"))
304               (sha256
305                (base32
306                 "0cdwa4094x3yx7vn98xykvnlp9rngvd58d19vs3vh5hrvggccg93"))))
307     (build-system gnu-build-system)
309     ;; Running tests in parallel leads to test failures and crashes in
310     ;; torture/utils.
311     (arguments '(#:parallel-tests? #f))
313     (native-inputs `(("emacs" ,emacs-no-x)
314                      ("bc" ,bc)
315                      ("libuuid", util-linux)))
317     ;; TODO: Add more optional inputs.
318     ;; FIXME: Our Bash doesn't have development headers (need for the 'readrec'
319     ;; built-in command), but it's not clear how to get them installed.
320     ;; See <https://lists.gnu.org/archive/html/bug-bash/2014-03/msg00125.html>.
321     (inputs `(("curl" ,curl)
322               ("libgcrypt" ,libgcrypt)
323               ("check" ,check)))
324     (synopsis "Manipulate plain text files as databases")
325     (description
326      "GNU Recutils is a set of tools and libraries for creating and
327 manipulating text-based, human-editable databases.  Despite being text-based,
328 databases created with Recutils carry all of the expected features such as
329 unique fields, primary keys, time stamps and more.  Many different field
330 types are supported, as is encryption.")
331     (license gpl3+)
332     (home-page "http://www.gnu.org/software/recutils/")))
334 (define-public sqlite
335   (package
336    (name "sqlite")
337    (version "3.8.11.1")
338    (source (origin
339             (method url-fetch)
340             ;; TODO: Download from sqlite.org once this bug :
341             ;; http://lists.gnu.org/archive/html/bug-guile/2013-01/msg00027.html
342             ;; has been fixed.
343             (uri (let ((numeric-version
344                         (match (string-split version #\.)
345                           ((first-digit other-digits ...)
346                            (string-append first-digit
347                                           (string-pad-right
348                                            (string-concatenate
349                                             (map (cut string-pad <> 2 #\0)
350                                                  other-digits))
351                                            6 #\0))))))
352                    (list
353                     (string-append
354                      "https://fossies.org/linux/misc/sqlite-autoconf-"
355                      numeric-version ".tar.gz")
356                     (string-append
357                      "http://distfiles.gentoo.org/distfiles/"
358                      "/sqlite-autoconf-" numeric-version ".tar.gz"))
360                    ;; XXX: As of 2015-09-08, SourceForge is squatting the URL
361                    ;; below, returning 200 and showing an advertising page.
362                    ;; (string-append
363                    ;;  "mirror://sourceforge/sqlite.mirror/SQLite%20" version
364                    ;;  "/sqlite-autoconf-" numeric-version ".tar.gz")
365                    ))
366             (sha256
367              (base32
368               "1dnkl4qr1dgaprbyf3jddfiynkhxnin86qabni47wjlc0fnb16gv"))))
369    (build-system gnu-build-system)
370    (inputs `(("readline" ,readline)))
371    (arguments
372     `(#:configure-flags
373       ;; Add -DSQLITE_SECURE_DELETE and -DSQLITE_ENABLE_UNLOCK_NOTIFY to
374       ;; CFLAGS.  GNU Icecat will refuse to use the system SQLite unless these
375       ;; options are enabled.
376       '("CFLAGS=-O2 -DSQLITE_SECURE_DELETE -DSQLITE_ENABLE_UNLOCK_NOTIFY")))
377    (home-page "http://www.sqlite.org/")
378    (synopsis "The SQLite database management system")
379    (description
380     "SQLite is a software library that implements a self-contained, serverless,
381 zero-configuration, transactional SQL database engine.  SQLite is the most
382 widely deployed SQL database engine in the world.  The source code for SQLite
383 is in the public domain.")
384    (license public-domain)))
386 (define-public tdb
387   (package
388     (name "tdb")
389     (version "1.3.0")
390     (source (origin
391               (method url-fetch)
392               (uri (string-append "http://samba.org/ftp/tdb/tdb-"
393                                   version ".tar.gz"))
394               (sha256
395                (base32
396                 "085sd2kii72fr0c4pdc7c7m0xk34nc66wnjp21c83dss826y9gh4"))))
397     (build-system gnu-build-system)
398     (arguments
399      '(#:phases (alist-replace
400                  'configure
401                  (lambda* (#:key outputs #:allow-other-keys)
402                    (let ((out (assoc-ref outputs "out")))
403                      ;; The 'configure' script is a wrapper for Waf and
404                      ;; doesn't recognize things like '--enable-fast-install'.
405                      (zero? (system* "./configure"
406                                      (string-append "--prefix=" out)))))
407                  %standard-phases)))
408     (native-inputs
409      `(;; TODO: Build the documentation.
410        ;; ("docbook-xsl" ,docbook-xsl)
411        ;; ("libxml2" ,libxml2)
412        ;; ("libxslt" ,libxslt)
413        ("python" ,python-2)))                     ;for the Waf build system
414     (home-page "http://tdb.samba.org/")
415     (synopsis "Trivial database")
416     (description
417      "TDB is a Trivial Database.  In concept, it is very much like GDBM,
418 and BSD's DB except that it allows multiple simultaneous writers and uses
419 locking internally to keep writers from trampling on each other.  TDB is also
420 extremely small.")
421     (license lgpl3+)))
423 (define-public perl-dbi
424   (package
425     (name "perl-dbi")
426     (version "1.631")
427     (source (origin
428               (method url-fetch)
429               (uri (string-append
430                     "mirror://cpan/authors/id/T/TI/TIMB/DBI-"
431                     version ".tar.gz"))
432               (sha256
433                (base32
434                 "04fmrnchhwi7jx4niaiv93vmi343hdm3xj04w9zr2m9hhqh782np"))))
435     (build-system perl-build-system)
436     (synopsis "Database independent interface for Perl")
437     (description "This package provides an database interface for Perl.")
438     (home-page "http://search.cpan.org/~timb/DBI-1.631/DBI.pm")
439     (license (package-license perl))))
441 (define-public perl-dbix-class
442   (package
443     (name "perl-dbix-class")
444     (version "0.082810")
445     (source
446      (origin
447        (method url-fetch)
448        (uri (string-append "mirror://cpan/authors/id/R/RI/RIBASUSHI/"
449                            "DBIx-Class-" version ".tar.gz"))
450        (sha256
451         (base32
452          "1zlsswk8j2k024gwhdhia8ksrmb8065n98dahkk8c0r69wv85n04"))))
453     (build-system perl-build-system)
454     (native-inputs
455      `(("perl-dbd-sqlite" ,perl-dbd-sqlite)
456        ("perl-file-temp" ,perl-file-temp)
457        ("perl-package-stash" ,perl-package-stash)
458        ("perl-test-deep" ,perl-test-deep)
459        ("perl-test-exception" ,perl-test-exception)
460        ("perl-test-warn" ,perl-test-warn)))
461     (propagated-inputs
462      `(("perl-class-accessor-grouped" ,perl-class-accessor-grouped)
463        ("perl-class-c3-componentised" ,perl-class-c3-componentised)
464        ("perl-class-inspector" ,perl-class-inspector)
465        ("perl-config-any" ,perl-config-any)
466        ("perl-context-preserve" ,perl-context-preserve)
467        ("perl-data-dumper-concise" ,perl-data-dumper-concise)
468        ("perl-data-page" ,perl-data-page)
469        ("perl-dbi" ,perl-dbi)
470        ("perl-devel-globaldestruction" ,perl-devel-globaldestruction)
471        ("perl-hash-merge" ,perl-hash-merge)
472        ("perl-module-find" ,perl-module-find)
473        ("perl-moo" ,perl-moo)
474        ("perl-mro-compat" ,perl-mro-compat)
475        ("perl-namespace-clean" ,perl-namespace-clean)
476        ("perl-path-class" ,perl-path-class)
477        ("perl-scalar-list-utils" ,perl-scalar-list-utils)
478        ("perl-scope-guard" ,perl-scope-guard)
479        ("perl-sql-abstract" ,perl-sql-abstract)
480        ("perl-sub-name" ,perl-sub-name)
481        ("perl-text-balanced" ,perl-text-balanced)
482        ("perl-try-tiny" ,perl-try-tiny)))
483     (home-page "http://search.cpan.org/dist/DBIx-Class")
484     (synopsis "Extensible and flexible object <-> relational mapper")
485     (description "An SQL to OO mapper with an object API inspired by
486 Class::DBI (with a compatibility layer as a springboard for porting) and a
487 resultset API that allows abstract encapsulation of database operations.  It
488 aims to make representing queries in your code as perl-ish as possible while
489 still providing access to as many of the capabilities of the database as
490 possible, including retrieving related records from multiple tables in a
491 single query, \"JOIN\", \"LEFT JOIN\", \"COUNT\", \"DISTINCT\", \"GROUP BY\",
492 \"ORDER BY\" and \"HAVING\" support.")
493     (license (package-license perl))))
495 (define-public perl-dbix-class-cursor-cached
496   (package
497     (name "perl-dbix-class-cursor-cached")
498     (version "1.001002")
499     (source
500      (origin
501        (method url-fetch)
502        (uri (string-append "mirror://cpan/authors/id/A/AR/ARCANEZ/"
503                            "DBIx-Class-Cursor-Cached-" version ".tar.gz"))
504        (sha256
505         (base32
506          "19r7jr6pknxiirrybq0cd0lnr76xiw05arnfqgk9nrhp6c7vvil0"))))
507     (build-system perl-build-system)
508     (native-inputs
509      `(("perl-cache-cache" ,perl-cache-cache)
510        ("perl-dbd-sqlite" ,perl-dbd-sqlite)))
511     (propagated-inputs
512      `(("perl-carp-clan" ,perl-carp-clan)
513        ("perl-dbix-class" ,perl-dbix-class)))
514     (home-page "http://search.cpan.org/dist/DBIx-Class-Cursor-Cached")
515     (synopsis "Cursor with built-in caching support")
516     (description "DBIx::Class::Cursor::Cached provides a cursor class with
517 built-in caching support.")
518     (license (package-license perl))))
520 (define-public perl-dbix-class-introspectablem2m
521   (package
522     (name "perl-dbix-class-introspectablem2m")
523     (version "0.001001")
524     (source
525      (origin
526        (method url-fetch)
527        (uri (string-append "mirror://cpan/authors/id/G/GR/GRODITI/"
528                            "DBIx-Class-IntrospectableM2M-" version ".tar.gz"))
529        (sha256
530         (base32
531          "0p9zx1yc1f6jg583l206wilsni2v8mlngc2vf2q8yn10pmy4y6wm"))))
532     (build-system perl-build-system)
533     (propagated-inputs
534      `(("perl-dbix-class" ,perl-dbix-class)))
535     (home-page "http://search.cpan.org/dist/DBIx-Class-IntrospectableM2M")
536     (synopsis "Introspect many-to-many relationships")
537     (description "Because the many-to-many relationships are not real
538 relationships, they can not be introspected with DBIx::Class.  Many-to-many
539 relationships are actually just a collection of convenience methods installed
540 to bridge two relationships.  This DBIx::Class component can be used to store
541 all relevant information about these non-relationships so they can later be
542 introspected and examined.")
543     (license (package-license perl))))
545 (define-public perl-dbix-class-schema-loader
546   (package
547     (name "perl-dbix-class-schema-loader")
548     (version "0.07042")
549     (source
550      (origin
551        (method url-fetch)
552        (uri (string-append "mirror://cpan/authors/id/I/IL/ILMARI/"
553                            "DBIx-Class-Schema-Loader-" version ".tar.gz"))
554        (sha256
555         (base32
556          "0sb48as7azmj6s4acxh98wcvcik7lxm7dcjz1c3wdrkrbmbbz0jf"))))
557     (build-system perl-build-system)
558     (native-inputs
559      `(("perl-config-any" ,perl-config-any)
560        ("perl-config-general" ,perl-config-general)
561        ("perl-dbd-sqlite" ,perl-dbd-sqlite)
562        ("perl-dbix-class-introspectablem2m" ,perl-dbix-class-introspectablem2m)
563        ("perl-moose" ,perl-moose)
564        ("perl-moosex-markasmethods" ,perl-moosex-markasmethods)
565        ("perl-moosex-nonmoose" ,perl-moosex-nonmoose)
566        ("perl-namespace-autoclean" ,perl-namespace-autoclean)
567        ("perl-test-deep" ,perl-test-deep)
568        ("perl-test-differences" ,perl-test-differences)
569        ("perl-test-exception" ,perl-test-exception)
570        ("perl-test-pod" ,perl-test-pod)
571        ("perl-test-warn" ,perl-test-warn)))
572     (propagated-inputs
573      `(("perl-class-unload" ,perl-class-unload)
574        ("perl-class-inspector" ,perl-class-inspector)
575        ("perl-class-accessor-grouped" ,perl-class-accessor-grouped)
576        ("perl-class-c3-componentised" ,perl-class-c3-componentised)
577        ("perl-carp-clan" ,perl-carp-clan)
578        ("perl-data-dump" ,perl-data-dump)
579        ("perl-dbix-class" ,perl-dbix-class)
580        ("perl-hash-merge" ,perl-hash-merge)
581        ("perl-list-moreutils" ,perl-list-moreutils)
582        ("perl-lingua-en-inflect-phrase" ,perl-lingua-en-inflect-phrase)
583        ("perl-lingua-en-inflect-number" ,perl-lingua-en-inflect-number)
584        ("perl-lingua-en-tagger" ,perl-lingua-en-tagger)
585        ("perl-namespace-clean" ,perl-namespace-clean)
586        ("perl-mro-compat" ,perl-mro-compat)
587        ("perl-scope-guard" ,perl-scope-guard)
588        ("perl-string-camelcase" ,perl-string-camelcase)
589        ("perl-string-toidentifier-en" ,perl-string-toidentifier-en)
590        ("perl-sub-name" ,perl-sub-name)
591        ("perl-try-tiny" ,perl-try-tiny)))
592     (arguments `(#:tests? #f))          ;TODO: t/20invocations.t fails
593     (home-page "http://search.cpan.org/dist/DBIx-Class-Schema-Loader")
594     (synopsis "Create a DBIx::Class::Schema based on a database")
595     (description "DBIx::Class::Schema::Loader automates the definition of a
596 DBIx::Class::Schema by scanning database table definitions and setting up the
597 columns, primary keys, unique constraints and relationships.")
598     (license (package-license perl))))
600 (define-public perl-dbd-pg
601   (package
602     (name "perl-dbd-pg")
603     (version "3.5.1")
604     (source
605      (origin
606        (method url-fetch)
607        (uri (string-append "mirror://cpan/authors/id/T/TU/TURNSTEP/"
608                            "DBD-Pg-" version ".tar.gz"))
609        (sha256
610         (base32
611          "0z0kf1kjgbi5f6nr63i2fnrx7629d9lvxg1q8sficwb3zdf1ggzx"))))
612     (build-system perl-build-system)
613     (native-inputs
614      `(("perl-dbi" ,perl-dbi)))
615     (propagated-inputs
616      `(("perl-dbi" ,perl-dbi)
617        ("postgresql" ,postgresql)))
618     (home-page "http://search.cpan.org/dist/DBD-Pg")
619     (synopsis "DBI PostgreSQL interface")
620     (description "")
621     (license (package-license perl))))
623 (define-public perl-dbd-sqlite
624   (package
625     (name "perl-dbd-sqlite")
626     (version "1.42")
627     (source (origin
628               (method url-fetch)
629               (uri (string-append
630                     "mirror://cpan/authors/id/I/IS/ISHIGAKI/DBD-SQLite-"
631                     version ".tar.gz"))
632               (sha256
633                (base32
634                 "14x9cjsc8dz8ad1nad0bqiq9cbk1rjfb8h5y0rpk3pdl38y6afxb"))))
635     (build-system perl-build-system)
636     (inputs `(("sqlite" ,sqlite)))
637     (propagated-inputs `(("perl-dbi" ,perl-dbi)))
638     (synopsis "SQlite interface for Perl")
639     (description "DBD::SQLite is a Perl DBI driver for SQLite, that includes
640 the entire thing in the distribution.  So in order to get a fast transaction
641 capable RDBMS working for your Perl project you simply have to install this
642 module, and nothing else.")
643     (license (package-license perl))
644     (home-page "http://search.cpan.org/~ishigaki/DBD-SQLite/lib/DBD/SQLite.pm")))
646 (define-public perl-sql-abstract
647   (package
648     (name "perl-sql-abstract")
649     (version "1.81")
650     (source
651      (origin
652        (method url-fetch)
653        (uri (string-append "mirror://cpan/authors/id/R/RI/RIBASUSHI/"
654                            "SQL-Abstract-" version ".tar.gz"))
655        (sha256
656         (base32
657          "17sgwq3mvqjhv3b77cnvrq60xgp8harjhlnvpwmxc914rqc5ckaz"))))
658     (build-system perl-build-system)
659     (native-inputs
660      `(("perl-test-deep" ,perl-test-deep)
661        ("perl-test-exception" ,perl-test-exception)
662        ("perl-test-warn" ,perl-test-warn)))
663     (propagated-inputs
664      `(("perl-hash-merge" ,perl-hash-merge)
665        ("perl-moo" ,perl-moo)
666        ("perl-mro-compat" ,perl-mro-compat)
667        ("perl-text-balanced" ,perl-text-balanced)))
668     (home-page "http://search.cpan.org/dist/SQL-Abstract")
669     (synopsis "Generate SQL from Perl data structures")
670     (description "This module was inspired by the excellent DBIx::Abstract.
671 While based on the concepts used by DBIx::Abstract, the concepts used have
672 been modified to make the SQL easier to generate from Perl data structures.
673 The underlying idea is for this module to do what you mean, based on the data
674 structures you provide it, so that you don't have to modify your code every
675 time your data changes.")
676     (license (package-license perl))))
678 (define-public perl-sql-splitstatement
679   (package
680     (name "perl-sql-splitstatement")
681     (version "1.00020")
682     (source
683      (origin
684        (method url-fetch)
685        (uri (string-append "mirror://cpan/authors/id/E/EM/EMAZEP/"
686                            "SQL-SplitStatement-" version ".tar.gz"))
687        (sha256
688         (base32
689          "0bqg45k4c9qkb2ypynlwhpvzsl4ssfagmsalys18s5c79ps30z7p"))))
690     (build-system perl-build-system)
691     (native-inputs
692      `(("perl-test-exception" ,perl-test-exception)))
693     (propagated-inputs
694      `(("perl-class-accessor" ,perl-class-accessor)
695        ("perl-list-moreutils" ,perl-list-moreutils)
696        ("perl-regexp-common" ,perl-regexp-common)
697        ("perl-sql-tokenizer" ,perl-sql-tokenizer)))
698     (home-page "http://search.cpan.org/dist/SQL-SplitStatement")
699     (synopsis "Split SQL code into atomic statements")
700     (description "This module tries to split any SQL code, even including
701 non-standard extensions, into the atomic statements it is composed of.")
702     (license (package-license perl))))
704 (define-public perl-sql-tokenizer
705   (package
706     (name "perl-sql-tokenizer")
707     (version "0.24")
708     (source
709      (origin
710        (method url-fetch)
711        (uri (string-append "mirror://cpan/authors/id/I/IZ/IZUT/"
712                            "SQL-Tokenizer-" version ".tar.gz"))
713        (sha256
714         (base32
715          "1qa2dfbzdlr5qqdam9yn78z5w3al5r8577x06qan8wv58ay6ka7s"))))
716     (build-system perl-build-system)
717     (home-page "http://search.cpan.org/dist/SQL-Tokenizer")
718     (synopsis "SQL tokenizer")
719     (description "SQL::Tokenizer is a tokenizer for SQL queries.  It does not
720 claim to be a parser or query verifier.  It just creates sane tokens from a
721 valid SQL query.")
722     (license (package-license perl))))
724 (define-public unixodbc
725   (package
726    (name "unixodbc")
727    (version "2.3.2")
728    (source (origin
729             (method url-fetch)
730             (uri
731              (string-append
732               "ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-" version ".tar.gz"))
733             (sha256
734              (base32 "16jw5fq7wgfky6ak1h2j2pqx99jivsdl4q8aq6immpr55xs5jd4w"))))
735    (build-system gnu-build-system)
736    (synopsis "Data source abstraction library")
737    (description "Unixodbc is a library providing an API with which to access
738 data sources.  Data sources include SQL Servers and any software with an ODBC
739 Driver.")
740    (license lgpl2.1+)
741    ;; COPYING contains copy of lgpl2.1 - but copyright notices just say "LGPL"
742    (home-page "http://www.unixodbc.org")))
744 (define-public unqlite
745   (package
746     (name "unqlite")
747     (version "1.1.6")
748     (source (origin
749               (method url-fetch)
750               ;; Contains bug fixes against the official release, and has an
751               ;; autotooled build system.
752               (uri (string-append "https://github.com/aidin36/tocc/releases/"
753                                   "download/v1.0.0/"
754                                   "unqlite-unofficial-" version ".tar.gz"))
755               (sha256
756                (base32
757                 "1sbpvhg15gadq0mpcy16q7k3rkg4b4dicpnn5xifpkpn02sqik3s"))))
758     (build-system gnu-build-system)
759     (arguments `(#:tests? #f))          ;No check target
760     (home-page "http://www.unqlite.org")
761     (synopsis "In-memory key/value and document store")
762     (description
763      "UnQLite is an in-process software library which implements a
764 self-contained, serverless, zero-configuration, transactional NoSQL
765 database engine.  UnQLite is a document store database similar to
766 MongoDB, Redis, CouchDB, etc. as well as a standard Key/Value store
767 similar to BerkeleyDB, LevelDB, etc.")
768     (license bsd-2)))
770 (define-public redis
771   (package
772     (name "redis")
773     (version "3.0.4")
774     (source (origin
775               (method url-fetch)
776               (uri (string-append "http://download.redis.io/releases/redis-"
777                                   version".tar.gz"))
778               (sha256
779                (base32
780                 "1kqjc4qrasadgnl3cg71x3g5qpw2rilyk4pwl151698rb2nr0pm3"))))
781     (build-system gnu-build-system)
782     (arguments
783      '(#:tests? #f ; tests related to master/slave and replication fail
784        #:phases (modify-phases %standard-phases
785                   (delete 'configure))
786        #:make-flags `("CC=gcc"
787                       "MALLOC=libc"
788                       ,(string-append "PREFIX="
789                                       (assoc-ref %outputs "out")))))
790     (synopsis "Key-value cache and store")
791     (description "Redis is an advanced key-value cache and store.  Redis
792 supports many data structures including strings, hashes, lists, sets, sorted
793 sets, bitmaps and hyperloglogs.")
794     (home-page "http://redis.io/")
795     (license bsd-3)))