[Kde-hardware-devel] DBus introspection files and qdbusxml2cpp

Gökçen Eraslan gokcen at pardus.org.tr
Tue Nov 16 20:38:53 CET 2010


Hello,

When I look org.freedesktop.NetworkManagerUserSettings interface of kded 
module using d-feet, I got an exception like:

dbus.exceptions.IntrospectionParserException: Error parsing introspect data: 
<class 'xml.parsers.expat.ExpatError'>: unbound prefix: line 5, column 4

After some digging, I understand that the reason of that exception is that NM 
introspection files that we use, uses some tags from telepathy namespace (for 
example tp:docstring and tp:enum) but qdbusxml2cpp does not respect xml 
namespaces. 

The original introspection file we use to generate qt bindings is [1] but the 
instrospection xml exposed to dbus by our qt bindings is [2]. As you can see 
in [2] there is no xmlns definition, so clients that parses introspection 
(like d-feet) cannot parse introspection data due to the lack of xmlns.

When I talked to #telepathy guys in IRC, and they said that, you cannot use 
qdbusxml2cpp and telepathy together since qdbusxml2cpp does not understand 
namespaces. They also said that qdbusxml2cpp generates syncronous dbus calls, 
which is dangerous[3].

Here are some possible solutions:

1- Easy: Removing tp:docstring and tp:enum tags from 
exportedconnectionsecrets.h and exportedconnection.h

2- Hard: Generate the code using telepathy-qt4 tools[4] and switch the code 
using dbus bindings to newly generated async code.

My suggestion is to solve using (1) and adding a TODO item about (2). Any 
ideas?


[1] 
http://websvn.kde.org/trunk/extragear/base/networkmanagement/backends/NetworkManager/introspection/nm-
exported-connection.xml?view=markup

[2] http://pastebin.com/SLbmtKCC
[3] http://smcv.pseudorandom.co.uk/2008/11/nonblocking/
[4] http://git.collabora.co.uk/?p=telepathy-qt4.git;a=tree;f=tools;hb=HEAD

-- 
Gökçen Eraslan


More information about the Kde-hardware-devel mailing list