From 62d9edb9b9c79c0ef4967d894edebb0dd74565ff Mon Sep 17 00:00:00 2001 From: Kirill Elagin Date: Fri, 17 Jun 2016 11:26:41 +0300 Subject: [PATCH 1/3] gnupg: Rename parameter x11Support -> guiSupport Because it is really about GUI in general, not X11 (e.g. OS X). --- pkgs/tools/security/gnupg/20.nix | 6 +++--- pkgs/tools/security/gnupg/21.nix | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pkgs/tools/security/gnupg/20.nix b/pkgs/tools/security/gnupg/20.nix index 932bf508c2f..2783031c7b5 100644 --- a/pkgs/tools/security/gnupg/20.nix +++ b/pkgs/tools/security/gnupg/20.nix @@ -3,13 +3,13 @@ # Each of the dependencies below are optional. # Gnupg can be built without them at the cost of reduced functionality. -, pinentry ? null, x11Support ? true +, pinentry ? null, guiSupport ? true , openldap ? null, bzip2 ? null, libusb ? null, curl ? null }: with stdenv.lib; -assert x11Support -> pinentry != null; +assert guiSupport -> pinentry != null; stdenv.mkDerivation rec { name = "gnupg-2.0.30"; @@ -35,7 +35,7 @@ stdenv.mkDerivation rec { patch gl/stdint_.h < ${./clang.patch} ''; - configureFlags = optional x11Support "--with-pinentry-pgm=${pinentry}/bin/pinentry"; + configureFlags = optional guiSupport "--with-pinentry-pgm=${pinentry}/bin/pinentry"; postConfigure = "substituteAllInPlace tools/gpgkey2ssh.c"; diff --git a/pkgs/tools/security/gnupg/21.nix b/pkgs/tools/security/gnupg/21.nix index a6328a2140e..a548088f1e5 100644 --- a/pkgs/tools/security/gnupg/21.nix +++ b/pkgs/tools/security/gnupg/21.nix @@ -3,14 +3,14 @@ # Each of the dependencies below are optional. # Gnupg can be built without them at the cost of reduced functionality. -, pinentry ? null, x11Support ? true +, pinentry ? null, guiSupport ? true , adns ? null, gnutls ? null, libusb ? null, openldap ? null , readline ? null, zlib ? null, bzip2 ? null }: with stdenv.lib; -assert x11Support -> pinentry != null; +assert guiSupport -> pinentry != null; stdenv.mkDerivation rec { name = "gnupg-${version}"; @@ -32,7 +32,7 @@ stdenv.mkDerivation rec { sed -i 's,"libpcsclite\.so[^"]*","${pcsclite}/lib/libpcsclite.so",g' scd/scdaemon.c ''; #" fix Emacs syntax highlighting :-( - configureFlags = optional x11Support "--with-pinentry-pgm=${pinentry}/bin/pinentry"; + configureFlags = optional guiSupport "--with-pinentry-pgm=${pinentry}/bin/pinentry"; meta = with stdenv.lib; { homepage = http://gnupg.org; From 213dc2144357761ccb0dda36b137e5aaea29283d Mon Sep 17 00:00:00 2001 From: Kirill Elagin Date: Fri, 17 Jun 2016 12:27:59 +0300 Subject: [PATCH 2/3] gnupg: Variable path to pinentry This is needed for pinentry-mac which has the pinentry binary at an OS X-ish path. --- pkgs/tools/security/gnupg/20.nix | 3 ++- pkgs/tools/security/gnupg/21.nix | 3 ++- pkgs/tools/security/pinentry-mac/default.nix | 4 ++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/security/gnupg/20.nix b/pkgs/tools/security/gnupg/20.nix index 2783031c7b5..fd79419d82a 100644 --- a/pkgs/tools/security/gnupg/20.nix +++ b/pkgs/tools/security/gnupg/20.nix @@ -35,7 +35,8 @@ stdenv.mkDerivation rec { patch gl/stdint_.h < ${./clang.patch} ''; - configureFlags = optional guiSupport "--with-pinentry-pgm=${pinentry}/bin/pinentry"; + pinentryBinaryPath = pinentry.binaryPath or "bin/pinentry"; + configureFlags = optional guiSupport "--with-pinentry-pgm=${pinentry}/${pinentryBinaryPath}"; postConfigure = "substituteAllInPlace tools/gpgkey2ssh.c"; diff --git a/pkgs/tools/security/gnupg/21.nix b/pkgs/tools/security/gnupg/21.nix index a548088f1e5..b7a71332e77 100644 --- a/pkgs/tools/security/gnupg/21.nix +++ b/pkgs/tools/security/gnupg/21.nix @@ -32,7 +32,8 @@ stdenv.mkDerivation rec { sed -i 's,"libpcsclite\.so[^"]*","${pcsclite}/lib/libpcsclite.so",g' scd/scdaemon.c ''; #" fix Emacs syntax highlighting :-( - configureFlags = optional guiSupport "--with-pinentry-pgm=${pinentry}/bin/pinentry"; + pinentryBinaryPath = pinentry.binaryPath or "bin/pinentry"; + configureFlags = optional guiSupport "--with-pinentry-pgm=${pinentry}/${pinentryBinaryPath}"; meta = with stdenv.lib; { homepage = http://gnupg.org; diff --git a/pkgs/tools/security/pinentry-mac/default.nix b/pkgs/tools/security/pinentry-mac/default.nix index faf8c613ea8..7116d1777d6 100644 --- a/pkgs/tools/security/pinentry-mac/default.nix +++ b/pkgs/tools/security/pinentry-mac/default.nix @@ -17,6 +17,10 @@ stdenv.mkDerivation rec { mv build/Release/pinentry-mac.app $out/Applications ''; + passthru = { + binaryPath = "Applications/pinentry-mac.app/Contents/MacOS/pinentry-mac"; + }; + meta = { description = "Pinentry for GPG on Mac"; license = stdenv.lib.licenses.gpl2Plus; From 22f2f6e04550ef2bd96800902bb6133f9249617d Mon Sep 17 00:00:00 2001 From: Kirill Elagin Date: Fri, 17 Jun 2016 12:36:44 +0300 Subject: [PATCH 3/3] gnupg: Use pintenty-mac on Darwin by default --- pkgs/top-level/all-packages.nix | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index e3b9b25c91d..abd483d4777 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1845,8 +1845,12 @@ in gnupg1orig = callPackage ../tools/security/gnupg/1.nix { }; gnupg1compat = callPackage ../tools/security/gnupg/1compat.nix { }; gnupg1 = gnupg1compat; # use config.packageOverrides if you prefer original gnupg1 - gnupg20 = callPackage ../tools/security/gnupg/20.nix { }; - gnupg21 = callPackage ../tools/security/gnupg/21.nix { }; + gnupg20 = callPackage ../tools/security/gnupg/20.nix { + pinentry = if stdenv.isDarwin then pinentry_mac else pinentry; + }; + gnupg21 = callPackage ../tools/security/gnupg/21.nix { + pinentry = if stdenv.isDarwin then pinentry_mac else pinentry; + }; gnupg = gnupg21; gnuplot = callPackage ../tools/graphics/gnuplot { qt = qt4; };