summaryrefslogtreecommitdiff
path: root/net-nntp/nzbget/nzbget-24.5.ebuild
blob: 52304569d7ffee793c1a920dd3a9649756427b96 (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
130
131
132
133
134
135
136
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

# Otherwise ExternalProject_add fails, see https://github.com/nzbgetcom/nzbget/issues/460
CMAKE_MAKEFILE_GENERATOR="emake"

inherit cmake systemd

PAR2_TURBO_VER="1.1.1-nzbget-20241128"
DESCRIPTION="A command-line based binary newsgrabber supporting .nzb files"
HOMEPAGE="https://nzbget.com/"
SRC_URI="
	parcheck? (
		https://github.com/nzbgetcom/par2cmdline-turbo/archive/v${PAR2_TURBO_VER}.tar.gz
			-> nzbgetcom-par2turbo-${PAR2_TURBO_VER}.tar.gz
	)
	https://github.com/nzbgetcom/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz
"

LICENSE="GPL-2+"
SLOT="0"
KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~x86"
IUSE="gnutls ncurses +parcheck ssl test zlib"
RESTRICT="!test? ( test )"

DEPEND="
	dev-libs/boost:=
	dev-libs/libxml2:=
	ncurses? ( sys-libs/ncurses:0= )
	ssl? (
		gnutls? (
			net-libs/gnutls:=
			dev-libs/nettle:=
		)
		!gnutls? ( dev-libs/openssl:0=[-bindist(-)] )
	)
	zlib? ( sys-libs/zlib:= )"
RDEPEND="
	${DEPEND}
	acct-user/nzbget
	acct-group/nzbget
"
BDEPEND="
	test? (
		|| (
			app-arch/rar
			app-arch/unrar
		)
	)
	virtual/pkgconfig
"

DOCS=( ChangeLog.md README.md nzbget.conf )

PATCHES=(
	"${FILESDIR}/${P}-build-with-par2-turbo-offline.patch"
)

src_prepare() {
	if use parcheck; then
		mv "${WORKDIR}/par2cmdline-turbo-${PAR2_TURBO_VER}" par2-turbo || die
	else
		# See https://github.com/nzbgetcom/nzbget/issues/480
		rm tests/postprocess/ParCheckerTest.cpp \
			tests/postprocess/ParRenamerTest.cpp || die
		sed -Ei '/(ParCheckerTest|ParRenamerTest)\.cpp/d' \
			tests/postprocess/CMakeLists.txt || die
	fi
	cmake_src_prepare

	# Update the main configuration file with the correct paths
	sed -i nzbget.conf \
		-e "s:^WebDir=.*:WebDir=${EPREFIX}/usr/share/nzbget/webui:" \
		-e "s:^ConfigTemplate=.*:ConfigTemplate=${EPREFIX}/usr/share/nzbget/nzbget.conf:" \
		|| die
	# Update the daemon-specific configuration file (used by the OpenRC and
	# systemd services)
	sed nzbget.conf > nzbgetd.conf \
		-e "s:^MainDir=.*:MainDir=${EPREFIX}/var/lib/nzbget:" \
		-e "s:^LogFile=.*:LogFile=${EPREFIX}/var/log/nzbget/nzbget.log:" \
		-e 's:^DaemonUsername=.*:DaemonUsername=nzbget:' \
		|| die
}

src_configure() {
	local mycmakeargs=(
		-DDISABLE_CURSES=$(usex !ncurses)
		-DDISABLE_PARCHECK=$(usex !parcheck)
		-DDISABLE_TLS=$(usex !ssl)
		-DDISABLE_GZIP=$(usex !zlib)
		-DUSE_OPENSSL=$(usex !gnutls)
		-DUSE_GNUTLS=$(usex gnutls)
		-DENABLE_TESTS=$(usex test)
	)
	cmake_src_configure
}

src_install() {
	cmake_src_install

	insinto /etc
	doins nzbget.conf
	doins nzbgetd.conf

	# The configuration file's "ConfigTemplate" option points to this, we must
	# make sure it exists as the Web UI reads it. It is not installed by
	# default, see the "install-conf" target in cmake/install.cmake.
	insinto /usr/share/nzbget
	doins nzbget.conf

	keepdir /var/log/nzbget

	newinitd "${FILESDIR}"/nzbget.initd-r1 nzbget
	newconfd "${FILESDIR}"/nzbget.confd nzbget
	systemd_dounit "${FILESDIR}"/nzbget.service
}

pkg_preinst() {
	fowners nzbget:nzbget /var/log/nzbget
	fperms 750 /var/log/nzbget

	fowners nzbget:nzbget /etc/nzbgetd.conf
	fperms 640 /etc/nzbgetd.conf
}

pkg_postinst() {
	if [[ -z ${REPLACING_VERSIONS} ]] ; then
		elog
		elog "Please add users that you want to be able to use the system-wide"
		elog "nzbget daemon to the nzbget group. To access the daemon, run nzbget"
		elog "with the --configfile /etc/nzbgetd.conf option."
		elog
	fi
}