2015-04-08 21:02:56 +01:00
|
|
|
{ stdenv, fetchFromGitHub, automake, autoconf, libtool
|
2015-05-20 05:43:48 +01:00
|
|
|
|
|
|
|
# Optional Dependencies
|
|
|
|
, lz4 ? null, snappy ? null, zlib ? null, bzip2 ? null, db ? null
|
|
|
|
, gperftools ? null, leveldb ? null
|
2015-04-08 21:02:56 +01:00
|
|
|
}:
|
|
|
|
|
2015-06-01 19:52:03 +01:00
|
|
|
with stdenv.lib;
|
2015-05-20 05:43:48 +01:00
|
|
|
let
|
2017-04-17 21:48:10 +01:00
|
|
|
mkFlag = trueStr: falseStr: cond: name: val: "--"
|
|
|
|
+ (if cond then trueStr else falseStr)
|
|
|
|
+ name
|
|
|
|
+ optionalString (val != null && cond != false) "=${val}";
|
2015-06-01 19:52:03 +01:00
|
|
|
mkEnable = mkFlag "enable-" "disable-";
|
|
|
|
mkWith = mkFlag "with-" "without-";
|
|
|
|
|
2018-03-09 22:58:36 +00:00
|
|
|
shouldUsePkg = pkg: if pkg != null && pkg.meta.available then pkg else null;
|
2015-06-01 19:52:03 +01:00
|
|
|
|
2015-05-20 05:43:48 +01:00
|
|
|
optLz4 = shouldUsePkg lz4;
|
|
|
|
optSnappy = shouldUsePkg snappy;
|
|
|
|
optZlib = shouldUsePkg zlib;
|
|
|
|
optBzip2 = shouldUsePkg bzip2;
|
|
|
|
optDb = shouldUsePkg db;
|
|
|
|
optGperftools = shouldUsePkg gperftools;
|
|
|
|
optLeveldb = shouldUsePkg leveldb;
|
|
|
|
in
|
2015-04-08 21:02:56 +01:00
|
|
|
stdenv.mkDerivation rec {
|
|
|
|
name = "wiredtiger-${version}";
|
2015-06-19 05:27:21 +01:00
|
|
|
version = "2.6.1";
|
2015-04-08 21:02:56 +01:00
|
|
|
|
|
|
|
src = fetchFromGitHub {
|
|
|
|
repo = "wiredtiger";
|
|
|
|
owner = "wiredtiger";
|
|
|
|
rev = version;
|
2015-06-19 05:27:21 +01:00
|
|
|
sha256 = "1nj319w3hvkq3za2dz9m0p1w683gycdb392v1jb910bhzpsq30pd";
|
2015-04-08 21:02:56 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
nativeBuildInputs = [ automake autoconf libtool ];
|
2015-05-20 05:43:48 +01:00
|
|
|
buildInputs = [ optLz4 optSnappy optZlib optBzip2 optDb optGperftools optLeveldb ];
|
2015-04-08 21:02:56 +01:00
|
|
|
|
|
|
|
configureFlags = [
|
2015-05-20 05:43:48 +01:00
|
|
|
(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)
|
2015-04-08 21:02:56 +01:00
|
|
|
];
|
|
|
|
|
|
|
|
preConfigure = ''
|
|
|
|
./autogen.sh
|
|
|
|
'';
|
|
|
|
|
2015-07-23 23:47:16 +01:00
|
|
|
prePatch = stdenv.lib.optionalString stdenv.isDarwin ''
|
|
|
|
substituteInPlace api/leveldb/leveldb_wt.h --replace \
|
|
|
|
'#include "wiredtiger.h"' \
|
|
|
|
''$'#include "wiredtiger.h"\n#include "pthread.h"'
|
|
|
|
'';
|
|
|
|
|
2015-05-20 05:43:48 +01:00
|
|
|
meta = {
|
2015-04-08 21:02:56 +01:00
|
|
|
homepage = http://wiredtiger.com/;
|
|
|
|
description = "";
|
|
|
|
license = licenses.gpl2;
|
2015-04-17 14:32:25 +01:00
|
|
|
platforms = intersectLists platforms.unix platforms.x86_64;
|
2015-04-08 21:02:56 +01:00
|
|
|
maintainers = with maintainers; [ wkennington ];
|
2017-12-01 00:47:46 +00:00
|
|
|
broken = true; # Broken by f689a6d1c6796c4a4f116ffec6c4624379e04bc9.
|
2015-04-08 21:02:56 +01:00
|
|
|
};
|
|
|
|
}
|