# Copyright 1999-2026 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 PYTHON_COMPAT=( python3_{11..14} ) inherit cmake python-single-r1 DESCRIPTION="The Zeek Network Security Monitor" HOMEPAGE="https://zeek.org/" if [[ ${PV} == 9999 ]]; then inherit git-r3 EGIT_REPO_URI="https://github.com/zeek/zeek" else MY_P="${PN}-${PV/_/-}" MY_PV="${PV/_/-}" SRC_URI="https://github.com/zeek/zeek/releases/download/v${MY_PV}/${MY_P}.tar.gz" KEYWORDS="~amd64 ~x86" fi LICENSE="BSD" SLOT="0" # nodejs/javascript is auto-detected upstream so defaults off here. IUSE="+btest curl debug geoip2 ipsumdump ipv6 jemalloc kerberos nodejs +python sendmail +spicy static-libs tcmalloc +tools +zeek-client +zeekctl +zkg +zeromq" RDEPEND=" debug? ( dev-debug/gdb ) dev-libs/openssl:0= net-libs/libpcap virtual/zlib:0= curl? ( net-misc/curl ) geoip2? ( dev-libs/libmaxminddb:0= ) ipsumdump? ( net-analyzer/ipsumdump[ipv6?] ) jemalloc? ( dev-libs/jemalloc:0= ) kerberos? ( virtual/krb5 ) nodejs? ( net-libs/nodejs ) python? ( ${PYTHON_DEPS} $(python_gen_cond_dep '>=dev-python/pybind11-2.6.1[${PYTHON_USEDEP}]') ) sendmail? ( virtual/mta ) tcmalloc? ( dev-util/google-perftools ) tools? ( dev-python/semantic-version dev-python/gitpython ) zeek-client? ( ${PYTHON_DEPS} $(python_gen_cond_dep ' >=dev-python/websocket-client-1.8.0[${PYTHON_USEDEP}] >=dev-python/argcomplete-3.4.0[${PYTHON_USEDEP}] ') ) zeromq? ( net-libs/zeromq )" DEPEND="${RDEPEND}" BDEPEND=">=dev-lang/swig-3.0 >=sys-devel/bison-2.5" REQUIRED_USE="zeekctl? ( python ) zeek-client? ( python ) python? ( ${PYTHON_REQUIRED_USE} )" PATCHES=( "${FILESDIR}"/${PN}-8.0.6-do-not-strip-broker-binary.patch "${FILESDIR}"/${PN}-8.0.6-do-not-remove-broker-headers-at-install-time.patch "${FILESDIR}"/${PN}-8.0.6-do-not-create-run-dirs-at-install-time.patch "${FILESDIR}"/${PN}-8.0.6-do-not-remove-stale-scripts-at-install-time.patch ) if [[ ! ${PV} == 9999 ]]; then S="${WORKDIR}/${MY_P}" fi src_prepare() { if ! use static-libs; then sed -i 's:add_library(paraglob STATIC:add_library(paraglob SHARED:' \ auxil/paraglob/src/CMakeLists.txt fi if ! use kerberos; then eapply "${FILESDIR}/${PN}-8.0.6-disable-kerberos-when-not-wanted.patch" fi if [[ ${PV} == 9999 ]]; then sed -i "s/$/_$(git rev-parse --short HEAD)-gentoo/" VERSION || die "version sed failed" fi cmake_src_prepare } src_configure() { local mycmakeargs=( -DENABLE_DEBUG=$(usex debug) -DENABLE_JEMALLOC=$(usex jemalloc) -DENABLE_PERFTOOLS=$(usex tcmalloc) -DENABLE_STATIC=$(usex static-libs) -DBUILD_STATIC_BROKER=$(usex static-libs) -DBUILD_STATIC_BINPAC=$(usex static-libs) -DINSTALL_ZEEKCTL=$(usex zeekctl) -DINSTALL_AUX_TOOLS=$(usex tools) -DINSTALL_ZKG=$(usex zkg) -DINSTALL_ZEEK_CLIENT=$(usex zeek-client) -DDISABLE_PYTHON_BINDINGS=$(usex python no yes) -DDISABLE_JAVASCRIPT=$(usex nodejs no yes) -DDISABLE_AF_PACKET=no -DDISABLE_SPICY=$(usex spicy no yes) -DENABLE_CLUSTER_BACKEND_ZEROMQ=$(usex zeromq) -DPython_EXECUTABLE="${PYTHON}" -DZEEK_ETC_INSTALL_DIR="/etc/${PN}" -DZEEK_STATE_DIR="/var/lib" -DPY_MOD_INSTALL_DIR="$(python_get_sitedir)" -DBINARY_PACKAGING_MODE=true -DBUILD_SHARED_LIBS=ON ) use debug && use tcmalloc && mycmakeargs+=( -DENABLE_PERFTOOLS_DEBUG=yes ) use zeekctl && mycmakeargs+=( -DZEEK_LOG_DIR="/var/log/${PN}" -DZEEK_SPOOL_DIR="/var/spool/${PN}" ) if ! use btest; then mycmakeargs+=( -DBROKER_DISABLE_TESTS=true -DBROKER_DISABLE_DOC_EXAMPLES=true -DINSTALL_BTEST=false -DINSTALL_BTEST_PCAPS=false -DENABLE_ZEEK_UNIT_TESTS=false ) fi cmake_src_configure } src_install() { cmake_src_install use python && python_optimize \ "${D}"/usr/"$(get_libdir)"/zeek/python/ \ "${D}"/usr/"$(get_libdir)"/zeek/python/broker \ "${D}"/usr/"$(get_libdir)"/zeek/python/zeekctl/ZeekControl \ "${D}"/usr/"$(get_libdir)"/zeek/python/zeekctl/plugins keepdir \ /var/log/"${PN}" \ /var/spool/"${PN}"/{tmp,brokerstore,extract_files} \ /var/lib/zkg # Make sure local config does not get overwritten on reinstalls mv "${ED}"/usr/share/zeek/site "${ED}"/etc/zeek/ || die # Set config paths sed -i "s:^SitePolicyScripts.*$:SitePolicyScripts = /etc/zeek/site/local.zeek:" "${ED}"/etc/zeek/zeekctl.cfg || die sed -i "s:^state_dir.*$:state_dir = /var/lib/zkg:" "${ED}"/etc/zeek/zkg/config || die }