net-libs/libpcap: Sync with Gentoo

It's from Gentoo commit 02b17c9bb64e147affc4acecaa0ff4151b2329bf.
This commit is contained in:
Krzesimir Nowak 2022-12-06 13:40:18 +01:00
parent dd8444f6b6
commit 56977d879b
5 changed files with 133 additions and 32 deletions

View File

@ -0,0 +1,100 @@
https://github.com/the-tcpdump-group/libpcap/commit/84cb8cfdbf99a5fbc8127e3f092dc4d36ab513e9
From 84cb8cfdbf99a5fbc8127e3f092dc4d36ab513e9 Mon Sep 17 00:00:00 2001
From: Guy Harris <gharris@sonic.net>
Date: Mon, 2 Aug 2021 01:04:53 -0700
Subject: [PATCH] pcap-config: don't provide -L/usr/lib for pkg-config --libs.
It shouldn't be necessary, as C compilers generally look there by
default and...
...it can cause problems if the libpcap you want *isn't* in /usr/lib.
For example, on some systems that support both 32-bit and 64-bit
executables, this might cause the 32-bit library to be found, even on
64-bit platforms, with hilarity ensuing afterwards.
In particular, on Solaris 11, where /usr/lib has the 32-bit libraries
and /usr/lib/{something} has the 64-bit libraries ({something} depends
on whether it's SPARC or x86), that's what happens if you try to do a
CMake build of tcpdump against the system libpcap:
The CMake file for finding pcap converts the -lpcap provided by
pcap-config into the absolute path of libpcap, and that's the path of
the 32-bit library, as it looks in /usr/lib. (CMake really wants "find
library" scripts to supply a list of libraries giving their absolute
paths.)
Thus, if you're using GCC, the tests done to find out what pcap APIs are
available will fail, as the test programs get build 64-bit but are
linked with the 32-bit libpcap; the link fails as you're mixing 32-bit
and 64-bit code, and the CMake script treats that as meaning "the
function isn't available".
(Sun C apparently somehow manages either to build 32-bit code by
default, so that linking with /usr/lib/libpcap.so succeeds, or realizes
that linking 64-bit code with /usr/lib/{library}.so is bogus and links
with /usr/lib/{something}/libpcap.so instead.)
Debian removed the -L in pcap-config for similar reasons; to quote the
comment at the beginning of the patch file:
Remove -L<libdir> from default pcap-config --libs output, as
libdir is already in the default toolchain search path on
Debian, and we want the generated script to be arch-independent.
(We don't remove it from the .pc file; we assume that 1) pkg-config and
2) the packager of libpcap does what is necessary to make this work.)
--- a/pcap-config.in
+++ b/pcap-config.in
@@ -41,6 +41,13 @@ do
esac
shift
done
+#
+# If libdir isn't /usr/lib, add it to the link-time linker path.
+#
+if [ "$libdir" != "/usr/lib" ]
+then
+ LPATH=-L$libdir
+fi
if [ "$V_RPATH_OPT" != "" ]
then
#
@@ -59,16 +66,16 @@ then
#
if [ "$show_cflags" = 1 -a "$show_libs" = 1 ]
then
- echo "-I$includedir -L$libdir -lpcap $LIBS"
+ echo "-I$includedir $LPATH -lpcap $LIBS"
elif [ "$show_cflags" = 1 -a "$show_additional_libs" = 1 ]
then
- echo "-I$includedir -L$libdir $LIBS"
+ echo "-I$includedir $LPATH $LIBS"
elif [ "$show_cflags" = 1 ]
then
echo "-I$includedir"
elif [ "$show_libs" = 1 ]
then
- echo "-L$libdir -lpcap $LIBS"
+ echo "$LPATH -lpcap $LIBS"
elif [ "$show_additional_libs" = 1 ]
then
echo "$LIBS"
@@ -80,7 +87,7 @@ else
#
if [ "$show_cflags" = 1 -a "$show_libs" = 1 ]
then
- echo "-I$includedir -L$libdir $RPATH -l$PACKAGE_NAME"
+ echo "-I$includedir $LPATH $RPATH -l$PACKAGE_NAME"
elif [ "$show_cflags" = 1 -a "$show_additional_libs" = 1 ]
then
echo "-I$includedir"
@@ -89,6 +96,6 @@ else
echo "-I$includedir"
elif [ "$show_libs" = 1 ]
then
- echo "-L$libdir $RPATH -l$PACKAGE_NAME"
+ echo "$LPATH $RPATH -l$PACKAGE_NAME"
fi
fi

