CMake build does not generate dbus headers

Bug #1571165 reported by Alex Valavanis on 2016-04-16
This bug affects 2 people
Affects Status Importance Assigned to Milestone

Bug Description

The CMake build fails when the WITH_DBUS flag is set:

src/extension/dbus/dbus-init.cpp:22:37: fatal error: application-server-glue.h: No such file or directory
compilation terminated.
src/CMakeFiles/inkscape_base.dir/build.make:3688: recipe for target 'src/CMakeFiles/inkscape_base.dir/extension/dbus/dbus-init.cpp.o' failed

Apparently, the generated-headers are not being created:

* application-server-glue.h
* document-server-glue.h
* document-client-glue.h

See src/extension/dbus/Makefile_insert for the Autotools code to generate these using dbus-binding-tool

Changed in inkscape:
importance: Undecided → High
milestone: none → 0.92
Mc (mc...) wrote :

I managed to have CMake generate them (,@U ) but it's an incomplete solution (linking fails).

Also I think there are things to do when doing make dist or make install

Alex Valavanis (valavanisalex) wrote :

Marking this as a release blocker, since we can't build PPA packages until this is fixed

Changed in inkscape:
status: New → Triaged
Alex Valavanis (valavanisalex) wrote :

Actually, this appears to have been fixed in lp:inkscape r14853

Changed in inkscape:
assignee: nobody → Mc (mc...)
status: Triaged → Fix Committed
Stefan Husmann (stefan-husmann) wrote :

This seems to have reappeared in lp:inkscape, not in lp:inkscpe-0.92.x

Stefan Husmann (stefan-husmann) wrote :

Forget my last comment, it seemes to bee Arch Linux specific, and there is a solution for it.

Stefan Husmann (stefan-husmann) wrote :

Sorry again, but the dbus headers have only be created once for me, but the build is not reproducible.
[ 23%] Building CXX object src/CMakeFiles/inkscape_base.dir/extension/dbus/dbus-init.cpp.o
/home/haawda/paketierung/meine_Pakete/inkscape-bzr/src/inkscape/src/extension/dbus/dbus-init.cpp:22:37: schwerwiegender Fehler: application-server-glue.h: Datei oder Verzeichnis nicht gefunden
 #include "application-server-glue.h"
Kompilierung beendet.
make[2]: *** [src/CMakeFiles/inkscape_base.dir/build.make:1527: src/CMakeFiles/inkscape_base.dir/extension/dbus/dbus-init.cpp.o] Fehler 1
make[1]: *** [CMakeFiles/Makefile2:730: src/CMakeFiles/inkscape_base.dir/all] Fehler 2
make: *** [Makefile:128: all] Fehler 2
==> FEHLER: Ein Fehler geschah in build().
    Breche ab...

Stefan Husmann (stefan-husmann) wrote :

With the attached patch I get the header files generated, but then I get a link error.

[ 89%] Built target inkscape_base
Scanning dependencies of target inkscape_dbus
[ 89%] Generating application-server-glue.h, document-server-glue.h, document-client-glue.h
[ 89%] Built target inkscape_dbus
Scanning dependencies of target inkscape
[ 89%] Building CXX object src/CMakeFiles/inkscape.dir/main.cpp.o
[ 89%] Linking CXX executable ../bin/inkscape
CMakeFiles/inkscape.dir/main.cpp.o: In function `sp_common_main(int, char const**, _GSList**) [clone .constprop.110]':
main.cpp:(.text+0x5d8): undefined reference to `Inkscape::Extension::Dbus::dbus_set_bus_name(char*)'
../lib/ undefined reference to `Inkscape::Extension::Dbus::init()'
../lib/ undefined reference to `Inkscape::Extension::Dbus::dbus_init_desktop_interface(SPDesktop*)'
../lib/ undefined reference to `dbus_send_ping'
collect2: Fehler: ld gab 1 als Ende-Status zurück

Stefan Husmann (stefan-husmann) wrote :

This is still happening.

Mc (mc...) wrote :

Your patch seems to intentionally forget to put the dbus .cpp files in the files to be compiled (-add_inkscape_source("${dbus_SRC}"))

Also you'll have to be a bit more precise as to what you can do and cannot, because I have no problems building and rebuilding, and neither are the launchpad build bots (with no patch); so if it's a distribution-specific issue, are there any other things that have been changed ?

Bryce Harrington (bryce) on 2017-01-10
Changed in inkscape:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers