Patchwork wireshark: new package

login
register
mail settings
Submitter Baruch Siach
Date Oct. 22, 2012, 6:27 a.m.
Message ID <c866c7ffc05da225311abef42a80696310d22157.1350887157.git.baruch@tkos.co.il>
Download mbox | patch
Permalink /patch/193080/
State Superseded
Headers show

Comments

Baruch Siach - Oct. 22, 2012, 6:27 a.m.
This is only the bare minimum needed to build the textual tshark utility.
Support for more options, including the wireshark GUI, can be added later.
---
I override the $prefix configure variable because otherwise the host
/usr/include is added to the -I and -L paths. I'm not sure this is a good idea
though, since it clutters the tshark RPATH with directories from the local
build paths. If you have a better I'd be glad to hear.

 package/Config.in              |    1 +
 package/wireshark/Config.in    |   14 ++++++++++++++
 package/wireshark/wireshark.mk |   10 ++++++++++
 3 files changed, 25 insertions(+)
 create mode 100644 package/wireshark/Config.in
 create mode 100644 package/wireshark/wireshark.mk
Arnout Vandecappelle - Oct. 23, 2012, 5:05 p.m.
On 22/10/12 08:27, Baruch Siach wrote:
> This is only the bare minimum needed to build the textual tshark utility.
> Support for more options, including the wireshark GUI, can be added later.
> ---
> I override the $prefix configure variable because otherwise the host
> /usr/include is added to the -I and -L paths. I'm not sure this is a good idea
> though, since it clutters the tshark RPATH with directories from the local
> build paths. If you have a better I'd be glad to hear.

  That usually means there's a broken Makefile.am and we fix it with a patch.
However, does installation still work with the prefix override?

[snip]
> diff --git a/package/wireshark/wireshark.mk b/package/wireshark/wireshark.mk
> new file mode 100644
> index 0000000..c89fbf8
> --- /dev/null
> +++ b/package/wireshark/wireshark.mk
> @@ -0,0 +1,10 @@
> +WIRESHARK_VERSION = 1.8.3
> +WIRESHARK_SOURCE = wireshark-$(WIRESHARK_VERSION).tar.bz2
> +WIRESHARK_SITE = http://www.wireshark.org/download/src/all-versions
> +WIRESHARK_DEPENDENCIES = libpcap libgcrypt libglib2
> +WIRESHARK_CONF_ENV = LIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config
> +WIRESHARK_CONF_OPT = --disable-wireshark --without-krb5 --disable-usr-local \
> +		     prefix=$(STAGING_DIR)/usr --with-sysroot=$(STAGING_DIR) \

  Why is the --with-sysroot needed?

> +		     --enable-static=no

  We normally build both dynamic and static libraries, and remove the static
library in the target.  Doesn't that work in wireshark?  Can you add a comment
to explain that?


  Regards,
  Arnout
Baruch Siach - Oct. 24, 2012, 7:31 a.m.
Hi Anout,

Thanks for reviewing.

On Tue, Oct 23, 2012 at 07:05:39PM +0200, Arnout Vandecappelle wrote:
> On 22/10/12 08:27, Baruch Siach wrote:
> >This is only the bare minimum needed to build the textual tshark utility.
> >Support for more options, including the wireshark GUI, can be added later.
> >---
> >I override the $prefix configure variable because otherwise the host
> >/usr/include is added to the -I and -L paths. I'm not sure this is a good idea
> >though, since it clutters the tshark RPATH with directories from the local
> >build paths. If you have a better I'd be glad to hear.
> 
>  That usually means there's a broken Makefile.am and we fix it with a patch.
> However, does installation still work with the prefix override?

Yes. However I see $prefix added to the tshark binary RPATH, which is not 
nice. I'll try patching configure.in.

> [snip]
> >diff --git a/package/wireshark/wireshark.mk b/package/wireshark/wireshark.mk
> >new file mode 100644
> >index 0000000..c89fbf8
> >--- /dev/null
> >+++ b/package/wireshark/wireshark.mk
> >@@ -0,0 +1,10 @@
> >+WIRESHARK_VERSION = 1.8.3
> >+WIRESHARK_SOURCE = wireshark-$(WIRESHARK_VERSION).tar.bz2
> >+WIRESHARK_SITE = http://www.wireshark.org/download/src/all-versions
> >+WIRESHARK_DEPENDENCIES = libpcap libgcrypt libglib2
> >+WIRESHARK_CONF_ENV = LIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config
> >+WIRESHARK_CONF_OPT = --disable-wireshark --without-krb5 --disable-usr-local \
> >+		     prefix=$(STAGING_DIR)/usr --with-sysroot=$(STAGING_DIR) \
> 
>  Why is the --with-sysroot needed?

Removing --with-sysroot doesn't negatively affect build or run of tshark. I 
get the following line during configure, however:

