aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/databases.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/databases.scm')
-rw-r--r--gnu/packages/databases.scm283
1 files changed, 283 insertions, 0 deletions
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
new file mode 100644
index 0000000000..01d9cbdd62
--- /dev/null
+++ b/gnu/packages/databases.scm
@@ -0,0 +1,283 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
+;;; Copyright © 2014 David Thompson <davet@gnu.org>
+;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages databases)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages perl)
+ #:use-module (gnu packages linux)
+ #:use-module (gnu packages openssl)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages ncurses)
+ #:use-module (gnu packages readline)
+ #:use-module (gnu packages emacs)
+ #:use-module (gnu packages check)
+ #:use-module (gnu packages algebra)
+ #:use-module (gnu packages curl)
+ #:use-module (gnu packages gnupg)
+ #:use-module (gnu packages python)
+ #:use-module ((guix licenses)
+ #:select (gpl2 gpl3+ lgpl3+ x11-style bsd-style
+ public-domain))
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu)
+ #:use-module (srfi srfi-26)
+ #:use-module (ice-9 match))
+
+(define-public bdb
+ (package
+ (name "bdb")
+ (version "5.3.21")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://download.oracle.com/berkeley-db/db-" version
+ ".tar.gz"))
+ (sha256 (base32
+ "1f2g2612lf8djbwbwhxsvmffmf9d7693kh2l20195pqp0f9jmnfx"))))
+ (build-system gnu-build-system)
+ (outputs '("out" ; programs, libraries, headers
+ "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"))))
+ %standard-phases)))
+ (synopsis "db, the Berkeley database")
+ (description
+ "Berkeley DB is an embeddable database allowing developers the choice of
+SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
+ (license (bsd-style "file://LICENSE"
+ "See LICENSE in the distribution."))
+ (home-page
+ "http://www.oracle.com/us/products/database/berkeley-db/overview/index.html")))
+
+(define-public mysql
+ (package
+ (name "mysql")
+ (version "5.1.73")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1dfwi4ck0vq6sdci6gz0031s7zz5lc3pddqlgm0292s00l9y5sq5"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("procps" ,procps)
+ ("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)))
+ (home-page "http://www.mysql.com/")
+ (synopsis "A fast, easy to use, and popular database")
+ (description
+ "MySQL is a fast, reliable, and easy to use relational database
+management system that supports the standardized Structured Query
+Language.")
+ (license gpl2)))
+
+(define-public postgresql
+ (package
+ (name "postgresql")
+ (version "9.3.5")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://ftp.postgresql.org/pub/source/v"
+ version "/postgresql-" version ".tar.gz"))
+ (sha256
+ (base32
+ "08kga00izykgvnx7hn995wc4zjqslspapaa8z63045p1ya14mr4g"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("readline" ,readline)
+ ("zlib" ,zlib)))
+ (home-page "http://www.postgresql.org/")
+ (synopsis "Powerful object-relational database system")
+ (description
+ "PostgreSQL is a powerful object-relational database system. It is fully
+ACID compliant, has full support for foreign keys, joins, views, triggers, and
+stored procedures (in multiple languages). It includes most SQL:2008 data
+types, including INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE, INTERVAL, and
+TIMESTAMP. It also supports storage of binary large objects, including
+pictures, sounds, or video.")
+ (license (x11-style "file://COPYRIGHT"))))
+
+(define-public recutils
+ (package
+ (name "recutils")
+ (version "1.7")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/recutils/recutils-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0cdwa4094x3yx7vn98xykvnlp9rngvd58d19vs3vh5hrvggccg93"))))
+ (build-system gnu-build-system)
+
+ ;; Running tests in parallel leads to test failures and crashes in
+ ;; torture/utils.
+ (arguments '(#:parallel-tests? #f))
+
+ (native-inputs `(("emacs" ,emacs)
+ ("bc" ,bc)))
+
+ ;; 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)))
+ (synopsis "Manipulate plain text files as databases")
+ (description
+ "GNU Recutils is a set of tools and libraries for creating and
+manipulating text-based, human-editable databases. Despite being text-based,
+databases created with Recutils carry all of the expected features such as
+unique fields, primary keys, time stamps and more. Many different field types
+are supported, as is encryption.")
+ (license gpl3+)
+ (home-page "http://www.gnu.org/software/recutils/")))
+
+(define-public sqlite
+ (package
+ (name "sqlite")
+ (version "3.8.4.3")
+ (source (origin
+ (method url-fetch)
+ ;; TODO: Download from sqlite.org once this bug :
+ ;; http://lists.gnu.org/archive/html/bug-guile/2013-01/msg00027.html
+ ;; has been fixed.
+ (uri (let ((numeric-version
+ (match (string-split version #\.)
+ ((first-digit other-digits ...)
+ (string-append first-digit
+ (string-pad-right
+ (string-concatenate
+ (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")))
+ (sha256
+ (base32
+ "0rcdsk5sz34w8vy0g5yhfms4saiq81i872jxx5m5sjij7bi9bsg0"))
+ (patches
+ (list (search-patch "sqlite-large-page-size-fix.patch")))))
+ (build-system gnu-build-system)
+ (home-page "http://www.sqlite.org/")
+ (synopsis "The SQLite database management system")
+ (description
+ "SQLite is a software library that implements a self-contained, serverless,
+zero-configuration, transactional SQL database engine. SQLite is the most
+widely deployed SQL database engine in the world. The source code for SQLite is
+in the public domain.")
+ (license public-domain)))
+
+(define-public tdb
+ (package
+ (name "tdb")
+ (version "1.3.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://samba.org/ftp/tdb/tdb-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "085sd2kii72fr0c4pdc7c7m0xk34nc66wnjp21c83dss826y9gh4"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:phases (alist-replace
+ 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ ;; The 'configure' script is a wrapper for Waf and
+ ;; doesn't recognize things like '--enable-fast-install'.
+ (zero? (system* "./configure"
+ (string-append "--prefix=" out)))))
+ %standard-phases)))
+ (native-inputs
+ `(;; TODO: Build the documentation.
+ ;; ("docbook-xsl" ,docbook-xsl)
+ ;; ("libxml2" ,libxml2)
+ ;; ("libxslt" ,libxslt)
+ ("python" ,python-2))) ;for the Waf build system
+ (home-page "http://tdb.samba.org/")
+ (synopsis "TDB, the trivial database")
+ (description
+ "TDB is a Trivial Database. In concept, it is very much like GDBM,
+and BSD's DB except that it allows multiple simultaneous writers and uses
+locking internally to keep writers from trampling on each other. TDB is also
+extremely small.")
+ (license lgpl3+)))