diff mbox series

[bug#37693] Seahorse build

Message ID e0b5ce9115ff5343a37193ff2e89f0b7b50f8fe1.camel@student.tugraz.at
State Accepted
Headers show
Series [bug#37693] Seahorse build | expand

Commit Message

Leo Prikler Oct. 10, 2019, 8:56 a.m. UTC

Comments

Ludovic Courtès Oct. 15, 2019, 12:09 p.m. UTC | #1
Hi Leo,

Leo Prikler <leo.prikler@student.tugraz.at> skribis:

> From e2b17f74841ae14ac96782539ec8bfc1c639ed34 Mon Sep 17 00:00:00 2001
> From: Leo Prikler <leo.prikler@student.tugraz.at>
> Date: Thu, 10 Oct 2019 10:16:47 +0200
> Subject: [PATCH] gnu: seahorse: Fix build
>
> * /gnu/packages/gnome.scm: (seahorse): Use meson-build-system.
> Update inputs. Add patches to fix compile errors.
> * /gnu/packages/patches/seahorse-fix-libsecret-breakage.patch: New file.
> * /gnu/packages/patches/seahorse-fix-type-mismatches.patch: New file.

Great that you were able to fix it!

> -    (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”.  :-)

>      (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?

> diff --git a/gnu/packages/patches/seahorse-fix-libsecret-breakage.patch b/gnu/packages/patches/seahorse-fix-libsecret-breakage.patch
> new file mode 100644
> index 0000000000..d6396c227a
> --- /dev/null
> +++ b/gnu/packages/patches/seahorse-fix-libsecret-breakage.patch

[...]

> --- /dev/null
> +++ b/gnu/packages/patches/seahorse-fix-type-mismatches.patch
> @@ -0,0 +1,154 @@
> +From 12178d7cc7fad52f61003b3221bd0a713ef80507 Mon Sep 17 00:00:00 2001
> +From: Rico Tzschichholz <ricotz@ubuntu.com>
> +Date: Mon, 5 Nov 2018 09:59:27 +0100
> +Subject: [PATCH] Fix type-argument mismatches related to GLib.List

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.

Thanks!

Ludo’.
Leo Prikler Oct. 15, 2019, 12:36 p.m. UTC | #2
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.

> >      (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).

> 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
Miguel Arruga Vivas Oct. 21, 2019, 4:59 p.m. UTC | #3
Hi,

El 21 oct. 2019 18:22, Leo Prikler <leo.prikler@student.tugraz.at> escribió:
>
> Am Montag, den 21.10.2019, 17:25 +0200 schrieb Miguel Arruga Vivas: 
>>> > > > > @@ -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. 
> I'm not sure, whether that is the right approach. Seahorse used glib- 
> or-gtk-build-system before, so I would assume the generation of those 
> caches is expected. 

The icon.cache is generated later by a profile hook, as it must include all icons from the user-installed packages and not only seahorse ones. That's the reason behind its removal during installation phase.

> > 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. 
> Would you mind checking, whether your patch works with gtk+:bin added 
> and without python? If so, I'd find it preferable to mine. 

I cannot test the python removal right now, but I'll answer as soon I can build it.

Best regards,
Miguel
diff mbox series

Patch

From e2b17f74841ae14ac96782539ec8bfc1c639ed34 Mon Sep 17 00:00:00 2001
From: Leo Prikler <leo.prikler@student.tugraz.at>
Date: Thu, 10 Oct 2019 10:16:47 +0200
Subject: [PATCH] gnu: seahorse: Fix build

* /gnu/packages/gnome.scm: (seahorse): Use meson-build-system.
Update inputs. Add patches to fix compile errors.
* /gnu/packages/patches/seahorse-fix-libsecret-breakage.patch: New file.
* /gnu/packages/patches/seahorse-fix-type-mismatches.patch: New file.
---
 gnu/packages/gnome.scm                        |  12 +-
 .../seahorse-fix-libsecret-breakage.patch     |  29 ++++
 .../seahorse-fix-type-mismatches.patch        | 154 ++++++++++++++++++
 3 files changed, 192 insertions(+), 3 deletions(-)
 create mode 100644 gnu/packages/patches/seahorse-fix-libsecret-breakage.patch
 create mode 100644 gnu/packages/patches/seahorse-fix-type-mismatches.patch

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 2a664e3db7..a34babebfe 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -2230,10 +2230,14 @@  engineering.")
                            version ".tar.xz"))
        (sha256
         (base32
-         "1sbj1czlx1fakm72dwgbn0bwm12j838yaky4mkf6hf8j8afnxmzp"))))
-    (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)
     (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)
        ("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-fix-libsecret-breakage.patch b/gnu/packages/patches/seahorse-fix-libsecret-breakage.patch
new file mode 100644
index 0000000000..d6396c227a
--- /dev/null
+++ b/gnu/packages/patches/seahorse-fix-libsecret-breakage.patch
@@ -0,0 +1,29 @@ 
+From d9db29db567012b7c72e85e1be1fbf55fcc9b667 Mon Sep 17 00:00:00 2001
+From: Niels De Graef <nielsdegraef@gmail.com>
+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
+@@ -43,8 +43,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.22.0
diff --git a/gnu/packages/patches/seahorse-fix-type-mismatches.patch b/gnu/packages/patches/seahorse-fix-type-mismatches.patch
new file mode 100644
index 0000000000..d259d8311d
--- /dev/null
+++ b/gnu/packages/patches/seahorse-fix-type-mismatches.patch
@@ -0,0 +1,154 @@ 
+From 12178d7cc7fad52f61003b3221bd0a713ef80507 Mon Sep 17 00:00:00 2001
+From: Rico Tzschichholz <ricotz@ubuntu.com>
+Date: Mon, 5 Nov 2018 09:59:27 +0100
+Subject: [PATCH] Fix type-argument mismatches related to GLib.List
+
+---
+ common/deleter.vala                  | 2 +-
+ common/exporter.vala                 | 2 +-
+ gkr/gkr-item.vala                    | 2 +-
+ gkr/gkr-keyring.vala                 | 2 +-
+ pkcs11/certificate-der-exporter.vala | 4 ++--
+ pkcs11/pkcs11-deleter.vala           | 2 +-
+ pkcs11/pkcs11-token.vala             | 4 ++--
+ ssh/deleter.vala                     | 2 +-
+ ssh/exporter.vala                    | 2 +-
+ 9 files changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/common/deleter.vala b/common/deleter.vala
+index 18dd0d4c..1c50cdaf 100644
+--- a/common/deleter.vala
++++ b/common/deleter.vala
+@@ -24,7 +24,7 @@ namespace Seahorse {
+ public abstract class Deleter : GLib.Object {
+ 	public abstract Gtk.Dialog create_confirm(Gtk.Window? parent);
+
+-	public abstract unowned GLib.List<weak GLib.Object> get_objects();
++	public abstract unowned GLib.List<GLib.Object> get_objects();
+
+ 	public abstract bool add_object (GLib.Object obj);
+
+diff --git a/common/exporter.vala b/common/exporter.vala
+index e686ff0d..edc4b4d3 100644
+--- a/common/exporter.vala
++++ b/common/exporter.vala
+@@ -35,7 +35,7 @@ public interface Exporter : GLib.Object {
+
+ 	public abstract Gtk.FileFilter file_filter { owned get; }
+
+-	public abstract unowned GLib.List<weak GLib.Object> get_objects();
++	public abstract unowned GLib.List<GLib.Object> get_objects();
+
+ 	public abstract bool add_object(GLib.Object obj);
+
+diff --git a/gkr/gkr-item.vala b/gkr/gkr-item.vala
+index ec45a5c7..bdcf14d1 100644
+--- a/gkr/gkr-item.vala
++++ b/gkr/gkr-item.vala
+@@ -513,7 +513,7 @@ class ItemDeleter : Deleter {
+ 			GLib.assert_not_reached();
+ 	}
+
+-	public override unowned GLib.List<weak GLib.Object> get_objects() {
++	public override unowned GLib.List<GLib.Object> get_objects() {
+ 		return this._items;
+ 	}
+
+diff --git a/gkr/gkr-keyring.vala b/gkr/gkr-keyring.vala
+index e6ecaf76..096bb0ae 100644
+--- a/gkr/gkr-keyring.vala
++++ b/gkr/gkr-keyring.vala
+@@ -248,7 +248,7 @@ class KeyringDeleter : Deleter {
+ 			GLib.assert_not_reached();
+ 	}
+
+-	public override unowned GLib.List<weak GLib.Object> get_objects() {
++	public override unowned GLib.List<GLib.Object> get_objects() {
+ 		return this._objects;
+ 	}
+
+diff --git a/pkcs11/certificate-der-exporter.vala b/pkcs11/certificate-der-exporter.vala
+index e8789f52..57e6ec25 100644
+--- a/pkcs11/certificate-der-exporter.vala
++++ b/pkcs11/certificate-der-exporter.vala
+@@ -23,7 +23,7 @@ namespace Seahorse {
+
+ public class CertificateDerExporter : GLib.Object, Exporter {
+ 	private Gcr.Certificate _certificate;
+-	private GLib.List<weak GLib.Object> _objects;
++	private GLib.List<GLib.Object> _objects;
+
+ 	public CertificateDerExporter(Gcr.Certificate certificate)
+ 	{
+@@ -67,7 +67,7 @@ public class CertificateDerExporter : GLib.Object, Exporter {
+ 		}
+ 	}
+
+-	public unowned GLib.List<weak GLib.Object> get_objects() {
++	public unowned GLib.List<GLib.Object> get_objects() {
+ 		return this._objects;
+ 	}
+
+diff --git a/pkcs11/pkcs11-deleter.vala b/pkcs11/pkcs11-deleter.vala
+index 34efc0eb..475b30c4 100644
+--- a/pkcs11/pkcs11-deleter.vala
++++ b/pkcs11/pkcs11-deleter.vala
+@@ -44,7 +44,7 @@ public class Deleter : Seahorse.Deleter {
+ 			GLib.assert_not_reached();
+ 	}
+
+-	public override unowned GLib.List<weak GLib.Object> get_objects() {
++	public override unowned GLib.List<GLib.Object> get_objects() {
+ 		return this.objects;
+ 	}
+
+diff --git a/pkcs11/pkcs11-token.vala b/pkcs11/pkcs11-token.vala
+index 927118c2..c4a83c4e 100644
+--- a/pkcs11/pkcs11-token.vala
++++ b/pkcs11/pkcs11-token.vala
+@@ -208,7 +208,7 @@ public class Token : GLib.Object, Gcr.Collection, Place, Lockable {
+ 	public void remove_object(Gck.Object object) {
+ 		GLib.List<Gck.Object> objects = null;
+ 		objects.append(object);
+-		remove_objects(objects);
++		remove_objects(objects.copy());
+ 	}
+
+ 	public bool has_mechanism(ulong mechanism) {
+@@ -387,7 +387,7 @@ public class Token : GLib.Object, Gcr.Collection, Place, Lockable {
+ 		update_visibility(show, true);
+ 	}
+
+-	private void remove_objects(GLib.List<GLib.Object> objects) {
++	private void remove_objects(GLib.List<weak GLib.Object> objects) {
+ 		var depaired = new GLib.List<GLib.Object>();
+ 		var hide = new GLib.List<GLib.Object>();
+
+diff --git a/ssh/deleter.vala b/ssh/deleter.vala
+index 10788c25..e2e1221b 100644
+--- a/ssh/deleter.vala
++++ b/ssh/deleter.vala
+@@ -64,7 +64,7 @@ public class Seahorse.Ssh.Deleter : Seahorse.Deleter {
+         return dialog;
+     }
+
+-    public override unowned List<weak GLib.Object> get_objects () {
++    public override unowned GLib.List<GLib.Object> get_objects () {
+         return this.keys;
+     }
+
+diff --git a/ssh/exporter.vala b/ssh/exporter.vala
+index f2d70b4f..e9499493 100644
+--- a/ssh/exporter.vala
++++ b/ssh/exporter.vala
+@@ -97,7 +97,7 @@ public class Seahorse.Ssh.Exporter : GLib.Object, Seahorse.Exporter {
+         }
+     }
+
+-    public unowned GLib.List<weak GLib.Object> get_objects() {
++    public unowned GLib.List<GLib.Object> get_objects() {
+         return this.objects;
+     }
+
+--
+2.22.0
-- 
2.23.0