From a71f78acf71b4063be1912b8655ce53acb48f24e Mon Sep 17 00:00:00 2001 From: "William A. Kennington III" Date: Fri, 1 May 2015 17:39:02 -0700 Subject: [PATCH] libgcrypt: Massive cleanup and make 1.6 the default --- pkgs/development/libraries/libgcrypt/1.6.nix | 44 ----------- .../libraries/libgcrypt/default.nix | 73 +++++++++++-------- .../libgcrypt/no-build-timestamp.patch | 12 --- .../windows/cygwin-setup/default.nix | 4 +- pkgs/top-level/all-packages.nix | 28 ++----- 5 files changed, 50 insertions(+), 111 deletions(-) delete mode 100644 pkgs/development/libraries/libgcrypt/1.6.nix delete mode 100644 pkgs/development/libraries/libgcrypt/no-build-timestamp.patch 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, fetchurl +, libgpgerror -stdenv.mkDerivation (rec { - name = "libgcrypt-1.5.4"; +# 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 ]; + buildInputs = [ libgpgerror optLibcap optPth ]; - configureFlags = stdenv.lib.optional stdenv.isDarwin "--disable-asm"; + configureFlags = [ + (mkWith (optLibcap != null) "capabilities" null) + (mkEnable (optPth != null) "random-daemon" null) + ]; - doCheck = stdenv.system != "i686-linux"; # "basic" test fails after stdenv+glibc-2.18 - - # 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 ,#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 diff --git a/pkgs/os-specific/windows/cygwin-setup/default.nix b/pkgs/os-specific/windows/cygwin-setup/default.nix index d0995ffc662..71b47c5a50f 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 c9fee608114..f96187817f0 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 { };