1{ lib
2, stdenv
3, fetchFromGitHub
4, cmake
5, zlib
6, lz4
7, bzip2
8, zstd
9, spdlog_0
10, tbb
11, openssl
12, boost
13, libpqxx
14, clang-tools
15, catch2
16, python3
17, gtest
18, doxygen
19, fixDarwinDylibNames
20}:
21
22stdenv.mkDerivation rec {
23 pname = "tiledb";
24 version = "2.3.3";
25
26 src = fetchFromGitHub {
27 owner = "TileDB-Inc";
28 repo = "TileDB";
29 rev = version;
30 sha256 = "sha256-3Z5+QUzo2f24q11j6s8KX2vHLFkipFvGk2VFComWW/o=";
31 };
32
33 # (bundled) blosc headers have a warning on some archs that it will be using
34 # unaccelerated routines.
35 cmakeFlags = [
36 "-DTILEDB_WERROR=0"
37 ];
38
39 nativeBuildInputs = [
40 clang-tools
41 cmake
42 python3
43 doxygen
44 ] ++ lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames;
45
46 checkInputs = [
47 gtest
48 ];
49
50 buildInputs = [
51 catch2
52 zlib
53 lz4
54 bzip2
55 zstd
56 spdlog_0
57 tbb
58 openssl
59 boost
60 libpqxx
61 ];
62
63 # emulate the process of pulling catch down
64 postPatch = ''
65 mkdir -p build/externals/src/ep_catch
66 ln -sf ${catch2}/include/catch2 build/externals/src/ep_catch/single_include
67 '';
68
69 doCheck = false; # 9 failing tests due to what seems an overflow
70
71 installTargets = [ "install-tiledb" "doc" ];
72
73 postInstall = lib.optionalString stdenv.isDarwin ''
74 install_name_tool -add_rpath ${tbb}/lib $out/lib/libtiledb.dylib
75 '';
76
77 meta = with lib; {
78 description = "TileDB allows you to manage the massive dense and sparse multi-dimensional array data";
79 homepage = "https://github.com/TileDB-Inc/TileDB";
80 license = licenses.mit;
81 platforms = platforms.unix;
82 maintainers = with maintainers; [ rakesh4g ];
83 };
84
85}