diff options
Diffstat (limited to 'gnu/packages/databases.scm')
-rw-r--r-- | gnu/packages/databases.scm | 254 |
1 files changed, 217 insertions, 37 deletions
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index 0d8342b04a..79bc173ca6 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -87,13 +87,16 @@ #:use-module (gnu packages guile) #:use-module (gnu packages time) #:use-module (gnu packages golang) + #:use-module (gnu packages icu4c) #:use-module (gnu packages jemalloc) #:use-module (gnu packages language) + #:use-module (gnu packages libedit) #:use-module (gnu packages libevent) #:use-module (gnu packages linux) #:use-module (gnu packages logging) #:use-module (gnu packages man) #:use-module (gnu packages maths) + #:use-module (gnu packages multiprecision) #:use-module (gnu packages ncurses) #:use-module (gnu packages onc-rpc) #:use-module (gnu packages parallel) @@ -234,7 +237,7 @@ standard Go idioms.") (define-public ephemeralpg (package (name "ephemeralpg") - (version "3.0") + (version "3.1") (source (origin (method url-fetch) @@ -242,10 +245,10 @@ standard Go idioms.") "https://eradman.com/ephemeralpg/code/ephemeralpg-" version ".tar.gz")) (sha256 - (base32 "1j0g7g114ma7y7sadbng5p1ss1zsm9zpicm77qspym6565733vvh")))) + (base32 "1ap22ki8yz6agd0qybcjgs4b9izw1rwwcgpxn3jah2ccfyax34s6")))) (build-system gnu-build-system) (arguments - '(#:make-flags (list "CC=gcc" + `(#:make-flags (list (string-append "CC=" ,(cc-for-target)) (string-append "PREFIX=" %output)) #:phases (modify-phases %standard-phases @@ -308,6 +311,183 @@ ElasticSearch server") (home-page "https://github.com/patientslikeme/es_dump_restore") (license license:expat))) +(define-public firebird + (package + (name "firebird") + (version "3.0.7") + (source + (let ((revision "33374-0")) + (origin + (method url-fetch) + (uri (string-append "https://github.com/FirebirdSQL/" + "firebird/releases/download/R" + (string-replace-substring version "." "_") "/" + "Firebird-" version "." revision ".tar.bz2")) + (sha256 + (base32 "0xpy1bncz36c6n28y7kllm1dkrdkn4vb4gw2n43f2351mznmrf5c")) + (modules '((guix build utils))) + (snippet + `(begin + (for-each + delete-file-recursively + (list "extern/btyacc/test" ; TODO: package and remove entirely + "extern/editline" + "extern/icu" + "extern/libtommath" + "extern/zlib" + "src/include/firebird/impl/boost" + + ;; Missing licence. + "builds/install/arch-specific/solaris" + "extern/SfIO" + "src/msgs/templates.sql" + + ;; Generated files missing sources. + "doc/Firebird-3-QuickStart.pdf" + (string-append "doc/Firebird-" ,version + "-ReleaseNotes.pdf") + "doc/README.SecureRemotePassword.html")) + #t))))) + (build-system gnu-build-system) + (outputs (list "debug" "out")) + (arguments + `(#:configure-flags + (let ((out (assoc-ref %outputs "out"))) + (list (string-append "--with-fbsbin=" out "/sbin") + (string-append "--with-fbdoc=" out "/share/doc/" + ,name "-" ,version) + (string-append "--with-fbconf=" out "/lib/firebird") + (string-append "--with-fbintl=" out "/lib/firebird/intl") + (string-append "--with-fbmisc=" out "/lib/firebird/misc") + (string-append "--with-fbmsg=" out "/lib/firebird") + (string-append "--with-fbplugins=" out "/lib/firebird/plugins") + (string-append "--with-fbudf=" out "/lib/firebird/UDF") + "--with-fbglock=/run/firebird" + "--with-fblog=/var/log/firebird" + "--with-fbhelp=/var/lib/firebird/system" + "--with-fbsecure-db=/var/lib/firebird/secure" + "--without-fbsample" + "--without-fbsample-db" + "--with-system-editline")) + #:make-flags + (list (string-append "CC=" ,(cc-for-target)) + ;; The plugins/ can't find libfbclient otherwise. + (string-append "LDFLAGS=-Wl,-rpath=" + (assoc-ref %outputs "out") "/lib")) + #:tests? #f ; no test suite + #:modules ((guix build gnu-build-system) + (guix build utils) + (srfi srfi-26)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'use-system-boost + (lambda _ + (substitute* "src/include/firebird/Message.h" + (("\"\\./impl/boost/preprocessor/seq/for_each_i\\.hpp\"") + "<boost/preprocessor/seq/for_each_i.hpp>") + (("FB_BOOST_") "BOOST_")) + #t)) + (add-after 'unpack 'patch-installation + (lambda _ + (substitute* + "builds/install/arch-specific/linux/makeInstallImage.sh.in" + (("/bin/sh") (which "bash")) + ;; Remove shell script helpers from $PATH. + (("(addLibs|cp) .*\\.sh .*@FB_SBINDIR@") ":") + ;; Put files where Guix users expect them. + (("(License\\.txt.*)@FB_CONFDIR" match) + (string-append match "@FB_DOCDIR@")) + (("@FB_CONFDIR@(.*License\\.txt.*)" match) + (string-append "@FB_DOCDIR@" match)) + (("(cp .*/doc/.*)@FB_CONFDIR@(.*)" _ head tail) + (string-append head "@FB_DOCDIR@" tail "\n"))) + (substitute* + (list "builds/install/posix-common/changeServerMode.sh.in" + "builds/install/posix-common/install.sh.in") + ;; Skip phases that (could) cause problems in Guix. + (("check(InstallUser|IfServerRunning|Libraries)|addFirebirdUser") + ":") + ;; Skip phases that are merely pointless on Guix. + (("buildUninstallFile|installInitdScript|startFirebird") ":") + ;; Omit randomly generated password with bonus timestamp. + (("setDBAPassword") ":")) + + ;; These promote proprietary workflows not relevant on Guix. + (for-each delete-file-recursively + (find-files "doc" "README\\.(build\\.msvc|NT|Win)")) + #t)) + (add-after 'configure 'delete-init-scripts + (lambda _ + (delete-file-recursively "gen/install/misc") + #t)) + (add-before 'build 'set-build-environment-variables + (lambda _ + ;; ‘isql’ needs to run & find libfbclient.so during the build. + ;; This doubles as a rudimentary test in lieu of a test suite. + (setenv "LD_LIBRARY_PATH" + (string-append (assoc-ref %build-inputs "icu4c") "/lib")) + #t)) + (add-before 'install 'keep-embedded-debug-symbols + (lambda _ + ;; Let the gnu-build-system separate & deal with them later. + ;; XXX Upstream would use ‘--strip-unneeded’, shaving a whole + ;; megabyte off Guix's 7.7M libEngine12.so, for example. + (substitute* "gen/Makefile.install" + (("readelf") "false")) + #t)) + (add-after 'install 'prune-undesirable-files + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (with-directory-excursion out + ;; Remove example binaries. + (for-each delete-file-recursively + (find-files "." "example")) + ;; Delete (now-)empty directories. + (for-each rmdir + (list "include/firebird/impl" + "lib/firebird/plugins/udr")) + #t))))))) + (inputs + `(("boost" ,boost) + ("editline" ,editline) + ("icu4c" ,icu4c-67) + ("libtommath" ,libtommath) + ("ncurses" ,ncurses) + ("zlib" ,zlib))) + (home-page "https://www.firebirdsql.org") + (synopsis "Relational database with many ANSI SQL standard features") + (description + "Firebird is an SQL @acronym{RDBMS, relational database management system} +with rich support for ANSI SQL (e.g., @code{INSERT...RETURNING}) including +@acronym{UDFs, user-defined functions} and PSQL stored procedures, cursors, and +triggers. Transactions provide full ACID-compliant referential integrity. + +The database requires very little manual maintenance once set up, making it +ideal for small business or embedded use. + +When installed as a traditional local or remote (network) database server, +Firebird can grow to terabyte scale with proper tuning---although PostgreSQL +may be a better choice for such very large environments. + +Firebird can also be embedded into stand-alone applications that don't want or +need a full client & server. Used in this manner, it offers richer SQL support +than SQLite as well as the option to seamlessly migrate to a client/server +database later.") + (properties + `((lint-hidden-cve . ("CVE-2017-6369")))) + (license + ;; See doc/license/README.license.usage.txt for rationale & details. + (list license:bsd-3 ; src/common/sha2/ + license:bsd-4 ; src/common/enc.cpp + license:gpl2+ ; builds/posix/make.defaults + (license:non-copyleft "file:///builds/install/misc/IPLicense.txt" + "InterBase Public License v1.0") + (license:non-copyleft "file:///builds/install/misc/IDPLicense.txt" + "Initial Developer's Public License v1.0") + license:lgpl2.1 ; exception for OSI-compatible licences + license:mpl1.1 ; examples/interfaces/0{6,8}*.cpp + license:public-domain)))) ; including files without explicit licence + (define-public leveldb (package (name "leveldb") @@ -972,16 +1152,16 @@ as a drop-in replacement of MySQL.") (define-public mariadb-connector-c (package (name "mariadb-connector-c") - (version "3.1.10") - (source (origin - (method url-fetch) - (uri (string-append - "https://downloads.mariadb.org/f/connector-c-" - version "/mariadb-connector-c-" - version "-src.tar.gz")) - (sha256 - (base32 - "13v5z4w1cl890lnr2fbwbziw638lqw2aga45vdq1z0cyrc9mcgmg")))) + (version "3.1.11") + (source + (origin + (method url-fetch) + (uri (string-append + "https://downloads.mariadb.org/f/connector-c-" version + "/mariadb-connector-c-" version "-src.tar.gz" + "/from/https%3A//mirrors.ukfast.co.uk/sites/mariadb/?serve")) + (sha256 + (base32 "03svzahdf7czjlm695c11r4bfd04qdqgx8r1vkpr1zlkjhwnqvry")))) (inputs `(("openssl" ,openssl))) (build-system cmake-build-system) @@ -1144,12 +1324,12 @@ organized in a hash table or B+ tree.") (native-inputs `(("bc" ,bc) ("bash:include" ,bash "include") ("check" ,check) - ("libuuid" ,util-linux) ("pkg-config" ,pkg-config))) ;; TODO: Add more optional inputs. (inputs `(("curl" ,curl) - ("libgcrypt" ,libgcrypt))) + ("libgcrypt" ,libgcrypt) + ("libuuid" ,util-linux "lib"))) (synopsis "Manipulate plain text files as databases") (description "GNU Recutils is a set of tools and libraries for creating and @@ -1206,6 +1386,7 @@ including field and record folding."))) `(#:make-flags (list "CC=gcc" "V=1" ;; Ceph requires that RTTI is enabled. "USE_RTTI=1" + "date=1970-01-01" ; build reproducibly (string-append "INSTALL_PATH=" (assoc-ref %outputs "out")) @@ -2256,17 +2437,18 @@ on another machine, accessed via TCP/IP.") (define-public python-peewee (package (name "python-peewee") - (version "3.9.6") - (source - (origin - (method url-fetch) - (uri (pypi-uri "peewee" version)) - (sha256 - (base32 - "1j4sh946k0736m7pd54z0y6i2hjhgg3kdllx1pwq8xkzzcgrx1xw")))) + (version "3.14.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "peewee" version)) + (sha256 + (base32 "1yl49gxrg0c2x3n3r60z3lixw9am8b61s0477l9vjabhhx1yziar")))) (build-system python-build-system) (arguments - `(#:tests? #f)) ; Fails to import test data + `(#:tests? #f)) ; fails to import test data + (inputs + `(("sqlite" ,sqlite))) (native-inputs `(("python-cython" ,python-cython))) (home-page "https://github.com/coleifer/peewee/") @@ -3292,7 +3474,7 @@ transforms idiomatic python function calls to well-formed SQL queries.") (define-public python-pypika (package (name "python-pypika") - (version "0.37.2") + (version "0.44.0") (source (origin (method git-fetch) (uri (git-reference @@ -3301,7 +3483,7 @@ transforms idiomatic python function calls to well-formed SQL queries.") (file-name (git-file-name name version)) (sha256 (base32 - "089z1c778q1fwhzsc88ws8j5gm2hgxknibabn4wpax8rz2bfs3ck")))) + "0mpddrw9z1pzcc40j3pzhd583hlgjx96aa8ak6m9zzhpm4bv3ard")))) (build-system python-build-system) (native-inputs `(("python-parameterized" ,python-parameterized))) @@ -3706,7 +3888,7 @@ The drivers officially supported by @code{libdbi} are: (define-public soci (package (name "soci") - (version "4.0.0") + (version "4.0.1") (source (origin (method git-fetch) (uri (git-reference @@ -3715,24 +3897,22 @@ The drivers officially supported by @code{libdbi} are: (file-name (git-file-name name version)) (sha256 (base32 - "06faswdxd2frqr9xnx6bxc7zwarlzsbdi3bqpz7kwdxsjvq41rnb")))) + "14x2gjblkgpflv75wl144cyjp1sis5rbxnr9r2gj3yw16v2av0bp")))) (build-system cmake-build-system) (inputs - `(("postgresql" ,postgresql) + `(("firebird" ,firebird) + ("postgresql" ,postgresql) ("sqlite" ,sqlite) ("odbc" ,unixodbc) ("boost" ,boost) ("mariadb:dev" ,mariadb "dev") ("mariadb:lib" ,mariadb "lib"))) (arguments - `(#:tests? #f ; Tests may require running database management systems. - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-lib-path - (lambda _ - (substitute* "CMakeLists.txt" - (("set\\(SOCI_LIBDIR \"lib64\"\\)") "")) - #t))))) + `(#:configure-flags + ;; C++11 (-DSOCI_CXX11) is OFF by default. hyperledger-iroha needs it. + (list "-DCMAKE_CXX_STANDARD=17" + "-DSOCI_LIBDIR=lib") + #:tests? #f)) ; may require running database management systems (synopsis "C++ Database Access Library") (description "SOCI is an abstraction layer for several database backends, including |