summary refs log tree commit diff
path: root/pkgs/development/libraries/libgcrypt
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
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')
-rw-r--r--pkgs/development/libraries/libgcrypt/1.6.nix44
-rw-r--r--pkgs/development/libraries/libgcrypt/default.nix75
-rw-r--r--pkgs/development/libraries/libgcrypt/no-build-timestamp.patch12
3 files changed, 43 insertions, 88 deletions
diff --git a/pkgs/development/libraries/libgcrypt/1.6.nix b/pkgs/development/libraries/libgcrypt/1.6.nix
deleted file mode 100644
index 39160675a2a..00000000000
--- a/pkgs/development/libraries/libgcrypt/1.6.nix
+++ /dev/null
@@ -1,44 +0,0 @@
-{ fetchurl, stdenv, libgpgerror, transfig, ghostscript, texinfo }:
-
-stdenv.mkDerivation rec {
-  name = "libgcrypt-1.6.3";
-
-  src = fetchurl {
-    url = "mirror://gnupg/libgcrypt/${name}.tar.bz2";
-    sha256 = "0pq2nwfqgggrsh8rk84659d80vfnlkbphwqjwahccd5fjdxr3d21";
-  };
-
-  nativeBuildInputs = [ transfig ghostscript texinfo ];
-
-  propagatedBuildInputs = [ libgpgerror ];
-
-  preBuild = ''
-    (cd doc; make stamp-vti)
-  '';
-
-  doCheck = true;
-
-  crossAttrs = let
-    isCross64 = stdenv.cross.config == "x86_64-w64-mingw32";
-  in stdenv.lib.optionalAttrs isCross64 {
-    configureFlags = [ "--disable-asm" "--disable-padlock-support" ];
-  };
-
-  meta = {
-    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 = https://www.gnu.org/software/libgcrypt/;
-    repositories.git = git://git.gnupg.org/libgcrypt.git;
-    platforms = stdenv.lib.platforms.all;
-  };
-}
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" ]; }
-)
+}
diff --git a/pkgs/development/libraries/libgcrypt/no-build-timestamp.patch b/pkgs/development/libraries/libgcrypt/no-build-timestamp.patch
deleted file mode 100644
index 89777338723..00000000000
--- a/pkgs/development/libraries/libgcrypt/no-build-timestamp.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ur libgcrypt-1.5.3.orig/configure libgcrypt-1.5.3/configure
---- libgcrypt-1.5.3.orig/configure	2013-07-25 11:22:47.000000000 +0200
-+++ libgcrypt-1.5.3/configure	2014-04-09 00:17:58.659147199 +0200
-@@ -16520,6 +16520,7 @@
- 
- 
- BUILD_TIMESTAMP=`date -u +%Y-%m-%dT%H:%M+0000 2>/dev/null || date`
-+BUILD_TIMESTAMP=1970-01-01T00:01+0000
- 
- 
- cat >>confdefs.h <<_ACEOF
-Only in libgcrypt-1.5.3: out