From 39a07cabe870fb64e972981d961a5a4b9ddbdaca Mon Sep 17 00:00:00 2001 From: aszlig Date: Thu, 21 Jan 2016 01:26:17 +0100 Subject: [PATCH] gpgme: Use fixed path for GnuPG binaries By default, GPGME tries to search in $PATH for the gpg and gpgconf binaries. This has the downside, that the library won't work by its own and needs to have GnuPG in systemPackages or the user environment. I've stumbled on this while working on one of the dependencies of nixos-assimilate and nixpart (volume_key), where the testing environment didn't come with GnuPG in $PATH and thus the tests have failed. After testing this with a few programs using GPGME, I haven't found any weird behavior in conjunction with the GnuPG agent. However one possible implication could be that if the GnuPG used in $PATH (and the config files in the user's home directory) should be vastly incompatible, it could lead to failures. In practice however, the GnuPG1/2 versions pretty much seem to stay compatible within their major releases so it shouldn't pose a problem. Signed-off-by: aszlig --- pkgs/development/libraries/gpgme/default.nix | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/pkgs/development/libraries/gpgme/default.nix b/pkgs/development/libraries/gpgme/default.nix index 1657ceaeece..4572387e225 100644 --- a/pkgs/development/libraries/gpgme/default.nix +++ b/pkgs/development/libraries/gpgme/default.nix @@ -5,10 +5,8 @@ assert useGnupg1 -> gnupg1 != null; assert !useGnupg1 -> gnupg != null; let - gpgPath = if useGnupg1 then - "${gnupg1}/bin/gpg" - else - "${gnupg}/bin/gpg2"; + gpgStorePath = if useGnupg1 then gnupg1 else gnupg; + gpgProgram = if useGnupg1 then "gpg" else "gpg2"; in stdenv.mkDerivation rec { name = "gpgme-1.6.0"; @@ -22,7 +20,10 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ pkgconfig gnupg ]; - configureFlags = "--with-gpg=${gpgPath}"; + configureFlags = [ + "--with-gpg=${gpgStorePath}/bin/${gpgProgram}" + "--enable-fixed-path=${gpgStorePath}/bin" + ]; meta = { homepage = "http://www.gnupg.org/related_software/gpgme";