summary refs log tree commit diff
path: root/gnu/packages/databases.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/databases.scm')
-rw-r--r--gnu/packages/databases.scm232
1 files changed, 125 insertions, 107 deletions
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index ac1b23a327..d7b35834fe 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -153,7 +153,7 @@
        (modify-phases %standard-phases
          (add-after 'unpack 'generate-configure
            (lambda _
-             (zero? (system* "sh" "autogen.sh")))))))
+             (invoke "sh" "autogen.sh"))))))
     ;; http://www.4store.org has been down for a while now.
     (home-page "https://github.com/4store/4store")
     (synopsis "Clustered RDF storage and query engine")
@@ -164,14 +164,14 @@ either single machines or networked clusters.")
 (define-public gdbm
   (package
     (name "gdbm")
-    (version "1.14.1")
+    (version "1.18")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/gdbm/gdbm-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0pxwz3jlwvglq2mrbxvrjgr8pa0aj73p3v9sxmdlj570zw0gzknd"))))
+                "1kimnv12bzjjhaqk4c8w2j6chdj9c6bg21lchaf7abcyfss2r0mq"))))
     (arguments `(#:configure-flags '("--enable-libgdbm-compat")))
     (build-system gnu-build-system)
     (home-page "http://www.gnu.org.ua/software/gdbm")
@@ -207,14 +207,16 @@ and provides interfaces to the traditional file format.")
          (delete 'reset-gzip-timestamps)
          (add-before 'check 'start-mongodb
            (lambda* (#:key tests? #:allow-other-keys)
-             (or (not tests?)
-                 (with-directory-excursion "src/gopkg.in/mgo.v2"
-                   (invoke "make" "startdb")))))
+             (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)
-             (or (not tests?)
-                 (with-directory-excursion "src/gopkg.in/mgo.v2"
-                   (invoke "make" "stopdb"))))))))
+             (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)
@@ -511,28 +513,27 @@ applications.")
                (setenv "TZDIR"
                        (string-append (assoc-ref inputs "tzdata")
                                       "/share/zoneinfo"))
-               (or (not 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.
-                   (begin
-                     (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)))))))
+               (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 _
-               (let ((bin  (string-append (assoc-ref %outputs "out") "/bin")))
+             (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))
@@ -620,7 +621,7 @@ Language.")
 (define-public mariadb
   (package
     (name "mariadb")
-    (version "10.1.35")
+    (version "10.1.37")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://downloads.mariadb.org/f/"
@@ -628,14 +629,20 @@ Language.")
                                   name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0k9walaglwmwdwmkq48ir17g98n83vliyyg5wck22rjgxn2xk4cy"))
-              (patches (search-patches "mariadb-gcc-ice.patch"
-                                       "mariadb-client-test-32bit.patch"))
+                "0ijdmdn9mcciwv361zfmja6b1h6qpbdqgrnnq6kkdapplyq1dmcc"))
+              (patches (search-patches "mariadb-client-test-32bit.patch"))
               (modules '((guix build utils)))
               (snippet
                '(begin
                   ;; Delete bundled snappy and xz.
                   (delete-file-recursively "storage/tokudb/PerconaFT/third_party")
+                  (substitute* "storage/tokudb/PerconaFT/CMakeLists.txt"
+                    ;; This file checks that the bundled sources are present and
+                    ;; declares build procedures for them.
+                    (("^include\\(TokuThirdParty\\)") ""))
+                  (substitute* "storage/tokudb/PerconaFT/ft/CMakeLists.txt"
+                    ;; Don't attempt to use the procedures we just removed.
+                    ((" build_lzma build_snappy") ""))
 
                   ;; Preserve CMakeLists.txt for these.
                   (for-each (lambda (file)
@@ -679,7 +686,7 @@ Language.")
          "-DINSTALL_SHAREDIR=share")
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'unbundle
+         (add-after 'unpack 'fix-pcre-detection
            (lambda _
              ;; The bundled PCRE in MariaDB has a patch that was upstreamed
              ;; in version 8.34.  Unfortunately the upstream patch behaves
@@ -688,16 +695,6 @@ Language.")
              ;; XXX: Consider patching PCRE instead.
              (substitute* "cmake/pcre.cmake"
                ((" OR NOT PCRE_STACK_SIZE_OK") ""))
-
-             (substitute* "storage/tokudb/PerconaFT/ft/CMakeLists.txt"
-               ;; Remove dependency on these CMake targets.
-               ((" build_lzma build_snappy") ""))
-
-             (substitute* "storage/tokudb/PerconaFT/CMakeLists.txt"
-               ;; This file checks that the bundled sources are present and
-               ;; declares build procedures for them.  We don't need that.
-               (("^include\\(TokuThirdParty\\)") ""))
-
              #t))
          (add-after 'unpack 'adjust-tests
            (lambda _
@@ -707,6 +704,7 @@ Language.")
                       ;; See <https://jira.mariadb.org/browse/MDEV-7761>.
                       "main.join_cache"
                       "main.explain_non_select"
+                      "main.stat_tables_innodb"
                       "roles.acl_statistics"
 
                       ;; FIXME: This test fails on i686:
@@ -772,8 +770,8 @@ Language.")
                 (for-each delete-file-recursively
                           '("data" "mysql-test" "sql-bench"
                             "share/man/man1/mysql-test-run.pl.1"))
-                ;; Delete huge mysqltest executables.
-                (for-each delete-file (find-files "bin" "test"))
+                ;; Delete huge and unnecessary executables.
+                (for-each delete-file (find-files "bin" "(test|embedded)"))
                 ;; And static libraries.
                 (for-each delete-file (find-files "lib" "\\.a$")))
               #t))))))
@@ -785,11 +783,13 @@ Language.")
        ("libaio" ,libaio)
        ("libxml2" ,libxml2)
        ("ncurses" ,ncurses)
-       ("openssl" ,openssl)
        ("pcre" ,pcre)
        ("snappy" ,snappy)
        ("xz" ,xz)
        ("zlib" ,zlib)))
+    (propagated-inputs
+     ;; mariadb.pc says -lssl -lcrypto, so propagate it.
+     `(("openssl" ,openssl)))
     ;; The test suite is very resource intensive and can take more than three
     ;; hours on a x86_64 system.  Give slow and busy machines some leeway.
     (properties '((timeout . 64800)))        ;18 hours
@@ -923,7 +923,23 @@ organized in a hash table or B+ tree.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0cdwa4094x3yx7vn98xykvnlp9rngvd58d19vs3vh5hrvggccg93"))))
+                "0cdwa4094x3yx7vn98xykvnlp9rngvd58d19vs3vh5hrvggccg93"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  ;; Adjust the bundled gnulib to work with glibc 2.28.  See e.g.
+                  ;; "m4-gnulib-libio.patch".  This is a phase rather than patch
+                  ;; or snippet to work around <https://bugs.gnu.org/32347>.
+                  (substitute* (find-files "lib" "\\.c$")
+                    (("#if defined _IO_ftrylockfile")
+                     "#if defined _IO_EOF_SEEN"))
+                  (substitute* "lib/stdio-impl.h"
+                    (("^/\\* BSD stdio derived implementations")
+                     (string-append "#if !defined _IO_IN_BACKUP && defined _IO_EOF_SEEN\n"
+                                    "# define _IO_IN_BACKUP 0x100\n"
+                                    "#endif\n\n"
+                                    "/* BSD stdio derived implementations")))
+                  #t))))
     (build-system gnu-build-system)
 
     ;; Running tests in parallel leads to test failures and crashes in
@@ -973,15 +989,16 @@ types are supported, as is encryption.")
 (define-public rocksdb
   (package
     (name "rocksdb")
-    (version "5.12.4")
+    (version "5.15.10")
     (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"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/facebook/rocksdb")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1jcwgsjhk4hdfr2wf549blkgb89vwcdb5i2ahhqs6zf3mm20i3bf"))
+                "0q26frbj9pykarcfa0yxgwncxlvsqhjkby0jrbfs1a8srja688r4"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -1102,7 +1119,8 @@ data in a single database.  RocksDB is partially based on @code{LevelDB}.")
            (lambda _
              (substitute* "Makefile"
                (("^gitrev :=.*$")
-                (string-append "gitrev = \"v" ,version "\"")))))
+                (string-append "gitrev = \"v" ,version "\"")))
+             #t))
          ;; The install phase of the Makefile assumes $PREFIX/usr/local/bin.
          ;; This replacement does the same thing, except for using $PREFIX/bin
          ;; instead.
