Patchwork [v6] wireshark: new package

login
register
mail settings
Submitter Baruch Siach
Date Feb. 18, 2013, 6:18 a.m.
Message ID <e64c965f3221d977b9bd2edf99405efd7405f848.1361167992.git.baruch@tkos.co.il>
Download mbox | patch
Permalink /patch/221146/
State Accepted
Headers show

Comments

Baruch Siach - Feb. 18, 2013, 6:18 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.

Cc: Stefan Fröberg <stefan.froberg@petroprogram.com>
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
---

Changes v5 -> v6:
	* add --with-gnutls=no to fix build when OpenSSL and GnuTLS are both
          installed (Stefan Fröberg)

Changes v4 -> v5:
	* update to version 1.8.5 as suggested by Gustavo Zacarias
	* added fixup for pcap-config (Gustavo Zacarias)

Changes v3 -> v4:
	* Update to version 1.8.4

Changes v2 -> v3:
	* Use an upstreamable patch as suggested by Thomas Petazzoni
	* Add license info

Changes v1 -> v2:
	* Patch configure.in and enable autoreconf, instead of overriding
	  $prefix
	* Remove --with-sysroot as suggested by Arnout Vandecappelle

 package/Config.in                                  |    1 +
 package/wireshark/Config.in                        |   14 +++++++
 .../wireshark/wireshark-dont-include-prefix.patch  |   41 ++++++++++++++++++++
 package/wireshark/wireshark.mk                     |   19 +++++++++
 4 files changed, 75 insertions(+)
 create mode 100644 package/wireshark/Config.in
 create mode 100644 package/wireshark/wireshark-dont-include-prefix.patch
 create mode 100644 package/wireshark/wireshark.mk
Gustavo Zacarias - Feb. 23, 2013, 12:29 a.m.
On 02/18/2013 03:18 AM, 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.
> 
> Cc: Stefan Fröberg <stefan.froberg@petroprogram.com>
> Signed-off-by: Baruch Siach <baruch@tkos.co.il>

Acked-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
Tested-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
Peter Korsgaard - Feb. 26, 2013, 8:29 p.m.
>>>>> "Baruch" == Baruch Siach <baruch@tkos.co.il> writes:

 Baruch> This is only the bare minimum needed to build the textual
 Baruch> tshark utility.  Support for more options, including the
 Baruch> wireshark GUI, can be added later.

I was going to commit this to next, but a small test build fails as it
ends up using system includes:

libtool: compile:  /home/peko/source/buildroot/outf2fs/host/usr/bin/arm-buildroot-linux-uclibcgnueabi-gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I/usr/include -DG_DISABLE_DEPRECATED -DG_DISABLE_SINGLE_INCLUDES -D_FORTIFY_SOURCE=2 "-D_U_=__attribute__((unused))" -I/home/peko/source/buildroot/outf2fs/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include -DPLUGIN_DIR=\"/usr/lib/wireshark/plugins/1.8.5\" -pipe -Os -Wall -W -Wextra -Wdeclaration-after-statement -Wendif-labels -Wpointer-arith -Wno-pointer-sign -Warray-bounds -Wcast-align -Wformat-security -Wold-style-definition -Wno-error=unused-but-set-variable -fexcess-precision=fast -pthread -I/home/peko/source/buildroot/outf2fs/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/glib-2.0 -I/home/peko/source/buildroot/outf2fs/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/glib-2.0/include -MT packet-asn1.lo -MD -MP -MF .deps/packet-asn1.Tpo -c packet-asn1.c  -fPIC -DPIC -o .libs/packet-asn1.o
In file included from /usr/include/errno.h:29:0,
                 from packet-asn1.c:66:
/usr/include/features.h:323:26: fatal error: bits/predefs.h: No such file or directory
compilation terminated.
make[5]: *** [packet-asn1.lo] Error 1

This is with a basic internal ARM toolchain:

cat defconfig
BR2_arm=y
BR2_arm926t=y
BR2_TOOLCHAIN_BUILDROOT_WCHAR=y
BR2_PACKAGE_WIRESHARK=y

Looking closer at it, I see it is caused by a bunch of Makefile.am files
having:

INCLUDES = -I$(top_srcdir) -I$(includedir)

