Bug 25491 - d-bus files are installed to the wrong location, breaking d-bus browsing
Summary: d-bus files are installed to the wrong location, breaking d-bus browsing
Alias: None
Product: at-spi2
Classification: Unclassified
Component: core (show other bugs)
Version: unspecified
Hardware: Other All
: medium major
Assignee: Mark Doffman
QA Contact:
Depends on:
Reported: 2009-12-07 09:52 UTC by Sandy Armstrong
Modified: 2010-07-20 07:28 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Description Sandy Armstrong 2009-12-07 09:52:04 UTC
With latest at-spi2 git, app buses are not browsable in d-feet.  I don't know if a11y is also broken, or if it's just introspection stuff.

1. Install at-spi2-core, at-spi2-atk, and pyatspi2 from git like so:

./autogen.sh --prefix=/home/sandy/stage/at-spi2 && make && make install

2. Start at-spi2-registryd like so:

$ ~/stage/at-spi2/libexec/at-spi2-registryd &

3. Start gcalctool like so:

$ gcalctool --gtk-module=gail:/home/sandy/stage/at-spi2/lib/gtk-2.0/modules/libatk-bridge.so

4. Using D-feet or another d-bus browser, locate the bus for gcalctool and click on it.

Expected result:

See at-spi2 d-bus interfaces

Actual result:

Nothing in d-feet, and the following output in the terminal where gcalctool was launched:

** (gcalctool:14377): WARNING **: AT-SPI: Cannot find introspection XML file /home/sandy/stage/at-spi2/share/at-spi2-atk/dbus/org.freedesktop.atspi.Accessible - Failed to open file '/home/sandy/stage/at-spi2/share/at-spi2-atk/dbus/org.freedesktop.atspi.Accessible': No such file or directory

(this is repeated for each inteface file, it seems)

The fix is trivial:

$ mv ~/stage/at-spi2/share/at-spi2-core ~/stage/at-spi2/share/at-spi2-atk

But I haven't actually looked at which module installs those files, or what a proper fix would look like.
Comment 1 Mark Doffman 2009-12-11 05:56:13 UTC
The XML files are installed by the at-spi2-core package. They have to be in a location readable by at-spi2-atk. There is a compile time option in the at-spi2-atk package to set the location of the XML files relative to the pkgdatadir.

This implies that for introspection to work at-spi2-atk and at-spi2-core must be installed into the same directory tree (prefix).

This seems to me to be acceptable. For any normal install both packages will be installed to the same path.

A possible fix is to have an override-able compile time option that sets the absolute path of the introspection directory.
Comment 2 Sandy Armstrong 2009-12-11 06:59:55 UTC
(In reply to comment #1)
> This implies that for introspection to work at-spi2-atk and at-spi2-core must
> be installed into the same directory tree (prefix).

Yes, and I installed them both in the same prefix of /home/sandy/stage/at-spi2 .  Either you've misunderstood the report or I'm misunderstanding your response.  :-)

I'm installing everything to the same prefix, using default compilation options, and getting these introspection errors.

My lame fix is to rename a directory in $prefix/share.

So this is broken by default, not due to some exotic setup.  I should try installing to /usr or /usr/local, though, and see if there's any difference.
Comment 3 Mark Doffman 2009-12-17 08:21:12 UTC
I misunderstood your report.

I have moved the XML to the datarootdir so that they are not installed under a module name directory but under $(datarootdir)/at-spi2/

The commits are:

at-spi2-atk : 1f0796cafdfd6a1856ee7aeb61142e55c3f5d16f
at-spi2-core: 2061c1c44e48edd8bd9fc5f92a9328501be4be9b

d-feet is still not working.

This is because d-feet requires that there is an object at '/' that responds to the org.freedesktop.Introspectable:Introspect method.

We need to add this object and have it return a blank introspection XML.
Comment 4 Mark Doffman 2010-01-24 08:43:07 UTC
The '/' path needs to be available for introspection for D-feet to work. Need to add registration of the '/' path to D-Route.
Comment 5 Mike Gorse 2010-07-20 07:28:43 UTC
libdbus seems to automatically implement Introspect for paths that are not explicitly registered (ie, / returns a child node of "org", /org returns a child node of "a11y", etc).  /org/a11y/atspi/accessible was giving the wrong output, however, since it is registered with droute and so was not automatically handled.  I've fied this in the latest commit, so I am going to mark this fixed.  I've debated whether to add the whole cache as children of /org/a11y/accessible; so far I have not done this, but I don't think that it would be difficult to do if people think it desirable.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.