View File

@ -1,14 +1,14 @@
--- a/pcap-config.in --- a/pcap-config.in
+++ b/pcap-config.in +++ b/pcap-config.in
@@ -59,16 +59,16 @@ @@ -66,16 +66,16 @@ then
# #
if [ "$show_cflags" = 1 -a "$show_libs" = 1 ] if [ "$show_cflags" = 1 -a "$show_libs" = 1 ]
then then
- echo "-I$includedir -L$libdir -lpcap $LIBS" - echo "-I$includedir $LPATH -lpcap $LIBS"
+ echo "-lpcap $LIBS" + echo "-lpcap $LIBS"
elif [ "$show_cflags" = 1 -a "$show_additional_libs" = 1 ] elif [ "$show_cflags" = 1 -a "$show_additional_libs" = 1 ]
then then
- echo "-I$includedir -L$libdir $LIBS" - echo "-I$includedir $LPATH $LIBS"
+ echo "$LIBS" + echo "$LIBS"
elif [ "$show_cflags" = 1 ] elif [ "$show_cflags" = 1 ]
then then
@ -16,16 +16,16 @@
+ echo "" + echo ""
elif [ "$show_libs" = 1 ] elif [ "$show_libs" = 1 ]
then then
- echo "-L$libdir -lpcap $LIBS" - echo "$LPATH -lpcap $LIBS"
+ echo "-lpcap $LIBS" + echo "-lpcap $LIBS"
elif [ "$show_additional_libs" = 1 ] elif [ "$show_additional_libs" = 1 ]
then then
echo "$LIBS" echo "$LIBS"
@@ -80,15 +80,15 @@ @@ -87,15 +87,15 @@ else
# #
if [ "$show_cflags" = 1 -a "$show_libs" = 1 ] if [ "$show_cflags" = 1 -a "$show_libs" = 1 ]
then then
- echo "-I$includedir -L$libdir $RPATH -l$PACKAGE_NAME" - echo "-I$includedir $LPATH $RPATH -l$PACKAGE_NAME"
+ echo " $RPATH -l$PACKAGE_NAME" + echo " $RPATH -l$PACKAGE_NAME"
elif [ "$show_cflags" = 1 -a "$show_additional_libs" = 1 ] elif [ "$show_cflags" = 1 -a "$show_additional_libs" = 1 ]
then then
@ -37,7 +37,7 @@
+ echo "" + echo ""
elif [ "$show_libs" = 1 ] elif [ "$show_libs" = 1 ]
then then
- echo "-L$libdir $RPATH -l$PACKAGE_NAME" - echo "$LPATH $RPATH -l$PACKAGE_NAME"
+ echo "$RPATH -l$PACKAGE_NAME" + echo "$RPATH -l$PACKAGE_NAME"
fi fi
fi fi

View File

@ -1,13 +0,0 @@
Prefix' Darwin systems are single arch, hijack Darwin7 case which assumes this setup
--- a/configure.ac
+++ b/configure.ac
@@ -1860,7 +1860,7 @@
if test "$enable_universal" != "no"; then
case "$host_os" in
- darwin[[0-7]].*)
+ darwin**)
#
# Pre-Tiger. Build only for 32-bit PowerPC; no
# need for any special compiler or linker flags.

View File