E.G. look in srcdir + /usr/include. A quick workaround is to pass
--includedir=$(STAGING_DIR)/usr/include to configure. If wireshark
itself would install any headers, this would cause problems, but in this
case it seems ok, so I think it's the best approach.

Alternatively we could patch all the Makefile.am files to drop
-I$(includedir) and autoreconf the package.
Peter Korsgaard - Feb. 26, 2013, 9:13 p.m.
>>>>> "Baruch" == Baruch Siach <baruch@tkos.co.il> writes:

 Baruch> This is only the bare minimum needed to build the textual
 Baruch> tshark utility.  Support for more options, including the
 Baruch> wireshark GUI, can be added later.

Committed to next with the --includedir workaround.

Patch

diff --git a/package/Config.in b/package/Config.in
index faee5c3..c57c0d8 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -728,6 +728,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-dont-include-prefix.patch b/package/wireshark/wireshark-dont-include-prefix.patch
new file mode 100644
index 0000000..567af9a
--- /dev/null
+++ b/package/wireshark/wireshark-dont-include-prefix.patch
@@ -0,0 +1,41 @@ 
+configure.in: don't add the build host's /usr/include and /usr/lib to the 
+search path of include files and libraries. This is not what you want when 
+cross compiling.
+
+Sent upstream as https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7926.
+
+Signed-off-by: Baruch Siach <baruch@tkos.co.il>
+---
+diff -Nuar wireshark-1.8.3.orig/configure.in wireshark-1.8.3/configure.in
+--- wireshark-1.8.3.orig/configure.in	2012-08-15 23:33:32.000000000 +0300
++++ wireshark-1.8.3/configure.in	2012-10-28 10:07:54.864388531 +0200
+@@ -635,29 +635,6 @@
+ AC_SUBST(CORESERVICES_FRAMEWORKS)
+ AC_SUBST(LAUNCHSERVICES_FRAMEWORKS)
+ 
+-#
+-# If using $prefix we add "$prefix/include" to the include search path
+-# and "$prefix/lib" to the library search path.
+-#
+-if test "x$prefix" != "x" ; then
+-	AC_MSG_CHECKING(whether to use $prefix for headers and libraries)
+-	if test -d $prefix/include ; then
+-		AC_MSG_RESULT(yes)
+-		#
+-		# Arrange that we search for header files in "$prefix/include", as
+-		# various packages we use may have been installed under "$prefix/include".
+-		#
+-		CPPFLAGS="$CPPFLAGS -I$prefix/include"
+-
+-		#
+-		# Arrange that we search for libraries in "$prefix/lib".
+-		#
+-		AC_WIRESHARK_ADD_DASH_L(LDFLAGS, $prefix/lib)
+-	else
+-		AC_MSG_RESULT(no)
+-	fi
+-fi
+-
+ dnl Look in /usr/local for header files and libraries ?
+ dnl XXX FIXME don't include /usr/local if it is already in the system
+ dnl search path as this causes gcc 3.2 on Linux to complain about a change
diff --git a/package/wireshark/wireshark.mk b/package/wireshark/wireshark.mk
new file mode 100644
index 0000000..46e5ce3
--- /dev/null
+++ b/package/wireshark/wireshark.mk
@@ -0,0 +1,19 @@ 
+#############################################################
+#
+# wireshark
+#
+#############################################################
+
+WIRESHARK_VERSION = 1.8.5
+WIRESHARK_SOURCE = wireshark-$(WIRESHARK_VERSION).tar.bz2
+WIRESHARK_SITE = http://www.wireshark.org/download/src/all-versions
+WIRESHARK_LICENSE = wireshark license
+WIRESHARK_LICENSE_FILES = COPYING
+WIRESHARK_DEPENDENCIES = libpcap libgcrypt libglib2
+WIRESHARK_AUTORECONF = YES
+WIRESHARK_CONF_ENV = LIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config \
+			ac_cv_path_PCAP_CONFIG=$(STAGING_DIR)/usr/bin/pcap-config
+WIRESHARK_CONF_OPT = --disable-wireshark --without-krb5 --disable-usr-local \
+		     --enable-static=no --with-gnutls=no
+
+$(eval $(call autotools-package))