| 1 | |
| 2 | |
| 3 | |
| 4 | |
| 5 | |
| 6 | |
| 7 | |
| 8 | |
| 9 | |
| 10 | |
| 11 | |
| 12 | |
| 13 | |
| 14 | |
| 15 | |
| 16 | |
| 17 | |
| 18 | |
| 19 | |
| 20 | |
| 21 | |
| 22 | |
| 23 |
|
| 24 | (define-module (gnu packages duckdb)
|
| 25 | #:use-module ((guix licenses) #:prefix license:)
|
| 26 | #:use-module (guix build-system cmake)
|
| 27 | #:use-module (guix build-system pyproject)
|
| 28 | #:use-module (guix build-system r)
|
| 29 | #:use-module (guix download)
|
| 30 | #:use-module (guix gexp)
|
| 31 | #:use-module (guix git-download)
|
| 32 | #:use-module (guix packages)
|
| 33 | #:use-module (guix utils)
|
| 34 | #:use-module (gnu packages)
|
| 35 | #:use-module (gnu packages base)
|
| 36 | #:use-module (gnu packages check) |
| 37 | #:use-module (gnu packages cran)
|
| 38 | #:use-module (gnu packages databases)
|
| 39 | #:use-module (gnu packages build-tools)
|
| 40 | #:use-module (gnu packages python-build)
|
| 41 | #:use-module (gnu packages python-science)
|
| 42 | #:use-module (gnu packages python-xyz)
|
| 43 | #:use-module (gnu packages statistics)
|
| 44 | #:use-module (gnu packages time))
|
| 45 |
|
| 46 | |
| 47 | |
| 48 | |
| 49 | |
| 50 | |
| 51 | |
| 52 | |
| 53 |
|
| 54 | (define %duckdb-version "1.5.3")
|
| 55 |
|
| 56 | (define-public duckdb
|
| 57 | (package
|
| 58 | (name "duckdb")
|
| 59 | (version %duckdb-version)
|
| 60 | (source
|
| 61 | (origin
|
| 62 | (method git-fetch)
|
| 63 | (uri (git-reference
|
| 64 | (url "https://github.com/duckdb/duckdb")
|
| 65 | (commit (string-append "v" version))))
|
| 66 | (file-name (git-file-name name version))
|
| 67 | (sha256
|
| 68 | (base32 "0020lv9dxcrng34f0c6ibp20pxll7pyjg0p3080qgw6jf5hsvfck"))))
|
| 69 | (build-system cmake-build-system)
|
| 70 | (arguments
|
| 71 | (list
|
| 72 | |
| 73 | #:tests? #f
|
| 74 | #:configure-flags
|
| 75 | #~(list "-DBUILD_EXTENSIONS=autocomplete;icu;json;parquet;tpch;"
|
| 76 | |
| 77 | (string-append "-DOVERRIDE_GIT_DESCRIBE="
|
| 78 | "v" #$version "-0-g0123456789"))))
|
| 79 | (home-page "https://duckdb.org")
|
| 80 | (synopsis "In-process SQL OLAP database management system")
|
| 81 | (description
|
| 82 | "CLI and C/C++ source libraries for DuckDB, a relational (table-oriented)
|
| 83 | @acronym{DBMS, Database Management System} that supports @acronym{SQL,
|
| 84 | Structured Query Language}, contains a columnar-vectorized query execution
|
| 85 | engine, and provides transactional @acronym{ACID, Atomicity Consistency
|
| 86 | Isolation and Durability} guarantees via bulk-optimized @acronym{MVCC,
|
| 87 | Multi-Version Concurrency Control}. Data can be stored in persistent,
|
| 88 | single-file databases with support for secondary indexes.")
|
| 89 | (license license:expat)))
|
| 90 |
|
| 91 | (define-public python-duckdb
|
| 92 | (package
|
| 93 | (name "python-duckdb")
|
| 94 | (version %duckdb-version)
|
| 95 | (source
|
| 96 | (origin
|
| 97 | (method git-fetch)
|
| 98 | (uri (git-reference
|
| 99 | (url "https://github.com/duckdb/duckdb-python")
|
| 100 | (commit (string-append "v" version))))
|
| 101 | (file-name (git-file-name name version))
|
| 102 | (sha256
|
| 103 | (base32 "1d0zbg86kfpknx50zjmz9j6hcycfy8pwb2h2w5rxw741iihdyj5g"))))
|
| 104 | (build-system pyproject-build-system)
|
| 105 | (arguments
|
| 106 | (list
|
| 107 | |
| 108 | #:build-backend "scikit_build_core.build"
|
| 109 | |
| 110 | #:test-flags
|
| 111 | |
| 112 | #~(list "--ignore=tests/slow/test_h2oai_arrow.py"
|
| 113 | |
| 114 | (string-append "--deselect=tests/fast/api/"
|
| 115 | "test_query_progress.py::TestQueryProgress"
|
| 116 | "::test_query_progress"))
|
| 117 | #:phases
|
| 118 | #~(modify-phases %standard-phases
|
| 119 | (add-before 'build 'link-duckdb-source
|
| 120 | (lambda _
|
| 121 | (rmdir "external/duckdb")
|
| 122 | (symlink #+(package-source (this-package-native-input "duckdb"))
|
| 123 | "external/duckdb")))
|
| 124 | (add-before 'build 'pre-build
|
| 125 | (lambda _
|
| 126 | (setenv "DUCKDB_BUILD_UNITY" "1")
|
| 127 | (setenv "CMAKE_DEFINE_DUCKDB_EXTENSION_AUTOLOAD_DEFAULT" "0")
|
| 128 | (setenv "CMAKE_DEFINE_DUCKDB_EXTENSION_AUTOINSTALL_DEFAULT" "0")))
|
| 129 | (add-before 'check 'set-HOME
|
| 130 | (lambda _ (setenv "HOME" "/tmp"))))))
|
| 131 | (native-inputs
|
| 132 | (list duckdb
|
| 133 | ninja
|
| 134 | python-pytest
|
| 135 | python-pytz
|
| 136 | python-scikit-build-core
|
| 137 | python-setuptools-scm
|
| 138 | tzdata-for-tests))
|
| 139 | (propagated-inputs
|
| 140 | (list python-adbc-driver-manager
|
| 141 | python-fsspec
|
| 142 | python-ipython
|
| 143 | python-numpy
|
| 144 | python-pandas
|
| 145 | python-psutil
|
| 146 | python-pyarrow))
|
| 147 | (home-page "https://www.duckdb.org")
|
| 148 | (synopsis "DuckDB embedded database")
|
| 149 | (description "DuckDB is an in-process SQL OLAP database management
|
| 150 | system.")
|
| 151 | (license license:expat)))
|
| 152 |
|
| 153 | (define-public r-duckdb
|
| 154 | (package
|
| 155 | (name "r-duckdb")
|
| 156 | (version "1.5.2")
|
| 157 | (source
|
| 158 | (origin
|
| 159 | (method url-fetch)
|
| 160 | (uri (cran-uri "duckdb" version))
|
| 161 | (sha256
|
| 162 | (base32 "1dldlfwvc33czvlxfmwaj4p9y6sjjj5iqy98yda47a8kclrqmyam"))
|
| 163 | |
| 164 | |
| 165 | |
| 166 | #;
|
| 167 | (snippet
|
| 168 | '(delete-file "src/duckdb.tar.xz"))))
|
| 169 | (properties
|
| 170 | '((upstream-name . "duckdb")
|
| 171 | (updater-extra-native-inputs . ("tzdata-for-tests"))
|
| 172 | |
| 173 | (updater-ignored-native-inputs . ("r-dblog"))))
|
| 174 | (build-system r-build-system)
|
| 175 | (arguments (list #:tests? #false)) |
| 176 | (propagated-inputs (list r-dbi))
|
| 177 | (native-inputs (list r-adbcdrivermanager
|
| 178 | r-arrow
|
| 179 | r-bit64
|
| 180 | r-callr
|
| 181 | r-clock
|
| 182 | r-dbitest
|
| 183 | r-dbplyr
|
| 184 | r-dplyr
|
| 185 | r-remotes
|
| 186 | r-rlang
|
| 187 | r-sf
|
| 188 | r-testthat
|
| 189 | r-tibble
|
| 190 | r-vctrs
|
| 191 | r-withr
|
| 192 | r-wk
|
| 193 | tzdata-for-tests))
|
| 194 | (home-page "https://r.duckdb.org/")
|
| 195 | (synopsis "DBI package for the DuckDB database management system")
|
| 196 | (description
|
| 197 | "The DuckDB project is an embedded analytical data management system with
|
| 198 | support for the Structured Query Language (SQL). This package includes all of
|
| 199 | DuckDB and an R Database Interface (DBI) connector.")
|
| 200 | (license license:expat)))
|
| 201 |
|
| 202 | |
| 203 | |
| 204 | |
| 205 | |