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

Reply via email to