blob: 6b6d33d21374dada0a67976f9d4062ad95833820 (
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
|
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{9..11} )
inherit cmake python-single-r1 readme.gentoo-r1 systemd
GTEST_VER="1.8.1"
GTEST_URL="https://github.com/google/googletest/archive/${GTEST_VER}.tar.gz -> gtest-${GTEST_VER}.tar.gz"
DESCRIPTION="An advanced IRC Bouncer"
if [[ ${PV} == *9999* ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/znc/znc.git"
else
MY_PV=${PV/_/-}
MY_P=${PN}-${MY_PV}
SRC_URI="
https://znc.in/releases/archive/${MY_P}.tar.gz
test? ( ${GTEST_URL} )
"
KEYWORDS="amd64 arm arm64 ~ppc64 ~riscv x86"
S=${WORKDIR}/${MY_P}
fi
HOMEPAGE="https://znc.in"
LICENSE="Apache-2.0"
# "If you upgrade your ZNC version, you must recompile all your modules."
# - https://wiki.znc.in/Compiling_modules
SLOT="0/${PV}"
IUSE="+icu nls perl python +ssl sasl tcl test +zlib"
RESTRICT="!test? ( test )"
REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} icu )"
# perl is a build-time dependency of modpython
BDEPEND="
virtual/pkgconfig
nls? ( sys-devel/gettext )
perl? (
>=dev-lang/swig-4.0.1
>=dev-lang/perl-5.10
)
python? (
>=dev-lang/swig-4.0.1
>=dev-lang/perl-5.10
)
test? (
${PYTHON_DEPS}
dev-qt/qtnetwork:5
)
"
DEPEND="
icu? ( dev-libs/icu:= )
nls? ( dev-libs/boost:=[nls] )
perl? ( >=dev-lang/perl-5.10:= )
python? ( ${PYTHON_DEPS} )
sasl? ( >=dev-libs/cyrus-sasl-2 )
ssl? ( dev-libs/openssl:0= )
tcl? ( dev-lang/tcl:0= )
zlib? ( sys-libs/zlib:0= )
"
RDEPEND="
${DEPEND}
acct-user/znc
acct-group/znc
"
PATCHES=(
"${FILESDIR}"/${PN}-1.7.1-inttest-dir.patch
# All these are backports
"${FILESDIR}"/${P}-fix-systemd-datadir.patch
"${FILESDIR}"/${P}-add-libera.patch
"${FILESDIR}"/${P}-fix-python-3.10.patch
"${FILESDIR}"/${P}-fix-odr-violation.patch
"${FILESDIR}"/${P}-fix-swig.patch
)
pkg_setup() {
if use python; then
python-single-r1_pkg_setup
fi
}
src_prepare() {
# Let SWIG rebuild modperl/modpython to make user patching easier.
if [[ ${PV} != *9999* ]]; then
rm modules/modperl/generated.tar.gz || die
rm modules/modpython/generated.tar.gz || die
fi
sed -i -e "s|DZNC_BIN_DIR:path=|DZNC_BIN_DIR:path=${T}/inttest|" \
test/CMakeLists.txt || die
sed -i "s|--datadir=|&${EPREFIX}|" znc.service.in || die
cmake_src_prepare
}
src_configure() {
local mycmakeargs=(
-DWANT_SYSTEMD=yes # Causes -DSYSTEMD_DIR to be used.
-DSYSTEMD_DIR="$(systemd_get_systemunitdir)"
-DWANT_ICU="$(usex icu)"
-DWANT_IPV6=yes
-DWANT_I18N="$(usex nls)"
-DWANT_PERL="$(usex perl)"
-DWANT_PYTHON="$(usex python)"
-DWANT_PYTHON_VERSION="${EPYTHON#python}"
-DWANT_CYRUS="$(usex sasl)"
-DWANT_OPENSSL="$(usex ssl)"
-DWANT_TCL="$(usex tcl)"
-DWANT_ZLIB="$(usex zlib)"
)
if [[ ${PV} != *9999* ]] && use test; then
export GTEST_ROOT="${WORKDIR}/googletest-release-${GTEST_VER}/googletest"
export GMOCK_ROOT="${WORKDIR}/googletest-release-${GTEST_VER}/googlemock"
fi
cmake_src_configure
}
src_test() {
cmake_build unittest
DESTDIR="${T}/inttest" cmake_build install
local filter='-'
if ! use perl; then
filter="${filter}:ZNCTest.Modperl*"
fi
if ! use python; then
filter="${filter}:ZNCTest.Modpython*"
fi
# CMAKE_PREFIX_PATH and CXXFLAGS are needed for znc-buildmod
# invocations from inside the test
GTEST_FILTER="${filter}" ZNC_UNUSUAL_ROOT="${T}/inttest" \
CMAKE_PREFIX_PATH="${T}/inttest/usr/share/znc/cmake" \
CXXFLAGS="${CXXFLAGS} -isystem ${T}/inttest/usr/include" \
cmake_build inttest
}
src_install() {
cmake_src_install
dodoc NOTICE
newinitd "${FILESDIR}"/znc.initd-r2 znc
newconfd "${FILESDIR}"/znc.confd-r1 znc
local DOC_CONTENTS
# "local" has its own return value which is not what we want to catch
DOC_CONTENTS=$(<"${FILESDIR}/README.gentoo-r1") || die
local DISABLE_AUTOFORMATTING=1
readme.gentoo_create_doc
}
pkg_postinst() {
if [[ -d "${EROOT}/var/lib/znc/.znc/" ]]; then
eerror "${EROOT}/var/lib/znc/.znc/ exists, please move your data to ${EROOT}/var/lib/znc/"
eerror ""
eerror "The systemd unit has changed and now expects data to be located"
eerror "at the root of ${EROOT}/var/lib/znc instead of its '.znc' subfolder."
eerror "The recommended procedure to move the data is the following:"
eerror "1. stop the service: systemctl stop znc.service"
eerror "2. move the data: cp -a '${EROOT}/var/lib/znc/.znc/.' '${EROOT}/var/lib/znc/'"
eerror "3. fix the config file: sed -i 's|${EROOT}/var/lib/znc/.znc|${EROOT}/var/lib/znc|g' '${EROOT}/var/lib/znc/configs/znc.conf'"
eerror "4. restart znc: systemctl start znc.service"
eerror "5. once everything works, remove the old data directory: rm -r '${EROOT}/var/lib/znc/.znc/'"
eerror "See https://bugs.gentoo.org/743856 for details."
fi
if [[ -z "${REPLACING_VERSIONS}" ]]; then
# This is a new installation
readme.gentoo_print_elog
fi
}
pkg_config() {
if [[ -d "${EROOT}/var/lib/znc/configs" ]]; then
ewarn "${EROOT}/var/lib/znc/configs/ already exists,"
ewarn "aborting to avoid damaging any existing configuration."
ewarn "If you are sure you want to generate a new configuration,"
ewarn "remove the folder and try again."
else
einfo "Press enter to interactively create a new configuration file for znc."
einfo "To abort, press Control-C"
read
su ${PN} -p -s /bin/sh -c 'ZNC_NO_LAUNCH_AFTER_MAKECONF=1 \
"${EROOT}"/usr/bin/znc --makeconf \
--datadir "${EROOT}/var/lib/znc"' || die "Config failed"
einfo
einfo "You can now start the znc service using the init system of your choice."
einfo "Don't forget to enable it if you want to use znc at boot."
fi
}
|