Bug#836396: sonic-pi: please replace dbus-launch with something else

Simon McVittie smcv at debian.org
Fri Sep 2 15:08:28 UTC 2016


Source: sonic-pi
Version: 2.10.0~repack-2
Severity: normal
Tags: upstream
User: dbus at packages.debian.org
Usertags: dbus-launch dbus-launch-for-infra

As described in <https://lists.debian.org/debian-devel/2016/08/msg00554.html>
I'm trying to reduce how much dbus-launch is used in Debian.
sonic-pi currently starts a new D-Bus session bus in the sonic-pi and
rp-app-bin scripts: I'm not sure whether these are used in Debian or not.
That dbus-daemon process is not terminated with sonic-pi (it is "leaked"),
which is a bug in its own right.

There are two possibilities here: either sonic-pi is meant to use an
existing D-Bus session bus if there is one, or it is not.

--- 1. Existing session bus

I suspect that what is actually intended here is to use an existing
D-Bus session bus if one exists, like every GNOME, KDE, etc. app would do.

The simplest way to use an existing session bus is to not run dbus-launch
explicitly at all, and have the Debian package depend on
default-dbus-session-bus | dbus-session-bus. This will either use an
existing D-Bus session bus provided by the dbus-user-session or dbus-x11
package, or if there is no existing session bus but dbus-x11 is installed
and an X11 DISPLAY is available, start a new bus via "X11 autolaunch".

Alternatively, if Sonic Pi really needs to support being run with
neither a D-Bus session bus nor X11 already available and start
a new D-Bus session bus, it could probe for one with dbus-send:

    command_prefix=

    if ! dbus-send --session --dest=org.freedesktop.DBus --type=method_call \
            /org/freedesktop/DBus org.freedesktop.DBus.GetId \
            >/dev/null 2>/dev/null; then
        command_prefix="dbus-run-session --"
    fi

    $command_prefix $DIR/../app/gui/qt/sonic-pi

This avoids second-guessing how D-Bus implementations would connect to the
session bus, so it is better than probing based on $DBUS_SESSION_BUS_ADDRESS.

--- 2. New session bus

If the intention is that sonic-pi always behaves like a new login session
(but this is really unconventional, and normal applications don't do this),
then it could do this more simply and with fewer dependencies via something
like this:

* remove "eval $(dbus-launch --auto-syntax)"
* instead of "$DIR/../app/gui/qt/sonic-pi" run
  "dbus-run-session -- $DIR/../app/gui/qt/sonic-pi"

If you forward this upstream, please quote the whole text so the upstream
developer can decide.

Thanks,
    S



More information about the pkg-multimedia-maintainers mailing list