diff options
Diffstat (limited to 'gnu/packages/databases.scm')
-rw-r--r-- | gnu/packages/databases.scm | 264 |
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)) |