# Copyright 2023-2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 inherit cmake edo multibuild systemd verify-sig xdg DESCRIPTION="BitTorrent client in C++ and Qt" HOMEPAGE="https://www.qbittorrent.org" if [[ ${PV} == *9999 ]]; then EGIT_REPO_URI="https://github.com/qbittorrent/qBittorrent.git" inherit git-r3 else SRC_URI=" mirror://sourceforge/qbittorrent/${P}.tar.xz verify-sig? ( mirror://sourceforge/qbittorrent/${P}.tar.xz.asc ) " KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86" BDEPEND="verify-sig? ( sec-keys/openpgp-keys-qbittorrent )" VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/qBittorrent.asc fi LICENSE="GPL-2" SLOT="0" IUSE="+dbus +gui qt6 systemd test webui" RESTRICT="!test? ( test )" REQUIRED_USE="|| ( gui webui ) dbus? ( gui ) " RDEPEND=" >=dev-libs/openssl-1.1.1:= >=net-libs/libtorrent-rasterbar-1.2.19:= >=sys-libs/zlib-1.2.11 qt6? ( >=dev-qt/qtbase-6.2:6[network,ssl,sql,sqlite,xml] ) !qt6? ( dev-qt/qtcore:5 dev-qt/qtnetwork:5[ssl] dev-qt/qtsql:5[sqlite] dev-qt/qtxml:5 ) gui? ( !qt6? ( dev-qt/qtgui:5 dev-qt/qtsvg:5 dev-qt/qtwidgets:5 dbus? ( dev-qt/qtdbus:5 ) ) qt6? ( >=dev-qt/qtbase-6.2:6[dbus?,gui,widgets] >=dev-qt/qtsvg-6.2:6 ) ) webui? ( acct-group/qbittorrent acct-user/qbittorrent ) " DEPEND=" ${RDEPEND} >=dev-libs/boost-1.71 test? ( !qt6? ( dev-qt/qttest:5 ) )" BDEPEND+=" !qt6? ( dev-qt/linguist-tools:5 ) qt6? ( >=dev-qt/qttools-6.2:6[linguist] ) virtual/pkgconfig" DOCS=( AUTHORS Changelog CONTRIBUTING.md README.md ) src_prepare() { MULTIBUILD_VARIANTS=() use gui && MULTIBUILD_VARIANTS+=( gui ) use webui && MULTIBUILD_VARIANTS+=( nogui ) cmake_src_prepare } src_configure() { my_src_configure() { local mycmakeargs=( # musl lacks execinfo.h -DSTACKTRACE=$(usex !elibc_musl) # More verbose build logs are preferable for bug reports -DVERBOSE_CONFIGURE=ON -DQT6=$(usex qt6) -DWEBUI=$(usex webui) -DTESTING=$(usex test) ) if [[ ${MULTIBUILD_VARIANT} == "gui" ]]; then # We do this in multibuild, see bug #839531 for why. # Fedora has to do the same thing. mycmakeargs+=( -DGUI=ON -DDBUS=$(usex dbus) -DSYSTEMD=OFF ) else mycmakeargs+=( -DGUI=OFF -DDBUS=OFF ) use systemd && mycmakeargs+=( # The systemd service calls qbittorrent-nox, which is only # installed when GUI=OFF. -DSYSTEMD=ON -DSYSTEMD_SERVICES_INSTALL_DIR="$(systemd_get_systemunitdir)" ) fi cmake_src_configure } multibuild_foreach_variant my_src_configure } src_compile() { multibuild_foreach_variant cmake_src_compile } src_test() { my_src_test() { # cmake does not detect tests by default, if you use enable_testing # in a subdirectory instead of the root CMakeLists.txt cd "${BUILD_DIR}"/test || die edo ctest . } multibuild_foreach_variant my_src_test } src_install() { multibuild_foreach_variant cmake_src_install einstalldocs if use webui; then newconfd "${FILESDIR}/${PN}.confd" "${PN}" newinitd "${FILESDIR}/${PN}.initd" "${PN}" fi }