Patchwork [3/3] libpcap: canusb support needs pthreads

login
register
mail settings
Submitter Gustavo Zacarias
Date June 26, 2012, 2:19 p.m.
Message ID <1340720390-22117-3-git-send-email-gustavo@zacarias.com.ar>
Download mbox | patch
Permalink /patch/167408/
State Accepted
Commit c69be6d2abe8f8e265f92494867e2c7e1519dd08
Headers show

Comments

Gustavo Zacarias - June 26, 2012, 2:19 p.m.
canusb support in libpcap uses pthreads but the configure script doesn't
account for -lpthread usage so it doesn't get added into LIBS which in
turn doesn't add the appropiate entry in pcap-config, causing build
failures for programs that link to libpcap that don't use pthreads
themselves (for example tcpdump).
Also add the conditional dependency on BR2_PACKAGE_LIBUSB for canusb.

Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
---
 .../libpcap/libpcap-canusb-requires-pthread.patch  |   29 ++++++++++++++++++++
 package/libpcap/libpcap.mk                         |    3 +-
 2 files changed, 31 insertions(+), 1 deletions(-)
 create mode 100644 package/libpcap/libpcap-canusb-requires-pthread.patch
Thomas Petazzoni - June 26, 2012, 2:23 p.m.
Le Tue, 26 Jun 2012 11:19:50 -0300,
Gustavo Zacarias <gustavo@zacarias.com.ar> a écrit :

> canusb support in libpcap uses pthreads but the configure script doesn't
> account for -lpthread usage so it doesn't get added into LIBS which in
> turn doesn't add the appropiate entry in pcap-config, causing build
> failures for programs that link to libpcap that don't use pthreads
> themselves (for example tcpdump).
> Also add the conditional dependency on BR2_PACKAGE_LIBUSB for canusb.

So maybe we need an additional BR2_TOOLCHAIN_HAS_THREADS dependency
somewhere?

Thomas
Gustavo Zacarias - June 26, 2012, 2:43 p.m.
On 06/26/12 11:23, Thomas Petazzoni wrote:

> Le Tue, 26 Jun 2012 11:19:50 -0300,
> Gustavo Zacarias <gustavo@zacarias.com.ar> a écrit :
> 
>> canusb support in libpcap uses pthreads but the configure script doesn't
>> account for -lpthread usage so it doesn't get added into LIBS which in
>> turn doesn't add the appropiate entry in pcap-config, causing build
>> failures for programs that link to libpcap that don't use pthreads
>> themselves (for example tcpdump).
>> Also add the conditional dependency on BR2_PACKAGE_LIBUSB for canusb.
> 
> So maybe we need an additional BR2_TOOLCHAIN_HAS_THREADS dependency
> somewhere?
> 
> Thomas

canusb support is autodetected, which basically looks for linux and
libusb-1.
In fact there's another patch from someone else that enables (sic) the
disable option which isn't functional for the current release of
libpcap, so any tweak in the package won't work without it.
And IIRC libusb-1 needs threads, and if there's no libusb there's no
canusb which is the only bit that uses threads, so i think libusb should
probably be fixed rather than libpcap regarding that.
I'll give it a shot later to confirm or deny this and make a proper patch.
In any case it would be something else appart from what this patch fixes
(a big build failure with newish binutils).
Regards.

Patch

diff --git a/package/libpcap/libpcap-canusb-requires-pthread.patch b/package/libpcap/libpcap-canusb-requires-pthread.patch
new file mode 100644
index 0000000..ed3bc1a
--- /dev/null
+++ b/package/libpcap/libpcap-canusb-requires-pthread.patch
@@ -0,0 +1,29 @@ 
+canusb uses pthreads, but -lpthread is never added to LIBS hence missing
+from pcap-config, causing build failures. Fix this.
+
+Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
+
+diff -Nura libpcap-1.3.0.orig//configure libpcap-1.3.0/configure
+--- libpcap-1.3.0.orig//configure	2012-06-26 09:42:06.072155279 -0300
++++ libpcap-1.3.0/configure	2012-06-26 09:42:12.617196326 -0300
+@@ -7607,7 +7607,7 @@
+ $as_echo "#define PCAP_SUPPORT_CANUSB 1" >>confdefs.h
+ 
+ 		    CANUSB_SRC=pcap-canusb-linux.c
+-		    LIBS="-lusb-1.0 $LIBS"
++		    LIBS="-lusb-1.0 -lpthread $LIBS"
+ 		    { $as_echo "$as_me:${as_lineno-$LINENO}: canusb sniffing is supported" >&5
+ $as_echo "$as_me: canusb sniffing is supported" >&6;}
+ 
+diff -Nura libpcap-1.3.0.orig//configure.in libpcap-1.3.0/configure.in
+--- libpcap-1.3.0.orig//configure.in	2012-06-26 09:42:06.067155242 -0300
++++ libpcap-1.3.0/configure.in	2012-06-26 09:42:22.267256741 -0300
+@@ -1406,7 +1406,7 @@
+ 		[
+ 		    AC_DEFINE(PCAP_SUPPORT_CANUSB, 1, [target host supports canusb])
+ 		    CANUSB_SRC=pcap-canusb-linux.c
+-		    LIBS="-lusb-1.0 $LIBS"
++		    LIBS="-lusb-1.0 -lpthread $LIBS"
+ 		    AC_MSG_NOTICE(canusb sniffing is supported)
+ 		],
+ 		AC_MSG_NOTICE(canusb sniffing is not supported; install libusb1.0 lib devel to enable it)
diff --git a/package/libpcap/libpcap.mk b/package/libpcap/libpcap.mk
index 51e1106..324ec33 100644
--- a/package/libpcap/libpcap.mk
+++ b/package/libpcap/libpcap.mk
@@ -12,7 +12,8 @@  LIBPCAP_INSTALL_TARGET_OPT= DESTDIR="$(TARGET_DIR)" \
 	$(if $(BR2_PREFER_STATIC_LIB),install,install-shared)
 LIBPCAP_INSTALL_STAGING_OPT= DESTDIR="$(STAGING_DIR)" install \
 	$(if $(BR2_PREFER_STATIC_LIB),,install-shared)
-LIBPCAP_DEPENDENCIES = zlib
+LIBPCAP_DEPENDENCIES = zlib \
+	$(if $(BR2_PACKAGE_LIBUSB),libusb)
 LIBPCAP_CONF_ENV = ac_cv_linux_vers=2 \
 		ac_cv_header_linux_wireless_h=yes # configure misdetects this
 LIBPCAP_CONF_OPT = --disable-yydebug --with-pcap=linux