container: Gracefully report mount errors in the child process.
[jackhill/guix/guix.git] / gnu / packages / databases.scm
index b22f0c7..7e0188b 100644 (file)
@@ -1,11 +1,15 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2012, 2014 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2012, 2014, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
-;;; Copyright © 2014 David Thompson <davet@gnu.org>
-;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2016 David Thompson <davet@gnu.org>
+;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
+;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016 Nils Gillmann <niasterisk@grrlz.net>
+;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
 
 (define-module (gnu packages databases)
   #:use-module (gnu packages)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages avahi)
+  #:use-module (gnu packages bash)
+  #:use-module (gnu packages boost)
+  #:use-module (gnu packages gettext)
+  #:use-module (gnu packages glib)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages language)
   #:use-module (gnu packages linux)
-  #:use-module (gnu packages openssl)
+  #:use-module (gnu packages tls)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages check)
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages curl)
+  #:use-module (gnu packages cyrus-sasl)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages python)
   #:use-module (gnu packages pcre)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages rdf)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages jemalloc)
   #:use-module ((guix licenses)
-                #:select (gpl2 gpl3+ lgpl2.1+ lgpl3+ x11-style non-copyleft
-                          bsd-2 public-domain))
+                #:select (gpl2 gpl3 gpl3+ lgpl2.1+ lgpl3+ x11-style non-copyleft
+                          bsd-2 bsd-3 public-domain))
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system perl)
   #:use-module (guix build-system cmake)
+  #:use-module (guix utils)
   #:use-module (srfi srfi-26)
   #:use-module (ice-9 match))
 
