diff options
Diffstat (limited to 'pkgs/development/libraries/thrift/default.nix')
-rw-r--r-- | pkgs/development/libraries/thrift/default.nix | 45 |
1 files changed, 32 insertions, 13 deletions
diff --git a/pkgs/development/libraries/thrift/default.nix b/pkgs/development/libraries/thrift/default.nix index ecdb831fcfa..1879cac96c1 100644 --- a/pkgs/development/libraries/thrift/default.nix +++ b/pkgs/development/libraries/thrift/default.nix @@ -1,6 +1,5 @@ -{ stdenv, fetchurl, boost, zlib, libevent, openssl, python, pkgconfig, bison -, flex, twisted -}: +{ stdenv, fetchurl, fetchpatch, boost, zlib, libevent, openssl, python, cmake, pkgconfig +, bison, flex, twisted, static ? false }: stdenv.mkDerivation rec { pname = "thrift"; @@ -11,27 +10,47 @@ stdenv.mkDerivation rec { sha256 = "0yai9c3bdsrkkjshgim7zk0i7malwfprg00l9774dbrkh2w4ilvs"; }; - #enableParallelBuilding = true; problems on hydra + patches = [ + # Fix a failing test on darwin + # https://issues.apache.org/jira/browse/THRIFT-4976 + (fetchpatch { + url = "https://github.com/apache/thrift/commit/6701dbb8e89f6550c7843e9b75b118998df471c3.diff"; + sha256 = "14rqma2b2zv3zxkkl5iv9kvyp3zihvad6fdc2gcdqv37nqnswx9d"; + }) + ]; # Workaround to make the python wrapper not drop this package: # pythonFull.buildEnv.override { extraLibs = [ thrift ]; } pythonPath = []; - nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ - boost zlib libevent openssl python bison flex twisted - ]; + nativeBuildInputs = [ cmake pkgconfig ]; + buildInputs = [ boost zlib libevent openssl python bison flex ] + ++ stdenv.lib.optional (!static) twisted; preConfigure = "export PY_PREFIX=$out"; - # TODO: package boost-test, so we can run the test suite. (Currently it fails - # to find libboost_unit_test_framework.a.) - configureFlags = [ "--enable-tests=no" ]; - doCheck = false; + cmakeFlags = [ + # FIXME: Fails to link in static mode with undefined reference to + # `boost::unit_test::unit_test_main(bool (*)(), int, char**)' + "-DBUILD_TESTING:BOOL=${if static then "OFF" else "ON"}" + ] ++ stdenv.lib.optionals static [ + "-DWITH_STATIC_LIB:BOOL=ON" + "-DOPENSSL_USE_STATIC_LIBS=ON" + ]; + + doCheck = !static; + checkPhase = '' + runHook preCheck + + ${stdenv.lib.optionalString stdenv.isDarwin "DY"}LD_LIBRARY_PATH=$PWD/lib ctest -E PythonTestSSLSocket + + runHook postCheck + ''; + enableParallelChecking = false; meta = with stdenv.lib; { description = "Library for scalable cross-language services"; - homepage = http://thrift.apache.org/; + homepage = "http://thrift.apache.org/"; license = licenses.asl20; platforms = platforms.linux ++ platforms.darwin; maintainers = [ maintainers.bjornfor ]; |