Wireshark-dev: [Wireshark-dev] RPM and inter-plugin dependencies‏

From: Austin Albright <chuckbubba777@xxxxxxxxxxx>
Date: Fri, 30 Nov 2012 09:43:15 -0500

Wireshark Gurus,

First things, first...
My development system is RHEL v5.6 and as it doesn't support a "new" enough version of GTK, my work uses the v1.6.9 SVN head.

That said, I have created my own plugin, it builds and works great on the system I've developed it on.  However, when I build the RPM, and install the RPM on another machine (identical to my development system minus all the source code) I always get a "couldn't load module" error.  The error message is quite detail and so I know it is because my plugin is using some common functions from the wimax plugin (i.e. wimax_tlv.c).

I include the wimax_tlv.h in my source as follows:
#include <plugins/wimax/wimax_tlv.h>

While grasping at straws I even tried:
#include "plugins/wimax/wimax_tlv.h"

Neither #include format made a difference.  My build of Wireshark worked regardless on my development system and gave the same exact "couldn't load module" error on the production system.

I don't get any warnings or complaints about the "#include <plugins/wimax/wimax_tlv.h>" on my development system when compiling or building the RPM, but it sure seems to have a problem with it on the production system.

One other notable thing is that on my development system when I start Wireshark and look at the plugins listing (Help->About->Plugins) my plugin is listed, but on the production system where Wireshark was installed using my RPM, it is not listed in the plugins listing.  I followed the directions for creating and including a plugin in README.plugin, but obviously I've missed something.  Also, my plugin library does get placed in /usr/lib/wireshark/plugin/<version>/ on the production system when I install my RPM.

I really don't want to have a redundant copy of the code in my custom plugin's directory so that I won't have to worry about merging corrections\updates.  I even grep'ed my entire Wireshark directory on my development system looking for another dissector or plugin that included a header from another plugin\dissector and found one (gtk/voip_calls.c) which contains a #include of a header from a dissector (gtk/voip_calls.c:60:#include <plugins/unistim/packet-unistim.h>).  So it seems like what I'm doing should work, but clearly I'm in over my head.  Any suggestions would be much appreciated.

Thanks,
Austin