summary refs log tree commit diff
diff options
context:
space:
mode:
-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
-rw-r--r--pkgs/os-specific/windows/cygwin-setup/default.nix4
-rw-r--r--pkgs/top-level/all-packages.nix28
5 files changed, 51 insertions, 112 deletions
diff --git a/pkgs/development/libraries/libgcrypt/1.6.nix b/pkgs/development/libraries/libgcrypt/1.6.nix
deleted file mode 100644
index 39160675a2a8..000000000000
--- 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 af2316320229..bbc625173a95 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 897773387232..000000000000
--- 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
diff --git a/pkgs/os-specific/windows/cygwin-setup/default.nix b/pkgs/os-specific/windows/cygwin-setup/default.nix
index d0995ffc662a..71b47c5a50f9 100644
--- a/pkgs/os-specific/windows/cygwin-setup/default.nix
+++ b/pkgs/os-specific/windows/cygwin-setup/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchcvs, autoconf, automake, libtool, flex, bison, pkgconfig
-, zlib, bzip2, lzma, libgcrypt_1_6
+, zlib, bzip2, lzma, libgcrypt
 }:
 
 with stdenv.lib;
@@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
       buildInputs = map mkStatic (o.buildInputs or []);
       propagatedBuildInputs = map mkStatic (o.propagatedBuildInputs or []);
     });
-  in map mkStatic [ zlib bzip2 lzma libgcrypt_1_6 ];
+  in map mkStatic [ zlib bzip2 lzma libgcrypt ];
 
   configureFlags = "--disable-shared";
 
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index c9fee6081146..f96187817f0a 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -827,7 +827,6 @@ let
   syslogng_incubator = callPackage ../tools/system/syslog-ng-incubator { };
 
   rsyslog = callPackage ../tools/system/rsyslog {
-    libgcrypt = libgcrypt_1_6;
     czmq = null; # Currently Broken
     hadoop = null; # Currently Broken
   };
@@ -1512,13 +1511,9 @@ let
   # use config.packageOverrides if you prefer original gnupg1
   gnupg1 = gnupg1compat;
 
-  gnupg20 = callPackage ../tools/security/gnupg/20.nix {
-    libgcrypt = libgcrypt_1_6;
-  };
+  gnupg20 = callPackage ../tools/security/gnupg/20.nix { };
 
-  gnupg21 = callPackage ../tools/security/gnupg/21.nix {
-    libgcrypt = libgcrypt_1_6;
-  };
+  gnupg21 = callPackage ../tools/security/gnupg/21.nix { };
 
   gnupg = gnupg20;
 
@@ -6602,8 +6597,6 @@ let
 
   libgcrypt = callPackage ../development/libraries/libgcrypt { };
 
-  libgcrypt_1_6 = lowPrio (callPackage ../development/libraries/libgcrypt/1.6.nix { });
-
   libgdiplus = callPackage ../development/libraries/libgdiplus { };
 
   libgksu = callPackage ../development/libraries/libgksu { };
@@ -6848,9 +6841,7 @@ let
 
   libosmpbf = callPackage ../development/libraries/libosmpbf {};
 
-  libotr = callPackage ../development/libraries/libotr {
-    libgcrypt = libgcrypt_1_6;
-  };
+  libotr = callPackage ../development/libraries/libotr { };
 
   libotr_3_2 = callPackage ../development/libraries/libotr/3.2.nix { };
 
@@ -8762,7 +8753,6 @@ let
     python = python2;
     pythonPackages = python2Packages;
     kerberos = heimdal;
-    libgcrypt = libgcrypt_1_6;
     gnutls = gnutls33;
     cups = if stdenv.isDarwin then null else cups;
     pam = if stdenv.isDarwin then null else pam;
@@ -9014,9 +9004,7 @@ let
 
   criu = callPackage ../os-specific/linux/criu { };
 
-  cryptsetup = callPackage ../os-specific/linux/cryptsetup {
-    libgcrypt = libgcrypt_1_6;
-  };
+  cryptsetup = callPackage ../os-specific/linux/cryptsetup { };
 
   cramfsswap = callPackage ../os-specific/linux/cramfsswap { };
 
@@ -11042,13 +11030,9 @@ let
     inherit (gnome3) goffice gnome_icon_theme;
   };
 
-  gnunet = callPackage ../applications/networking/p2p/gnunet {
-    libgcrypt = libgcrypt_1_6;
-  };
+  gnunet = callPackage ../applications/networking/p2p/gnunet { };
 
-  gnunet_svn = lowPrio (callPackage ../applications/networking/p2p/gnunet/svn.nix {
-    libgcrypt = libgcrypt_1_6;
-  });
+  gnunet_svn = lowPrio (callPackage ../applications/networking/p2p/gnunet/svn.nix { });
 
   gocr = callPackage ../applications/graphics/gocr { };