@@ -1111,14 +1129,13 @@ data in a single database.  RocksDB is partially based on @code{LevelDB}.")
              (let* ((out (assoc-ref outputs "out"))
                     (bin (string-append out "/bin")))
                (install-file "sparql-query" bin)
-               (system* "ln" "--symbolic"
-                        (string-append bin "/sparql-query")
-                        (string-append bin "/sparql-update")))))
+               (symlink (string-append bin "/sparql-query")
+                        (string-append bin "/sparql-update")))
+             #t))
          (replace 'check
            (lambda* (#:key make-flags #:allow-other-keys)
-             (and
-              (zero? (apply system* "make" `(,@make-flags "scan-test")))
-              (zero? (system "./scan-test"))))))))
+             (apply invoke "make" `(,@make-flags "scan-test"))
+             (invoke "./scan-test"))))))
     (home-page "https://github.com/tialaramex/sparql-query/")
     (synopsis "Command-line tool for accessing SPARQL endpoints over HTTP")
     (description "Sparql-query is a command-line tool for accessing SPARQL
@@ -1166,7 +1183,7 @@ changes.")
 (define-public sqlite
   (package
    (name "sqlite")
-   (version "3.23.0")
+   (version "3.24.0")
    (source (origin
             (method url-fetch)
             (uri (let ((numeric-version
@@ -1182,7 +1199,7 @@ changes.")
                                   numeric-version ".tar.gz")))
             (sha256
              (base32
-              "0jbf78g3cm5wq77k7sfg8fb6rz44hnp9hs7p5d66fwd000c1lwdp"))))
+              "0jmprv2vpggzhy7ma4ynmv1jzn3pfiwzkld0kkg6hvgvqs44xlfr"))))
    (build-system gnu-build-system)
    (inputs `(("readline" ,readline)))
    (arguments
@@ -1243,8 +1260,8 @@ is in the public domain.")
              (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)))))))))
+               (invoke "./configure"
+                       (string-append "--prefix=" out))))))))
     (native-inputs
      `(;; TODO: Build the documentation.
        ;; ("docbook-xsl" ,docbook-xsl)
@@ -1609,7 +1626,7 @@ valid SQL query.")
 (define-public unixodbc
   (package
    (name "unixodbc")
-   (version "2.3.6")
+   (version "2.3.7")
    (source (origin
             (method url-fetch)
             (uri
@@ -1617,7 +1634,7 @@ valid SQL query.")
               "ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-"
               version ".tar.gz"))
             (sha256
-             (base32 "0sads5b8cmmj526gyjba7ccknl1vbhkslfqshv1yqln08zv3gdl8"))))
+             (base32 "0xry3sg497wly8f7715a7gwkn2k36bcap0mvzjw74jj53yx6kwa5"))))
    (build-system gnu-build-system)
    (synopsis "Data source abstraction library")
    (description "Unixodbc is a library providing an API with which to access
@@ -1993,8 +2010,7 @@ can autogenerate peewee models using @code{pwiz}, a model generator.")
            (assoc-ref %standard-phases 'check))
          (replace 'check
            (lambda _
-             (zero?
-              (system* "./testfixture" "test/crypto.test")))))))
+             (invoke "./testfixture" "test/crypto.test"))))))
     (home-page "https://www.zetetic.net/sqlcipher/")
     (synopsis
      "Library providing transparent encryption of SQLite database files")
