Control: clone 760102 -1
Control: reassign -1 seahorse
Control: tags -1 + patch
Control: retitle -1 build seahorse compatible with gpg2

On Fri 2015-06-05 13:25:42 -0400, Michael Biebl wrote:
> Am 05.06.2015 um 19:19 schrieb Daniel Kahn Gillmor:
>> Given that 1.4.7 is older than oldoldstable, you ought to be able to
>> drop the explicit gnupg dependency entirely from seahorse, iiuc.
>
> Well, assuming that seahorse does work properly with gnupg2.
> That's basically my question.

The seahorse source code seems to actually behave completely differently
depending on whether it is built with modern versions of any branch
(meaning: gpg >= 1.4.10, or gpg2 >= 2.0.12) versus older versions.  (see
pgp/seahorse-gpgme-key-op.h).  :(

This is not great engineering practice, because the version built
against isn't guaranteed to match the version that's running.

That said, even oldoldstable builds and runs "modern versions" by this
metric.

I just tested seahorse on a minimal-ish unstable gnome install, where i
did "dpkg --force-depend --purge gnupg".

Unfortunately, it looks like seahorse embeds the string "gpg" in it, so
it's looking for /usr/bin/gpg.

Running seahorse in this configuration produces lots of errors of this
form:

   operation-Message: couldn't initialize gnupg properly: Invalid crypto engine

The attached patch should resolve things for future versions of
seahorse, though, both on build-time detection and on runtime
flexibility.

(the attached patch touches both ./configure.ac and ./configure -- since
the package appears to be doing autoreconf, maybe the modifications to
./configure are unnecessary)

The only failures i'm now running into with seahorse like this are
failures due to gcr_importer hard-coding paths to gpg as well, so those
are bugs i'll file separately..

Regards,

        --dkg


From 62f40108a1145016d128afe2fa40e20caa2d9d77 Mon Sep 17 00:00:00 2001
From: Daniel Kahn Gillmor <d...@fifthhorseman.net>
Date: Fri, 5 Jun 2015 14:24:29 -0400
Subject: [PATCH] avoid deps on a certain version of gpg

---
 debian/changelog                   |  7 +++++
 debian/control                     |  3 +--
 debian/control.in                  |  3 +--
 debian/patches/series              |  1 +
 debian/patches/use-any-gnupg.patch | 55 ++++++++++++++++++++++++++++++++++++++
 5 files changed, 65 insertions(+), 4 deletions(-)
 create mode 100644 debian/patches/use-any-gnupg.patch

diff --git a/debian/changelog b/debian/changelog
index 190c57a..6e09d82 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+seahorse (3.16.0-1.1) unstable; urgency=medium
+
+  * Non-maintainer upload
+  * avoid explicit dependencies on certain versions of gpg.
+
+ -- Daniel Kahn Gillmor <d...@fifthhorseman.net>  Fri, 05 Jun 2015 14:23:46 -0400
+
 seahorse (3.16.0-1) unstable; urgency=medium
 
   * New upstream release.
diff --git a/debian/control b/debian/control
index 5a64f68..6c399ec 100644
--- a/debian/control
+++ b/debian/control
@@ -36,8 +36,7 @@ Architecture: any
 Depends: ${misc:Depends},
          ${shlibs:Depends},
          gcr (>= 3.4),
-         gnome-keyring (>= 3.4),
-         gnupg (>= 1.4.7)
+         gnome-keyring (>= 3.4)
 Recommends: openssh-client
 Description: GNOME front end for GnuPG
  Seahorse is a front end for GnuPG - the GNU Privacy Guard program -
diff --git a/debian/control.in b/debian/control.in
index 1431884..2ee9734 100644
--- a/debian/control.in
+++ b/debian/control.in
@@ -32,8 +32,7 @@ Architecture: any
 Depends: ${misc:Depends},
          ${shlibs:Depends},
          gcr (>= 3.4),
-         gnome-keyring (>= 3.4),
-         gnupg (>= 1.4.7)
+         gnome-keyring (>= 3.4)
 Recommends: openssh-client
 Description: GNOME front end for GnuPG
  Seahorse is a front end for GnuPG - the GNU Privacy Guard program -
diff --git a/debian/patches/series b/debian/patches/series
index e69de29..c3b0125 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -0,0 +1 @@
+use-any-gnupg.patch
diff --git a/debian/patches/use-any-gnupg.patch b/debian/patches/use-any-gnupg.patch
new file mode 100644
index 0000000..f64aa22
--- /dev/null
+++ b/debian/patches/use-any-gnupg.patch
@@ -0,0 +1,55 @@
+Description: Use any version of GnuPG
+Author: Daniel Kahn Gillmor <d...@fifthhorseman.net>
+
+
+--- seahorse-3.16.0.orig/configure
++++ seahorse-3.16.0/configure
+@@ -2531,7 +2531,7 @@ GCR_REQUIRED=3.11.91
+ GTK_REQ=3.4.0
+ GTK_MAX=GTK_VERSION_3_4
+ 
+-GNUPG_ACCEPTED="1.2 1.4 2.0"
++GNUPG_ACCEPTED="1.2 1.4 2.0 2.1"
+ GPGME_REQUIRED=1.0.0
+ LIBSECRET_REQUIRED=0.16
+ AVAHI_GLIB_REQUIRED=0.6
+@@ -8569,7 +8569,7 @@ fi
+ 
+ 
+ 	if test	"$DO_CHECK" = "yes"; then
+-		for ac_prog in gpg gpg2
++		for ac_prog in gpg2 gpg
+ do
+   # Extract the first word of "$ac_prog", so it can be a program name with args.
+ set dummy $ac_prog; ac_word=$2
+--- seahorse-3.16.0.orig/configure.ac
++++ seahorse-3.16.0/configure.ac
+@@ -9,7 +9,7 @@ GCR_REQUIRED=3.11.91
+ GTK_REQ=3.4.0
+ GTK_MAX=GTK_VERSION_3_4
+ 
+-GNUPG_ACCEPTED="1.2 1.4 2.0"
++GNUPG_ACCEPTED="1.2 1.4 2.0 2.1"
+ GPGME_REQUIRED=1.0.0
+ LIBSECRET_REQUIRED=0.16
+ AVAHI_GLIB_REQUIRED=0.6
+@@ -130,7 +130,7 @@ else
+ 		DO_CHECK=$enableval, DO_CHECK=yes)
+ 	
+ 	if test	"$DO_CHECK" = "yes"; then
+-		AC_PATH_PROGS(GNUPG, [gpg gpg2], no)
++		AC_PATH_PROGS(GNUPG, [gpg2 gpg], no)
+ 		AC_DEFINE_UNQUOTED(GNUPG, "$GNUPG", [Path to gpg executable.])
+ 		ok="no"
+ 		if test "$GNUPG" != "no"; then
+--- seahorse-3.16.0.orig/pgp/seahorse-pgp-backend.c
++++ seahorse-3.16.0/pgp/seahorse-pgp-backend.c
+@@ -311,7 +311,7 @@ seahorse_pgp_backend_initialize (void)
+ 
+ 	g_return_if_fail (pgp_backend != NULL);
+ 
+-	gpgme_set_engine_info (GPGME_PROTOCOL_OpenPGP, GNUPG, NULL);
++	gpgme_set_engine_info (GPGME_PROTOCOL_OpenPGP, NULL, NULL);
+ }
+ 
+ SeahorseGpgmeKeyring *
-- 
2.1.4

Attachment: signature.asc
Description: PGP signature

Reply via email to