I'm sure that others may not agree with this approach, but...

 

Although there are no guarantees of compatibility between versions, I
have found that there are usually not problems. Using my method you
could build the core of a version of Wireshark and send it to them. They
could use the same method to compile your plugin, and then use the
plugin with their (possibly different) version of Wireshark.

 

The thing that will cause problems is using a different version of
compile tools. The ones that I use (in my scripts, below) is the version
currently used to distribute Wireshark (1.2.0pre2), and so the plugins
can be used with the "downloaded" Wireshark.

 

This would likely work if the versions were "close". I found that even
my 1.0.6 plugins ran with 1.2.0pre2, although I didn't thoroughly test
them.

 

From: wireshark-dev-boun...@wireshark.org
[mailto:wireshark-dev-boun...@wireshark.org] On Behalf Of Jonathan
Walker (c)
Sent: Friday, June 12, 2009 9:44 AM
To: Developer support list for Wireshark
Subject: Re: [Wireshark-dev] compile using libwireshark.dll

 

I know there's much more than libwireshark.lib that the compiler needs
to compile the plugins (the headers, the glib libraries, makefiles,
etc).  So, is there a way to supply all the NEEDED files for somebody
else who (may be running a different version of WS but) would like to
also compile my plug-in, without them having to download the source
also?  So, maybe I could supply all the headers and glib files etc., and
all they would have to do would be to change the libwireshark so that
the versions of the plug-in and WS match up after the user compiles the
plug-in?

 

After reading your response, I guess what I'm trying to do is not
possible yet.   I'm just re-wording to make sure that if it really is a
lost cause, at least I'm certain it isn't possible.

 

Thank you,

J. Walker

 

________________________________

From: wireshark-dev-boun...@wireshark.org
[mailto:wireshark-dev-boun...@wireshark.org] On Behalf Of Bryant Eastham
Sent: Friday, June 12, 2009 9:05 AM
To: Developer support list for Wireshark
Subject: Re: [Wireshark-dev] compile using libwireshark.dll

 

Forgive the top-post and long response.

 

Unless things have changed, Wireshark does not directly support an "SDK"
for plugins, or building them against anything but source. It is one of
my pet-peeves, since plugins are all I ever produce. Since this may be
useful for others, I can share what I do - it may highlight the
difficulties and prompt the creation of an SDK, or somebody may correct
my methods in ways that I have not seen.

 

First, I check my plugins into source control, putting them in a plugins
directory just like I would if they were part of the Wireshark
distribution. In that same directory I maintain my own Makefile.am and
Makefile.nmake by copying the standard ones and then removing the
standard plugins references and including my own. Other than those
changes, my plugin source is equivalent to what it would be if it was
included in the distribution.

 

Next, I download the Wireshark source code into a directory parallel to
my plugins directory. In partial answer to your original question, there
is much more than just a reference to the .lib file that is required to
compile a plugin. Many (I would argue too many) of the Wireshark header
files are required. Worse, there is no differentiation between "SDK"
headers and "Standard" headers, so you really have to have access to all
of them.

 

Finally, I have a set of custom support files that I have created that
will "build" Wireshark and then "build" my plugins. I put these in
another parallel directory called "build-tools", and it goes into source
control along with my plugins. I am willing to share them with whoever
wants to see them, but many of them are specific to our build process
(linux and cygwin). The main trick is to get Wireshark to build just
what is needed to get a plugin to compile.

 

On Windows, I create the following batch file (meant to execute in the
Wireshark directory):

 

call "C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat"

@echo on

set MSVC_VARIANT=MSVC2008

nmake /e /f ..\build-tools\Makefile.nmake sdk

 

The referenced Makefile.nmake file is just:

 

include Makefile.nmake

 

sdk: setup config.h image wsutil $(ADNS_DLL) tshark.exe

 

This is really just a hack to add a target to the Wireshark Makefile. On
Windows, building tshark is the best way to get things prepped to build
plugins, however, I have found the dependencies of the Wireshark
Makefile do not really support just building tshark and so the other
dependencies need to be listed. This is one area where I think Wireshark
could benefit plugin developers - by defining an SDK target in the
Makefiles that just builds what you need to get the plugins to compile.

 

On Linux, things are a little better. The following script works for me
although the path references likely make it unusable by others (meant to
execute in the Wireshark directory):

 

#!/bin/bash

 

PATH=$PATH:/usr/local/bin

source /etc/profile.d/gtk2.sh

source /etc/profile.d/python.sh

PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:/usr
/lib/pkgconfig:/usr/share/pkgconfig:/opt/kde3/lib/pkgconfig:/opt/gnome/l
ib/pkgconfig:/opt/gnome/share/pkgconfig

 

./autogen.sh

./configure --disable-wireshark

make

 

Once this process is complete, you have what I would call an "SDK" of
Wireshark. In fact, I archive the Wireshark directory at this point in
our build system, and it only rebuilds if I change versions of
Wireshark. Normally, I check out my plugins and then extract the
previously built Wireshark into the same directory.

 

To build the plugins, I delete the Wireshark plugins directory and copy
mine in its place. I then have a patchfile that I apply to configure.in,
removing the standard plugins and putting in my own.

 

Then, on Windows, I execute the following in the Wireshark directory:

 

call "C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat"

@echo on

set MSVC_VARIANT=MSVC2008

nmake /e /f ..\build-tools\Makefile.nmake plugins

if ERRORLEVEL 1 exit %ERRORLEVEL%

cd plugins

nmake /e /f Makefile.nmake install-plugins

exit %ERRORLEVEL%

 

On Linux:

 

#!/bin/bash

 

PATH=$PATH:/usr/local/bin

source /etc/profile.d/gtk2.sh

source /etc/profile.d/python.sh

PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:/usr
/lib/pkgconfig:/usr/share/pkgconfig:/opt/kde3/lib/pkgconfig:/opt/gnome/l
ib/pkgconfig:/opt/gnome/share/pkgconfig

 

cd wireshark/plugins

make

 

While a little convoluted, this process has shown to be fairly resilient
to changes in Wireshark. In particular my patching of the configure.in
file triggers an automatic reconfig of the source, but not a recompile.
This process has meant that we can use continuous integration on our
Wireshark plugins, with the compile times of just a few minutes to
rebuild all 13 of our plugins on both Windows and Linux. That compares
to almost 30 minutes to rebuild Wireshark.

 

This whole process would be much improved with just a few minor tweaks
to the Wireshare files, but I have not gotten around to submitting
anything.

 

Sorry for the long post. I know you didn't ask for most of the detail,
but based on your question I assume that you will run in to all of the
issues that I have while  trying to do what you asked about.

 

-Bryant

 

From: wireshark-dev-boun...@wireshark.org
[mailto:wireshark-dev-boun...@wireshark.org] On Behalf Of Jonathan
Walker (c)
Sent: Thursday, June 11, 2009 4:46 PM
To: wireshark-dev@wireshark.org
Subject: [Wireshark-dev] compile using libwireshark.dll

 

Hello,

    I noticed that actual release versions of wireshark that can be
downloaded online do not include a libwireshark.lib file, but they do
include a libwireshark.dll.  Does this mean that the only possible way
to compile a wireshark plugin is by compiling all of wireshark source
first?  Or, is there a way to map the Makefile.nmake as follows:

 

LINK_PLUGIN_WITH=..\..\epan\libwireshark.dll

 

so that this may also work.  I've tried this, although it does not
successfully compile my plugin.  Is there a way to do this?

 

Thank you,

J. Walker

___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <wireshark-dev@wireshark.org>
Archives:    http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-requ...@wireshark.org?subject=unsubscribe

Reply via email to