Subject: [bug#37693] Seahorse build

From: Miguel Arruga Vivas <[email-masked]>
Date: Mon, 21 Oct 2019 17:25:12 +0200

Hi,

I've hit the same issue, although I tacked it differently because I
updated to 3.30.1.1.  As I didn't knew about this patch, I did it by
myself, but I wouldn't upload it without changing the authorship.

Tue, 15 Oct 2019 14:36:01 +0200 Leo Prikler:
> Am Dienstag, den 15.10.2019, 14:09 +0200 schrieb Ludovic Courtès:
> > > -    (build-system glib-or-gtk-build-system)
> > > +         "1sbj1czlx1fakm72dwgbn0bwm12j838yaky4mkf6hf8j8afnxmzp"))
> > > +       (patches
> > > +        (search-patches "seahorse-fix-libsecret-breakage.patch"
> > > +                        "seahorse-fix-type-mismatches.patch"))))
> > > +    (build-system meson-build-system)
> > 
> > Is changing the build system necessary to fix the problems you
> > encountered, or is it a side change?  From the current build log at
> > <
> > https://ci.guix.gnu.org/log/3j08dl90hlyq9haf9lh61k43fs60dcih-seahorse-3.30>
> > ;,
> > it does seem that the answer is “yes”.  :-)
> Yes, Seahorse 3.30 no longer builds using Autotools.

I agree.

