1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
{
lib,
stdenv,
fetchFromGitHub,
cmake,
zlib,
lz4,
bzip2,
zstd,
spdlog,
tbb_2022,
openssl,
boost,
libpqxx,
clang-tools,
catch2_3,
python3,
doxygen,
fixDarwinDylibNames,
gtest,
rapidcheck,
libpng,
file,
runCommand,
useAVX2 ? stdenv.hostPlatform.avx2Support,
}:
let
rapidcheck' = runCommand "rapidcheck" { } ''
cp -r ${rapidcheck.out} $out
chmod -R +w $out
cp -r ${rapidcheck.dev}/* $out
'';
catch2 = catch2_3;
tbb = tbb_2022;
in
stdenv.mkDerivation rec {
pname = "tiledb";
version = "2.28.1";
src = fetchFromGitHub {
owner = "TileDB-Inc";
repo = "TileDB";
tag = version;
hash = "sha256-Cs3Lr8I/Mu02x78d7IySG0XX4u/VAjBs4p4b00XDT5k=";
};
patches = lib.optionals stdenv.hostPlatform.isDarwin [ ./generate_embedded_data_header.patch ];
# libcxx (as of llvm-19) does not yet support `stop_token` and `jthread`
# without the -fexperimental-library flag. Tiledb adds its own
# implementations in the std namespace which conflict with libcxx. This
# test can be re-enabled once libcxx supports stop_token and jthread.
postPatch = lib.optionalString (stdenv.cc.libcxx != null) ''
truncate -s0 tiledb/stdx/test/CMakeLists.txt
'';
env.TILEDB_DISABLE_AUTO_VCPKG = "1";
# (bundled) blosc headers have a warning on some archs that it will be using
# unaccelerated routines.
cmakeFlags = [
"-DTILEDB_WEBP=OFF"
"-DTILEDB_WERROR=OFF"
# https://github.com/NixOS/nixpkgs/issues/144170
"-DCMAKE_INSTALL_INCLUDEDIR=include"
"-DCMAKE_INSTALL_LIBDIR=lib"
]
++ lib.optional (!useAVX2) "-DCOMPILER_SUPPORTS_AVX2=FALSE";
nativeBuildInputs = [
catch2
clang-tools
cmake
python3
doxygen
]
++ lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames;
buildInputs = [
zlib
lz4
bzip2
zstd
spdlog
tbb
openssl
boost
libpqxx
libpng
file
rapidcheck'
catch2
];
nativeCheckInputs = [
gtest
catch2
];
# test commands taken from
# https://github.com/TileDB-Inc/TileDB/blob/dev/.github/workflows/unit-test-runs.yml
checkPhase = ''
runHook preCheck
pushd ..
cmake --build build --target tests
ctest --test-dir build -R '(^unit_|test_assert)' --no-tests=error
ctest --test-dir build -R 'test_ci_asserts'
popd
runHook postCheck
'';
installTargets = [
"install-tiledb"
"doc"
];
postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
install_name_tool -add_rpath ${tbb}/lib $out/lib/libtiledb.dylib
'';
meta = {
description = "Allows you to manage massive dense and sparse multi-dimensional array data";
homepage = "https://github.com/TileDB-Inc/TileDB";
license = lib.licenses.mit;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [ rakesh4g ];
};
}
|