summary refs log tree commit diff
path: root/pkgs/development/libraries/libgcrypt/default.nix
diff options
context:
space:
mode:
authorWilliam A. Kennington III <william@wkennington.com>2015-05-01 17:39:02 -0700
committerWilliam A. Kennington III <william@wkennington.com>2015-05-01 17:41:42 -0700
commita71f78acf71b4063be1912b8655ce53acb48f24e (patch)
treec2fa915d6f8dd4dfe10e8b5d2314388992d3b904 /pkgs/development/libraries/libgcrypt/default.nix
parent5e3fe3916a1aef6c2b441d9009f8a8d7f14030d6 (diff)
downloadnixpkgs-a71f78acf71b4063be1912b8655ce53acb48f24e.tar
nixpkgs-a71f78acf71b4063be1912b8655ce53acb48f24e.tar.gz
nixpkgs-a71f78acf71b4063be1912b8655ce53acb48f24e.tar.bz2
nixpkgs-a71f78acf71b4063be1912b8655ce53acb48f24e.tar.lz
nixpkgs-a71f78acf71b4063be1912b8655ce53acb48f24e.tar.xz
nixpkgs-a71f78acf71b4063be1912b8655ce53acb48f24e.tar.zst
nixpkgs-a71f78acf71b4063be1912b8655ce53acb48f24e.zip
libgcrypt: Massive cleanup and make 1.6 the default
Diffstat (limited to 'pkgs/development/libraries/libgcrypt/default.nix')
-rw-r--r--pkgs/development/libraries/libgcrypt/default.nix75
1 files changed, 43 insertions, 32 deletions
diff --git a/pkgs/development/libraries/libgcrypt/default.nix b/pkgs/development/libraries/libgcrypt/default.nix
index af231632022..bbc625173a9 100644
--- a/pkgs/development/libraries/libgcrypt/default.nix
+++ b/pkgs/development/libraries/libgcrypt/default.nix
@@ -1,44 +1,55 @@
-{ fetchurl, stdenv, libgpgerror }:
-
-stdenv.mkDerivation (rec {
-  name = "libgcrypt-1.5.4";
+{ stdenv, fetchurl
+, libgpgerror
+
+# Optional Dependencies
+, libcap ? null, pth ? null
+}:
+
+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 && stdenv.lib.any (x: x == stdenv.system) pkg.meta.platforms then pkg else null;
+
+  optLibcap = shouldUsePkg libcap;
+  #optPth = shouldUsePkg pth;
+  optPth = null; # Broken as of 1.6.3
+in
+stdenv.mkDerivation rec {
+  name = "libgcrypt-1.6.3";
 
   src = fetchurl {
     url = "mirror://gnupg/libgcrypt/${name}.tar.bz2";
-    sha256 = "d5f88d9f41a46953dc250cdb8575129b37ee2208401b7fa338c897f667c7fb33";
+    sha256 = "0pq2nwfqgggrsh8rk84659d80vfnlkbphwqjwahccd5fjdxr3d21";
   };
 
-  propagatedBuildInputs = [ libgpgerror ];
-
-  configureFlags = stdenv.lib.optional stdenv.isDarwin "--disable-asm";
+  buildInputs = [ libgpgerror optLibcap optPth ];
 
-  doCheck = stdenv.system != "i686-linux"; # "basic" test fails after stdenv+glibc-2.18
+  configureFlags = [
+    (mkWith   (optLibcap != null) "capabilities"  null)
+    (mkEnable (optPth != null)    "random-daemon" null)
+  ];
 
-  # For some reason the tests don't find `libgpg-error.so'.
-  checkPhase = ''
-    LD_LIBRARY_PATH="${libgpgerror}/lib:$LD_LIBRARY_PATH" \
-    make check
+  # Make sure libraries are correct for .pc and .la files
+  # Also make sure includes are fixed for callers who don't use libgpgcrypt-config
+  postInstall = ''
+    sed -i 's,#include <gpg-error.h>,#include "${libgpgerror}/include/gpg-error.h",g' $out/include/gcrypt.h
+  '' + stdenv.lib.optionalString (optLibcap != null) ''
+    sed -i 's,\(-lcap\),-L${optLibcap}/lib \1,' $out/lib/libgcrypt.la
   '';
 
-  patches = [ ./no-build-timestamp.patch ];
+  doCheck = true;
 
-  meta = {
+  meta = with stdenv.lib; {
+    homepage = https://www.gnu.org/software/libgcrypt/;
     description = "General-pupose cryptographic library";
-
-    longDescription = ''
-      GNU Libgcrypt is a general purpose cryptographic library based on
-      the code from GnuPG.  It provides functions for all
-      cryptographic building blocks: symmetric ciphers, hash
-      algorithms, MACs, public key algorithms, large integer
-      functions, random numbers and a lot of supporting functions.
-    '';
-
-    license = stdenv.lib.licenses.lgpl2Plus;
-
-    homepage = http://gnupg.org/;
-    platforms = stdenv.lib.platforms.all;
+    license = licenses.lgpl2Plus;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ wkennington ];
+    repositories.git = git://git.gnupg.org/libgcrypt.git;
   };
-} # old "as" problem, see #616 and http://gnupg.10057.n7.nabble.com/Fail-to-build-on-freebsd-7-3-td30245.html
-  // stdenv.lib.optionalAttrs (stdenv.isFreeBSD && stdenv.isi686)
-    { configureFlags = [ "--disable-aesni-support" ]; }
-)
+}