diff options
Diffstat (limited to 'pkgs/development/libraries/wiredtiger/default.nix')
-rw-r--r-- | pkgs/development/libraries/wiredtiger/default.nix | 56 |
1 files changed, 46 insertions, 10 deletions
diff --git a/pkgs/development/libraries/wiredtiger/default.nix b/pkgs/development/libraries/wiredtiger/default.nix index 395a4040153..347686014d1 100644 --- a/pkgs/development/libraries/wiredtiger/default.nix +++ b/pkgs/development/libraries/wiredtiger/default.nix @@ -1,34 +1,70 @@ { stdenv, fetchFromGitHub, automake, autoconf, libtool -, bzip2, snappy, zlib, db + +# Optional Dependencies +, lz4 ? null, snappy ? null, zlib ? null, bzip2 ? null, db ? null +, gperftools ? null, leveldb ? null }: +with stdenv.lib; +let + mkFlag = trueStr: falseStr: cond: name: val: + if cond == null then null else + "--${if cond != false then trueStr else falseStr}${name}${if val != null && cond != false then "=${val}" else ""}"; + mkEnable = mkFlag "enable-" "disable-"; + mkWith = mkFlag "with-" "without-"; + mkOther = mkFlag "" "" true; + + shouldUsePkg = pkg: if pkg != null && any (x: x == stdenv.system) pkg.meta.platforms then pkg else null; + + optLz4 = shouldUsePkg lz4; + optSnappy = shouldUsePkg snappy; + optZlib = shouldUsePkg zlib; + optBzip2 = shouldUsePkg bzip2; + optDb = shouldUsePkg db; + optGperftools = shouldUsePkg gperftools; + optLeveldb = shouldUsePkg leveldb; +in stdenv.mkDerivation rec { name = "wiredtiger-${version}"; - version = "2.5.2"; + version = "2.6.1"; src = fetchFromGitHub { repo = "wiredtiger"; owner = "wiredtiger"; rev = version; - sha256 = "1rk26gfs4zpz88mkbdkhz65q4admpgf46x5zsnghl0ndirmnvq3p"; + sha256 = "1nj319w3hvkq3za2dz9m0p1w683gycdb392v1jb910bhzpsq30pd"; }; nativeBuildInputs = [ automake autoconf libtool ]; - buildInputs = [ bzip2 snappy zlib db ]; + buildInputs = [ optLz4 optSnappy optZlib optBzip2 optDb optGperftools optLeveldb ]; configureFlags = [ - "--with-berkeleydb=${db}" - "--enable-bzip2" - "--enable-leveldb" - "--enable-snappy" - "--enable-zlib" + (mkWith false "attach" null) + (mkWith true "builtins" "") + (mkEnable (optBzip2 != null) "bzip2" null) + (mkEnable false "diagnostic" null) + (mkEnable false "java" null) + (mkEnable (optLeveldb != null) "leveldb" null) + (mkEnable false "python" null) + (mkEnable (optSnappy != null) "snappy" null) + (mkEnable (optLz4 != null) "lz4" null) + (mkEnable (optGperftools != null) "tcmalloc" null) + (mkEnable (optZlib != null) "zlib" null) + (mkWith (optDb != null) "berkeleydb" optDb) + (mkWith false "helium" null) ]; preConfigure = '' ./autogen.sh ''; - meta = with stdenv.lib; { + prePatch = stdenv.lib.optionalString stdenv.isDarwin '' + substituteInPlace api/leveldb/leveldb_wt.h --replace \ + '#include "wiredtiger.h"' \ + ''$'#include "wiredtiger.h"\n#include "pthread.h"' + ''; + + meta = { homepage = http://wiredtiger.com/; description = ""; license = licenses.gpl2; |