blob: 5bfdbcf153f47c01add410cadde55202dbfa476f [file] [log] [blame]
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
PYTHON_COMPAT=( python3_{6,7,8,9} )
inherit fcaps flag-o-matic python-any-r1 qmake-utils xdg-utils cmake
DESCRIPTION="A network protocol analyzer formerly known as ethereal"
HOMEPAGE="https://www.wireshark.org/"
if [[ ${PV} == *9999* ]] ; then
EGIT_REPO_URI="https://gitlab.com/wireshark/wireshark"
inherit git-r3
else
SRC_URI="https://www.wireshark.org/download/src/all-versions/${P/_/}.tar.xz"
S="${WORKDIR}/${P/_/}"
KEYWORDS="*"
fi
LICENSE="GPL-2"
SLOT="0/${PV}"
IUSE="androiddump bcg729 brotli +capinfos +captype ciscodump +dftest doc dpauxmon"
IUSE+=" +dumpcap +editcap http2 ilbc kerberos libxml2 lto lua lz4 maxminddb"
IUSE+=" +mergecap minizip +netlink opus +plugins plugin-ifdemo +pcap qt5 +randpkt"
IUSE+=" +randpktdump +reordercap sbc selinux +sharkd smi snappy spandsp sshdump ssl"
IUSE+=" sdjournal test +text2pcap tfshark +tshark +udpdump zlib +zstd"
CDEPEND="
>=dev-libs/glib-2.32:2
>=net-dns/c-ares-1.5:=
dev-libs/libgcrypt:=
bcg729? ( media-libs/bcg729 )
brotli? ( app-arch/brotli:= )
ciscodump? ( >=net-libs/libssh-0.6 )
filecaps? ( sys-libs/libcap )
http2? ( net-libs/nghttp2:= )
ilbc? ( media-libs/libilbc )
kerberos? ( virtual/krb5 )
libxml2? ( dev-libs/libxml2 )
lz4? ( app-arch/lz4:= )
maxminddb? ( dev-libs/libmaxminddb:= )
minizip? ( sys-libs/zlib[minizip] )
netlink? ( dev-libs/libnl:3 )
opus? ( media-libs/opus )
pcap? ( net-libs/libpcap )
qt5? (
dev-qt/qtcore:5
dev-qt/qtgui:5
dev-qt/qtmultimedia:5
dev-qt/qtprintsupport:5
dev-qt/qtwidgets:5
x11-misc/xdg-utils
)
sbc? ( media-libs/sbc )
sdjournal? ( sys-apps/systemd )
smi? ( net-libs/libsmi )
snappy? ( app-arch/snappy )
spandsp? ( media-libs/spandsp )
sshdump? ( >=net-libs/libssh-0.6 )
ssl? ( net-libs/gnutls:= )
zlib? ( sys-libs/zlib )
zstd? ( app-arch/zstd:= )
"
# We need perl for `pod2html`. The rest of the perl stuff is to block older
# and broken installs. #455122
DEPEND="
${CDEPEND}
${PYTHON_DEPS}
"
BDEPEND="
dev-lang/perl
sys-devel/bison
sys-devel/flex
virtual/pkgconfig
doc? (
app-doc/doxygen
dev-ruby/asciidoctor
)
qt5? (
dev-qt/linguist-tools:5
)
test? (
dev-python/pytest
)
"
RDEPEND="
${CDEPEND}
qt5? ( virtual/freedesktop-icon-theme )
selinux? ( sec-policy/selinux-wireshark )
"
REQUIRED_USE="
plugin-ifdemo? ( plugins )
"
RESTRICT="test"
PATCHES=(
"${FILESDIR}"/${PN}-2.6.0-redhat.patch
"${FILESDIR}"/${PN}-3.4.2-cmake-lua-version.patch
"${FILESDIR}"/${PN}-3.4.7-cmake-lemon-allow-builds-to-specify-a-different-comp.patch
"${FILESDIR}"/${PN}-3.4.7-cmake-lemon-fix-path-to-internal-lemon-tool.patch
"${FILESDIR}"/${PN}-9999-ui-needs-wiretap.patch
)
pkg_setup() {
use lua && lua-single_pkg_setup
}
src_configure() {
local mycmakeargs
#printenv
#echo CFLAGS_host is : ${CFLAGS_host}
echo
for x in CATEGORY CBUILD CHOST CTARGET CFLAGS LDFLAGS ; do
einfo "$(printf '%10s' ${x}:) ${!x}"
done
echo
#exit 1
#cros_use_gcc
# Workaround bug #213705. If krb5-config --libs has -lcrypto then pass
# --with-ssl to ./configure. (Mimics code from acinclude.m4).
if use kerberos; then
case $(krb5-config --libs) in
*-lcrypto*)
ewarn "Kerberos was built with ssl support: linkage with openssl is enabled."
ewarn "Note there are annoying license incompatibilities between the OpenSSL"
ewarn "license and the GPL, so do your check before distributing such package."
mycmakeargs+=( -DENABLE_GNUTLS=$(usex ssl) )
;;
esac
fi
if use qt5; then
export QT_MIN_VERSION=5.3.0
append-cxxflags -fPIC -DPIC
fi
python_setup
mycmakeargs+=(
$(use androiddump && use pcap && echo -DEXTCAP_ANDROIDDUMP_LIBPCAP=yes)
$(usex qt5 LRELEASE=$(qt5_get_bindir)/lrelease '')
$(usex qt5 MOC=$(qt5_get_bindir)/moc '')
$(usex qt5 RCC=$(qt5_get_bindir)/rcc '')
$(usex qt5 UIC=$(qt5_get_bindir)/uic '')
-DBUILD_androiddump=$(usex androiddump)
-DBUILD_capinfos=$(usex capinfos)
-DBUILD_captype=$(usex captype)
-DBUILD_ciscodump=$(usex ciscodump)
-DBUILD_dftest=$(usex dftest)
-DBUILD_dpauxmon=$(usex dpauxmon)
-DBUILD_dumpcap=$(usex dumpcap)
-DBUILD_editcap=$(usex editcap)
-DBUILD_mergecap=$(usex mergecap)
-DBUILD_mmdbresolve=$(usex maxminddb)
-DBUILD_randpkt=$(usex randpkt)
-DBUILD_randpktdump=$(usex randpktdump)
-DBUILD_reordercap=$(usex reordercap)
-DBUILD_sdjournal=$(usex sdjournal)
-DBUILD_sharkd=$(usex sharkd)
-DBUILD_sshdump=$(usex sshdump)
-DBUILD_text2pcap=$(usex text2pcap)
-DBUILD_tfshark=$(usex tfshark)
-DBUILD_tshark=$(usex tshark)
-DBUILD_udpdump=$(usex udpdump)
-DBUILD_wireshark=$(usex qt5)
-DDISABLE_WERROR=yes
-DENABLE_BCG729=$(usex bcg729)
-DENABLE_BROTLI=$(usex brotli)
-DENABLE_CAP=$(usex filecaps caps)
-DENABLE_GNUTLS=$(usex ssl)
-DENABLE_ILBC=$(usex ilbc)
-DENABLE_KERBEROS=$(usex kerberos)
-DENABLE_LIBXML2=$(usex libxml2)
-DENABLE_LTO=$(usex lto)
-DENABLE_LUA=$(usex lua)
-DENABLE_LZ4=$(usex lz4)
-DENABLE_MINIZIP=$(usex minizip)
-DENABLE_NETLINK=$(usex netlink)
-DENABLE_NGHTTP2=$(usex http2)
-DENABLE_OPUS=$(usex opus)
-DENABLE_PCAP=$(usex pcap)
-DENABLE_PLUGINS=$(usex plugins)
-DENABLE_PLUGIN_IFDEMO=$(usex plugin-ifdemo)
-DENABLE_SBC=$(usex sbc)
-DENABLE_SMI=$(usex smi)
-DENABLE_SNAPPY=$(usex snappy)
-DENABLE_SPANDSP=$(usex spandsp)
-DENABLE_ZLIB=$(usex zlib)
-DENABLE_ZSTD=$(usex zstd)
-DLEMON_C_COMPILER="${BUILD_CC}"
)
cmake_src_configure
}
src_test() {
cmake_build test-programs
myctestargs=(
--disable-capture
--skip-missing-programs=all
--verbose
)
cmake_src_test
}
src_install() {
cmake_src_install
# FAQ is not required as is installed from help/faq.txt
dodoc AUTHORS ChangeLog NEWS README* doc/randpkt.txt doc/README*
# install headers
insinto /usr/include/wireshark
doins ws_diag_control.h ws_symbol_export.h \
"${BUILD_DIR}"/config.h "${BUILD_DIR}"/version.h
local dir dirs=(
epan
epan/crypt
epan/dfilter
epan/dissectors
epan/ftypes
epan/wmem
wiretap
wsutil
)
for dir in "${dirs[@]}" ; do
insinto /usr/include/wireshark/${dir}
doins ${dir}/*.h
done
#with the above this really shouldn't be needed, but things may be looking
# in wiretap/ instead of wireshark/wiretap/
insinto /usr/include/wiretap
doins wiretap/wtap.h
if use qt5; then
local s
for s in 16 32 48 64 128 256 512 1024; do
insinto /usr/share/icons/hicolor/${s}x${s}/apps
newins image/wsicon${s}.png wireshark.png
done
for s in 16 24 32 48 64 128 256 ; do
insinto /usr/share/icons/hicolor/${s}x${s}/mimetypes
newins image/WiresharkDoc-${s}.png application-vnd.tcpdump.pcap.png
done
fi
if [[ -d "${ED}"/usr/share/appdata ]]; then
rm -r "${ED}"/usr/share/appdata || die
fi
}
pkg_postinst() {
xdg_desktop_database_update
xdg_icon_cache_update
xdg_mimeinfo_database_update
use pcap && chmod o-x "${ED}"/usr/bin/dumpcap #357237
}
pkg_postrm() {
xdg_desktop_database_update
xdg_icon_cache_update
xdg_mimeinfo_database_update
}