From 3ee5c50cdaf55a81436695643c1cd39b61452c93 Mon Sep 17 00:00:00 2001 From: Moritz Ulrich Date: Mon, 7 Oct 2013 13:44:19 +0200 Subject: [PATCH] Add gnutls 3.2.4 (as pkgs.gnutls32) & make weechat use it. Signed-off-by: Moritz Ulrich --- pkgs/development/libraries/gnutls/3.2.nix | 73 +++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 8 ++- 2 files changed, 79 insertions(+), 2 deletions(-) create mode 100644 pkgs/development/libraries/gnutls/3.2.nix diff --git a/pkgs/development/libraries/gnutls/3.2.nix b/pkgs/development/libraries/gnutls/3.2.nix new file mode 100644 index 000000000000..5a5b6aa94e2b --- /dev/null +++ b/pkgs/development/libraries/gnutls/3.2.nix @@ -0,0 +1,73 @@ +{ fetchurl, stdenv, zlib, lzo, libtasn1, nettle, pkgconfig, lzip +, guileBindings, guile, perl, gmp }: + +assert guileBindings -> guile != null; + +stdenv.mkDerivation (rec { + + name = "gnutls-3.2.4"; + + src = fetchurl { + url = "ftp://ftp.gnutls.org/gcrypt/gnutls/v3.2/${name}.tar.lz"; + sha256 = "0zl4h37g51xyaalv3qp2hvn1m6z7xzfw4yvpvi6mby4x5sqrrp8i"; + }; + + # Note: GMP is a dependency of Nettle, whose public headers include + # GMP headers, hence the hack. + configurePhase = '' + ./configure --prefix="$out" \ + --disable-dependency-tracking --enable-fast-install \ + --without-p11-kit \ + --with-lzo --with-libtasn1-prefix="${libtasn1}" \ + --with-libnettle-prefix="${nettle}" \ + CPPFLAGS="-I${gmp}/include" \ + ${if guileBindings + then "--enable-guile --with-guile-site-dir=\"$out/share/guile/site\"" + else ""} + ''; + + # Build of the Guile bindings is not parallel-safe. See + # + # for the actual fix. + enableParallelBuilding = false; + + buildInputs = [ zlib lzo lzip ] + ++ stdenv.lib.optional guileBindings guile; + + nativeBuildInputs = [ perl pkgconfig ]; + + propagatedBuildInputs = [ nettle libtasn1 ]; + + # XXX: Gnulib's `test-select' fails on FreeBSD: + # http://hydra.nixos.org/build/2962084/nixlog/1/raw . + doCheck = (!stdenv.isFreeBSD && !stdenv.isDarwin); + + meta = with stdenv.lib; { + description = "The GNU Transport Layer Security Library"; + + longDescription = '' + GnuTLS is a project that aims to develop a library which + provides a secure layer, over a reliable transport + layer. Currently the GnuTLS library implements the proposed + standards by the IETF's TLS working group. + + Quoting from the TLS protocol specification: + + "The TLS protocol provides communications privacy over the + Internet. The protocol allows client/server applications to + communicate in a way that is designed to prevent eavesdropping, + tampering, or message forgery." + ''; + + homepage = http://www.gnu.org/software/gnutls/; + license = "LGPLv2.1+"; + maintainers = [ ]; + }; +} + +// + +(stdenv.lib.optionalAttrs stdenv.isFreeBSD { + # FreeBSD doesn't have , and Gnulib's `alloca' module isn't used. + patches = [ ./guile-gnulib-includes.patch ]; +})) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 99229cdda939..3fe6e56bdb7b 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4330,6 +4330,10 @@ let guileBindings = config.gnutls.guile or true; }; + gnutls32 = callPackage ../development/libraries/gnutls/3.2.nix { + guileBindings = config.gnutls.guile or true; + }; + gnutls_without_guile = lowPrio (gnutls.override { guileBindings = false; }); gnutls2_without_guile = lowPrio (gnutls2.override { guileBindings = false; }); @@ -8827,8 +8831,8 @@ let }; weechat = callPackage ../applications/networking/irc/weechat { - # weechat crashes on /exit when using gnutls 3.1.x. gnutls2 works. - gnutls = gnutls2; + # weechat crashes on /exit when using gnutls 3.1.x. gnutls 3.2.x works. + gnutls = gnutls32; }; weston = callPackage ../applications/window-managers/weston {