python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / pkgs / development / libraries / rocksdb / default.nix
blobc915a3df521fdf258643b04475c12ef3a0257a57
1 { lib, stdenv
2 , fetchFromGitHub
3 , fetchpatch
4 , cmake
5 , ninja
6 , bzip2
7 , lz4
8 , snappy
9 , zlib
10 , zstd
11 , enableJemalloc ? false, jemalloc
12 , enableLite ? false
13 , enableShared ? !stdenv.hostPlatform.isStatic
16 stdenv.mkDerivation rec {
17   pname = "rocksdb";
18   version = "7.7.3";
20   src = fetchFromGitHub {
21     owner = "facebook";
22     repo = pname;
23     rev = "v${version}";
24     sha256 = "sha256-Np3HPTZYzyoPOKL0xgsLzcvOkceFiEQd+1nyGbg4BHo=";
25   };
27   nativeBuildInputs = [ cmake ninja ];
29   propagatedBuildInputs = [ bzip2 lz4 snappy zlib zstd ];
31   buildInputs = lib.optional enableJemalloc jemalloc;
33   NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isGNU "-Wno-error=deprecated-copy -Wno-error=pessimizing-move"
34     + lib.optionalString stdenv.cc.isClang "-Wno-error=unused-private-field -faligned-allocation";
36   cmakeFlags = [
37     "-DPORTABLE=1"
38     "-DWITH_JEMALLOC=${if enableJemalloc then "1" else "0"}"
39     "-DWITH_JNI=0"
40     "-DWITH_BENCHMARK_TOOLS=0"
41     "-DWITH_TESTS=1"
42     "-DWITH_TOOLS=0"
43     "-DWITH_BZ2=1"
44     "-DWITH_LZ4=1"
45     "-DWITH_SNAPPY=1"
46     "-DWITH_ZLIB=1"
47     "-DWITH_ZSTD=1"
48     "-DWITH_GFLAGS=0"
49     "-DUSE_RTTI=1"
50     "-DROCKSDB_INSTALL_ON_WINDOWS=YES" # harmless elsewhere
51     (lib.optional
52         (stdenv.hostPlatform.isx86 && stdenv.hostPlatform.isLinux)
53         "-DFORCE_SSE42=1")
54     (lib.optional enableLite "-DROCKSDB_LITE=1")
55     "-DFAIL_ON_WARNINGS=${if stdenv.hostPlatform.isMinGW then "NO" else "YES"}"
56   ] ++ lib.optional (!enableShared) "-DROCKSDB_BUILD_SHARED=0";
58   # otherwise "cc1: error: -Wformat-security ignored without -Wformat [-Werror=format-security]"
59   hardeningDisable = lib.optional stdenv.hostPlatform.isWindows "format";
61   # Old version doesn't ship the .pc file, new version puts wrong paths in there.
62   postFixup = ''
63     if [ -f "$out"/lib/pkgconfig/rocksdb.pc ]; then
64       substituteInPlace "$out"/lib/pkgconfig/rocksdb.pc \
65         --replace '="''${prefix}//' '="/'
66     fi
67   '';
69   meta = with lib; {
70     homepage = "https://rocksdb.org";
71     description = "A library that provides an embeddable, persistent key-value store for fast storage";
72     changelog = "https://github.com/facebook/rocksdb/raw/v${version}/HISTORY.md";
73     license = licenses.asl20;
74     platforms = platforms.all;
75     maintainers = with maintainers; [ adev magenbluten ];
76   };