checking for sysroot... no

Is it significant?

> >+		     --enable-static=no
> 
>  We normally build both dynamic and static libraries, and remove the static
> library in the target.  Doesn't that work in wireshark?  Can you add a comment
> to explain that?

Without --enable-static=no build fails with:

ld: tshark: hidden symbol `__GI_atan' isn't defined

My toolchain is external:

powerpc-linux-gnu-gcc (Sourcery G++ Lite 2011.03-38) 4.5.2

Any ideas?

baruch
Arnout Vandecappelle - Oct. 24, 2012, 7:49 a.m.
On 24/10/12 09:31, Baruch Siach wrote:
[snip]
>>> diff --git a/package/wireshark/wireshark.mk b/package/wireshark/wireshark.mk
>>> new file mode 100644
>>> index 0000000..c89fbf8
>>> --- /dev/null
>>> +++ b/package/wireshark/wireshark.mk
>>> @@ -0,0 +1,10 @@
>>> +WIRESHARK_VERSION = 1.8.3
>>> +WIRESHARK_SOURCE = wireshark-$(WIRESHARK_VERSION).tar.bz2
>>> +WIRESHARK_SITE = http://www.wireshark.org/download/src/all-versions
>>> +WIRESHARK_DEPENDENCIES = libpcap libgcrypt libglib2
>>> +WIRESHARK_CONF_ENV = LIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config
>>> +WIRESHARK_CONF_OPT = --disable-wireshark --without-krb5 --disable-usr-local \
>>> +		     prefix=$(STAGING_DIR)/usr --with-sysroot=$(STAGING_DIR) \
>>
>>   Why is the --with-sysroot needed?
>
> Removing --with-sysroot doesn't negatively affect build or run of tshark. I
> get the following line during configure, however:
>
> checking for sysroot... no
>
> Is it significant?

  You'll see that for most autoconf packages.

>>> +		     --enable-static=no
>>
>>   We normally build both dynamic and static libraries, and remove the static
>> library in the target.  Doesn't that work in wireshark?  Can you add a comment
>> to explain that?
>
> Without --enable-static=no build fails with:
>
> ld: tshark: hidden symbol `__GI_atan' isn't defined
>
> My toolchain is external:
>
> powerpc-linux-gnu-gcc (Sourcery G++ Lite 2011.03-38) 4.5.2
>
> Any ideas?

  Nothing right away, except maybe a missing -lm but then I don't see why it
doesn't fail in the non-static case.  But we probably don't want the static
build of tshark anyway, so just keep the --enable-static=no and add comment
explaining why it doesn't work without it.

  Regards,
  Arnout

Patch

diff --git a/package/Config.in b/package/Config.in
index 1650c71..cd8d9ba 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -646,6 +646,7 @@  if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
 source "package/wget/Config.in"
 endif
 source "package/wireless_tools/Config.in"
+source "package/wireshark/Config.in"
 source "package/wpa_supplicant/Config.in"
 source "package/xinetd/Config.in"
 source "package/xl2tp/Config.in"
diff --git a/package/wireshark/Config.in b/package/wireshark/Config.in
new file mode 100644
index 0000000..e6d4e72
--- /dev/null
+++ b/package/wireshark/Config.in
@@ -0,0 +1,14 @@ 
+config BR2_PACKAGE_WIRESHARK
+	bool "wireshark"
+	select BR2_PACKAGE_LIBPCAP
+	select BR2_PACKAGE_LIBGCRYPT
+	select BR2_PACKAGE_LIBGLIB2
+	depends on BR2_USE_WCHAR # glib2
+	help
+	  Network traffic sniffer and protocol decoder. Currently only tshark,
+	  the console interface, is enabled.
+
+	  http://www.wireshark.org
+
+comment "wireshark requires a toolchain with WCHAR support"
+	depends on !BR2_USE_WCHAR
diff --git a/package/wireshark/wireshark.mk b/package/wireshark/wireshark.mk
new file mode 100644
index 0000000..c89fbf8
--- /dev/null
+++ b/package/wireshark/wireshark.mk
@@ -0,0 +1,10 @@ 
+WIRESHARK_VERSION = 1.8.3
+WIRESHARK_SOURCE = wireshark-$(WIRESHARK_VERSION).tar.bz2
+WIRESHARK_SITE = http://www.wireshark.org/download/src/all-versions
+WIRESHARK_DEPENDENCIES = libpcap libgcrypt libglib2
+WIRESHARK_CONF_ENV = LIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config
+WIRESHARK_CONF_OPT = --disable-wireshark --without-krb5 --disable-usr-local \
+		     prefix=$(STAGING_DIR)/usr --with-sysroot=$(STAGING_DIR) \
+		     --enable-static=no
+
+$(eval $(call autotools-package))