Hi
Yes I worked out that kmymoney wasn't using QT's plugin mechanism but 
instead KDE's
I was just trying to workout the desktop files and where they are kept when 
I got this email. So thanks for that.
<rant>Can I say this appears crazy. KDE appears to be trying to make itself 
as complex as windows. On this front they have over achieved this. It is my 
opinion that loading application specific plugins should be handled by the 
application itself. Obfuscating the handling of plugins like this is just 
plain madness.</rant>
Moving the desktop files into the build folder didn't work! (I was hopeful)

Search paths for libs on windows are as sane as every other environment. FIRST you look in the application folder THEN you look into the various search paths. That's the correct way to do it and what one would expect for plugins. Unfortunately plugins are treated more like "assemblies" are treated in windows which is to say they need to be installed before they can be used. I have never debugged assemblies but I am sure there is a mechanism for doing so.
It would appear in KDE you need to pollute your application name space to 
debug a plugin which means you cannot simultaneously have a devel version 
and a release version running at the same time.
Ever thought of breaking KMymoney out of the dependency on KDE? It would 
have much wider appeal.
Chris


On 29/03/2014 8:41 PM, Thomas Baumgart wrote:
Hi Chris,

@Cristian: please read very last sentence of this mail. TIA.


On Saturday 29 March 2014 11:51:31 Chris wrote:

Hi Guys

I am trying to debug the csv import plugin layout problem. It appears the
default font may be a large part of the problem but not all of it.

What I can't work out is to how to actually debug the plugin inside of
msvc2010. KMyMoney does not load the plugin at all when run from the build
directory and when installed it loads the plugin from the libs directory but
because there is no symbol file msvc cant step into it.

It seems mildly insane to have to install and copy the symbols into the libs
folder everytime I make a code change!!!

I have tried telling QT to use the build folder but it seems to ignore it
I am not sure about the MS world and the KDE prerequisites in it, but on *NIX
systems there is a KDE configuration settings that tells KDE where to search
certain pieces of information. To see where KDE searches for libs, I run

thb@thb-nb:~$ kde4-config --path lib
/home/thb/.kde4/lib64/:/usr/lib64/

and see the directories where libraries are searched. For plugins, you need
some more I believe and it is called servicetypes, services and modules.
Here's the corresponding output on my system:

thb@thb-nb:~$ kde4-config --path servicetypes
/home/thb/.kde4/share/kde4/servicetypes/:/usr/share/kde4/servicetypes/
thb@thb-nb:~$ kde4-config --path services
/home/thb/.kde4/share/kde4/services/:/usr/share/kde4/services/
thb@thb-nb:~$ kde4-config --path module
/home/thb/.kde4/lib64/kde4/:/usr/lib64/kde4/

Looking into the system folders listed, I find the following files (after
installation that is):

thb@thb-nb:~$ ls /usr/lib64/libkmm*
/usr/lib64/libkmm_kdchart.so         /usr/lib64/libkmm_plugin.so
/usr/lib64/libkmm_kdchart.so.4       /usr/lib64/libkmm_plugin.so.4
/usr/lib64/libkmm_kdchart.so.4.11.5  /usr/lib64/libkmm_plugin.so.4.11.5
/usr/lib64/libkmm_mymoney.so         /usr/lib64/libkmm_widgets.so
/usr/lib64/libkmm_mymoney.so.4       /usr/lib64/libkmm_widgets.so.4
/usr/lib64/libkmm_mymoney.so.4.11.5  /usr/lib64/libkmm_widgets.so.4.11.5

thb@thb-nb:~$ ls /usr/share/kde4/servicetypes/kmymoney*
/usr/share/kde4/servicetypes/kmymoneyimporterplugin.desktop
/usr/share/kde4/servicetypes/kmymoneyplugin.desktop


thb@thb-nb:~$ ls /usr/share/kde4/services/kmm*
/usr/share/kde4/services/kmm_csvexport.desktop
/usr/share/kde4/services/kmm_csvimport.desktop
/usr/share/kde4/services/kmm_icalendarexport.desktop
/usr/share/kde4/services/kmm_kbanking.desktop
/usr/share/kde4/services/kmm_ofximport.desktop
/usr/share/kde4/services/kmm_printcheck.desktop
/usr/share/kde4/services/kmm_reconciliationreport.desktop

and finally the plugin code contained in

thb@thb-nb:~$ ls /usr/lib64/kde4/kmm*
/usr/lib64/kde4/kmm_csvexport.so
/usr/lib64/kde4/kmm_csvimport.so
/usr/lib64/kde4/kmm_icalendarexport.so
/usr/lib64/kde4/kmm_kbanking.so
/usr/lib64/kde4/kmm_ofximport.so
/usr/lib64/kde4/kmm_printcheck.so
/usr/lib64/kde4/kmm_reconciliationreport.so

Starting KMyMoney shows the following:

thb@thb-nb:~$ kmymoney
7:2014/03/29 10-56-17:aqbanking(2794):started
KMyMoney kbanking plugin loaded
KMyMoney reconciliation report plugin loaded
KMyMoney csvimport plugin loaded
KMyMoney printcheck plugin loaded
QFSFileEngine::open: No file name specified
KMyMoney ofximport plugin loaded
KMyMoney csvexport plugin loaded
KMyMoney iCalendar plugin loaded

Now I moved the 'installed' plugin library to the local path shown in '--path
module' above:

thb-nb:/home/thb # mv /usr/lib64/kde4/kmm_kbanking.so
/home/thb/.kde4/lib64/kde4/

and start KMyMoney again:

thb@thb-nb:~$ kmymoney
7:2014/03/29 10-58-11:aqbanking(3593):started
KMyMoney kbanking plugin loaded
KMyMoney reconciliation report plugin loaded
KMyMoney csvimport plugin loaded
KMyMoney printcheck plugin loaded
QFSFileEngine::open: No file name specified
KMyMoney ofximport plugin loaded
KMyMoney csvexport plugin loaded
KMyMoney iCalendar plugin loaded


Voilà: plugin picked up and loaded from local location.

I have added the path to the bin folder to QT_PLUGIN_PATH I have also tried
adding the application path by calling
QCoreApplication::addLibraryPath(QCoreApplication::applicationDirPath());
inside the KApplication Constructor

Both methods succesfully prepend the build folder to the plugin path but it
makes no difference. The plugins (none of them) are loaded.
Yes, because KDE does not take QT_PLUGIN_PATH into account.

All the plugins are in the same folder as the application. The app runs, it
just has no loaded plugins.

I also added the application path to the PATH env. No luck whatsoever.

Without copying the plugins to the lib folder each time how can I debug it?
I have no idea, if you can do the same thing on a Windows system, but I am
sure, Crisitan can help you out.

_______________________________________________
KMyMoney-devel mailing list
KMyMoney-devel@kde.org
https://mail.kde.org/mailman/listinfo/kmymoney-devel

Reply via email to