127 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			127 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
# Copyright 2023-2025 Gentoo Authors
 | 
						|
# Distributed under the terms of the GNU General Public License v2
 | 
						|
 | 
						|
EAPI=8
 | 
						|
 | 
						|
inherit cmake edo multibuild optfeature 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="
 | 
						|
		https://downloads.sourceforge.net/qbittorrent/${P}.tar.xz
 | 
						|
		verify-sig? ( https://downloads.sourceforge.net/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+-with-openssl-exception GPL-3+-with-openssl-exception"
 | 
						|
SLOT="0"
 | 
						|
IUSE="+dbus +gui test webui"
 | 
						|
RESTRICT="!test? ( test )"
 | 
						|
REQUIRED_USE="
 | 
						|
	|| ( gui webui )
 | 
						|
	dbus? ( gui )
 | 
						|
"
 | 
						|
 | 
						|
RDEPEND="
 | 
						|
	>=dev-libs/openssl-3.0.2:=
 | 
						|
	>=dev-qt/qtbase-6.5:6[network,ssl,sql,sqlite,xml]
 | 
						|
	>=net-libs/libtorrent-rasterbar-2.0.10:=
 | 
						|
	>=sys-libs/zlib-1.2.11
 | 
						|
	gui? (
 | 
						|
		>=dev-qt/qtbase-6.5:6[dbus?,gui,widgets]
 | 
						|
		>=dev-qt/qtsvg-6.5:6
 | 
						|
	)
 | 
						|
	webui? (
 | 
						|
		acct-group/qbittorrent
 | 
						|
		acct-user/qbittorrent
 | 
						|
	)
 | 
						|
"
 | 
						|
DEPEND="
 | 
						|
	${RDEPEND}
 | 
						|
	>=dev-libs/boost-1.76
 | 
						|
"
 | 
						|
BDEPEND+="
 | 
						|
	>=dev-qt/qttools-6.5:6[linguist]
 | 
						|
	virtual/pkgconfig
 | 
						|
"
 | 
						|
 | 
						|
DOCS=( AUTHORS Changelog {CONTRIBUTING,README}.md )
 | 
						|
 | 
						|
src_configure() {
 | 
						|
	MULTIBUILD_VARIANTS=(
 | 
						|
		$(usev gui)
 | 
						|
		$(usev webui nogui)
 | 
						|
	)
 | 
						|
 | 
						|
	my_src_configure() {
 | 
						|
		local mycmakeargs=(
 | 
						|
			-DVERBOSE_CONFIGURE=ON # for bug reports
 | 
						|
			-DSTACKTRACE=$(usex !elibc_musl) # musl lacks execinfo.h
 | 
						|
			-DTESTING=$(usex test)
 | 
						|
			-DWEBUI=$(usex webui)
 | 
						|
		)
 | 
						|
 | 
						|
		# upstream supports building just gui or nogui
 | 
						|
		# so we build the project twice (see #839531 for details)
 | 
						|
		# Fedora does the same: https://src.fedoraproject.org/rpms/qbittorrent
 | 
						|
		if [[ ${MULTIBUILD_VARIANT} == "gui" ]]; then
 | 
						|
			mycmakeargs+=(
 | 
						|
				-DGUI=ON
 | 
						|
				-DDBUS=$(usex dbus)
 | 
						|
				-DSYSTEMD=OFF
 | 
						|
			)
 | 
						|
		else
 | 
						|
			mycmakeargs+=(
 | 
						|
				-DGUI=OFF
 | 
						|
				-DDBUS=OFF
 | 
						|
				# The systemd service calls qbittorrent-nox, built only 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
 | 
						|
 | 
						|
	if use webui; then
 | 
						|
		newconfd "${FILESDIR}/${PN}.confd" "${PN}"
 | 
						|
		newinitd "${FILESDIR}/${PN}.initd" "${PN}"
 | 
						|
	fi
 | 
						|
}
 | 
						|
 | 
						|
pkg_postinst() {
 | 
						|
	xdg_pkg_postinst
 | 
						|
 | 
						|
	optfeature "I2P anonymyzing network support" net-vpn/i2pd net-vpn/i2p
 | 
						|
}
 |