+(define-public 4store
+  (package
+    (name "4store")
+    (version "1.1.6")
+    (source (origin
+      (method url-fetch)
+      (uri (string-append "https://github.com/garlik/4store/archive/v"
+                          version ".tar.gz"))
+      (file-name (string-append name "-" version ".tar.gz"))
+      (sha256
+       (base32 "004fmcf1w75zhc1x3zc6kc97j4jqn2v5nhk6yb3z3cpfrhzi9j50"))
+      (patches (list (search-patch "4store-fix-buildsystem.patch")))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("perl" ,perl)
+       ("python" ,python-2)
+       ("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("gettext" ,gnu-gettext)
+       ("libtool" ,libtool)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("glib" ,glib)
+       ("rasqal" ,rasqal)
+       ("libxml2" ,libxml2)
+       ("raptor2" ,raptor2)
+       ("readline" ,readline)
+       ("avahi" ,avahi)
+       ("pcre" ,pcre)
+       ("cyrus-sasl" ,cyrus-sasl)
+       ("openssl" ,openssl)
+       ("util-linux" ,util-linux)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'generate-configure
+           (lambda _
+             (zero? (system* "./autogen.sh")))))))
+    ;; http://www.4store.org has been down for a while now.
+    (home-page "https://github.com/garlik/4store")
+    (synopsis "Clustered RDF storage and query engine")
+    (description "4store is a RDF/SPARQL store written in C, supporting
+either single machines or networked clusters.")
+      (license gpl3+)))
+
+(define-public gdbm
+  (package
+    (name "gdbm")
+    (version "1.11")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/gdbm/gdbm-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1hz3jgh3pd4qzp6jy0l8pd8x01g9abw7csnrlnj1a2sxy122z4cd"))))
+    (arguments `(#:configure-flags '("--enable-libgdbm-compat")))
+    (build-system gnu-build-system)
+    (home-page "http://www.gnu.org/software/gdbm/")
+    (synopsis
+     "Hash library of database functions compatible with traditional dbm")
+    (description
+     "GDBM is a library for manipulating hashed databases.  It is used to
+store key/value pairs in a file in a manner similar to the Unix dbm library
+and provides interfaces to the traditional file format.")
+    (license gpl3+)))
+
 (define-public bdb
   (package
     (name "bdb")
                "doc"))                           ; 94 MiB of HTML docs
     (arguments
      '(#:tests? #f                            ; no check target available
-                #:phases
-                (alist-replace
-                 'configure
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   (let ((out (assoc-ref outputs "out"))
-                         (doc (assoc-ref outputs "doc")))
-                     ;; '--docdir' is not honored, so we need to patch.
-                     (substitute* "dist/Makefile.in"
-                       (("docdir[[:blank:]]*=.*")
-                        (string-append "docdir = " doc "/share/doc/bdb")))
-
-                     (zero?
-                      (system* "./dist/configure"
-                               (string-append "--prefix=" out)
-                               (string-append "CONFIG_SHELL=" (which "bash"))
-                               (string-append "SHELL=" (which "bash"))
-
-                               ;; The compatibility mode is needed by some packages,
-                               ;; notably iproute2.
-                               "--enable-compat185"))))
+       #:phases
+       (alist-replace
+        'configure
+        (lambda* (#:key outputs #:allow-other-keys)
+          (let ((out (assoc-ref outputs "out"))
+                (doc (assoc-ref outputs "doc")))
+            ;; '--docdir' is not honored, so we need to patch.
+            (substitute* "dist/Makefile.in"
+              (("docdir[[:blank:]]*=.*")
+               (string-append "docdir = " doc "/share/doc/bdb")))
+
+            (zero?
+             (system* "./dist/configure"
+                      (string-append "--prefix=" out)
+                      (string-append "CONFIG_SHELL=" (which "bash"))
+                      (string-append "SHELL=" (which "bash"))
+
+                      ;; The compatibility mode is needed by some packages,
+                      ;; notably iproute2.
+                      "--enable-compat185"
+
+                      ;; The following flag is needed so that the inclusion
+                      ;; of db_cxx.h into C++ files works; it leads to
+                      ;; HAVE_CXX_STDHEADERS being defined in db_cxx.h.
+                      "--enable-cxx"))))
                  %standard-phases)))
     (synopsis "Berkeley database")
     (description
@@ -100,53 +186,68 @@ SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
 (define-public mysql
   (package
     (name "mysql")
-    (version "5.1.73")
+    (version "5.7.12")
     (source (origin
              (method url-fetch)
-             (uri (string-append
-                   "http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-"
-                   version ".tar.gz"))
+             (uri (list (string-append
+                          "http://dev.mysql.com/get/Downloads/MySQL-"
+                          (version-major+minor version) "/"
+                          name "-" version ".tar.gz")
+                        (string-append
+                          "http://downloads.mysql.com/archives/get/file/"
+                          name "-" version ".tar.gz")))
              (sha256
               (base32
-               "1dfwi4ck0vq6sdci6gz0031s7zz5lc3pddqlgm0292s00l9y5sq5"))))
-    (build-system gnu-build-system)
+               "11qwbid666fspq143ymi86yva2b01lybaqh26k92rciasav3r11j"))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:configure-flags
+       '("-DBUILD_CONFIG=mysql_release"
+         "-DWITH_SSL=system"
+         "-DWITH_ZLIB=system"
+         "-DDEFAULT_CHARSET=utf8"
+         "-DDEFAULT_COLLATION=utf8_general_ci"
+         "-DMYSQL_DATADIR=/var/lib/mysql"
+         "-DMYSQL_UNIX_ADDR=/run/mysqld/mysqld.sock"
+         "-DINSTALL_INFODIR=share/mysql/docs"
+         "-DINSTALL_MANDIR=share/man"
+         "-DINSTALL_PLUGINDIR=lib/mysql/plugin"
+         "-DINSTALL_SCRIPTDIR=bin"
+         "-DINSTALL_INCLUDEDIR=include/mysql"
+         "-DINSTALL_DOCREADMEDIR=share/mysql/docs"
+         "-DINSTALL_SUPPORTFILESDIR=share/mysql"
+         "-DINSTALL_MYSQLSHAREDIR=share/mysql"
+         "-DINSTALL_DOCDIR=share/mysql/docs"
+         "-DINSTALL_SHAREDIR=share/mysql"
+         ;; Get rid of test data.
+         "-DINSTALL_MYSQLTESTDIR="
+         "-DINSTALL_SQLBENCHDIR=")
+       #:phases (modify-phases %standard-phases
+                  (add-after
+                   'unpack 'patch-boost-version
+                   (lambda _
+                     ;; Mysql wants boost-1.59.0 specifically
+                     (substitute* "cmake/boost.cmake"
+                                  (("59") "60"))))
+                  (add-after
+                   'install 'remove-extra-binaries
+                   (lambda* (#:key outputs #:allow-other-keys)
+                     (let ((out (assoc-ref outputs "out")))
+                       ;; Remove the 3 *_embedded files, which weigh in at
+                       ;; 14 MiB each.
+                       (for-each delete-file
+                                 (find-files (string-append out "/bin")
+                                             "_embedded$"))
+                       #t))))))
+    (native-inputs
+     `(("bison" ,bison)
+       ("perl" ,perl)))
     (inputs
-     `(("procps" ,procps)
+     `(("boost" ,boost)
+       ("libaio" ,libaio)
+       ("ncurses" ,ncurses)
        ("openssl" ,openssl)
-       ("perl" ,perl)
-       ("zlib" ,zlib)
-       ("ncurses" ,ncurses)))
-    (arguments
-     '(#:modules ((guix build gnu-build-system)
-                  (guix build utils)
-                  (ice-9 ftw))                    ; for "rm -rf"
-       #:phases (alist-cons-after
-                 'install 'clean-up
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   ;; Remove the 112 MiB of tests that get installed.
-                   (let ((out (assoc-ref outputs "out")))
-                     (define (rm-rf dir)
-                       (file-system-fold (const #t) ; enter?
-                                         (lambda (file stat result) ; leaf
-                                           (delete-file file))
-                                         (const #t)               ; down
-                                         (lambda (dir stat result) ; up
-                                           (rmdir dir))
-                                         (const #t)
-                                         (lambda (file stat errno result)
-                                           (format (current-error-port)
-                                                   "error: ~a: ~a~%"
-                                                   file (strerror errno)))
-                                         #t
-                                         (string-append out "/" dir)))
-                     (rm-rf "mysql-test")
-                     (rm-rf "sql-bench")
-
-                     ;; Compress the 14 MiB Info file.
-                     (zero?
-                      (system* "gzip" "--best"
-                               (string-append out "/share/info/mysql.info")))))
-                 %standard-phases)))
+       ("zlib" ,zlib)))
     (home-page "http://www.mysql.com/")
     (synopsis "Fast, easy to use, and popular database")
     (description
@@ -158,7 +259,7 @@ Language.")
 (define-public mariadb
   (package
     (name "mariadb")
-    (version "10.0.17")
+    (version "10.1.12")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://downloads.mariadb.org/f/"
@@ -166,7 +267,7 @@ Language.")
                                   name "-" version ".tar.gz"))
               (sha256
                (base32
-                "04ckq67qgkghh7yzrbzwidk7wn7yjml15gzj2c5p1hs2k7lr9lww"))))
+                "1rzlc2ns84x540asbkgdp9562haxhlszfpdqh64i9pz4q1m4cpvr"))))
     (build-system cmake-build-system)
     (arguments
      '(#:configure-flags
@@ -191,8 +292,6 @@ Language.")
           'configure 'pre-configure
           (lambda _
             (setenv "CONFIG_SHELL" (which "sh"))
-            ;; XXX: libstdc++.so lacks RUNPATH for libgcc_s.so.
-            (setenv "LDFLAGS" "-lgcc_s")
             #t))
          (add-after
           'install 'post-install
@@ -228,15 +327,25 @@ as a drop-in replacement of MySQL.")
 (define-public postgresql
   (package
     (name "postgresql")
-    (version "9.3.5")
+    (version "9.5.3")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://ftp.postgresql.org/pub/source/v"
-                                  version "/postgresql-" version ".tar.gz"))
+              (uri (string-append "https://ftp.postgresql.org/pub/source/v"
+                                  version "/postgresql-" version ".tar.bz2"))
               (sha256
                (base32
-                "08kga00izykgvnx7hn995wc4zjqslspapaa8z63045p1ya14mr4g"))))
+                "1d500d2qsdzysnis6qi84xchnz5xh8kx8sjfmkbsijwaqlfw11bk"))))
     (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'patch-/bin/sh
+                     (lambda _
+                       ;; Refer to the actual shell.
+                       (substitute* '("src/bin/pg_ctl/pg_ctl.c"
+                                      "src/bin/psql/command.c")
+                         (("/bin/sh") (which "sh")))
+                       #t)))))
     (inputs
      `(("readline" ,readline)
        ("zlib" ,zlib)))
@@ -266,15 +375,18 @@ pictures, sounds, or video.")
 
     ;; Running tests in parallel leads to test failures and crashes in
     ;; torture/utils.
-    (arguments '(#:parallel-tests? #f))
+    (arguments '(#:parallel-tests? #f
+                 #:configure-flags
+                 (list (string-append "--with-bash-headers="
+                                      (assoc-ref %build-inputs "bash:include")
+                                      "/include/bash"))))
 
-    (native-inputs `(("emacs" ,emacs-no-x)
-                     ("bc" ,bc)))
+    (native-inputs `(("emacs" ,emacs-minimal)
+                     ("bc" ,bc)
+                     ("bash:include" ,bash "include")
+                     ("libuuid" ,util-linux)))
 
     ;; TODO: Add more optional inputs.
-    ;; FIXME: Our Bash doesn't have development headers (need for the 'readrec'
-    ;; built-in command), but it's not clear how to get them installed.
-    ;; See <https://lists.gnu.org/archive/html/bug-bash/2014-03/msg00125.html>.
     (inputs `(("curl" ,curl)
               ("libgcrypt" ,libgcrypt)
               ("check" ,check)))
@@ -291,7 +403,7 @@ types are supported, as is encryption.")
 (define-public sqlite
   (package
    (name "sqlite")
-   (version "3.8.8.3")
+   (version "3.10.0")
    (source (origin
             (method url-fetch)
             ;; TODO: Download from sqlite.org once this bug :
@@ -306,12 +418,23 @@ types are supported, as is encryption.")
                                             (map (cut string-pad <> 2 #\0)
                                                  other-digits))
                                            6 #\0))))))
-                   (string-append
-                    "mirror://sourceforge/sqlite.mirror/SQLite%20" version
-                    "/sqlite-autoconf-" numeric-version ".tar.gz")))
+                   (list
+                    (string-append
+                     "https://fossies.org/linux/misc/sqlite-autoconf-"
+                     numeric-version ".tar.gz")
+                    (string-append
+                     "http://distfiles.gentoo.org/distfiles/"
+                     "/sqlite-autoconf-" numeric-version ".tar.gz"))
+
+                   ;; XXX: As of 2015-09-08, SourceForge is squatting the URL
+                   ;; below, returning 200 and showing an advertising page.
+                   ;; (string-append
+                   ;;  "mirror://sourceforge/sqlite.mirror/SQLite%20" version
+                   ;;  "/sqlite-autoconf-" numeric-version ".tar.gz")
+                   ))
             (sha256
              (base32
-              "04dl53iv5q0srv4jcgjfzsrdzkq6dg1sgmlmpw9lrd4xrmj6jmvl"))))
+              "0hhhv6si0pyf5i8bv7a71953m0b4gk6s3j2h09caf7vif0njkk23"))))
    (build-system gnu-build-system)
    (inputs `(("readline" ,readline)))
    (arguments
@@ -332,14 +455,14 @@ is in the public domain.")
 (define-public tdb
   (package
     (name "tdb")
-    (version "1.3.0")
+    (version "1.3.9")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://samba.org/ftp/tdb/tdb-"
+              (uri (string-append "https://www.samba.org/ftp/tdb/tdb-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "085sd2kii72fr0c4pdc7c7m0xk34nc66wnjp21c83dss826y9gh4"))))
+                "1ll4q17scax1arg12faj8p25jq1f7q9irc3pwla0ziymwqkgf0bi"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (alist-replace
@@ -543,6 +666,53 @@ DBIx::Class::Schema by scanning database table definitions and setting up the
 columns, primary keys, unique constraints and relationships.")
     (license (package-license perl))))
 
+(define-public perl-dbd-pg
+  (package
+    (name "perl-dbd-pg")
+    (version "3.5.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/T/TU/TURNSTEP/"
+                           "DBD-Pg-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0z0kf1kjgbi5f6nr63i2fnrx7629d9lvxg1q8sficwb3zdf1ggzx"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-dbi" ,perl-dbi)))
+    (propagated-inputs
+     `(("perl-dbi" ,perl-dbi)
+       ("postgresql" ,postgresql)))
+    (home-page "http://search.cpan.org/dist/DBD-Pg")
+    (synopsis "DBI PostgreSQL interface")
+    (description "")
+    (license (package-license perl))))
+
+(define-public perl-dbd-mysql
+  (package
+    (name "perl-dbd-mysql")
+    (version "4.033")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/C/CA/CAPTTOFU/"
+                           "DBD-mysql-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0769xakykps0cx368g4vaips4w3bjk383rianiavq7sq6g6bp66c"))))
+    (build-system perl-build-system)
+    ;; Tests require running MySQL server
+    (arguments `(#:tests? #f))
+    (propagated-inputs
+     `(("perl-dbi" ,perl-dbi)
+       ("mysql" ,mysql)))
+    (home-page "http://search.cpan.org/dist/DBD-mysql")
+    (synopsis "DBI MySQL interface")
+    (description "This package provides a MySQL driver for the Perl5
+@dfn{Database Interface} (DBI).")
+    (license (package-license perl))))
+
 (define-public perl-dbd-sqlite
   (package
     (name "perl-dbd-sqlite")
@@ -595,26 +765,73 @@ While based on the concepts used by DBIx::Abstract, the concepts used have
 been modified to make the SQL easier to generate from Perl data structures.
 The underlying idea is for this module to do what you mean, based on the data
 structures you provide it, so that you don't have to modify your code every
-time your data changes")
+time your data changes.")
+    (license (package-license perl))))
+
+(define-public perl-sql-splitstatement
+  (package
+    (name "perl-sql-splitstatement")
+    (version "1.00020")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/E/EM/EMAZEP/"
+                           "SQL-SplitStatement-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0bqg45k4c9qkb2ypynlwhpvzsl4ssfagmsalys18s5c79ps30z7p"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-exception" ,perl-test-exception)))
+    (propagated-inputs
+     `(("perl-class-accessor" ,perl-class-accessor)
+       ("perl-list-moreutils" ,perl-list-moreutils)
+       ("perl-regexp-common" ,perl-regexp-common)
+       ("perl-sql-tokenizer" ,perl-sql-tokenizer)))
+    (home-page "http://search.cpan.org/dist/SQL-SplitStatement")
+    (synopsis "Split SQL code into atomic statements")
+    (description "This module tries to split any SQL code, even including
+non-standard extensions, into the atomic statements it is composed of.")
+    (license (package-license perl))))
+
+(define-public perl-sql-tokenizer
+  (package
+    (name "perl-sql-tokenizer")
+    (version "0.24")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/I/IZ/IZUT/"
+                           "SQL-Tokenizer-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1qa2dfbzdlr5qqdam9yn78z5w3al5r8577x06qan8wv58ay6ka7s"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/SQL-Tokenizer")
+    (synopsis "SQL tokenizer")
+    (description "SQL::Tokenizer is a tokenizer for SQL queries.  It does not
+claim to be a parser or query verifier.  It just creates sane tokens from a
+valid SQL query.")
     (license (package-license perl))))
 
 (define-public unixodbc
   (package
    (name "unixodbc")
-   (version "2.3.2")
+   (version "2.3.4")
    (source (origin
             (method url-fetch)
-            (uri 
+            (uri
              (string-append
-              "ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-" version ".tar.gz"))
+              "ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-"
+              version ".tar.gz"))
             (sha256
-             (base32 "16jw5fq7wgfky6ak1h2j2pqx99jivsdl4q8aq6immpr55xs5jd4w"))))
+             (base32 "0f8y88rcc2akjvjv5y66yx7k0ms9h1s0vbcfy25j93didflhj59f"))))
    (build-system gnu-build-system)
    (synopsis "Data source abstraction library")
    (description "Unixodbc is a library providing an API with which to access
 data sources.  Data sources include SQL Servers and any software with an ODBC
 Driver.")
-   (license lgpl2.1+) 
+   (license lgpl2.1+)
    ;; COPYING contains copy of lgpl2.1 - but copyright notices just say "LGPL"
    (home-page "http://www.unixodbc.org")))
 
@@ -641,5 +858,97 @@ Driver.")
 self-contained, serverless, zero-configuration, transactional NoSQL
 database engine.  UnQLite is a document store database similar to
 MongoDB, Redis, CouchDB, etc. as well as a standard Key/Value store
-similar to BerkelyDB, LevelDB, etc.")
+similar to BerkeleyDB, LevelDB, etc.")
     (license bsd-2)))
+
+(define-public redis
+  (package
+    (name "redis")
+    (version "3.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://download.redis.io/releases/redis-"
+                                  version".tar.gz"))
+              (sha256
+               (base32
+                "0ql7zp061xr66a1dzpa6a0ijm8zm133dd364va7q5h8avkrim7wq"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:tests? #f ; tests related to master/slave and replication fail
+       #:phases (modify-phases %standard-phases
+                  (delete 'configure))
+       #:make-flags `("CC=gcc"
+                      "MALLOC=libc"
+                      ,(string-append "PREFIX="
+                                      (assoc-ref %outputs "out")))))
+    (synopsis "Key-value cache and store")
+    (description "Redis is an advanced key-value cache and store.  Redis
+supports many data structures including strings, hashes, lists, sets, sorted
+sets, bitmaps and hyperloglogs.")
+    (home-page "http://redis.io/")
+    (license bsd-3)))
+
+(define-public kyotocabinet
+  (package
+    (name "kyotocabinet")
+    (version "1.2.76")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://fallabs.com/kyotocabinet/pkg/"
+                                  name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0g6js20x7vnpq4p8ghbw3mh9wpqksya9vwhzdx6dnlf354zjsal1"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       (list
+        (string-append "LDFLAGS=-Wl,-rpath="
+                       (assoc-ref %outputs "out") "/lib"))))
+    (inputs `(("zlib" ,zlib)))
+    (home-page "http://fallabs.com/kyotocabinet/")
+    (synopsis
+     "Kyoto Cabinet is a modern implementation of the DBM database")
+    (description
+     "Kyoto Cabinet is a standalone file-based database that supports Hash
+and B+ Tree data storage models.  It is a fast key-value lightweight
+database and supports many programming languages.  It is a NoSQL database.")
+    (license gpl3+)))
+
+(define-public wiredtiger
+  (package
+    (name "wiredtiger")
+    (version "2.8.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://source.wiredtiger.com/releases/wiredtiger-"
+                    version ".tar.bz2"))
+              (sha256
+               (base32
+                "1qh7y5paisdxq19jgg81ld7i32lz920n5k30hdpxnr8ll9c4hgjr"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags '("--enable-lz4" "--enable-zlib")
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'disable-test/fops
+           (lambda _
+             ;; XXX: timed out after 3600 seconds of silence
+             (substitute* "Makefile"
+               (("test/fops") ""))
+             #t)))))
+    (inputs
+     `(("lz4" ,lz4)
+       ("zlib" ,zlib)))
+    (home-page "http://source.wiredtiger.com/")
+    (synopsis "NoSQL data engine")
+    (description
+     "WiredTiger is an extensible platform for data management.  It supports
+row-oriented storage (where all columns of a row are stored together),
+column-oriented storage (where columns are stored in groups, allowing for
+more efficient access and storage of column subsets) and log-structured merge
+trees (LSM), for sustained throughput under random insert workloads.")
+    (license gpl3) ; or GPL-2
+    ;; configure.ac: WiredTiger requires a 64-bit build.
+    (supported-systems '("x86_64-linux" "mips64el-linux"))))