From: Bruno Haible <bruno@clisp.org>
Date: Sat, 19 May 2018 11:00:16 +0000 (+0200)
Subject: gnupload: Fix "gpg-agent is not available in this session" error.
X-Git-Tag: v1.0~5593
X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=065e118c1247b0c13547092308064fc1c2078171;p=gnulib.git

gnupload: Fix "gpg-agent is not available in this session" error.

* build-aux/gnupload (GPG): Pick the right GNUPG executable to use.
---

diff --git a/ChangeLog b/ChangeLog
index dd479f783f..047dadf657 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2018-05-19  Bruno Haible  <bruno@clisp.org>
+
+	gnupload: Fix "gpg-agent is not available in this session" error.
+	* build-aux/gnupload (GPG): Pick the right GNUPG executable to use.
+
 2018-05-16  Paul Eggert  <eggert@cs.ucla.edu>
 
 	crypto/af_alg: fix --help
diff --git a/build-aux/gnupload b/build-aux/gnupload
index 2a0bfa3b51..0d92923eaf 100755
--- a/build-aux/gnupload
+++ b/build-aux/gnupload
@@ -24,7 +24,31 @@ scriptversion=2018-03-07.03; # UTC
 
 set -e
 
-GPG='gpg --batch --no-tty'
+GPG=gpg
+# Choose the proper version of gpg, so as to avoid a
+# "gpg-agent is not available in this session" error
+# when gpg-agent is version 2 but gpg is still version 1.
+# This code can go away once all major distributions ship gpg version 2
+# as /usr/bin/gpg.
+gpg_agent_version=`(gpg-agent --version) 2>/dev/null | sed -e '2,$d' -e 's/^[^0-9]*//'`
+case "$gpg_agent_version" in
+  2.*)
+    gpg_version=`(gpg --version) 2>/dev/null | sed -e '2,$d' -e 's/^[^0-9]*//'`
+    case "$gpg_version" in
+      1.*)
+        if (type gpg2) >/dev/null 2>/dev/null; then
+          # gpg2 is present.
+          GPG=gpg2
+        else
+          # gpg2 is missing. Ubuntu users should install the package 'gnupg2'.
+          echo "WARNING: Using 'gpg', which is too old. You should install 'gpg2'." 1>&2
+        fi
+        ;;
+    esac
+    ;;
+esac
+
+GPG="${GPG} --batch --no-tty"
 conffile=.gnuploadrc
 to=
 dry_run=false