kservice_to_json dependency troubles

Aurélien Gâteau agateau at kde.org
Thu Nov 7 09:59:33 UTC 2013


Hi,

I have been investigating some weird build failures on build.kde.org
yesterday:

http://build.kde.org/job/kde-workspace_master_qt5/1432/console (error is
at 12:04:37)

I found out this is a dependency issue: the new json system should run
commands in this order (commands are simplified):

    desktoptojson \
        plasma-containmentactions-contextmenu.desktop \
        plasma-containmentactions-contextmenu.json

    moc menu.cpp -o menu.moc

    g++ menu.cpp -o menu.o

The kservice framework provides a macro to call desktoptojson:
kservice_desktop_to_json. The problem right now is that the macro does
not define a dependency to express that the json file should be
generated before moc is run.

I put together a new test for kservice to reproduce this problem, see
attached patch. It builds successfully with `make -j1` in the test dir,
but I am able to reproduce the build failure with `make -j4`.
(Note that you must manually rm the .json file from the build dir to
reproduce it over and over: `make clean` does not remove it)

I tried to express the missing dependency using various mixes of
OBJECT_DEPENDS, but I can't find a way to say: "this target must be
built before moc". Do you have any advice?

Aurélien




More information about the Kde-frameworks-devel mailing list