> > >      (inputs
> > > -     `(("gtk+" ,gtk+)
> > > +     `(("avahi" ,avahi)
> > > +       ("gtk+" ,gtk+)
> > >         ("gcr" ,gcr)
> > >         ("gnupg" ,gnupg)
> > >         ("gpgme" ,gpgme)
> > > @@ -2244,8 +2248,10 @@ engineering.")
> > >      (native-inputs
> > >       `(("intltool" ,intltool)
> > >         ("glib:bin" ,glib "bin")
> > > +       ("gtk+:bin" ,gtk+ "bin")
> > >         ("itstool" ,itstool)
> > >         ("pkg-config" ,pkg-config)
> > > +       ("vala" ,vala)
> > 
> > Likewise, these changes were necessary, right?
> 
> Indeed. After changing the build system, I've repeatedly run "guix
> build seahorse" and added the inputs that the build system complained
> about until the build succeeded. ("gtk+:bin" is necessary due to the
> icon cache IIRC).

I've solved this modifying the %standard-phases, as in other packages
from gnome.

> > One last thing: are those patches upstream, or is there a bug report
> > where they were discussed?
> > 
> > If so could you share the URLs?  I can add them on your behalf in
> > > the
> > .patch file if you want.  That’ll allow us to better keep track of
> > where
> > our patches come from and when we can remove them.
> 
> These patches come from Seahorse upstream. 
> seahorse-fix-libsecret-breakage.patch was taken from [1], with its
> offset adjusted.
> seahorse-fix-type-mismatches.patch was taken from [2] as-is.
> The latter appears to be fixed in 3.32 (and also some versions prior),
> the former in 3.34.
> 
> All the best,
> Leo
> 
> [1] 
> https://gitlab.gnome.org/GNOME/seahorse/commit/d9db29db567012b7c72e85e1be1fbf55fcc9b667
> [2] https://gitlab.gnome.org/GNOME/seahorse/merge_requests/31

I don't have the last one because it is fixed with 3.30.1.1.  Also, I
have an extra python that could be a leftover.

Best regards,
Miguel
>From b91e64a997ab283a390f63c46a4665404fa33803 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Miguel=20=C3=81ngel=20Arruga=20Vivas?=
 <[email-masked]>
Date: Sat, 19 Oct 2019 12:04:55 +0200
Subject: [PATCH] gnu: seahorse: Update to 3.30.1.1.

* gnu/packages/gnome.scm (seahorse)[version]: Update version number.
[origin]: Update hash.  Add patch needed for compilation with our
version of libsecret (0.19.1).
* gnu/packages/patches/seahorse-gkr-use-0-on-empty-flags.patch: New
file retrieved from the upstream version control system
https://gitlab.gnome.org/GNOME/seahorse/commit/d9db29db567012b7c72e85e1be1fbf55fcc9b667
---
 gnu/packages/gnome.scm                        | 22 +++++++++++---
 .../seahorse-gkr-use-0-on-empty-flags.patch   | 30 +++++++++++++++++++
 2 files changed, 48 insertions(+), 4 deletions(-)
 create mode 100644 gnu/packages/patches/seahorse-gkr-use-0-on-empty-flags.patch

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index fafb93be08..4a759dbd1b 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -2223,7 +2223,7 @@ engineering.")
 (define-public seahorse
   (package
     (name "seahorse")
-    (version "3.30")
+    (version "3.30.1.1")
     (source
      (origin
        (method url-fetch)
@@ -2232,8 +2232,19 @@ engineering.")
                            version ".tar.xz"))
        (sha256
         (base32
-         "1sbj1czlx1fakm72dwgbn0bwm12j838yaky4mkf6hf8j8afnxmzp"))))
-    (build-system glib-or-gtk-build-system)
+         "12x7xmwh62yl0ax90v8nkx3jqzviaz9hz2g56yml78wzww20gawy"))
+       (patches (search-patches
+                 "seahorse-gkr-use-0-on-empty-flags.patch"))))
+    (build-system meson-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'skip-gtk-update-icon-cache
+           ;; Don't create 'icon-theme.cache'.
+           (lambda _
+             (substitute* "build-aux/meson_post_install.py"
+               (("gtk-update-icon-cache") "true"))
+             #t)))))
     (inputs
      `(("gtk+" ,gtk+)
        ("gcr" ,gcr)
@@ -2241,13 +2252,16 @@ engineering.")
        ("gpgme" ,gpgme)
        ("openldap" ,openldap)
        ("openssh" ,openssh)
+       ("avahi" ,avahi)
        ("libsecret" ,libsecret)
        ("libsoup" ,libsoup)))
     (native-inputs
-     `(("intltool" ,intltool)
+     `(("gettext" ,gettext-minimal)
        ("glib:bin" ,glib "bin")
        ("itstool" ,itstool)
        ("pkg-config" ,pkg-config)
+       ("python" ,python)
+       ("vala" ,vala)
        ("xmllint" ,libxml2)))
     (home-page "https://launchpad.net/gnome-themes-standard")
     (synopsis "Manage encryption keys and passwords in the GNOME keyring")
diff --git a/gnu/packages/patches/seahorse-gkr-use-0-on-empty-flags.patch b/gnu/packages/patches/seahorse-gkr-use-0-on-empty-flags.patch
new file mode 100644
index 0000000000..e236f6a2e1
--- /dev/null
+++ b/gnu/packages/patches/seahorse-gkr-use-0-on-empty-flags.patch
@@ -0,0 +1,30 @@
+From d9db29db567012b7c72e85e1be1fbf55fcc9b667 Mon Sep 17 00:00:00 2001
+From: Niels De Graef <[email-masked]>
+Date: Sat, 11 May 2019 09:02:34 +0200
+Subject: [PATCH] gkr: Use 0 on empty flags
+
+A Flags-type variable without any flag set can be replaced with 0, so
+this is a safe thing to do. It also prevents us from having to deal with
+the accidental API break in libsecret (see
+https://gitlab.gnome.org/GNOME/libsecret/merge_requests/19)
+---
+ gkr/gkr-keyring-add.vala | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/gkr/gkr-keyring-add.vala b/gkr/gkr-keyring-add.vala
+index 4e92a520..f60c9a22 100644
+--- a/gkr/gkr-keyring-add.vala
++++ b/gkr/gkr-keyring-add.vala
+@@ -41,8 +41,7 @@ public class Seahorse.Gkr.KeyringAdd : Gtk.Dialog {
+ 
+         var cancellable = Dialog.begin_request(this);
+         var service = Backend.instance().service;
+-        Secret.Collection.create.begin(service, this.name_entry.text, null,
+-                                       Secret.CollectionCreateFlags.COLLECTION_CREATE_NONE,
++        Secret.Collection.create.begin(service, this.name_entry.text, null, 0,
+                                        cancellable, (obj, res) => {
+             /* Clear the operation without cancelling it since it is complete */
+             Dialog.complete_request(this, false);
+-- 
+2.23.0
+
-- 
2.23.0