diff mbox series

[bug#48028,wip-gnome,v5,5/8] gnu: libsoup: Adjust inputs.

Message ID 20210427092334.23537-5-rg@raghavgururajan.name
State Accepted
Headers show
Series [bug#48028,wip-gnome,v5,1/8] gnu: gtkmm: Change build-system and adjust arguments accordingly. | expand

Checks

Context Check Description
cbaines/submitting builds success
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue

Commit Message

Raghav Gururajan April 27, 2021, 9:23 a.m. UTC
* gnu/packages/gnome.scm (libsoup)[inputs]: Add samba and
move glib-networking to ...
[propagated-inputs]: ... here.
---
 gnu/packages/gnome.scm | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

Leo Prikler April 28, 2021, 7:41 a.m. UTC | #1
Hi,

Am Dienstag, den 27.04.2021, 05:23 -0400 schrieb Raghav Gururajan:
> * gnu/packages/gnome.scm (libsoup)[inputs]: Add samba and
> move glib-networking to ...
> [propagated-inputs]: ... here.
> ---
>  gnu/packages/gnome.scm | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
> index 51a72c4e58..e9924b67a0 100644
> --- a/gnu/packages/gnome.scm
> +++ b/gnu/packages/gnome.scm
> @@ -4972,13 +4972,14 @@ libxml to ease remote use of the RESTful
> API.")
>       ;; libsoup-2.4.pc refers to all these.
>       `(("brotli" ,google-brotli)
>         ("glib" ,glib)
> +       ("glib-networking" ,glib-networking)
After looking at this more closely, the comment is a little misleading,
since the libsoup-2.4.pc does not actually refer to glib-networking. 
What is the rationale behind this propagation?
In v1 you claimed the .pc file mentions this, but I don't see any of
it:
libsoup-2.4.pc:Requires: glib-2.0 >=  2.58, gobject-2.0 >=  2.58, gio-
2.0 >=  2.58
libsoup-2.4.pc:Requires.private: libxml-2.0, sqlite3, libpsl >=  0.20,
libbrotlidec, zlib
libsoup-gnome-2.4.pc:Requires: libsoup-2.4
libsoup-gnome-2.4.pc:Requires.private: glib-2.0 >=  2.58, gobject-2.0
>=  2.58, gio-2.0 >=  2.58, libxml-2.0, sqlite3, libpsl >=  0.20,
libbrotlidec, zlib

In fact, I had a look at the libsoup source, and even there, using
2.99.4, which is the latest *unstable* release (as opposed to the
lastest stable release), the glib_deps from which the pkg-config file
is formed, says:
  glib_deps = [glib_dep, gobject_dep, gio_dep]

There doesn't even seem to be a pkg-config file for glib-networking.
(Note: I'm running my checks on master to avoid the rebuilds, that come
from wip-gnome, but wip-gnome appears to package the same version, so
there shouldn't be a difference)

Regards,
Leo
Raghav Gururajan April 28, 2021, 1:07 p.m. UTC | #2
Hi Leo,

> After looking at this more closely, the comment is a little misleading,
> since the libsoup-2.4.pc does not actually refer to glib-networking.
> What is the rationale behind this propagation?
> In v1 you claimed the .pc file mentions this, but I don't see any of
> it:
> libsoup-2.4.pc:Requires: glib-2.0 >=  2.58, gobject-2.0 >=  2.58, gio-
> 2.0 >=  2.58
> libsoup-2.4.pc:Requires.private: libxml-2.0, sqlite3, libpsl >=  0.20,
> libbrotlidec, zlib
> libsoup-gnome-2.4.pc:Requires: libsoup-2.4
> libsoup-gnome-2.4.pc:Requires.private: glib-2.0 >=  2.58, gobject-2.0
>> =  2.58, gio-2.0 >=  2.58, libxml-2.0, sqlite3, libpsl >=  0.20,
> libbrotlidec, zlib

It `gio` I was referring to. GIO can mean [glib]/lib/libgio or 
[glib-networking]/lib/gio/modules/libgio* or both. It depends on what 
package it is. Libsoup is a networking package, which uses 
glib-networking as tls backend. So GIO networking modules provided by 
glib-networking, is required by libsoup at runtime.

Regards,
RG.
Leo Prikler April 28, 2021, 2:40 p.m. UTC | #3
Am Mittwoch, den 28.04.2021, 09:07 -0400 schrieb Raghav Gururajan:
> Hi Leo,
> 
> > After looking at this more closely, the comment is a little
> > misleading,
> > since the libsoup-2.4.pc does not actually refer to glib-
> > networking.
> > What is the rationale behind this propagation?
> > In v1 you claimed the .pc file mentions this, but I don't see any
> > of
> > it:
> > libsoup-2.4.pc:Requires: glib-2.0 >=  2.58, gobject-2.0 >=  2.58,
> > gio-
> > 2.0 >=  2.58
> > libsoup-2.4.pc:Requires.private: libxml-2.0, sqlite3, libpsl
> > >=  0.20,
> > libbrotlidec, zlib
> > libsoup-gnome-2.4.pc:Requires: libsoup-2.4
> > libsoup-gnome-2.4.pc:Requires.private: glib-2.0 >=  2.58, gobject-
> > 2.0
> > > =  2.58, gio-2.0 >=  2.58, libxml-2.0, sqlite3, libpsl >=  0.20,
> > libbrotlidec, zlib
> 
> It `gio` I was referring to. GIO can mean [glib]/lib/libgio or 
> [glib-networking]/lib/gio/modules/libgio* or both. It depends on
> what 
> package it is. Libsoup is a networking package, which uses 
> glib-networking as tls backend. So GIO networking modules provided
> by 
> glib-networking, is required by libsoup at runtime.
I don't think "gio inside .pc" means that, however.  I do agree, that
it might be worth propagating it as a runtime dependency, but it should
be done with a suitable comment.

Regards,
Leo
宋文武 May 2, 2021, 5:14 a.m. UTC | #4
Leo Prikler <leo.prikler@student.tugraz.at> writes:

> Am Mittwoch, den 28.04.2021, 09:07 -0400 schrieb Raghav Gururajan:
>> Hi Leo,
>> 
>> > After looking at this more closely, the comment is a little
>> > misleading,
>> > since the libsoup-2.4.pc does not actually refer to glib-
>> > networking.
>> > What is the rationale behind this propagation?
>> > In v1 you claimed the .pc file mentions this, but I don't see any
>> > of
>> > it:
>> > libsoup-2.4.pc:Requires: glib-2.0 >=  2.58, gobject-2.0 >=  2.58,
>> > gio-
>> > 2.0 >=  2.58
>> > libsoup-2.4.pc:Requires.private: libxml-2.0, sqlite3, libpsl
>> > >=  0.20,
>> > libbrotlidec, zlib
>> > libsoup-gnome-2.4.pc:Requires: libsoup-2.4
>> > libsoup-gnome-2.4.pc:Requires.private: glib-2.0 >=  2.58, gobject-
>> > 2.0
>> > > =  2.58, gio-2.0 >=  2.58, libxml-2.0, sqlite3, libpsl >=  0.20,
>> > libbrotlidec, zlib
>> 
>> It `gio` I was referring to. GIO can mean [glib]/lib/libgio or 
>> [glib-networking]/lib/gio/modules/libgio* or both. It depends on
>> what 
>> package it is. Libsoup is a networking package, which uses 
>> glib-networking as tls backend. So GIO networking modules provided
>> by 
>> glib-networking, is required by libsoup at runtime.

Yes, glib-networking provides 2 gio modules:
- libgiognutls.so: Let GIO based applications access HTTPS (TLS).
- libgiognomeproxy.so: Let GIO based applications use GNOME proxy settings.

They're required at runtime, and optional (one may argue that HTTPS is a
must have feature though).  Currently we add glib-networking to webkit
browsers's inputs (eg: epiphany, luakit, etc.)  directly, and wrap it
with 'GIO_EXTRA_MODULES'.  By propagated glib-networking in libsoup, we
can remove it from inputs of thoese web browsers, but we still have to
wrap them...

Maybe there is a way to hardcode glib-networking in libsoup so that we
can get rid of GIO_EXTRA_MODULES?  (another gio module is the gsettings
backends dconf, which also need a user dbus-daemon user spawn its
backend service...)

> I don't think "gio inside .pc" means that, however.  I do agree, that
> it might be worth propagating it as a runtime dependency, but it should
> be done with a suitable comment.

I Agree with Leo.  Raghav, could you look into if we can get rid of
GIO_EXTRA_MODULES for glib-networking or add a specified comment for
this comment (maybe: "For HTTPS and GNOME proxy support")?

Thanks!
Leo Prikler May 2, 2021, 7:03 a.m. UTC | #5
Am Sonntag, den 02.05.2021, 13:14 +0800 schrieb 宋文武:
> Leo Prikler <leo.prikler@student.tugraz.at> writes:
> 
> > Am Mittwoch, den 28.04.2021, 09:07 -0400 schrieb Raghav Gururajan:
> > > Hi Leo,
> > > 
> > > > After looking at this more closely, the comment is a little
> > > > misleading,
> > > > since the libsoup-2.4.pc does not actually refer to glib-
> > > > networking.
> > > > What is the rationale behind this propagation?
> > > > In v1 you claimed the .pc file mentions this, but I don't see
> > > > any
> > > > of
> > > > it:
> > > > libsoup-2.4.pc:Requires: glib-2.0 >=  2.58, gobject-2.0
> > > > >=  2.58,
> > > > gio-
> > > > 2.0 >=  2.58
> > > > libsoup-2.4.pc:Requires.private: libxml-2.0, sqlite3, libpsl
> > > > > =  0.20,
> > > > libbrotlidec, zlib
> > > > libsoup-gnome-2.4.pc:Requires: libsoup-2.4
> > > > libsoup-gnome-2.4.pc:Requires.private: glib-2.0 >=  2.58,
> > > > gobject-
> > > > 2.0
> > > > > =  2.58, gio-2.0 >=  2.58, libxml-2.0, sqlite3, libpsl
> > > > > >=  0.20,
> > > > libbrotlidec, zlib
> > > 
> > > It `gio` I was referring to. GIO can mean [glib]/lib/libgio or 
> > > [glib-networking]/lib/gio/modules/libgio* or both. It depends on
> > > what 
> > > package it is. Libsoup is a networking package, which uses 
> > > glib-networking as tls backend. So GIO networking modules
> > > provided
> > > by 
> > > glib-networking, is required by libsoup at runtime.
> 
> Yes, glib-networking provides 2 gio modules:
> - libgiognutls.so: Let GIO based applications access HTTPS (TLS).
> - libgiognomeproxy.so: Let GIO based applications use GNOME proxy
> settings.
> 
> They're required at runtime, and optional (one may argue that HTTPS
> is a
> must have feature though).  Currently we add glib-networking to
> webkit
> browsers's inputs (eg: epiphany, luakit, etc.)  directly, and wrap it
> with 'GIO_EXTRA_MODULES'.  By propagated glib-networking in libsoup,
> we
> can remove it from inputs of thoese web browsers, but we still have
> to
> wrap them...
> 
> Maybe there is a way to hardcode glib-networking in libsoup so that
> we
> can get rid of GIO_EXTRA_MODULES?  (another gio module is the
> gsettings
> backends dconf, which also need a user dbus-daemon user spawn its
> backend service...)
> 
> > I don't think "gio inside .pc" means that, however.  I do agree,
> > that
> > it might be worth propagating it as a runtime dependency, but it
> > should
> > be done with a suitable comment.
> 
> I Agree with Leo.  Raghav, could you look into if we can get rid of
> GIO_EXTRA_MODULES for glib-networking or add a specified comment for
> this comment (maybe: "For HTTPS and GNOME proxy support")?

I didn't go as far as you.  All I wanted to say, was that insinuating
it to be a pkg-config dependency might be misleading, and that we ought
to have a suitable comment.  I've already pushed that patch to master
with one I wrote myself.

I'm not quite sure what's the problem with wrapping here.  Does glib-
or-gtk-build-system not take care of GIO_EXTRA_MODULES?

Regards,
Leo
宋文武 May 3, 2021, 3:32 a.m. UTC | #6
Leo Prikler <leo.prikler@student.tugraz.at> writes:

> Am Sonntag, den 02.05.2021, 13:14 +0800 schrieb 宋文武:
> [...]
>> 
>> I Agree with Leo.  Raghav, could you look into if we can get rid of
>> GIO_EXTRA_MODULES for glib-networking or add a specified comment for
>> this comment (maybe: "For HTTPS and GNOME proxy support")?
>
> I didn't go as far as you.  All I wanted to say, was that insinuating
> it to be a pkg-config dependency might be misleading, and that we ought
> to have a suitable comment.  I've already pushed that patch to master
> with one I wrote myself.

Sure, thank you!

>
> I'm not quite sure what's the problem with wrapping here.  Does glib-
> or-gtk-build-system not take care of GIO_EXTRA_MODULES?

Yes, glib-or-gtk-build-system (and meson-build-system) will do, but that
requires the users of the libsoup and webkitgtk package (eg: midori) to
use glib-or-gtk-build-system which may not be the cases or can be easily
forget.
diff mbox series

Patch

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 51a72c4e58..e9924b67a0 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -4972,13 +4972,14 @@  libxml to ease remote use of the RESTful API.")
      ;; libsoup-2.4.pc refers to all these.
      `(("brotli" ,google-brotli)
        ("glib" ,glib)
+       ("glib-networking" ,glib-networking)
        ("libpsl" ,libpsl)
        ("libxml2" ,libxml2)
        ("sqlite" ,sqlite)
        ("zlib" ,zlib)))
     (inputs
-     `(("glib-networking" ,glib-networking)
-       ("mit-krb5" ,mit-krb5)))
+     `(("mit-krb5" ,mit-krb5)
+       ("ntlm_auth" ,samba))) ; For ntlm_auth support
     (home-page "https://live.gnome.org/LibSoup/")
     (synopsis "GLib-based HTTP Library")
     (description