-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Still need to sort out tests, but this should work otherwise.
- Loading branch information
1 parent
7ee8b7e
commit f44dc6f
Showing
2 changed files
with
174 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,2 @@ | ||
DIST SABnzbd-4.3.3Beta2-src.tar.gz 5108456 BLAKE2B d8d00363fca918141f94fc6cb036c06ff42eb6d0f814910c8152cd8e9cb1172998ebbda76b4b237ff57eca1df65ea6db8e843b0cec264c23a13a9d914d811459 SHA512 4bdbe28734805f7a4f8f935c49d0d060507560d4e5cb6c5a382e8b42278f68725261c1f08f552788f9892da5e158abeb8a8537e1761f8710ddfaf900359790f7 | ||
DIST SABnzbd-4.3.3RC2-src.tar.gz 5108765 BLAKE2B 09099f1c229a63f20fe735888de52234165c9ecb580690d8cef59ef75697774902a365b71a519a81022d9c52b94f5022728114a109a488a313ab9029e9c820f2 SHA512 1d728858de79b90d5a13d29a71a2a5f25c3484fc2f62a57e1c8d0cd23a3c955222da9d3ca673e405647efe5b2fe4ba41175cec0e04c23998b8ad2217111dc46e |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,173 @@ | ||
# Copyright 1999-2024 Gentoo Authors | ||
# Distributed under the terms of the GNU General Public License v2 | ||
|
||
EAPI="8" | ||
|
||
PYTHON_COMPAT=( python3_{10..12} ) | ||
PYTHON_REQ_USE="sqlite" | ||
|
||
inherit optfeature python-single-r1 systemd | ||
|
||
MY_PV="${PV/_alpha/Alpha}" | ||
MY_PV="${MY_PV/_beta/Beta}" | ||
MY_PV="${MY_PV/_rc/RC}" | ||
|
||
MY_P="SABnzbd-${MY_PV}" | ||
|
||
DESCRIPTION="Binary newsgrabber with web-interface" | ||
HOMEPAGE="https://sabnzbd.org/" | ||
SRC_URI="https://github.com/sabnzbd/sabnzbd/releases/download/${MY_PV}/${MY_P}-src.tar.gz" | ||
S="${WORKDIR}/${MY_P}" | ||
|
||
# Sabnzbd is GPL-2 but bundles software with the following licenses. | ||
LICENSE="GPL-2 BSD LGPL-2 MIT BSD-1" | ||
SLOT="0" | ||
KEYWORDS="~amd64" | ||
IUSE="test" | ||
RESTRICT="!test? ( test )" | ||
REQUIRED_USE="${PYTHON_REQUIRED_USE}" | ||
|
||
DEPEND=" | ||
acct-user/sabnzbd | ||
acct-group/sabnzbd | ||
${PYTHON_DEPS} | ||
$(python_gen_cond_dep ' | ||
>=dev-python/apprise-1.8.0[${PYTHON_USEDEP}] | ||
dev-python/chardet[${PYTHON_USEDEP}] | ||
dev-python/cheetah3[${PYTHON_USEDEP}] | ||
dev-python/cherrypy[${PYTHON_USEDEP}] | ||
dev-python/configobj[${PYTHON_USEDEP}] | ||
dev-python/cryptography[${PYTHON_USEDEP}] | ||
>=dev-python/feedparser-6.0.11[${PYTHON_USEDEP}] | ||
>=dev-python/guessit-3.8.0[${PYTHON_USEDEP}] | ||
dev-python/notify2[${PYTHON_USEDEP}] | ||
dev-python/portend[${PYTHON_USEDEP}] | ||
dev-python/puremagic[${PYTHON_USEDEP}] | ||
~dev-python/sabctools-8.2.5[${PYTHON_USEDEP}] | ||
') | ||
" | ||
RDEPEND=" | ||
${DEPEND} | ||
|| ( | ||
>=app-arch/par2cmdline-0.8 | ||
>=app-arch/par2cmdline-turbo-1.1.0 | ||
) | ||
net-misc/wget | ||
" | ||
BDEPEND=" | ||
test? ( | ||
$(python_gen_cond_dep ' | ||
dev-python/flaky[${PYTHON_USEDEP}] | ||
>=dev-python/lxml-4.5.0[${PYTHON_USEDEP}] | ||
>dev-python/pyfakefs-5.6.0[${PYTHON_USEDEP}] | ||
dev-python/pytest-asyncio[${PYTHON_USEDEP}] | ||
dev-python/pytest-httpbin[${PYTHON_USEDEP}] | ||
dev-python/pytest-httpserver[${PYTHON_USEDEP}] | ||
dev-python/pytest-mock[${PYTHON_USEDEP}] | ||
~dev-python/pytest-7.4.4[${PYTHON_USEDEP}] | ||
dev-python/requests[${PYTHON_USEDEP}] | ||
dev-python/selenium[${PYTHON_USEDEP}] | ||
dev-python/tavalidate[${PYTHON_USEDEP}] | ||
>=dev-python/tavern-2[${PYTHON_USEDEP}] | ||
dev-python/werkzeug[${PYTHON_USEDEP}] | ||
dev-python/xmltodict[${PYTHON_USEDEP}] | ||
') | ||
app-arch/p7zip | ||
app-arch/unrar | ||
app-arch/unzip | ||
www-apps/chromedriver-bin | ||
) | ||
" | ||
|
||
src_test() { | ||
local EPYTEST_IGNORE=( | ||
# network sandbox | ||
tests/test_getipaddress.py | ||
tests/test_rss.py | ||
tests/test_urlgrabber.py | ||
tests/test_utils/test_happyeyeballs.py | ||
tests/test_utils/test_internetspeed.py | ||
) | ||
local EPYTEST_DESELECT=( | ||
# network sandbox | ||
'tests/test_cfg.py::TestValidators::test_validate_host' | ||
'tests/test_consistency.py::TestWiki' | ||
'tests/test_newswrapper.py::TestNewsWrapper' | ||
'tests/test_happyeyeballs.py::TestHappyEyeballs' | ||
'tests/test_internetspeed.py::TestInternetSpeed' | ||
# Just plain fails | ||
'tests/test_newsunpack.py::TestPar2Repair::test_basic' | ||
# Chromedriver tests don't want to behave in portage | ||
'tests/test_functional_config.py::TestBasicPages::test_base_pages' | ||
'tests/test_functional_config.py::TestBasicPages::test_base_submit_pages' | ||
'tests/test_functional_config.py::TestConfigLogin::test_login' | ||
'tests/test_functional_config.py::TestConfigCategories::test_page' | ||
'tests/test_functional_config.py::TestConfigRSS::test_rss_basic_flow' | ||
'tests/test_functional_config.py::TestConfigServers::test_add_and_remove_server' | ||
'tests/test_functional_downloads.py::TestDownloadFlow::test_download_basic_rar5' | ||
'tests/test_functional_downloads.py::TestDownloadFlow::test_download_zip' | ||
'tests/test_functional_downloads.py::TestDownloadFlow::test_download_7zip' | ||
'tests/test_functional_downloads.py::TestDownloadFlow::test_download_passworded' | ||
'tests/test_functional_downloads.py::TestDownloadFlow::test_download_fully_obfuscated' | ||
'tests/test_functional_downloads.py::TestDownloadFlow::test_download_unicode_rar' | ||
'tests/test_functional_misc.py::TestShowLogging::test_showlog' | ||
'tests/test_functional_misc.py::TestQueueRepair::test_queue_repair' | ||
'tests/test_functional_misc.py::TestDaemonizing::test_daemonizing' | ||
'tests/test_functional_sorting.py::TestDownloadSorting' | ||
) | ||
|
||
# The test suite is prone to being broken by random plugins that happen | ||
# to be installed, so disable autoloading. | ||
local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 | ||
# Use PYTEST_PLUGINS instead of args to 'epytest' because the test suite | ||
# calls pytest itself and the args would get lost. To get the list of plugins, | ||
# if stuck, comment out the AUTOLOAD line above, look at the list of loaded | ||
# plugins at the top of the pytest output, then translate those into module names | ||
# by e.g. checking equery f. | ||
local -x PYTEST_PLUGINS=pytest_mock,tavern,tavern._core.pytest,pyfakefs.pytest_plugin,pytest_asyncio.plugin | ||
|
||
epytest -s | ||
} | ||
|
||
src_install() { | ||
insinto /usr/share/${PN} | ||
doins -r email icons interfaces locale po sabnzbd scripts tools | ||
|
||
exeinto /usr/share/${PN} | ||
doexe SABnzbd.py | ||
|
||
python_fix_shebang "${ED}"/usr/share/${PN} | ||
python_optimize "${ED}"/usr/share/${PN} | ||
|
||
newinitd "${FILESDIR}"/${PN}-r1.initd ${PN} | ||
newconfd "${FILESDIR}"/${PN}.confd ${PN} | ||
|
||
diropts -o ${PN} -g ${PN} | ||
dodir /etc/${PN} | ||
keepdir /var/log/${PN} | ||
|
||
insinto "/etc/${PN}" | ||
insopts -m 0600 -o "${PN}" -g "${PN}" | ||
newins "${FILESDIR}"/${PN}-r1.ini ${PN}.ini | ||
|
||
dodoc ISSUES.txt README.mkd | ||
|
||
systemd_newunit "${FILESDIR}"/sabnzbd_at.service '[email protected]' | ||
} | ||
|
||
pkg_postinst() { | ||
if [[ -z "${REPLACING_VERSIONS}" ]]; then | ||
# This is a new installation | ||
einfo "Default directory: /var/lib/${PN}" | ||
einfo | ||
einfo "To add a user to the sabnzbd group so it can edit SABnzbd+ files, run:" | ||
einfo | ||
einfo " usermod -a -G sabnzbd <user>" | ||
einfo | ||
einfo "By default, SABnzbd will listen on TCP port 8080." | ||
fi | ||
|
||
optfeature "7z archive support" app-arch/p7zip | ||
optfeature "rar archive support" app-arch/unrar app-arch/rar | ||
optfeature "zip archive support" app-arch/unzip | ||
} |