On 07/30/2015 11:57 AM, Lennart Poettering wrote:
Heya!
I'd like to ask everybody to test kdbus on Rawhide. Josh thankfully
added it to the Rawhide kernel packages, and our systemd RPMs come
with built-in support, too now. If you are running an up-to-date
Rawhide system adding "kdbus=1" to your kernel command line is hence
everything you need to run kdbus instead of dbus-daemon. (No
additional RPMs need to be installed.) If you do, things should just
work the same way as before, if we did everything right. By adding or
dropping "kdbus=1" to/from the command line you can enable kdbus or
revert back to dbus1 on each individual boot.
This stuff is opt-in, and we are very keen on getting feedback and
testing for this. The version of kdbus in Rawhide we consider API
stable, there is a complete client side available now in systemd, with
a client API in sd-bus. Compatibility with good old dbus1 is provided
by the "systemd-bus-proxy" service.
The folks involved in kdbus development have been running this code on
their systems for more than half a year now. There were occasional
hiccups, but we fixed everything we ran into, and it works pretty well
now. Our focus was specifically on providing the best possible
compatibility with dbus1. Now we'd like to increase the testing
audience and added this to Rawhide because of this.
Cannot log into KDE with kdbus, I get:
$ cat .xsession-errors
startkde: Starting up...
startkde: Could not sync environment to dbus.
Code is:
# At this point all environment variables are set, let's send it to the DBus
session server to update the activation environment
/usr/libexec/ksyncdbusenv
if test $? -ne 0; then
# Startup error
echo 'startkde: Could not sync environment to dbus.' 1>&2
test -n "$ksplash_pid" && kill "$ksplash_pid"
2>/dev/null
message "Could not sync environment to dbus."
exit 1
fi
./plasma-workspace-5.3.2/startkde/ksyncdbusenv/ksyncdbusenv.cpp:
int main(int argc, char **argv)
{
QCoreApplication app(argc, argv);
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
EnvMap envMap;
for (const QString &key : env.keys()) {
envMap.insert(key, env.value(key));
}
QDBusMessage msg =
QDBusMessage::createMethodCall(QStringLiteral("org.freedesktop.DBus"),
QStringLiteral("/org/freedesktop/DBus"),
QStringLiteral("org.freedesktop.DBus"),
QStringLiteral("UpdateActivationEnvironment"));
qDBusRegisterMetaType<EnvMap>();
msg.setArguments(QList<QVariant>({QVariant::fromValue(envMap)}));
QDBusPendingCall reply = QDBusConnection::sessionBus().asyncCall(msg);
reply.waitForFinished();
if (reply.isError()) {
qDebug() << reply.error().name() << reply.error().message();
}
return reply.isError() ? 1 : 0;
}
--
Orion Poplawski
Technical Manager 303-415-9701 x222
NWRA, Boulder/CoRA Office FAX: 303-415-9702
3380 Mitchell Lane orion(a)nwra.com
Boulder, CO 80301
http://www.nwra.com