On Thu, 09 Jan 2020 at 22:58:59 -0800, Josh Triplett wrote: > libsoup2.4-1, which is pulled in by various libraries and development > packages, has a dependency chain through glib-networking to > dconf-service, which in turn depends on having a running dbus. This > seems a bit much for a library to expect, especially if the user is just > installing build dependencies and -dev packages.
The dependency chain is: libsoup2.4-1 D: glib-networking D: gsettings-desktop-schemas [*] D: dconf-gsettings-backend | gsettings-backend D: dconf-service D: default-dbus-session-bus | dbus-session-bus libsoup2.4-1 Depends on glib-networking because without it, it will not support TLS, which is necessary on hostile networks like the one we all use. glib-networking is also required for proxy support. This could be reduced to Recommends, at the cost of having a libsoup2.4-1 that is considered to be broken by its upstream developer (and, I suspect, most libsoup users) if Recommends are globally disabled. glib-networking Depends on gsettings-desktop-schemas because without it, it will crash when it tries to load those GSettings schemas. The design of GSettings is such that installing a library that requires GSettings schemas, without also installing the GSettings schemas themselves, is normally considered to be a serious installation error. Specifically, the GSettings that it looks up are the GNOME proxy settings, if run under GNOME itself or under any desktop environment that claims to be GNOME-derived (XDG_CURRENT_DESKTOP=Unity:GNOME or similar). gsettings-desktop-schemas Depends on a GSettings backend because dh_installgsettings adds that dependency, on the basis that if you have GSettings schemas, you presumably want to store settings; but if you don't have a non-trivial GSettings backend, any changes to those settings will not be stored or propagated between processes, which could be argued to be a RC bug (data loss). The dependency could perhaps be weakened in this case, because glib-networking only reads settings and does not store them; but dh_installgsettings doesn't support relaxing this Depends to anything weaker (#934893). dconf-gsettings-backend Depends on dconf-service because without dconf-service, it cannot store anything, which could be argued to be a RC bug (data loss and/or failure to provide significant functionality). dconf-service Depends on an implementation of the D-Bus well-known session bus because without that, it cannot be run, which could be argued to be a RC bug (failure to provide significant functionality). I'm happy to work towards relaxing one of those Depends to Recommends, but only if there is consensus that it is an acceptable weakening of dependencies, such that when bugs get reported about it, I can point to that consensus, say "therefore you should have installed the Recommends" and close the bug. For more discussion of the lower part of this dependency chain (which also exists "below" GTK) please see the thread starting at: https://lists.debian.org/debian-devel/2019/08/msg00278.html and especially: https://lists.debian.org/debian-devel/2019/08/msg00291.html Because glib-networking only *conditionally* looks up the GNOME proxy settings (when $XDG_CURRENT_DESKTOP contains GNOME), it might be reasonable to break this dependency chain by weakening glib-networking D: gsettings-desktop-schemas to a Recommends or Suggests, but only after changing the GNOME proxy resolver so that it disables itself if the required schema is not present. If this is the desired resolution, I would very much prefer to take this upstream rather than having Debian-specific delta for it. > Would it be possible for some part of this dependency chain to move to > libsoup-gnome2.4-1, or otherwise not get pulled in when just trying to > do development and builds? Not really. libsoup requires glib-networking for TLS (and, perhaps less importantly, proxy support). This is a feature of the base libsoup library in libsoup2.4-1, and has nothing to do with the additional functionality in libsoup-gnome2.4-1. In any case, libsoup-gnome2.4-1 is equally needed for development and builds (for code that uses it). smcv