[devel] "Символы" DBus (Was: [sisyphus] gnome свежий сизиф)

Alexander Bokovoy ab at altlinux.org
Tue Aug 18 20:53:10 MSD 2009


2009/8/18 Mikhail Efremov <sem at altlinux.ru>:
> On Tue, 18 Aug 2009 13:34:29 +0400 Alexey Rusakov wrote:
>> В Втр, 18/08/2009 в 13:22 +0400, Alexey Rusakov пишет:
>> > В Втр, 18/08/2009 в 12:26 +0400, Anton Vinogradov пишет:
>> > > Две очень неприятные проблеммы:
>> > > 1. Вместо перзагрузки выкидывает в gdm
>> Предположительно проблемы с gnome-session.
>>
>> > > 2. Не дает сменить системное время через аплет часов,
>> > > вываливаясь с ошибкой "Method "ShowDialog" with signature "su" on
>> > > interface "org.gnome.PolicyKit.Manager" doesn't exist"
>> Разъехались интерфейс, предоставляемый PolicyKit-gnome, и интерфейс,
>> который от него ожидает gnome-panel и конкретно апплет часов...
>
> Это выстрелил мой патч к PolicyKit-gnome.
> Ситуация такая: PolicyKit-gnome пытается регистрировать один объект по
> двум путям, "/org/gnome/PolicyKit/Manager" и "/". В dbus-glib 0.82
> такое больше не позволяется:
>    Also, warn and keep the first object path if the library user registers
>    an object at two object paths (previously, this would fail silently, use
>    the second object path, and leak memory).
> (commit 6de1441865da2816c6bcd8cae842be93a8a96304)
>
> Поэтому в PolicyKit-gnome была выкинута регистрация первого пути,
> оставлен только второй, т.к. после обновления libdbus-glib по первому не
> работал даже пример в самом PolicyKit-gnome. К тому же в коммите
> утверждается, что раньше все равно использовался только второй путь.
> На самом деле оно похоже все-таки как-то работало, со старым
> libdbus-glib у меня получается использовать оба пути.
> Получается, что одна часть софта использует первый путь, другая -
> второй. При этом я подозреваю, что первый путь является тяжелым
> наследием прошлого, как и сам ShowDialog:
>  <!-- this interface is deprecated and will be removed in a future
> release --> <interface name="org.gnome.PolicyKit.Manager">
>    <method name="ShowDialog">
>
> Надо либо приводить весь софт к одному знаменателю, т.е. использовать
> какой-то один путь, либо откатывать libdbus-glib.
Чините софт. Это все равно будет необходимо и апстриму надо помогать.
Этот случай -- наглядный пример необходимости контроля изменений API,
предоставляемого в системе, о котором я говорил в июне.

-- 
/ Alexander Bokovoy


More information about the Devel mailing list