summaryrefslogtreecommitdiff
path: root/gnu/packages/databases.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/databases.scm')
-rw-r--r--gnu/packages/databases.scm264
1 files changed, 225 insertions, 39 deletions
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index e05a337e47..fd8baa1531 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -13,6 +13,8 @@
;;; Copyright © 2016 David Craven <david@craven.ch>
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
+;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -31,37 +33,37 @@
(define-module (gnu packages databases)
#:use-module (gnu packages)
+ #:use-module (gnu packages algebra)
#:use-module (gnu packages autotools)
#:use-module (gnu packages avahi)
+ #:use-module (gnu packages base)
#:use-module (gnu packages bash)
+ #:use-module (gnu packages bison)
#:use-module (gnu packages boost)
+ #:use-module (gnu packages check)
+ #:use-module (gnu packages compression)
#:use-module (gnu packages crypto)
+ #:use-module (gnu packages curl)
+ #:use-module (gnu packages cyrus-sasl)
+ #:use-module (gnu packages emacs)
#:use-module (gnu packages gettext)
#:use-module (gnu packages glib)
- #:use-module (gnu packages perl)
+ #:use-module (gnu packages gnupg)
+ #:use-module (gnu packages jemalloc)
#:use-module (gnu packages language)
#:use-module (gnu packages linux)
- #:use-module (gnu packages tcl)
- #:use-module (gnu packages tls)
- #: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 cyrus-sasl)
- #:use-module (gnu packages gnupg)
- #:use-module (gnu packages python)
+ #:use-module (gnu packages parallel)
#:use-module (gnu packages pcre)
+ #:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages popt)
+ #:use-module (gnu packages python)
#:use-module (gnu packages rdf)
+ #:use-module (gnu packages readline)
+ #:use-module (gnu packages tcl)
+ #:use-module (gnu packages tls)
#:use-module (gnu packages xml)
- #:use-module (gnu packages bison)
- #:use-module (gnu packages jemalloc)
- #:use-module ((guix licenses)
- #:select (gpl2 gpl3 gpl3+ lgpl2.1+ lgpl3+ x11-style non-copyleft
- bsd-2 bsd-3 public-domain))
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
@@ -116,7 +118,7 @@
(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+)))
+ (license license:gpl3+)))
(define-public gdbm
(package
@@ -138,7 +140,7 @@ either single machines or networked clusters.")
"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+)))
+ (license license:gpl3+)))
(define-public bdb
(package
@@ -190,8 +192,9 @@ and provides interfaces to the traditional file format.")
(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 (non-copyleft "file://LICENSE"
- "See LICENSE in the distribution."))
+ ;; Starting with version 6, BDB is distributed under AGPL3. Many individual
+ ;; files are covered by the 3-clause BSD license.
+ (license (list license:agpl3+ license:bsd-3))
(home-page
"http://www.oracle.com/us/products/database/berkeley-db/overview/index.html")))
@@ -199,6 +202,8 @@ SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
(package (inherit bdb)
(name "bdb")
(version "5.3.28")
+ (license (license:non-copyleft "file://LICENSE"
+ "See LICENSE in the distribution."))
(source (origin
(method url-fetch)
(uri (string-append "http://download.oracle.com/berkeley-db/db-"
@@ -207,6 +212,44 @@ SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
(base32
"0a1n5hbl7027fbz5lm0vp0zzfp1hmxnz14wx3zl9563h83br5ag0"))))))
+(define-public leveldb
+ (package
+ (name "leveldb")
+ (version "1.19")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/google/leveldb"
+ "/archive/v" version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "00jjgs9xlwycfkg0xd7n1rj6v9zrx7xc7hann6zalrjyhap18ykx"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:make-flags (list "CC=gcc")
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (replace 'install
+ ;; There is no install target, so we do it here.
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (lib (string-append out "/lib"))
+ (include (string-append out "/include")))
+ (for-each (lambda (file)
+ (install-file file lib))
+ (find-files "out-shared" "^libleveldb\\.so.*$"))
+ (copy-recursively "include" include)
+ #t))))))
+ (inputs
+ `(("snappy" ,snappy)))
+ (home-page "http://leveldb.org/")
+ (synopsis "Fast key-value storage library")
+ (description
+ "LevelDB is a fast key-value storage library that provides an ordered
+mapping from string keys to string values.")
+ (license license:bsd-3)))
+
(define-public mysql
(package
(name "mysql")
@@ -280,12 +323,12 @@ SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
"MySQL is a fast, reliable, and easy to use relational database
management system that supports the standardized Structured Query
Language.")
- (license gpl2)))
+ (license license:gpl2)))
(define-public mariadb
(package
(name "mariadb")
- (version "10.1.20")
+ (version "10.1.21")
(source (origin
(method url-fetch)
(uri (string-append "https://downloads.mariadb.org/f/"
@@ -293,7 +336,7 @@ Language.")
name "-" version ".tar.gz"))
(sha256
(base32
- "1fd0kfw94iyprf0466kjw5mwmj4ky0i997lz6499jkb79pr86kn2"))))
+ "144lcm5awcf0k6a7saqfr4p2kg8r5wbdhdm4cmn2m8hyg1an70as"))))
(build-system cmake-build-system)
(arguments
'(#:configure-flags
@@ -348,19 +391,19 @@ Language.")
(description
"MariaDB is a multi-user and multi-threaded SQL database server, designed
as a drop-in replacement of MySQL.")
- (license gpl2)))
+ (license license:gpl2)))
(define-public postgresql
(package
(name "postgresql")
- (version "9.5.5")
+ (version "9.5.6")
(source (origin
(method url-fetch)
(uri (string-append "https://ftp.postgresql.org/pub/source/v"
version "/postgresql-" version ".tar.bz2"))
(sha256
(base32
- "157kf6mdazmxfmd11f0akya2xcz6sfgprn7yqc26dpklps855ih2"))))
+ "0bz1b9r249ffjfvldaiah2g78ccwq30ddh8hdvlq61z26inmz7mv"))))
(build-system gnu-build-system)
(arguments
`(#:phases
@@ -384,7 +427,34 @@ 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"))))
+ (license (license:x11-style "file://COPYRIGHT"))))
+
+(define-public qdbm
+ (package
+ (name "qdbm")
+ (version "1.8.78")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "http://fallabs.com/" name "/"
+ name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0gmpvhn02pkq280ffmn4da1g4mdr1xxz7l80b7y4n7km1mrzwrml"))))
+ (build-system gnu-build-system)
+ (arguments
+ `( #:configure-flags (list (string-append "LDFLAGS=-Wl,-rpath="
+ (assoc-ref %outputs "out")
+ "/lib"))))
+ (home-page "http://fallabs.com/qdbm")
+ (synopsis "Key-value database")
+ (description "QDBM is a library of routines for managing a
+database. The database is a simple data file containing key-value
+pairs. Every key and value is serial bytes with variable length.
+Binary data as well as character strings can be used as a key or a
+value. There is no concept of data tables or data types. Records are
+organized in a hash table or B+ tree.")
+ (license license:lgpl2.1+)))
(define-public recutils
(package
@@ -440,9 +510,97 @@ 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+)
+ (license license:gpl3+)
(home-page "http://www.gnu.org/software/recutils/")))
+(define-public rocksdb
+ (package
+ (name "rocksdb")
+ (version "5.1.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/facebook/rocksdb"
+ "/archive/v" version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1qdbs13al7g45xc2j44wzx0ywrg32q1gsdhk5j6j4952xg91rfmh"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; TODO: unbundle gtest.
+ (delete-file "build_tools/gnu_parallel")
+ #t))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:make-flags (list "CC=gcc"
+ ;; Make the resulting library position-independent so the
+ ;; static version can be included in shared objects.
+ "EXTRA_CXXFLAGS=-fPIC"
+ (string-append "INSTALL_PATH="
+ (assoc-ref %outputs "out")))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-Makefile
+ (lambda _
+ (substitute* "Makefile"
+ (("build_tools/gnu_parallel") "parallel")
+ (("#!/bin/sh") (string-append "#!" (which "sh"))))
+ #t))
+ (delete 'configure)
+ (add-before 'check 'disable-failing-tests
+ (lambda _
+ (substitute* "Makefile"
+ ;; These tests reliably fail due to "Too many open files".
+ (("^[[:blank:]]+env_test[[:blank:]]+\\\\") "\\")
+ (("^[[:blank:]]+persistent_cache_test[[:blank:]]+\\\\") "\\"))
+ #t))
+ (add-after
+ 'check 'build-release-libraries
+ ;; The 'check' target depends on the default target which is compiled
+ ;; with debug symbols. The 'install' target depends on shared and
+ ;; static release targets so we build them here for clarity.
+ ;; TODO: Add debug output.
+ (lambda* (#:key (make-flags '()) #:allow-other-keys)
+ ;; Prevent the build from adding machine-specific optimizations.
+ ;; This does not work if passed as a make flag...
+ (setenv "PORTABLE" "1")
+ (and (zero? (apply system* "make" "static_lib" make-flags))
+ (zero? (apply system* "make" "shared_lib" make-flags)))))
+ (add-after 'install 'delete-static-library
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (lib (string-append out "/lib")))
+ (for-each (lambda (file)
+ (delete-file file))
+ (find-files lib "\\.l?a$"))
+ #t))))))
+ (native-inputs
+ `(("parallel" ,parallel)
+ ("perl" ,perl)
+ ("procps" ,procps)
+ ("python" ,python-2)
+ ("which" ,which)))
+ (inputs
+ `(("bzip2" ,bzip2)
+ ("gflags" ,gflags)
+ ("jemalloc" ,jemalloc)
+ ("lz4" ,lz4)
+ ("snappy" ,snappy)
+ ("zlib" ,zlib)))
+ (home-page "http://rocksdb.org/")
+ (synopsis "Persistent key-value store for fast storage")
+ (description
+ "RocksDB is a library that forms the core building block for a fast
+key-value server, especially suited for storing data on flash drives. It
+has a @dfn{Log-Structured-Merge-Database} (LSM) design with flexible tradeoffs
+between @dfn{Write-Amplification-Factor} (WAF), @dfn{Read-Amplification-Factor}
+(RAF) and @dfn{Space-Amplification-Factor} (SAF). It has multi-threaded
+compactions, making it specially suitable for storing multiple terabytes of
+data in a single database. RocksDB is partially based on @code{LevelDB}.")
+ ;; RocksDB is BSD-3 and the JNI adapter is Apache 2.0.
+ (license (list license:bsd-3 license:asl2.0))))
+
(define-public sparql-query
(package
(name "sparql-query")
@@ -502,7 +660,7 @@ edit previous queries, even across sessions. It can be used non-interactively,
for example from a shell script.")
;; Some files (like scan-sparql.c) contain a GPLv3+ license header, while
;; others (like sparql-query.c) contain a GPLv2+ license header.
- (license (list gpl3+))))
+ (license (list license:gpl3+))))
(define-public sqlite
(package
@@ -556,7 +714,7 @@ for example from a shell script.")
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)))
+ (license license:public-domain)))
(define-public sqlite-3.15.1
(package (inherit sqlite)
@@ -613,7 +771,7 @@ is in the public domain.")
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+)))
+ (license license:lgpl3+)))
(define-public perl-dbi
(package
@@ -958,7 +1116,7 @@ valid SQL query.")
(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 license:lgpl2.1+)
;; COPYING contains copy of lgpl2.1 - but copyright notices just say "LGPL"
(home-page "http://www.unixodbc.org")))
@@ -986,7 +1144,7 @@ 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 BerkeleyDB, LevelDB, etc.")
- (license bsd-2)))
+ (license license:bsd-2)))
(define-public redis
(package
@@ -1014,7 +1172,7 @@ similar to BerkeleyDB, LevelDB, etc.")
supports many data structures including strings, hashes, lists, sets, sorted
sets, bitmaps and hyperloglogs.")
(home-page "http://redis.io/")
- (license bsd-3)))
+ (license license:bsd-3)))
(define-public kyotocabinet
(package
@@ -1041,12 +1199,12 @@ sets, bitmaps and hyperloglogs.")
"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+)))
+ (license license:gpl3+)))
(define-public wiredtiger
(package
(name "wiredtiger")
- (version "2.8.0")
+ (version "2.9.1")
(source (origin
(method url-fetch)
(uri (string-append
@@ -1054,7 +1212,7 @@ database and supports many programming languages. It is a NoSQL database.")
version ".tar.bz2"))
(sha256
(base32
- "1qh7y5paisdxq19jgg81ld7i32lz920n5k30hdpxnr8ll9c4hgjr"))))
+ "0krwnb2zfbhvjaskwl875qzd3y626s84zcciq2mxr5c5riw3yh6s"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags '("--enable-lz4" "--enable-zlib")
@@ -1077,7 +1235,7 @@ 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
+ (license license:gpl3) ; or GPL-2
;; configure.ac: WiredTiger requires a 64-bit build.
(supported-systems '("x86_64-linux" "mips64el-linux"))))
@@ -1245,3 +1403,31 @@ development.")
;; test/crypto.test are licensed under a 3-clause BSD license. All other
;; source files are in the public domain.
(license (list license:public-domain license:bsd-3))))
+
+(define-public python-pyodbc-c
+ (package
+ (name "python-pyodbc-c")
+ (version "3.1.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://gitlab.com/daym/pyodbc-c/repository/"
+ "archive.tar.gz?ref=v" version))
+ (sha256
+ (base32
+ "05aq2297k779xidmxcwkrrxjvj1bh2q7d9a1rcjv6zr15y764ga9"))
+ (file-name (string-append name "-" version ".tar.gz"))))
+ (build-system python-build-system)
+ (inputs
+ `(("unixodbc" ,unixodbc)))
+ (arguments
+ `(;; No unit tests exist.
+ #:tests? #f))
+ (home-page "https://github.com/mkleehammer/pyodbc")
+ (synopsis "Python ODBC Library")
+ (description "@code{python-pyodbc-c} provides a Python DB-API driver
+for ODBC.")
+ (license (license:x11-style "file://LICENSE.TXT"))))
+
+(define-public python2-pyodbc-c
+ (package-with-python2 python-pyodbc-c))