GentooRepository/net-p2p/deluge/deluge-2.1.1-r4.ebuild

179 lines
5.9 KiB
Bash

# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{9..11} )
DISTUTILS_USE_PEP517=setuptools
DISTUTILS_SINGLE_IMPL=1
inherit distutils-r1 systemd xdg
DESCRIPTION="BitTorrent client with a client/server model"
HOMEPAGE="https://deluge-torrent.org/"
if [[ ${PV} == 9999 ]]; then
inherit git-r3
EGIT_REPO_URI="https://git.deluge-torrent.org/${PN}"
else
SRC_URI="http://download.deluge-torrent.org/source/$(ver_cut 1-2)/${P}.tar.xz"
KEYWORDS="amd64 ~arm ~arm64 ~ppc ~riscv x86"
fi
LICENSE="GPL-2"
SLOT="0"
IUSE="console gui libnotify sound webinterface"
REQUIRED_USE="
libnotify? ( gui )
sound? ( gui )
"
BDEPEND="
dev-util/intltool
test? (
$(python_gen_cond_dep '
>=dev-python/pytest-twisted-1.13.4-r1[${PYTHON_USEDEP}]
')
)
"
RDEPEND="
acct-group/deluge
acct-user/deluge
net-libs/libtorrent-rasterbar:=[python,${PYTHON_SINGLE_USEDEP}]
$(python_gen_cond_dep '
gui? (
sound? ( dev-python/pygame[${PYTHON_USEDEP}] )
dev-python/pygobject:3[${PYTHON_USEDEP}]
gnome-base/librsvg
libnotify? ( x11-libs/libnotify )
)
dev-python/chardet[${PYTHON_USEDEP}]
dev-python/distro[${PYTHON_USEDEP}]
dev-python/pillow[${PYTHON_USEDEP}]
dev-python/pyopenssl[${PYTHON_USEDEP}]
dev-python/pyxdg[${PYTHON_USEDEP}]
dev-python/rencode[${PYTHON_USEDEP}]
dev-python/setproctitle[${PYTHON_USEDEP}]
|| (
>=dev-python/twisted-17.1.0[ssl(-),${PYTHON_USEDEP}]
>=dev-python/twisted-17.1.0[crypt(-),${PYTHON_USEDEP}]
)
>=dev-python/zope-interface-4.4.2[${PYTHON_USEDEP}]
dev-python/mako[${PYTHON_USEDEP}]
')
"
PATCHES=(
"${FILESDIR}/${P}-twisted-22.10.patch"
# https://dev.deluge-torrent.org/ticket/3598
"${FILESDIR}/${P}-ayatana.patch"
# https://dev.deluge-torrent.org/ticket/3582
"${FILESDIR}/${P}-consoleui-deferred.patch"
)
distutils_enable_tests pytest
python_prepare_all() {
local args=(
-e 's|"new_release_check": True|"new_release_check": False|'
-e 's|"check_new_releases": True|"check_new_releases": False|'
-e 's|"show_new_releases": True|"show_new_releases": False|'
)
sed -i "${args[@]}" -- 'deluge/core/preferencesmanager.py' || die
distutils-r1_python_prepare_all
}
python_test() {
local EPYTEST_IGNORE=(
# Upstream CI/CD skips these and they seem to intentionally segfault to collect core dumps...
deluge/plugins/Stats/deluge_stats/tests/test_stats.py
# Skipped upstream
deluge/tests/test_security.py
)
local EPYTEST_DESELECT=(
# Skipped upstream
'deluge/plugins/WebUi/deluge_webui/tests/test_plugin_webui.py::TestWebUIPlugin::test_enable_webui'
'deluge/tests/test_torrent.py::TestTorrent::test_torrent_error_resume_data_unaltered'
'deluge/tests/test_tracker_icons.py::TestTrackerIcons::test_get_seo_svg_with_sni'
# never returns
'deluge/tests/test_ui_entry.py::TestConsoleScriptEntryWithDaemon'
# failing network(?)-related tests, even with sandbox disabled
'deluge/tests/test_common.py::TestCommon::test_is_interface'
# fails
'deluge/tests/test_core.py::TestCore::test_pause_torrents'
# fails because of network sandbox
'deluge/tests/test_core.py::TestCore::test_test_listen_port'
'deluge/tests/test_tracker_icons.py::TestTrackerIcons::test_get_deluge_png'
'deluge/tests/test_tracker_icons.py::TestTrackerIcons::test_get_google_ico'
'deluge/tests/test_tracker_icons.py::TestTrackerIcons::test_get_google_ico_hebrew'
'deluge/tests/test_tracker_icons.py::TestTrackerIcons::test_get_google_ico_with_redirect'
# segfaults with FEATURES="network-sandbox"
'deluge/tests/test_core.py::TestCore::test_pause_torrent'
)
# dev-python/pytest-twisted has disabled autoloading
epytest -m "not (todo or gtkui)" -p pytest_twisted -v
}
python_install_all() {
distutils-r1_python_install_all
if ! use console ; then
rm -r "${D}/$(python_get_sitedir)/deluge/ui/console/" || die
rm "${ED}/usr/bin/deluge-console" || die
rm "${ED}/usr/share/man/man1/deluge-console.1" ||die
fi
if ! use gui ; then
rm -r "${D}/$(python_get_sitedir)/deluge/ui/gtk3/" || die
rm -r "${ED}/usr/share/icons/" || die
rm "${ED}/usr/bin/deluge-gtk" || die
rm "${ED}/usr/share/man/man1/deluge-gtk.1" || die
else
mkdir -p "${ED}/usr/share/applications/" || die
cp "${WORKDIR}/${P}/deluge/ui/data/share/applications/deluge.desktop" "${ED}/usr/share/applications/" || die
mkdir -p "${ED}/usr/share/metainfo" || die
cp "${WORKDIR}/${P}/deluge/ui/data/share/appdata/deluge.appdata.xml" "${ED}/usr/share/metainfo/" || die
fi
if use webinterface; then
newinitd "${FILESDIR}/deluge-web.init-2" deluge-web
newconfd "${FILESDIR}/deluge-web.conf" deluge-web
systemd_newunit "${FILESDIR}/deluge-web.service-4" deluge-web.service
systemd_install_serviced "${FILESDIR}/deluge-web.service.conf"
else
rm -r "${D}/$(python_get_sitedir)/deluge/ui/web/" || die
rm "${ED}/usr/bin/deluge-web" || die
rm "${ED}/usr/share/man/man1/deluge-web.1" || die
fi
newinitd "${FILESDIR}"/deluged.init-2 deluged
newconfd "${FILESDIR}"/deluged.conf-2 deluged
systemd_newunit "${FILESDIR}"/deluged.service-2 deluged.service
systemd_install_serviced "${FILESDIR}"/deluged.service.conf
python_optimize
}
pkg_postinst() {
xdg_pkg_postinst
elog
elog "If, after upgrading, deluge doesn't work please back up and then"
elog "remove your '~/.config/deluge' directory and try again"
elog
elog "To start the daemon either run 'deluged' as user"
elog "or modify /etc/conf.d/deluged and run"
elog "'/etc/init.d/deluged start' as root if you use OpenRC"
elog "or"
elog "'systemctl start deluged.service' as root if you use systemd"
elog "You can still use deluge the old way"
elog
elog "Systemd unit files for deluged and deluge-web no longer source"
elog "/etc/conf.d/deluge* files. Environment variable customization now"
elog "happens in /etc/systemd/system/deluged.service.d/00gentoo.conf"
elog "and /etc/systemd/system/deluge-web.service.d/00gentoo.conf"
elog
elog "For more information see https://dev.deluge-torrent.org/wiki/Faq"
elog
}