[HEADS-UP] Please test kdbus in Rawhide!

David Herrmann dh.herrmann at gmail.com
Fri Jul 31 17:07:07 UTC 2015


Hi

On Fri, Jul 31, 2015 at 6:47 PM, Orion Poplawski <orion at cora.nwra.com> wrote:
> 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.

This is UpdateActivationEnvironment() failing. This call definitely
works and we use it on our machines. However, it returns an error if
the argument-array is empty. I fixed this in -git now [1]. It sounds
like you're hitting this. If the fix doesn't help, please let me know
(should be in rawhide by tomorrow).

Thanks a lot for the report!
David

[1] https://github.com/systemd/systemd/commit/b2a0ac5e5b29c73ca7c0da23369a4769d5a91ddd

> 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 at nwra.com
> Boulder, CO 80301                   http://www.nwra.com
> --
> devel mailing list
> devel at lists.fedoraproject.org
> https://admin.fedoraproject.org/mailman/listinfo/devel
> Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct


More information about the devel mailing list