summaryrefslogtreecommitdiff
blob: 81351112247f9eb6aa2ce71f6579ba6ce0d76d27 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$

EAPI="6"

# Require python-2 with sqlite USE flag
PYTHON_COMPAT=( python2_7 )
PYTHON_REQ_USE="sqlite"

inherit python-single-r1 user systemd versionator

MY_P="${P/sab/SAB}"

DESCRIPTION="Binary newsgrabber with web-interface"
HOMEPAGE="http://www.sabnzbd.org/"
SRC_URI="mirror://sourceforge/sabnzbdplus/${MY_P}-src.tar.gz"

# 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="+rar +ssl unzip +yenc"

# Sabnzbd is installed to /usr/share/ as upstream makes it clear they should not
# be in python's sitedir.  See:  http://wiki.sabnzbd.org/unix-packaging

# TODO:  still bundled but not in protage:
# kronos, rsslib, ssmtplib, listquote, json-py, msgfmt
# pynewsleecher
#
# Also note that cherrypy is still bundled.  It's near impossible to find
# out where the bundled and heavily patched version came from (pulled from
# cherrypy subversion, patched somewhere, then imported to sabnzbd and patched
# further.  Upstream is planning on making this easier with 0.8.0.
# https://github.com/sabnzbd/sabnzbd/issues/47

RDEPEND="
	${PYTHON_DEPS}
	>=app-arch/par2cmdline-0.4
	>=dev-python/cheetah-2.0.1
	dev-python/configobj
	dev-python/feedparser
	dev-python/gntp
	dev-python/pythonutils
	dev-python/rarfile
	net-misc/wget
	rar? ( || ( app-arch/unrar app-arch/rar ) )
	ssl? ( dev-python/pyopenssl )
	unzip? ( >=app-arch/unzip-5.5.2 )
	yenc? ( dev-python/yenc )
"
DEPEND="${PYTHON_DEPS}"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"

S="${WORKDIR}/${MY_P}"

pkg_setup() {
	HOMEDIR="/var/lib/${PN}"
	python-single-r1_pkg_setup

	# Create sabnzbd group
	enewgroup "${PN}"
	# Create sabnzbd user, put in sabnzbd group
	enewuser "${PN}" -1 -1 "${HOMEDIR}" "${PN}"
}

src_prepare() {
	eapply "${FILESDIR}"/patches

	# remove bundled modules
	rm -r sabnzbd/utils/{feedparser,configobj,rarfile}.py || die
	rm -r gntp || die
	rm licenses/License-{feedparser,configobj,gntp,rarfile}.txt || die

	eapply_user
}

src_install() {
	local d

	for d in cherrypy email icons interfaces locale po sabnzbd tools util; do
		insinto "/usr/share/${PN}/${d}"
		doins -r ${d}/*
	done

	insinto "/usr/share/${PN}"
	insopts -m 0755
	doins SABnzbd.py

	python_optimize "${D}usr/share/${PN}"

	newinitd "${FILESDIR}/${PN}.initd" "${PN}"
	newconfd "${FILESDIR}/${PN}.confd" "${PN}"

	diropts -o "${PN}" -g "${PN}"
	dodir "/etc/${PN}"
	dodir "/var/log/${PN}"

	insinto "/etc/${PN}"
	insopts -m 0600 -o "${PN}" -g "${PN}"
	doins "${FILESDIR}/${PN}.ini"

	dodoc {ABOUT,ISSUES,README}.txt licenses/*

	systemd_newunit "${FILESDIR}"/sabnzbd_at.service 'sabnzbd@.service'
}

pkg_postinst() {
	einfo "Default directory: ${HOMEDIR}"
	einfo ""
	einfo "Run: gpasswd -a <user> sabnzbd"
	einfo "to add a user to the sabnzbd group so it can edit sabnzbd files"
	einfo ""
	einfo "By default sabnzbd will listen on 127.0.0.1:8080"
	einfo "As growl isn't default notification system on gentoo we disable it."
	einfo "By default notifications are forwarded to the 23053 port(gntp)."

	local replacing
	for replacing in ${REPLACING_VERSIONS}; do
		if [ "$(get_major_version ${replacing})" == "0" ]; then
			echo
			ewarn "Upgrading from ${PN}-0.x.y to ${PN}-1.x.y introduces incompatible changes"
			ewarn "See http://wiki.sabnzbd.org/introducing-1-0-0."
			ewarn "In particular, you need to let your queue complete before restarting ${PN}"
			break
		fi
	done
}