diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/libevent')
-rw-r--r-- | nixpkgs/pkgs/development/libraries/libevent/default.nix | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/libevent/default.nix b/nixpkgs/pkgs/development/libraries/libevent/default.nix new file mode 100644 index 000000000000..611287b9aaa8 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/libevent/default.nix @@ -0,0 +1,60 @@ +{ stdenv, fetchurl, findutils, fixDarwinDylibNames +, sslSupport? true, openssl +}: + +assert sslSupport -> openssl != null; + +stdenv.mkDerivation rec { + name = "libevent-${version}"; + version = "2.1.10"; + + src = fetchurl { + url = "https://github.com/libevent/libevent/releases/download/release-${version}-stable/libevent-${version}-stable.tar.gz"; + sha256 = "1c25928gdv495clxk2v1d4gkr5py7ack4gx2n7d13frnld0syr78"; + }; + + # libevent_openssl is moved into its own output, so that openssl isn't present + # in the default closure. + outputs = [ "out" "dev" ] + ++ stdenv.lib.optional sslSupport "openssl" + ; + outputBin = "dev"; + propagatedBuildOutputs = [ "out" ] + ++ stdenv.lib.optional sslSupport "openssl" + ; + + buildInputs = [] + ++ stdenv.lib.optional sslSupport openssl + ++ stdenv.lib.optional stdenv.isCygwin findutils + ++ stdenv.lib.optional stdenv.isDarwin fixDarwinDylibNames + ; + + doCheck = false; # needs the net + + postInstall = stdenv.lib.optionalString sslSupport '' + moveToOutput "lib/libevent_openssl*" "$openssl" + substituteInPlace "$dev/lib/pkgconfig/libevent_openssl.pc" \ + --replace "$out" "$openssl" + sed "/^libdir=/s|$out|$openssl|" -i "$openssl"/lib/libevent_openssl.la + ''; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "Event notification library"; + longDescription = '' + The libevent API provides a mechanism to execute a callback function + when a specific event occurs on a file descriptor or after a timeout + has been reached. Furthermore, libevent also support callbacks due + to signals or regular timeouts. + + libevent is meant to replace the event loop found in event driven + network servers. An application just needs to call event_dispatch() + and then add or remove events dynamically without having to change + the event loop. + ''; + homepage = http://libevent.org/; + license = licenses.bsd3; + platforms = platforms.all; + }; +} |