@@ -2250,9 +2266,6 @@ and web services platform functionality.")
      `(("pkg-config" ,pkg-config)))
     (inputs
      `(("mariadb" ,mariadb)
-       ;; FIXME: This should be propagated from MariaDB, but add it here
-       ;; for now to prevent a large rebuild.
-       ("openssl" ,openssl)
        ("zlib" ,zlib)))
     (propagated-inputs
      `(("r-dbi" ,r-dbi)))
@@ -2321,7 +2334,7 @@ Database API 2.0T.")
 (define-public python-sqlalchemy
   (package
     (name "python-sqlalchemy")
-    (version "1.0.12")
+    (version "1.2.11")
     (source
      (origin
       (method url-fetch)
@@ -2329,7 +2342,7 @@ Database API 2.0T.")
                           "SQLAlchemy/SQLAlchemy-" version ".tar.gz"))
       (sha256
        (base32
-        "1l8qclhd0s90w3pvwhi5mjxdwr5j7gw7cjka2fx6f2vqmq7f4yb6"))))
+        "094mmbs4igrxplfyqd59j90jb83ixpbbzqc0w49yw81m82nnjrgg"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-cython" ,python-cython) ;for c extensions
@@ -2339,7 +2352,7 @@ Database API 2.0T.")
      `(#:phases
        (modify-phases %standard-phases
          (replace 'check
-           (lambda _ (zero? (system* "py.test")))))))
+           (lambda _ (invoke "py.test"))))))
     (home-page "http://www.sqlalchemy.org")
     (synopsis "Database abstraction library")
     (description
@@ -2406,14 +2419,14 @@ You might also want to install the following optional dependencies:
 (define-public python-alembic
   (package
     (name "python-alembic")
-    (version "0.9.6")
+    (version "1.0.2")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "alembic" version))
        (sha256
         (base32
-         "0cm73vabrqj92v7a0wwvldj8j7bc7dwv358kvkk7p87gx7mm2a04"))))
+         "0asqz9mwc4w8bsar1icv3ik9jslxrj3gv3yxgmhc6nc6r9qbkg04"))))
     (build-system python-build-system)
     (native-inputs
      `(("python-mock" ,python-mock)
@@ -2731,13 +2744,13 @@ reasonable substitute.")
 (define-public python-rq
   (package
     (name "python-rq")
-    (version "0.7.1")
+    (version "0.12.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "rq" version))
        (sha256
-        (base32 "0gaq5pnh0zy46r8jvygi0ifbvz3pq6i7xla78ijcgjw0x77qzsdh"))))
+        (base32 "16d8kni57xlnah2hawy4xgw21xrv3f64j5q5shyp3zxx4yd9iibs"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-click" ,python-click)
@@ -2792,7 +2805,7 @@ is designed to have a low barrier to entry.")
      `(#:phases
        (modify-phases %standard-phases
          (replace 'check
-           (lambda _ (zero? (system* "py.test")))))))
+           (lambda _ (invoke "py.test"))))))
     (native-inputs
      `(("python-pytest" ,python-pytest)))
     (home-page "https://github.com/andialbrecht/sqlparse")
@@ -2859,41 +2872,46 @@ transforms idiomatic python function calls to well-formed SQL queries.")
            (delete 'install-source)
            (replace 'build
              (lambda _
-               (every (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)))
+               (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"
-                 (every (lambda (tool)
-                          (invoke
-                           "go" "test" "-v"
-                           (string-append "github.com/mongodb/mongo-tools/" tool)))
-                        all-tools))))
+                 (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 "src/github.com/mongodb/mongo-tools/bin/"
+                                           tool)
                             (string-append (assoc-ref outputs "out")
                                            "/bin")))
-                         all-tools)))))))
+                         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)