From: Baruch Siach Date: Wed, 29 Oct 2014 12:20:21 +0000 (+0200) Subject: tcpdump: use libpcap shared library X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=746116d1eb2e;p=buildroot.git tcpdump: use libpcap shared library Currently the tcpdump configure script finds libpcap.a in output/build/libpcap-[version]. This check is hard coded in aclocal.m4. Add a patch to optionally ignore local libpcap so that the system shared library version is found instead. This reduces the tcpdump binary size in a few 100KB. Signed-off-by: Baruch Siach Signed-off-by: Thomas Petazzoni --- diff --git a/package/tcpdump/0001-Use-system-libpcap-when-configured-with-with-system-.patch b/package/tcpdump/0001-Use-system-libpcap-when-configured-with-with-system-.patch new file mode 100644 index 0000000000..7f8b7151c9 --- /dev/null +++ b/package/tcpdump/0001-Use-system-libpcap-when-configured-with-with-system-.patch @@ -0,0 +1,78 @@ +From 4289e62c7966e5abeb95307717cef30a51fcdccf Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Wed, 29 Oct 2014 13:21:05 +0200 +Subject: [PATCH] Use system libpcap when configured with --with-system-pcap + +Don't force the local libpcap build when the system provides one. When +--with-system-pcap is given to configure, don't try to locate a local libpcap +build. This help build systems like Buildroot that store build trees in the +same directory, but still prefer dynamically linking against system wide +libpcap.so to save space. + +Signed-off-by: Baruch Siach +--- +Status: sent upstream (https://github.com/the-tcpdump-group/tcpdump/pull/408) + + aclocal.m4 | 46 +++++++++++++++++++++++++--------------------- + 1 file changed, 25 insertions(+), 21 deletions(-) + +diff --git a/aclocal.m4 b/aclocal.m4 +index 80614cf21050..cd0a94414bbf 100644 +--- a/aclocal.m4 ++++ b/aclocal.m4 +@@ -438,27 +438,31 @@ AC_DEFUN(AC_LBL_LIBPCAP, + LIBS="$LIBS $pfopen" + fi + fi +- AC_MSG_CHECKING(for local pcap library) +- libpcap=FAIL +- lastdir=FAIL +- places=`ls $srcdir/.. | sed -e 's,/$,,' -e "s,^,$srcdir/../," | \ +- egrep '/libpcap-[[0-9]]+\.[[0-9]]+(\.[[0-9]]*)?([[ab]][[0-9]]*|-PRE-GIT)?$'` +- places2=`ls .. | sed -e 's,/$,,' -e "s,^,../," | \ +- egrep '/libpcap-[[0-9]]+\.[[0-9]]+(\.[[0-9]]*)?([[ab]][[0-9]]*|-PRE-GIT)?$'` +- for dir in $places $srcdir/../libpcap ../libpcap $srcdir/libpcap $places2 ; do +- basedir=`echo $dir | sed -e 's/[[ab]][[0-9]]*$//' | \ +- sed -e 's/-PRE-GIT$//' ` +- if test $lastdir = $basedir ; then +- dnl skip alphas when an actual release is present +- continue; +- fi +- lastdir=$dir +- if test -r $dir/libpcap.a ; then +- libpcap=$dir/libpcap.a +- d=$dir +- dnl continue and select the last one that exists +- fi +- done ++ libpcap=FAIL ++ AC_MSG_CHECKING(for local pcap library) ++ AC_ARG_WITH([system-libpcap], ++ [AS_HELP_STRING([--with-system-libpcap], [don't use local pcap library])]) ++ if test "x$with_system_libpcap" != xyes ; then ++ lastdir=FAIL ++ places=`ls $srcdir/.. | sed -e 's,/$,,' -e "s,^,$srcdir/../," | \ ++ egrep '/libpcap-[[0-9]]+\.[[0-9]]+(\.[[0-9]]*)?([[ab]][[0-9]]*|-PRE-GIT)?$'` ++ places2=`ls .. | sed -e 's,/$,,' -e "s,^,../," | \ ++ egrep '/libpcap-[[0-9]]+\.[[0-9]]+(\.[[0-9]]*)?([[ab]][[0-9]]*|-PRE-GIT)?$'` ++ for dir in $places $srcdir/../libpcap ../libpcap $srcdir/libpcap $places2 ; do ++ basedir=`echo $dir | sed -e 's/[[ab]][[0-9]]*$//' | \ ++ sed -e 's/-PRE-GIT$//' ` ++ if test $lastdir = $basedir ; then ++ dnl skip alphas when an actual release is present ++ continue; ++ fi ++ lastdir=$dir ++ if test -r $dir/libpcap.a ; then ++ libpcap=$dir/libpcap.a ++ d=$dir ++ dnl continue and select the last one that exists ++ fi ++ done ++ fi + if test $libpcap = FAIL ; then + AC_MSG_RESULT(not found) + +-- +2.1.1 + diff --git a/package/tcpdump/tcpdump.mk b/package/tcpdump/tcpdump.mk index 550400d47d..e62dfaf44a 100644 --- a/package/tcpdump/tcpdump.mk +++ b/package/tcpdump/tcpdump.mk @@ -8,10 +8,13 @@ TCPDUMP_VERSION = 4.6.2 TCPDUMP_SITE = http://www.tcpdump.org/release TCPDUMP_LICENSE = BSD-3c TCPDUMP_LICENSE_FILES = LICENSE -TCPDUMP_CONF_ENV = ac_cv_linux_vers=2 td_cv_buggygetaddrinfo=no -TCPDUMP_CONF_OPTS = --without-crypto \ +TCPDUMP_CONF_ENV = ac_cv_linux_vers=2 td_cv_buggygetaddrinfo=no \ + PCAP_CONFIG=$(STAGING_DIR)/usr/bin/pcap-config +TCPDUMP_CONF_OPTS = --without-crypto --with-system-libpcap \ $(if $(BR2_PACKAGE_TCPDUMP_SMB),--enable-smb,--disable-smb) TCPDUMP_DEPENDENCIES = zlib libpcap +# Patching aclocal.m4 +TCPDUMP_AUTORECONF = YES # make install installs an unneeded extra copy of the tcpdump binary define TCPDUMP_REMOVE_DUPLICATED_BINARY