summary refs log tree commit diff
path: root/pkgs/development/libraries/rocksdb/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/libraries/rocksdb/default.nix')
-rw-r--r--pkgs/development/libraries/rocksdb/default.nix61
1 files changed, 61 insertions, 0 deletions
diff --git a/pkgs/development/libraries/rocksdb/default.nix b/pkgs/development/libraries/rocksdb/default.nix
new file mode 100644
index 00000000000..88d94ec0f2c
--- /dev/null
+++ b/pkgs/development/libraries/rocksdb/default.nix
@@ -0,0 +1,61 @@
+{ stdenv, fetchFromGitHub
+
+# Optional Arguments
+, snappy ? null, google-gflags ? null, zlib ? null, bzip2 ? null, lz4 ? null
+, numactl ? null
+
+# Malloc implementation
+, jemalloc ? null, gperftools ? null
+}:
+
+let
+  malloc = if jemalloc != null then jemalloc else gperftools;
+in
+stdenv.mkDerivation rec {
+  name = "rocksdb-${version}";
+  version = "3.10";
+
+  src = fetchFromGitHub {
+    owner = "facebook";
+    repo = "rocksdb";
+    rev = "v${version}";
+    sha256 = "1px345x9cyaxyjlzsf3bcxixvfaxn9x3ysq7biajyfhk8wq1n4p0";
+  };
+
+  buildInputs = [ snappy google-gflags zlib bzip2 lz4 numactl malloc ];
+
+  postPatch = ''
+    # Hack to fix typos
+    sed -i 's,#inlcude,#include,g' build_tools/build_detect_platform
+  '';
+
+  # Environment vars used for building certain configurations
+  PORTABLE = "1";
+  USE_SSE = "1";
+  JEMALLOC_LIB = stdenv.lib.optionalString (malloc == jemalloc) "-ljemalloc";
+
+  buildFlags = [
+    "static_lib"
+    "shared_lib"
+  ];
+
+  installFlags = [
+    "INSTALL_PATH=\${out}"
+  ];
+
+  postInstall = ''
+    # Might eventually remove this when we are confident in the build process
+    echo "BUILD CONFIGURATION FOR SANITY CHECKING"
+    cat make_config.mk
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = http://rocksdb.org;
+    description = "A library that provides an embeddable, persistent key-value store for fast storage";
+    license = licenses.bsd3;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ wkennington ];
+  };
+}