nixpkgs/pkgs/development/libraries/rocksdb/default.nix

84 lines
2.1 KiB
Nix
Raw Normal View History

{ stdenv
, fetchFromGitHub
, fixDarwinDylibNames
, which, perl
2015-04-21 20:01:44 +02:00
# Optional Arguments
, snappy ? null, google-gflags ? null, zlib ? null, bzip2 ? null, lz4 ? null
, numactl ? null
# Malloc implementation
, jemalloc ? null, gperftools ? null
, enableLite ? false
2015-04-21 20:01:44 +02:00
}:
let
malloc = if jemalloc != null then jemalloc else gperftools;
in
stdenv.mkDerivation rec {
name = "rocksdb-${version}";
version = "5.10.3";
2015-04-21 20:01:44 +02:00
2018-03-11 16:41:57 +01:00
outputs = [ "dev" "out" "static" ];
2015-04-21 20:01:44 +02:00
src = fetchFromGitHub {
owner = "facebook";
repo = "rocksdb";
2015-11-06 03:20:18 +01:00
rev = "v${version}";
sha256 = "19d8i8map8qz639mhflmxc0w9gp78fvkq1l46y5s6b5imwh0w7xq";
2015-04-21 20:01:44 +02:00
};
nativeBuildInputs = [ which perl ];
2017-01-03 23:07:02 +01:00
buildInputs = [ snappy google-gflags zlib bzip2 lz4 malloc fixDarwinDylibNames ];
2015-04-21 20:01:44 +02:00
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";
2015-07-09 15:00:31 +02:00
CMAKE_CXX_FLAGS = "-std=gnu++11";
2015-04-21 20:01:44 +02:00
JEMALLOC_LIB = stdenv.lib.optionalString (malloc == jemalloc) "-ljemalloc";
${if enableLite then "LIBNAME" else null} = "librocksdb_lite";
${if enableLite then "CXXFLAGS" else null} = "-DROCKSDB_LITE=1";
buildAndInstallFlags = [
"USE_RTTI=1"
2016-12-29 14:38:51 +01:00
"DEBUG_LEVEL=0"
"DISABLE_WARNING_AS_ERROR=1"
];
buildFlags = buildAndInstallFlags ++ [
"shared_lib"
"static_lib"
2015-04-21 20:01:44 +02:00
];
installFlags = buildAndInstallFlags ++ [
2016-12-29 14:38:51 +01:00
"INSTALL_PATH=\${out}"
"install-shared"
"install-static"
2015-04-21 20:01:44 +02:00
];
postInstall = ''
# Might eventually remove this when we are confident in the build process
echo "BUILD CONFIGURATION FOR SANITY CHECKING"
cat make_config.mk
2018-03-11 16:41:57 +01:00
mkdir -pv $static/lib/
mv -vi $out/lib/librocksdb.a $static/lib/
2015-04-21 20:01:44 +02:00
'';
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.x86_64 ++ platforms.aarch64;
maintainers = with maintainers; [ adev wkennington ];
2015-04-21 20:01:44 +02:00
};
}