| # 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 dumpcap && use pcap && chmod o-x "${ED}"/usr/bin/dumpcap #357237 |
| } |
| |
| pkg_postrm() { |
| xdg_desktop_database_update |
| xdg_icon_cache_update |
| xdg_mimeinfo_database_update |
| } |