On Thu, 28 Jul 2016 at 08:33:21 -0400, Marvin Renich wrote: > * Simon McVittie <s...@debian.org> [160727 20:04]: > > On Wed, 27 Jul 2016 at 18:02:32 +0200, Laurent Bigonville wrote: > > > Shouldn't this > > > dependency only be declared at some other level (libdbus, GDBus,...)? > > > > I think this would have to be a new dbus-session metapackage, unless > > I'm missing something. dbus is the wrong place, and so are all the > > obvious libraries. > > Do you mean metapackage or virtual package? Wouldn't a virtual package > be exactly the right thing for this? Then dbus-user-session and > dbus-x11 would each "Provides: dbus-session" and no additional real > package is required. Maybe I do not understand what is being suggested.
If we want to avoid mass package changes when the preferred way to get a session bus changes, then either it has to be a real package, or we have to have a real dbus-default-session-bus package instead. When there are two or more providers for a virtual package, dependening packages need to depend on a real package, with a virtual package as an alternative. If we just had Package: empathy Depends: dbus-session-bus Package: dbus-x11 Provides: dbus-session-bus Package: dbus-user-session Provides: dbus-session-bus where dbus-session-bus was virtual, then installing Empathy on a bare system would give you randomly chosen session bus semantics, either dbus-user-session or dbus-x11. I don't think that's at all useful. If we have Package: empathy Depends: dbus-user-session | dbus-session-bus Package: dbus-x11 Provides: dbus-session-bus Package: dbus-user-session Provides: dbus-session-bus and we later decide that actually, the preferred implementation of dbus-session-bus is kdbus-user-bus, then we'd have to patch Empathy (and all other packages in the same situation) to have that preference, which is just as many changes as those that Josh and Laurent were concerned about. If dbus-session-bus is a real package: Package: dbus-session-bus Depends: dbus-user-session | dbus-x11 Package: empathy Depends: dbus-session-bus Package: dbus-x11 Provides: dbus-session-bus Package: dbus-user-session Provides: dbus-session-bus then I think everything works the way we'd want? New installations get dbus-user-session, existing installations get dbus-x11 (and if we want a heavier hint to switch to dbus-user-session, we could maybe use Recommends). Another option, with an extra real package: if we have Package: dbus-default-session-bus Depends: dbus-user-session Package: dbus-x11 Provides: dbus-session-bus Package: dbus-user-session Provides: dbus-session-bus Package: empathy Depends: dbus-default-session-bus | dbus-session-bus then the dependency graph is a bit more complicated, and I think all we've gained is the ability to switch people from one implementation to another at upgrades? This is appropriate where there's a clear "best" implementation, like the default Python or JDK version, but I don't think that's necessarily the case here. S