X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/f19796468974d5e2295144e670a099b223a782e9..refs/heads/wip-bees:/gnu/packages/databases.scm diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index 29270ce2be..2353e3b731 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -28,11 +28,11 @@ ;;; Copyright © 2017, 2018 Ben Woodcroft ;;; Copyright © 2017 Rutger Helling ;;; Copyright © 2017, 2018 Pierre Langlois -;;; Copyright © 2015, 2017, 2018, 2019 Ricardo Wurmus +;;; Copyright © 2015, 2017, 2018, 2019, 2021 Ricardo Wurmus ;;; Copyright © 2017 Kristofer Buffington ;;; Copyright © 2018 Amirouche Boubekki ;;; Copyright © 2018 Joshua Sierles, Nextjournal -;;; Copyright © 2018 Maxim Cournoyer +;;; Copyright © 2018, 2021 Maxim Cournoyer ;;; Copyright © 2019 Jack Hill ;;; Copyright © 2019 Alex Griffin ;;; Copyright © 2019 Gábor Boskovits @@ -48,6 +48,7 @@ ;;; Copyright © 2020 Vincent Legoll ;;; Copyright © 2021 Sharlatan Hellseher ;;; Copyright © 2021 Greg Hogan +;;; Copyright © 2021 David Larsson ;;; ;;; This file is part of GNU Guix. ;;; @@ -193,52 +194,6 @@ either single machines or networked clusters.") (license license:gpl3+))) -(define-public go-gopkg.in-mgo.v2 - (package - (name "go-gopkg.in-mgo.v2") - (version "2016.08.01") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/go-mgo/mgo") - (commit (string-append "r" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0rwbi1z63w43b0z9srm8m7iz1fdwx7bq7n2mz862d6liiaqa59jd")))) - (build-system go-build-system) - (arguments - `(#:import-path "gopkg.in/mgo.v2" - ;; TODO: The tests fail as MongoDB fails to start - ;; Error parsing command line: unrecognised option '--chunkSize' - #:tests? #f - #:phases - (modify-phases %standard-phases - (delete 'reset-gzip-timestamps) - (add-before 'check 'start-mongodb - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (with-directory-excursion "src/gopkg.in/mgo.v2" - (invoke "make" "startdb"))) - #t)) - (add-after 'check 'stop'mongodb - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (with-directory-excursion "src/gopkg.in/mgo.v2" - (invoke "make" "stopdb"))) - #t))))) - (native-inputs - `(("go-gopkg.in-check.v1" ,go-gopkg.in-check.v1) - ("mongodb" ,mongodb) - ("daemontools" ,daemontools))) - (synopsis "@code{mgo} offers a rich MongoDB driver for Go.") - (description - "@code{mgo} (pronounced as mango) is a MongoDB driver for the Go language. -It implements a rich selection of features under a simple API following -standard Go idioms.") - (home-page "https://labix.org/mgo") - (license license:bsd-2))) - (define-public ephemeralpg (package (name "ephemeralpg") @@ -572,7 +527,8 @@ applications.") ("cyrus-sasl" ,cyrus-sasl))) (outputs '("out" "doc")) (arguments - '(#:phases + '(#:tests? #f ;many tests fail and use too much time + #:phases (modify-phases %standard-phases (add-before 'bootstrap 'fix-configure.ac ;; Move the AC_CONFIG_AUX_DIR macro use under AC_INIT, otherwise we @@ -584,24 +540,9 @@ applications.") (delete-file "bootstrap.sh") ;not useful in the context of Guix (substitute* "configure.ac" (("^AC_CONFIG_AUX_DIR\\(\\[build-aux\\]\\).*") "") - (("(^AC_INIT.*)" anchor) - (string-append anchor "AC_CONFIG_AUX_DIR([build-aux])\n"))) - #t)) - (add-before 'bootstrap 'disable-failing-tests - ;; See: https://bugs.launchpad.net/libmemcached/+bug/1803926 - (lambda _ - ;; Mark some heavily failing test suites as expected to fail. - (substitute* "Makefile.am" - (("(XFAIL_TESTS =[^\n]*)" xfail_tests) - (string-append xfail_tests " tests/testudp" - " tests/libmemcached-1.0/testapp" - " tests/libmemcached-1.0/testsocket"))) - ;; Disable two tests of the unittest test suite. - (substitute* "libtest/unittest.cc" - ((".*echo_fubar_BINARY \\},.*") "") - ((".*application_doesnotexist_BINARY \\},.*") "")) - #t)) - (add-after 'disable-dns-tests 'build-and-install-html-doc + (("^AC_INIT.*" anchor) + (string-append anchor "AC_CONFIG_AUX_DIR([build-aux])\n"))))) + (add-before 'build 'build-and-install-html-doc (lambda* (#:key outputs #:allow-other-keys) (let ((html (string-append (assoc-ref outputs "doc") "/share/doc/libmemcached/html/"))) @@ -609,9 +550,8 @@ applications.") ;; Cleanup useless files. (for-each delete-file-recursively (map (lambda (x) (string-append html x)) - '("_sources" ".doctrees" ".buildinfo")))) - #t))))) - (home-page "https://libmemcached.org/") + '("_sources" ".doctrees" ".buildinfo"))))))))) + (home-page "https://libmemcached.org/libMemcached.html") (synopsis "C++ library for memcached") (description "libMemcached is a library to use memcached in C/C++ applications. It comes with a complete reference guide and documentation of @@ -661,146 +601,6 @@ replacement for the code@{python-memcached} library.") (define-public python2-pylibmc (package-with-python2 python-pylibmc)) -;; This is the last version of mongodb before they switched to the Server Side -;; Public License (SSPL), which is not a FOSS license. As such, this package -;; cannot be updated. -(define-public mongodb - (package - (name "mongodb") - (version "3.4.10") - (source (origin - (method url-fetch) - (uri (string-append "https://github.com/mongodb/mongo/archive/r" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0676lvkljj7a5hdhv78dbykqnqrj9lbn9799mi84b8vbnzsq961r")) - (modules '((guix build utils))) - (snippet - '(begin - (for-each (lambda (dir) - (delete-file-recursively - (string-append "src/third_party/" dir))) - '("pcre-8.41" "scons-2.5.0" "snappy-1.1.3" - "valgrind-3.11.0" "wiredtiger" - "yaml-cpp-0.5.3" "zlib-1.2.8")) - #t)) - (patches - (list - (search-patch "mongodb-support-unknown-linux-distributions.patch"))))) - (build-system scons-build-system) - (inputs - `(("openssl" ,openssl-1.0) - ("pcre" ,pcre) - ,@(match (%current-system) - ((or "x86_64-linux" "aarch64-linux" "mips64el-linux") - `(("wiredtiger" ,wiredtiger))) - (_ `())) - ("yaml-cpp" ,yaml-cpp) - ("zlib" ,zlib) - ("snappy" ,snappy))) - (native-inputs - `(("valgrind" ,valgrind) - ("perl" ,perl) - ("python" ,python-2) - ("python2-pymongo" ,python2-pymongo) - ("python2-pyyaml" ,python2-pyyaml) - ("tzdata" ,tzdata-for-tests))) - (arguments - `(#:scons ,scons-python2 - #:phases - (let ((common-options - `(;; "--use-system-tcmalloc" TODO: Missing gperftools - "--use-system-pcre" - ;; wiredtiger is 64-bit only - ,,(if (any (cute string-prefix? <> (or (%current-target-system) - (%current-system))) - '("i686-linux" "armhf-linux")) - ``"--wiredtiger=off" - ``"--use-system-wiredtiger") - ;; TODO - ;; build/opt/mongo/db/fts/unicode/string.o failed: Error 1 - ;; --use-system-boost - "--use-system-snappy" - "--use-system-zlib" - "--use-system-valgrind" - ;; "--use-system-stemmer" TODO: Missing relevant package - "--use-system-yaml" - "--disable-warnings-as-errors" - ,(format #f "--jobs=~a" (parallel-job-count)) - "--ssl"))) - (modify-phases %standard-phases - (add-after 'unpack 'patch - (lambda _ - ;; Remove use of GNU extensions in parse_number_test.cpp, to - ;; allow compiling with GCC 7 or later - ;; https://jira.mongodb.org/browse/SERVER-28063 - (substitute* "src/mongo/base/parse_number_test.cpp" - (("0xabcab\\.defdefP-10") - "687.16784283419838")) - #t)) - (add-after 'unpack 'scons-propagate-environment - (lambda _ - ;; Modify the SConstruct file to arrange for - ;; environment variables to be propagated. - (substitute* "SConstruct" - (("^env = Environment\\(") - "env = Environment(ENV=os.environ, ")) - #t)) - (add-after 'unpack 'create-version-file - (lambda _ - (call-with-output-file "version.json" - (lambda (port) - (display ,(simple-format #f "{ - \"version\": \"~A\" -}" version) port))) - #t)) - (replace 'build - (lambda _ - (apply invoke `("scons" - ,@common-options - "mongod" "mongo" "mongos")))) - (replace 'check - (lambda* (#:key tests? inputs #:allow-other-keys) - (setenv "TZDIR" - (string-append (assoc-ref inputs "tzdata") - "/share/zoneinfo")) - (when tests? - ;; Note that with the tests, especially the unittests, the - ;; build can take up to ~45GB of space, as many tests are - ;; individual executable files, with some being hundreds of - ;; megabytes in size. - (apply invoke `("scons" ,@common-options "dbtest" "unittests")) - (substitute* "build/unittests.txt" - ;; TODO: Don't run the async_stream_test, as it hangs - (("^build\\/opt\\/mongo\\/executor\\/async\\_stream\\_test\n$") - "") - ;; TODO: This test fails - ;; Expected 0UL != disks.size() (0 != 0) @src/mongo/util/procparser_test.cpp:476 - (("^build\\/opt\\/mongo\\/util\\/procparser\\_test\n$") - "")) - (invoke "python" "buildscripts/resmoke.py" - "--suites=dbtest,unittests" - (format #f "--jobs=~a" (parallel-job-count)))) - #t)) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let ((bin (string-append (assoc-ref outputs "out") "/bin"))) - (install-file "mongod" bin) - (install-file "mongos" bin) - (install-file "mongo" bin)) - #t)))))) - (home-page "https://www.mongodb.org/") - (synopsis "High performance and high availability document database") - (description - "Mongo is a high-performance, high availability, schema-free -document-oriented database. A key goal of MongoDB is to bridge the gap -between key/value stores (which are fast and highly scalable) and traditional -RDBMS systems (which are deep in functionality).") - (license (list license:agpl3 - ;; Some parts are licensed under the Apache License - license:asl2.0)))) - (define-public mycli (package (name "mycli") @@ -935,6 +735,7 @@ Language.") (append (find-files "extra/wolfssl") (find-files "zlib"))) #t)))) + (replacement mariadb/fixed) (build-system cmake-build-system) (outputs '("out" "lib" "dev")) (arguments @@ -1170,6 +971,13 @@ Language.") as a drop-in replacement of MySQL.") (license license:gpl2))) +(define mariadb/fixed + (package + (inherit mariadb) + (source (origin + (inherit (package-source mariadb)) + (patches (search-patches "mariadb-CVE-2021-27928.patch")))))) + (define-public mariadb-connector-c (package (name "mariadb-connector-c") @@ -1195,6 +1003,31 @@ as a drop-in replacement of MySQL.") developed in C/C++ to MariaDB and MySQL databases.") (license license:lgpl2.1+))) +(define-public galera + (package + (name "galera") + (version "26.4.7") + (source (origin + (method git-fetch) + (uri (git-reference + (commit "bac8171266cb982fe013ce496d78085438c6f23e") + (url "https://github.com/codership/galera") + (recursive? #t))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0h7s670pcasq8wzprhyxqfca2cghi62b8xz2kikb2a86wd453qil")))) + (build-system cmake-build-system) + (inputs + `(("check" ,check) + ("boost" ,boost) + ("openssl" ,openssl))) + (home-page "https://github.com/codership/galera/") + (synopsis "Extension to the MariaDB database server") + (description + "Galera is a wsrep-provider that is used with MariaDB for load-balancing +and high-availability (HA).") + (license license:gpl2))) ;'COPYING' says "version 2" only + ;; Don't forget to update the other postgresql packages when upgrading this one. (define-public postgresql-13 (package @@ -2240,6 +2073,35 @@ Driver.") ;; COPYING contains copy of lgpl2.1 - but copyright notices just say "LGPL" (home-page "http://www.unixodbc.org"))) +(define-public nanodbc + (package + (name "nanodbc") + (version "2.13.0") + (source (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/nanodbc/nanodbc") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1q80p7yv9mcl4hyvnvcjdr70y8nc940ypf368lp97vpqn5yckkgm")))) + (build-system cmake-build-system) + (arguments + `(#:configure-flags + ;; The tests require ODBC backends to be installed. + (list "-DNANODBC_DISABLE_TESTS=ON") + #:tests? #false)) + (inputs + `(("unixodbc" ,unixodbc))) + (home-page "https://nanodbc.io/") + (synopsis "C++ wrapper for the native C ODBC API") + (description "The goal for nanodbc is to make developers happy by providing +a simpler and less verbose API for working with ODBC. Common tasks should be +easy, requiring concise and simple code.") + (license license:expat))) + (define-public unqlite (package (name "unqlite") @@ -2662,7 +2524,10 @@ can autogenerate peewee models using @code{pwiz}, a model generator.") (lambda _ (substitute* "setup.py" (("pypika>=0\\.44\\.0,<0\\.45\\.0") "pypika") - (("aiosqlite>=0.16.0,<0.17.0") "aiosqlite")) + (("aiosqlite>=0.16.0,<0.17.0") "aiosqlite") + (("pytz>=2020\\.4,<2021\\.0") "pytz") + ;; Not required, since ciso8601 is used. + (("'iso8601>=0\\.1\\.13,<0\\.2\\.0',") "")) #t))))) (native-inputs `(("python-asynctest" ,python-asynctest) @@ -2671,6 +2536,7 @@ can autogenerate peewee models using @code{pwiz}, a model generator.") `(("python-aiosqlite" ,python-aiosqlite) ("python-pypika" ,python-pypika) ("python-ciso8601" ,python-ciso8601) + ("python-pytz" ,python-pytz) ("python-typing-extensions" ,python-typing-extensions))) (home-page @@ -3554,9 +3420,6 @@ processing them in the background with workers. It is backed by Redis and it is designed to have a low barrier to entry.") (license license:bsd-2))) -(define-public python2-rq - (package-with-python2 python-rq)) - (define-public python-rq-scheduler (package (name "python-rq-scheduler") @@ -3689,121 +3552,6 @@ transforms idiomatic python function calls to well-formed SQL queries.") the SQL language using a syntax that reflects the resulting query.") (license license:asl2.0))) -(define-public mongo-tools - (package - (name "mongo-tools") - (version "3.4.0") - (source - (origin (method git-fetch) - (uri (git-reference - (url "https://github.com/mongodb/mongo-tools") - (commit (string-append "r" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1bcsz5cvj39a7nsxsfqmz9igrw33j6yli9kffigqyscs52amw7x1")))) - (build-system go-build-system) - (arguments - `(#:import-path "github.com/mongodb/mongo-tools" - #:modules ((srfi srfi-1) - (guix build go-build-system) - (guix build utils)) - #:install-source? #f - #:phases - (let ((all-tools - '("bsondump" "mongodump" "mongoexport" "mongofiles" - "mongoimport" "mongooplog" "mongorestore" - "mongostat" "mongotop"))) - (modify-phases %standard-phases - (add-after 'unpack 'delete-bundled-source-code - (lambda _ - (delete-file-recursively - "src/github.com/mongodb/mongo-tools/vendor") - #t)) - (add-after 'delete-bundled-source-code 'patch-source - (lambda _ - ;; Remove a redundant argument that causes compilation to fail. - (substitute* - "src/github.com/mongodb/mongo-tools/mongorestore/filepath.go" - (("skipping restore of system.profile collection\", db)") - "skipping restore of system.profile collection\")")) - #t)) - (replace 'build - (lambda _ - (for-each (lambda (tool) - (let ((command - `("go" "build" - ;; This is where the tests expect to find the - ;; executables - "-o" ,(string-append - "src/github.com/mongodb/mongo-tools/bin/" - tool) - "-v" - "-tags=\"ssl sasl\"" - "-ldflags" - "-extldflags=-Wl,-z,now,-z,relro" - ,(string-append - "src/github.com/mongodb/mongo-tools/" - tool "/main/" tool ".go")))) - (simple-format #t "build: running ~A\n" - (string-join command)) - (apply invoke command))) - all-tools) - #t)) - (replace 'check - (lambda _ - (with-directory-excursion "src" - (for-each (lambda (tool) - (invoke - "go" "test" "-v" - (string-append "github.com/mongodb/mongo-tools/" - tool))) - all-tools)) - #t)) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (for-each (lambda (tool) - (install-file - (string-append "src/github.com/mongodb/mongo-tools/bin/" - tool) - (string-append (assoc-ref outputs "out") - "/bin"))) - all-tools) - #t)))))) - (native-inputs - `(("go-github.com-howeyc-gopass" ,go-github.com-howeyc-gopass) - ("go-github.com-jessevdk-go-flags" ,go-github.com-jessevdk-go-flags) - ("go-golang-org-x-crypto" ,go-golang-org-x-crypto) - ("go-gopkg.in-mgo.v2" ,go-gopkg.in-mgo.v2) - ("go-gopkg.in-tomb.v2" ,go-gopkg.in-tomb.v2) - ("go-github.com-nsf-termbox-go" ,go-github.com-nsf-termbox-go) - ("go-github.com-smartystreets-goconvey" ,go-github.com-smartystreets-goconvey))) - (home-page "https://github.com/mongodb/mongo-tools") - (synopsis "Various tools for interacting with MongoDB and BSON") - (description - "This package includes a collection of tools related to MongoDB. -@table @code -@item bsondump -Display BSON files in a human-readable format -@item mongoimport -Convert data from JSON, TSV or CSV and insert them into a collection -@item mongoexport -Write an existing collection to CSV or JSON format -@item mongodump/mongorestore -Dump MongoDB backups to disk in the BSON format -@item mongorestore -Read MongoDB backups in the BSON format, and restore them to a live database -@item mongostat -Monitor live MongoDB servers, replica sets, or sharded clusters -@item mongofiles -Read, write, delete, or update files in GridFS -@item mongooplog -Replay oplog entries between MongoDB servers -@item mongotop -Monitor read/write activity on a mongo server -@end table") - (license license:asl2.0))) - ;; There are many wrappers for this in other languages. When touching, please ;; be sure to ensure all dependencies continue to build. (define-public apache-arrow @@ -4093,7 +3841,8 @@ The drivers officially supported by @code{libdbi} are: (base32 "14x2gjblkgpflv75wl144cyjp1sis5rbxnr9r2gj3yw16v2av0bp")))) (build-system cmake-build-system) - (inputs + (propagated-inputs + ;; Headers of soci has include-references to headers of these inputs. `(("firebird" ,firebird) ("postgresql" ,postgresql) ("sqlite" ,sqlite) @@ -4116,14 +3865,14 @@ PostreSQL, SQLite, ODBC and MySQL.") (define-public freetds (package (name "freetds") - (version "1.2.18") + (version "1.2.20") (source (origin (method url-fetch) (uri (string-append "https://www.freetds.org/files/stable/" "freetds-" version ".tar.gz")) (sha256 - (base32 "1hspvwxwdd1apadsy2b40dpjik8kfwcvdamvhpg3lnm15n02fb50")))) + (base32 "11fzwcahc1bc8npxbif0448v9cwyf7k04167i7fcspmfw7a0hj0d")))) (build-system gnu-build-system) (arguments ;; NOTE: (Sharlatan-20210110213908+0000) some tests require DB connection,