@ -1,4 +1,4 @@
# Copyright 1999-2021 Gentoo Authors # Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
EAPI=7 EAPI=7
@ -20,12 +20,13 @@ else
SRC_URI="https://www.tcpdump.org/release/${P}.tar.gz -> ${P}-upstream.tar.gz" SRC_URI="https://www.tcpdump.org/release/${P}.tar.gz -> ${P}-upstream.tar.gz"
SRC_URI+=" verify-sig? ( https://www.tcpdump.org/release/${P}.tar.gz.sig -> ${P}-upstream.tar.gz.sig )" SRC_URI+=" verify-sig? ( https://www.tcpdump.org/release/${P}.tar.gz.sig -> ${P}-upstream.tar.gz.sig )"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~x86-solaris" KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~x86-solaris"
fi fi
LICENSE="BSD" LICENSE="BSD"
SLOT="0" SLOT="0"
IUSE="bluetooth dbus netlink rdma remote static-libs usb yydebug" IUSE="bluetooth dbus netlink rdma remote static-libs test usb yydebug"
RESTRICT="!test? ( test )"
RDEPEND=" RDEPEND="
bluetooth? ( net-wireless/bluez:=[${MULTILIB_USEDEP}] ) bluetooth? ( net-wireless/bluez:=[${MULTILIB_USEDEP}] )
@ -38,7 +39,7 @@ RDEPEND="
DEPEND="${RDEPEND}" DEPEND="${RDEPEND}"
BDEPEND=" BDEPEND="
sys-devel/flex sys-devel/flex
virtual/yacc app-alternatives/yacc
dbus? ( virtual/pkgconfig ) dbus? ( virtual/pkgconfig )
" "
@ -47,8 +48,15 @@ if [[ ${PV} != *9999* ]] ; then
fi fi
PATCHES=( PATCHES=(
"${FILESDIR}"/${PN}-1.9.1-pcap-config.patch
"${FILESDIR}"/${PN}-1.10.0-usbmon.patch "${FILESDIR}"/${PN}-1.10.0-usbmon.patch
# Drop ${P}-pcap-config-no-hardcoded-lib.patch on next release
"${FILESDIR}"/${P}-pcap-config-no-hardcoded-lib.patch
# We need to keep this, it's just rebased on top of the above
# ${P}-pcap-config-no-hardcoded-lib.patch. Drop this comment then too,
# but keep this patch.
"${FILESDIR}"/${PN}-1.10.1-pcap-config.patch
) )
src_prepare() { src_prepare() {
@ -76,6 +84,11 @@ multilib_src_configure() {
multilib_src_compile() { multilib_src_compile() {
emake all shared emake all shared
use test && emake testprogs
}
multilib_src_test() {
testprogs/findalldevstest || die
} }
multilib_src_install_all() { multilib_src_install_all() {

View File

@ -1,4 +1,4 @@
# Copyright 1999-2021 Gentoo Authors # Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
EAPI=7 EAPI=7
@ -15,10 +15,12 @@ else
VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/tcpdump.asc VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/tcpdump.asc
inherit verify-sig inherit verify-sig
SRC_URI="https://www.tcpdump.org/release/${P}.tar.gz" # Note: drop -upstream on bump, this is just because we switched to the official
SRC_URI+=" verify-sig? ( https://www.tcpdump.org/release/${P}.tar.gz.sig )" # distfiles for verify-sig
SRC_URI="https://www.tcpdump.org/release/${P}.tar.gz -> ${P}-upstream.tar.gz"
SRC_URI+=" verify-sig? ( https://www.tcpdump.org/release/${P}.tar.gz.sig -> ${P}-upstream.tar.gz.sig )"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~x86-solaris" KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~x86-solaris"
fi fi
LICENSE="BSD" LICENSE="BSD"
@ -36,7 +38,7 @@ RDEPEND="
DEPEND="${RDEPEND}" DEPEND="${RDEPEND}"
BDEPEND=" BDEPEND="
sys-devel/flex sys-devel/flex
virtual/yacc app-alternatives/yacc
dbus? ( virtual/pkgconfig ) dbus? ( virtual/pkgconfig )
" "
@ -45,9 +47,8 @@ if [[ ${PV} != *9999* ]] ; then
fi fi
PATCHES=( PATCHES=(
"${FILESDIR}"/${PN}-1.9.1-pcap-config.patch
"${FILESDIR}"/${PN}-1.10.0-usbmon.patch "${FILESDIR}"/${PN}-1.10.0-usbmon.patch
"${FILESDIR}"/${PN}-9999-prefix-darwin.patch "${FILESDIR}"/${PN}-1.10.1-pcap-config.patch
) )
src_prepare() { src_prepare() {