From 7c2791f226df89f5b0bcffc2964e96db9dee5f0f Mon Sep 17 00:00:00 2001 From: Samuli Piippo Date: Thu, 29 Jan 2015 10:34:25 +0200 Subject: Start dbus session bus at boot Session address is saved to /var/run/dbus/session_bus_address, which is read in /etc/profile.d/dbus-session-address for interactive login and by adbd for applications launched from QtCreator. Change-Id: I8e1f43bdb2f7a7b0450dacf39890cf149459bbf4 Reviewed-by: Rainer Keller --- recipes/adbd/files/adb-init | 4 + recipes/dbus/dbus/dbus-session-address | 5 + recipes/dbus/dbus/dbus-session.init | 103 +++++++++++++++++++++ recipes/dbus/dbus_1.6.18.bbappend | 47 ++++++++++ .../packagegroup-b2qt-embedded-base.bb | 1 + 5 files changed, 160 insertions(+) create mode 100644 recipes/dbus/dbus/dbus-session-address create mode 100644 recipes/dbus/dbus/dbus-session.init create mode 100644 recipes/dbus/dbus_1.6.18.bbappend diff --git a/recipes/adbd/files/adb-init b/recipes/adbd/files/adb-init index 92500d7..d8920b8 100755 --- a/recipes/adbd/files/adb-init +++ b/recipes/adbd/files/adb-init @@ -4,6 +4,10 @@ DAEMON=/usr/bin/adbd . /etc/default/adbd +if [ -e /var/run/dbus/session_bus_address ]; then + . /var/run/dbus/session_bus_address +fi + case "$1" in start) if [ "$USE_ETHERNET" = "no" ]; then diff --git a/recipes/dbus/dbus/dbus-session-address b/recipes/dbus/dbus/dbus-session-address new file mode 100644 index 0000000..3f85306 --- /dev/null +++ b/recipes/dbus/dbus/dbus-session-address @@ -0,0 +1,5 @@ +#!/bin/sh + +if [ -e /var/run/dbus/session_bus_address ]; then + . /var/run/dbus/session_bus_address +fi diff --git a/recipes/dbus/dbus/dbus-session.init b/recipes/dbus/dbus/dbus-session.init new file mode 100644 index 0000000..11a6757 --- /dev/null +++ b/recipes/dbus/dbus/dbus-session.init @@ -0,0 +1,103 @@ +#! /bin/sh +### BEGIN INIT INFO +# Provides: dbus +# Required-Start: $remote_fs $syslog +# Required-Stop: $remote_fs $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 1 +# Short-Description: D-Bus session message bus +# Description: D-Bus is a simple interprocess messaging system, used +# for sending messages between applications. +### END INIT INFO +# +# -*- coding: utf-8 -*- +# Debian init.d script for D-BUS +# Copyright © 2003 Colin Walters + +# set -e + +# Source function library. +. /etc/init.d/functions + +DAEMON=@bindir@/dbus-launch +NAME=dbus-session +ADDRESSFILE=/var/run/dbus/session_bus_address +UUIDDIR=/var/lib/dbus +DESC="session message bus" + +test -x $DAEMON || exit 0 + +# Source defaults file; edit that file to configure this script. +ENABLED=1 +PARAMS="" +if [ -e /etc/default/dbus ]; then + . /etc/default/dbus +fi + +if [ -e $ADDRESSFILE ]; then + . $ADDRESSFILE +fi + +test "$ENABLED" != "0" || exit 0 + +start_it_up() +{ + echo -n "Starting $DESC: " + $DAEMON --auto-syntax > $ADDRESSFILE + echo "$NAME." +} + +shut_it_down() +{ + echo -n "Stopping $DESC: " + kill $DBUS_SESSION_BUS_PID + echo "$NAME." +} + +reload_it() +{ + echo -n "Reloading $DESC config: " + dbus-send --print-reply --session --type=method_call \ + --dest=org.freedesktop.DBus \ + / org.freedesktop.DBus.ReloadConfig > /dev/null + # hopefully this is enough time for dbus to reload it's config file. + echo "done." +} + +status_it() +{ + if kill -0 $DBUS_SESSION_BUS_PID 2>/dev/null; then + echo "$NAME (pid $DBUS_SESSION_BUS_PID) is running..." + return 0 + else + echo "$NAME is stopped" + fi + return 3 +} + +case "$1" in + start) + start_it_up + ;; + stop) + shut_it_down + ;; + status) + status_it + exit $? + ;; + reload|force-reload) + reload_it + ;; + restart) + shut_it_down + sleep 1 + start_it_up + ;; + *) + echo "Usage: /etc/init.d/$NAME {start|stop|status|restart|reload|force-reload}" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/recipes/dbus/dbus_1.6.18.bbappend b/recipes/dbus/dbus_1.6.18.bbappend new file mode 100644 index 0000000..d824989 --- /dev/null +++ b/recipes/dbus/dbus_1.6.18.bbappend @@ -0,0 +1,47 @@ +############################################################################# +## +## Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +## +## This file is part of the Qt Enterprise Embedded Scripts of the Qt +## framework. +## +## $QT_BEGIN_LICENSE$ +## Commercial License Usage Only +## Licensees holding valid commercial Qt license agreements with Digia +## with an appropriate addendum covering the Qt Enterprise Embedded Scripts, +## may use this file in accordance with the terms contained in said license +## agreement. +## +## For further information use the contact form at +## http://www.qt.io/contact-us. +## +## +## $QT_END_LICENSE$ +## +############################################################################# + +FILESEXTRAPATHS_append := ":${THISDIR}/${PN}" +SRC_URI += " \ + file://dbus-session.init \ + file://dbus-session-address \ + " + +INITSCRIPT_PACKAGES = "${PN} ${PN}-session-init" +INITSCRIPT_NAME_${PN}-session-init = "dbus-session" +INITSCRIPT_PARAMS_${PN}-session-init = "start 20 5 3 2 . stop 10 0 1 6 ." + +PACKAGES =+ "${PN}-session-init" +FILES_${PN}-session-init = " \ + ${sysconfdir}/init.d/dbus-session \ + ${sysconfdir}/profile.d/dbus-session-address \ + " + +do_install_append_class-target() { + if ${@base_contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then + install -d ${D}${sysconfdir}/init.d + sed 's:@bindir@:${bindir}:' < ${WORKDIR}/dbus-session.init >${WORKDIR}/dbus-session.init.sh + install -m 0755 ${WORKDIR}/dbus-session.init.sh ${D}${sysconfdir}/init.d/dbus-session + fi + install -d ${D}${sysconfdir}/profile.d + install -m 0755 ${WORKDIR}/dbus-session-address ${D}${sysconfdir}/profile.d/ +} diff --git a/recipes/packagegroup/packagegroup-b2qt-embedded-base.bb b/recipes/packagegroup/packagegroup-b2qt-embedded-base.bb index dd1ab44..f40173b 100644 --- a/recipes/packagegroup/packagegroup-b2qt-embedded-base.bb +++ b/recipes/packagegroup/packagegroup-b2qt-embedded-base.bb @@ -51,5 +51,6 @@ RDEPENDS_${PN} = "\ ttf-opensans \ ttf-dejavu-common \ ttf-dejavu-sans \ + dbus-session-init \ ${MACHINE_EXTRA_INSTALL} \ " -- cgit v1.2.3-54-g00ecf