summaryrefslogtreecommitdiff
blob: 61f7d8175087a86f41aff1864bb4c8df9402f0e0 (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
197
198
199
200
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=7

inherit cmake flag-o-matic systemd readme.gentoo-r1 tmpfiles

DESCRIPTION="Mumble is an open source, low-latency, high quality voice chat software"
HOMEPAGE="https://wiki.mumble.info"
if [[ "${PV}" == 9999 ]] ; then
	inherit git-r3
	EGIT_REPO_URI="https://github.com/mumble-voip/mumble.git"
	EGIT_SUBMODULES=( '-*' )
else
	MY_PN="mumble"
	if [[ "${PV}" == *_pre* ]] ; then
		MY_P="${MY_PN}-${PV}"
		SRC_URI="https://dev.gentoo.org/~concord/distfiles/${MY_P}.tar.xz"
		S="${WORKDIR}/${MY_P}"
	else
		MY_PV="${PV/_/-}"
		MY_P="${MY_PN}-${MY_PV}"
		SRC_URI="https://github.com/mumble-voip/mumble/releases/download/v${MY_PV}/${MY_P}.tar.gz
			https://dl.mumble.info/${MY_P}.tar.gz"
		S="${WORKDIR}/${MY_P}.src"
	fi
	KEYWORDS="amd64 ~arm ~arm64 x86"
fi

SRC_URI+=" https://dev.gentoo.org/~concord/distfiles/mumble-1.4-openssl3.patch.xz"
SRC_URI+=" https://dev.gentoo.org/~concord/distfiles/mumble-1.4-crypto-threads.patch.xz"
SRC_URI+=" https://dev.gentoo.org/~concord/distfiles/mumble-1.4-odr.patch.xz"

LICENSE="BSD"
SLOT="0"
IUSE="+dbus grpc +ice test zeroconf"
RESTRICT="!test? ( test )"

RDEPEND="
	acct-group/murmur
	acct-user/murmur
	>=dev-libs/openssl-1.0.0b:0=
	>=dev-libs/protobuf-2.2.0:=
	dev-qt/qtcore:5
	dev-qt/qtnetwork:5[ssl]
	|| (
		dev-qt/qtsql:5[sqlite]
		dev-qt/qtsql:5[mysql]
	)
	dev-qt/qtxml:5
	sys-apps/lsb-release
	>=sys-libs/libcap-2.15
	dbus? ( dev-qt/qtdbus:5 )
	grpc? ( net-libs/grpc )
	ice? ( dev-libs/Ice:= )
	zeroconf? ( net-dns/avahi[mdnsresponder-compat] )
"

DEPEND="${RDEPEND}
	dev-libs/boost
	dev-qt/qttest:5
"
BDEPEND="
	acct-group/murmur
	acct-user/murmur
	virtual/pkgconfig
"

if [[ "${PV}" == *9999 ]] ; then
	# Required for the mkini.sh script which calls perl multiple times
	BDEPEND+="
		dev-lang/perl
	"
fi

DOC_CONTENTS="
	Useful scripts are located in /usr/share/doc/${PF}/scripts.
	The defualt 'SuperUser' password will be written into the log file
	when starting murmur for the first time.
	If you want to set it yourself, please execute:
	su murmur -s /bin/bash -c 'mumble-server -ini /etc/murmur/murmur.ini -supw <pw>'
	to set the build-in 'SuperUser' password before starting murmur.
	Please restart dbus before starting murmur, or else dbus
	registration will fail.
"

PATCHES=(
	"${WORKDIR}/mumble-1.4-openssl3.patch"
	"${WORKDIR}/mumble-1.4-crypto-threads.patch"
	"${WORKDIR}/mumble-1.4-odr.patch"
)

src_prepare() {
	if [[ "${PV}" == *9999 ]] ; then
		pushd scripts &>/dev/null || die
		./mkini.sh || die
		popd &>/dev/null || die
	fi

	# Change dbus user from mumble-server to murmur
	sed \
		-e 's:mumble-server:murmur:g' \
		-i "${S}"/scripts/murmur.conf || die

	# Adjust default server settings to be correct for our default setup
	sed \
		-e 's:database=:database=/var/lib/murmur/database.sqlite:' \
		-e 's:;logfile=murmur.log:logfile=/var/log/murmur/murmur.log:' \
		-e 's:;pidfile=:pidfile=/run/murmur/murmur.pid:' \
		-i "${S}"/scripts/murmur.ini || die

	# Adjust systemd service file to our config location #689208
	sed \
		-e "s@/etc/${PN}\.ini@/etc/${PN}/${PN}.ini@" \
		-e "s@murmurd@mumble-server@" \
		-i scripts/${PN}.service || die

	cmake_src_prepare
}

src_configure() {
	myuse() {
		[[ -n "${1}" ]] || die "myconf: No use flag given."
		use ${1} || echo "no-${1}"
	}
	local mycmakeargs=(
		-DBUILD_TESTING="$(usex test)"
		-Dclient="OFF"
		-Ddbus="$(usex dbus)"
		-Dg15="OFF"
		-Dgrpc="$(usex grpc)"
		-Dice="$(usex ice)"
		-Doverlay="OFF"
		-Dserver="ON"
		-Dzeroconf="$(usex zeroconf)"
	)
	if [[ "${PV}" != 9999 ]] ; then
		mycmakeargs+=( -DBUILD_NUMBER="$(ver_cut 3)" )
	fi

	# https://bugs.gentoo.org/832978
	# fix tests (and possibly runtime issues) on arches with unsigned chars
	append-cxxflags -fsigned-char

	cmake_src_configure
}

src_install() {
	cmake_src_install

	dodoc README.md CHANGES

	docinto scripts
	dodoc -r scripts/server
	docompress -x /usr/share/doc/${PF}/scripts

	local etcdir="/etc/murmur"
	insinto ${etcdir}
	doins scripts/${PN}.ini

	insinto /etc/logrotate.d/
	newins "${FILESDIR}"/murmur.logrotate murmur

	insinto /etc/dbus-1/system.d/
	doins scripts/murmur.conf

	insinto /usr/share/murmur/
	doins src/murmur/Murmur.ice

	# Copy over the initd file so we can modify it incase zeroconf support is on.
	cp "${FILESDIR}"/murmur.initd-r2 "${T}"/murmur.initd

	if use zeroconf; then
		sed -e 's:need:need avahi-daemon:' -i "${T}"/murmur.initd || die
	fi

	newinitd "${T}"/murmur.initd murmur
	newconfd "${FILESDIR}"/murmur.confd murmur

	systemd_dounit scripts/${PN}.service
	newtmpfiles "${FILESDIR}"/murmurd-dbus.tmpfiles "${PN}".conf

	keepdir /var/lib/murmur /var/log/murmur
	fowners -R murmur /var/lib/murmur /var/log/murmur
	fperms 750 /var/lib/murmur /var/log/murmur

	# Fix permissions on config file as it might contain passwords.
	# (bug #559362)
	fowners root:murmur ${etcdir}/murmur.ini
	fperms 640 ${etcdir}/murmur.ini

	doman man/mumble-server.1

	readme.gentoo_create_doc
}

pkg_postinst() {
	tmpfiles_process ${PN}.conf
	readme.gentoo_print_elog
}