summaryrefslogtreecommitdiff
path: root/net-voip/mumble
diff options
context:
space:
mode:
Diffstat (limited to 'net-voip/mumble')
-rw-r--r--net-voip/mumble/Manifest10
-rw-r--r--net-voip/mumble/files/mumble-1.4-crypto-threads.patch131
-rw-r--r--net-voip/mumble/files/mumble-1.4.230-gcc12-include-memory.patch28
-rw-r--r--net-voip/mumble/files/mumble-1.4.230-poco-link-cmake.patch24
-rw-r--r--net-voip/mumble/metadata.xml17
-rw-r--r--net-voip/mumble/mumble-1.3.4-r1.ebuild169
-rw-r--r--net-voip/mumble/mumble-1.4.230-r3.ebuild149
-rw-r--r--net-voip/mumble/mumble-9999.ebuild145
8 files changed, 673 insertions, 0 deletions
diff --git a/net-voip/mumble/Manifest b/net-voip/mumble/Manifest
new file mode 100644
index 000000000000..4a50ad57eeab
--- /dev/null
+++ b/net-voip/mumble/Manifest
@@ -0,0 +1,10 @@
+AUX mumble-1.4-crypto-threads.patch 6518 BLAKE2B 87d9ca8879cd09b8f29d0942ae84dfe4de7ab0216f50f2ff7f8b2802017802083b38793f9703de3bc4de1a083fc17a353f5527405740c68d826e8e82092455cf SHA512 2d0fcb11005f52b58d5dc43ac421fcccd9204a3ead36e0d4b4e1893818bcb9bf509d1459c358c0a8d02b0ff749738a262b9fe321e049bd65d8b2a2b441603d99
+AUX mumble-1.4.230-gcc12-include-memory.patch 934 BLAKE2B 2cbcb1983687effdcb183f034f76f05106bb2757b278a001da64a6c6c37c593776f391a23d23023d8c8c28ff5a53b1df0e4f2fb597904dee450b36a88abb8cd2 SHA512 8d00e760e5b49acba50cd6637de990d3b16f493327110cf768aef9d11aa309372996bf8c5a8a49fa3e4364dfec5f1611f855efe05284d9b388d3184e012278d5
+AUX mumble-1.4.230-poco-link-cmake.patch 476 BLAKE2B 91268125286d07820c98e941e443655b7edfb4f6c13815f988de8ed4ad50aa37fca557a88cee399418853cdd2e577f67acad7f8e3c2b7e1eefe8a64d4a26358c SHA512 9bab7ca52fd27f600215ceebac690ddae2702547a8519bdbb24be0df411a2ddd89750cfeeca77bcc47fec32b27526971a180519431b8e1637a224d902ec8de88
+DIST mumble-1.3.4.tar.gz 8592741 BLAKE2B bcde3fd859ec4faea06f996cd4c583af7c0b8409cca79cb05ef8ba7fcdeac9e49ed1d07a4131225dd582da7610190d4006abc731fd4276b2288e02e8c18effb6 SHA512 e2dde5aad30d1a931e7acd8d7db0b8c785d3a268d0b8cf5626fa03953a51bcadb719c6682c440d02524e83beee13d73d8f5bb3fdf98ab1c82d3ecf824cc25f68
+DIST mumble-1.4-openssl3.patch.xz 4172 BLAKE2B 5b68f023e218628a4d73b0991dcc7790ce5f92ce6a27c372c5e80b1f3a8beafa3ddd6416b884705b321aee31ea4f5e09dda6ceb240272dde64f420fbeb06845a SHA512 3a4e504f3365e93418cb85d0da4e6f2f54ab904283743907604bb39276560a4215d9bea1b225601789d1c3d84d270c04840ec57cd04e3df1204cc586ea42562a
+DIST mumble-1.4.230.tar.gz 9441667 BLAKE2B da433f3c15d7e45dfac0c8a78c9dbe86ba8d5cd078d2d87fd4d90718968fc9e5928c3c5c5ba2e40a8a54d02a646c5fc6a7ee2fff4b71dfa411d74f395b097c26 SHA512 6cffc7a95d88b33876f4093b99266468210f5c14f190fbd2fbe4991bef91a567e55296e7c8c6cc99e19c054853211085cc3cc08109e367e6776afb70766b3a53
+EBUILD mumble-1.3.4-r1.ebuild 3927 BLAKE2B 496adcaacc667be53b436748c49c506d0a79287e6623d90b24a2ca26b52840f96fc0317e60fceb9cc52293e1b18335fdb77b46e7fe6b9224f44f33dd51cc3082 SHA512 82de10280b9a1985cdb64aa5757325c856699a3f3ef97aca716c147c8ed5ee52e537b574bd5e0c1f2a4e37ed37732e185a478779aa3c981e5db2105bc54e3e20
+EBUILD mumble-1.4.230-r3.ebuild 3873 BLAKE2B b3fadb749ebfc81ca0a3e39d529df13108c3840d4270cdd66179deec3fcc0638e1fae3a21084a72b57a1cc82c375536e63cb18ee4cc3422eb630f6d903c17291 SHA512 25cc911d0613a6a0d963ce77d0075eb81cf667933e1c9d99e25413f76eaba703faa127f506804757270e644c7dd3ba7c93183f8f186b7ebc5bdf079e460e0623
+EBUILD mumble-9999.ebuild 3748 BLAKE2B a6130ee0a88b814639f02188c915a8a90e495f48ef357572d3099eed021615f13901d782315661630b47d85cf3744fb6c3a87650a2c1c3c2ed99dd8b2ea80e99 SHA512 ca87450df487f95ce49bdb4cf374862c0f281144ab89ec3dd03239acb51eaf3f2b7d8f423a3ff9c7590e32000b2ab34cc002cefd40cbb7091e3d703166db6cb1
+MISC metadata.xml 671 BLAKE2B 7b1c991f969e5a98295f030e6d0dc992b75a131d47d2b76f5b43a92f1e89bb7de2844961ccaebc50d1d60b09c4753f1e5d6bbcf4049f865362c3dc8e1bb3669e SHA512 46e61fa94649ed48b129ebf75f4eb7c31001ca5db9d786f807feaaf518d907d536b4a6bf8760b66ddee420039a61e45cfdfc41121c638243d9e5543a746938a8
diff --git a/net-voip/mumble/files/mumble-1.4-crypto-threads.patch b/net-voip/mumble/files/mumble-1.4-crypto-threads.patch
new file mode 100644
index 000000000000..0ad371cd6c63
--- /dev/null
+++ b/net-voip/mumble/files/mumble-1.4-crypto-threads.patch
@@ -0,0 +1,131 @@
+commit f8d47db318f302f5a7d343f15c9936c7030c49c4
+Author: Terry Geng <terry@terriex.com>
+Date: Sun Dec 12 22:39:38 2021 -0500
+
+ FIX(crypto): Sharing EVP context between threads crushes Mumble
+
+ Functions ocb_encrypt and ocb_decrypt share the same set
+ of encrypt and decrypt contexts. However, they are invoked
+ in different threads (audio input thread and server
+ handler thread).
+ This may lead to conflicts that would crash Mumble.
+ This patch separates contexts used in these two functions
+ to avoid such conflicts.
+
+ Fixes #5361
+
+diff --git a/src/crypto/CryptStateOCB2.cpp b/src/crypto/CryptStateOCB2.cpp
+index 640fdedac..3b3473ffe 100644
+--- a/src/crypto/CryptStateOCB2.cpp
++++ b/src/crypto/CryptStateOCB2.cpp
+@@ -30,7 +30,9 @@
+ #include <cstring>
+ #include <openssl/rand.h>
+
+-CryptStateOCB2::CryptStateOCB2() : CryptState(), enc_ctx(EVP_CIPHER_CTX_new()), dec_ctx(EVP_CIPHER_CTX_new()) {
++CryptStateOCB2::CryptStateOCB2()
++ : CryptState(), enc_ctx_ocb_enc(EVP_CIPHER_CTX_new()), dec_ctx_ocb_enc(EVP_CIPHER_CTX_new()),
++ enc_ctx_ocb_dec(EVP_CIPHER_CTX_new()), dec_ctx_ocb_dec(EVP_CIPHER_CTX_new()) {
+ for (int i = 0; i < 0x100; i++)
+ decrypt_history[i] = 0;
+ memset(raw_key, 0, AES_KEY_SIZE_BYTES);
+@@ -39,8 +41,10 @@ CryptStateOCB2::CryptStateOCB2() : CryptState(), enc_ctx(EVP_CIPHER_CTX_new()),
+ }
+
+ CryptStateOCB2::~CryptStateOCB2() noexcept {
+- EVP_CIPHER_CTX_free(enc_ctx);
+- EVP_CIPHER_CTX_free(dec_ctx);
++ EVP_CIPHER_CTX_free(enc_ctx_ocb_enc);
++ EVP_CIPHER_CTX_free(dec_ctx_ocb_enc);
++ EVP_CIPHER_CTX_free(enc_ctx_ocb_dec);
++ EVP_CIPHER_CTX_free(dec_ctx_ocb_dec);
+ }
+
+ bool CryptStateOCB2::isValid() const {
+@@ -257,25 +261,28 @@ static void inline ZERO(keyblock &block) {
+ block[i] = 0;
+ }
+
+-#define AESencrypt(src, dst, key) \
+- { \
+- int outlen = 0; \
+- EVP_EncryptInit_ex(enc_ctx, EVP_aes_128_ecb(), NULL, key, NULL); \
+- EVP_CIPHER_CTX_set_padding(enc_ctx, 0); \
+- EVP_EncryptUpdate(enc_ctx, reinterpret_cast< unsigned char * >(dst), &outlen, \
+- reinterpret_cast< const unsigned char * >(src), AES_BLOCK_SIZE); \
+- EVP_EncryptFinal_ex(enc_ctx, reinterpret_cast< unsigned char * >(dst + outlen), &outlen); \
++#define AESencrypt_ctx(src, dst, key, enc_ctx) \
++ { \
++ int outlen = 0; \
++ EVP_EncryptInit_ex(enc_ctx, EVP_aes_128_ecb(), NULL, key, NULL); \
++ EVP_CIPHER_CTX_set_padding(enc_ctx, 0); \
++ EVP_EncryptUpdate(enc_ctx, reinterpret_cast< unsigned char * >(dst), &outlen, \
++ reinterpret_cast< const unsigned char * >(src), AES_BLOCK_SIZE); \
++ EVP_EncryptFinal_ex(enc_ctx, reinterpret_cast< unsigned char * >((dst) + outlen), &outlen); \
+ }
+-#define AESdecrypt(src, dst, key) \
+- { \
+- int outlen = 0; \
+- EVP_DecryptInit_ex(dec_ctx, EVP_aes_128_ecb(), NULL, key, NULL); \
+- EVP_CIPHER_CTX_set_padding(dec_ctx, 0); \
+- EVP_DecryptUpdate(dec_ctx, reinterpret_cast< unsigned char * >(dst), &outlen, \
+- reinterpret_cast< const unsigned char * >(src), AES_BLOCK_SIZE); \
+- EVP_DecryptFinal_ex(dec_ctx, reinterpret_cast< unsigned char * >(dst + outlen), &outlen); \
++#define AESdecrypt_ctx(src, dst, key, dec_ctx) \
++ { \
++ int outlen = 0; \
++ EVP_DecryptInit_ex(dec_ctx, EVP_aes_128_ecb(), NULL, key, NULL); \
++ EVP_CIPHER_CTX_set_padding(dec_ctx, 0); \
++ EVP_DecryptUpdate(dec_ctx, reinterpret_cast< unsigned char * >(dst), &outlen, \
++ reinterpret_cast< const unsigned char * >(src), AES_BLOCK_SIZE); \
++ EVP_DecryptFinal_ex(dec_ctx, reinterpret_cast< unsigned char * >((dst) + outlen), &outlen); \
+ }
+
++#define AESencrypt(src, dst, key) AESencrypt_ctx(src, dst, key, enc_ctx_ocb_enc)
++#define AESdecrypt(src, dst, key) AESdecrypt_ctx(src, dst, key, dec_ctx_ocb_enc)
++
+ bool CryptStateOCB2::ocb_encrypt(const unsigned char *plain, unsigned char *encrypted, unsigned int len,
+ const unsigned char *nonce, unsigned char *tag, bool modifyPlainOnXEXStarAttack) {
+ keyblock checksum, delta, tmp, pad;
+@@ -345,6 +352,12 @@ bool CryptStateOCB2::ocb_encrypt(const unsigned char *plain, unsigned char *encr
+ return success;
+ }
+
++#undef AESencrypt
++#undef AESdecrypt
++
++#define AESencrypt(src, dst, key) AESencrypt_ctx(src, dst, key, enc_ctx_ocb_dec)
++#define AESdecrypt(src, dst, key) AESdecrypt_ctx(src, dst, key, dec_ctx_ocb_dec)
++
+ bool CryptStateOCB2::ocb_decrypt(const unsigned char *encrypted, unsigned char *plain, unsigned int len,
+ const unsigned char *nonce, unsigned char *tag) {
+ keyblock checksum, delta, tmp, pad;
+@@ -392,9 +405,9 @@ bool CryptStateOCB2::ocb_decrypt(const unsigned char *encrypted, unsigned char *
+ return success;
+ }
+
++#undef AESencrypt
++#undef AESdecrypt
+ #undef BLOCKSIZE
+ #undef SHIFTBITS
+ #undef SWAPPED
+ #undef HIGHBIT
+-#undef AESencrypt
+-#undef AESdecrypt
+diff --git a/src/crypto/CryptStateOCB2.h b/src/crypto/CryptStateOCB2.h
+index cc3f1c0bc..0fd3000ad 100644
+--- a/src/crypto/CryptStateOCB2.h
++++ b/src/crypto/CryptStateOCB2.h
+@@ -44,8 +44,10 @@ private:
+ unsigned char decrypt_iv[AES_BLOCK_SIZE];
+ unsigned char decrypt_history[0x100];
+
+- EVP_CIPHER_CTX *enc_ctx;
+- EVP_CIPHER_CTX *dec_ctx;
++ EVP_CIPHER_CTX *enc_ctx_ocb_enc;
++ EVP_CIPHER_CTX *dec_ctx_ocb_enc;
++ EVP_CIPHER_CTX *enc_ctx_ocb_dec;
++ EVP_CIPHER_CTX *dec_ctx_ocb_dec;
+ };
+
+
diff --git a/net-voip/mumble/files/mumble-1.4.230-gcc12-include-memory.patch b/net-voip/mumble/files/mumble-1.4.230-gcc12-include-memory.patch
new file mode 100644
index 000000000000..624a8594d995
--- /dev/null
+++ b/net-voip/mumble/files/mumble-1.4.230-gcc12-include-memory.patch
@@ -0,0 +1,28 @@
+https://github.com/mumble-voip/mumble/commit/36398fb3b293fc889bbc38df29665359f5c2a0ca
+
+From: Sergei Trofimovich <slyich@gmail.com>
+Date: Sun, 27 Feb 2022 10:59:57 +0000
+Subject: [PATCH] BUILD(positional-audio): Fix missing <memory> include
+
+Without the change the build fails on upcoming gcc-12 as:
+
+ /build/mumble/plugins/gtav/gtav.cpp:13:13:
+ error: 'unique_ptr' in namespace 'std' does not name a template type
+ 13 | static std::unique_ptr< Game > game;
+ | ^~~~~~~~~~
+ /build/mumble/plugins/gtav/gtav.cpp:12:1:
+ note: 'std::unique_ptr' is defined in header '<memory>';
+ did you forget to '#include <memory>'?
+ 11 | #include <cstring>
+ +++ |+#include <memory>
+ 12 |
+--- a/plugins/gtav/gtav.cpp
++++ b/plugins/gtav/gtav.cpp
+@@ -9,6 +9,7 @@
+ #include "mumble_positional_audio_utils.h"
+
+ #include <cstring>
++#include <memory>
+
+ static std::unique_ptr< Game > game;
+
diff --git a/net-voip/mumble/files/mumble-1.4.230-poco-link-cmake.patch b/net-voip/mumble/files/mumble-1.4.230-poco-link-cmake.patch
new file mode 100644
index 000000000000..d1b4dee11d51
--- /dev/null
+++ b/net-voip/mumble/files/mumble-1.4.230-poco-link-cmake.patch
@@ -0,0 +1,24 @@
+https://bugs.gentoo.org/842984
+https://github.com/mumble-voip/mumble/commit/fefdd79ebcd53a3035967789d004938ee39e2030
+
+Fix underlinking against Poco.
+--- a/src/mumble/CMakeLists.txt
++++ b/src/mumble/CMakeLists.txt
+@@ -383,11 +383,16 @@ target_include_directories(mumble
+ "${PLUGINS_DIR}"
+ )
+
+-find_pkg(Poco COMPONENTS Zip)
++find_pkg(Poco
++ COMPONENTS
++ XML
++ Zip
++)
+
+ if(TARGET Poco::Zip)
+ target_link_libraries(mumble
+ PRIVATE
++ Poco::XML
+ Poco::Zip
+ )
+ else()
diff --git a/net-voip/mumble/metadata.xml b/net-voip/mumble/metadata.xml
new file mode 100644
index 000000000000..4155b39a062c
--- /dev/null
+++ b/net-voip/mumble/metadata.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>concord@gentoo.org</email>
+ <name>Kenton Groombridge</name>
+ </maintainer>
+ <use>
+ <flag name="g15">Enable support for the Logitech G15 LCD (and compatible devices).</flag>
+ <flag name="pipewire">Enable pipewire support for audio output.</flag>
+ <flag name="rnnoise">Enable alternative noise suppression option based on RNNoise.</flag>
+ <flag name="speech">Enable text-to-speech support in Mumble.</flag>
+ </use>
+ <upstream>
+ <remote-id type="sourceforge">mumble</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/net-voip/mumble/mumble-1.3.4-r1.ebuild b/net-voip/mumble/mumble-1.3.4-r1.ebuild
new file mode 100644
index 000000000000..b949aeef04ef
--- /dev/null
+++ b/net-voip/mumble/mumble-1.3.4-r1.ebuild
@@ -0,0 +1,169 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{8..10} )
+inherit desktop multilib-build python-any-r1 qmake-utils xdg
+
+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=( '-*' celt-0.7.0-src celt-0.11.0-src themes/Mumble 3rdparty/rnnoise-src )
+else
+ if [[ "${PV}" == *_pre* ]] ; then
+ SRC_URI="https://dev.gentoo.org/~polynomial-c/dist/${P}.tar.xz"
+ else
+ MY_PV="${PV/_/-}"
+ MY_P="${PN}-${MY_PV}"
+ SRC_URI="https://github.com/mumble-voip/mumble/releases/download/${MY_PV}/${MY_P}.tar.gz
+ https://dl.mumble.info/${MY_P}.tar.gz"
+ S="${WORKDIR}/${P/_*}"
+ fi
+ KEYWORDS="amd64 ~arm64 ~ppc64 x86"
+fi
+
+LICENSE="BSD MIT"
+SLOT="0"
+IUSE="+alsa +dbus debug g15 jack +opus oss pch portaudio pulseaudio +rnnoise speech zeroconf"
+
+RDEPEND="
+ dev-qt/qtcore:5
+ dev-qt/qtgui:5
+ dev-qt/qtnetwork:5[ssl]
+ dev-qt/qtsql:5[sqlite]
+ dev-qt/qtsvg:5
+ dev-qt/qtwidgets:5
+ dev-qt/qtxml:5
+ >=dev-libs/protobuf-2.2.0:=
+ >=media-libs/libsndfile-1.0.20[-minimal]
+ >=media-libs/speex-1.2.0
+ media-libs/speexdsp
+ sys-apps/lsb-release
+ x11-libs/libX11
+ x11-libs/libXi
+ alsa? ( media-libs/alsa-lib )
+ dbus? ( dev-qt/qtdbus:5 )
+ g15? ( app-misc/g15daemon )
+ jack? ( virtual/jack )
+ >=dev-libs/openssl-1.0.0b:0=
+ opus? ( >=media-libs/opus-1.0.1 )
+ portaudio? ( media-libs/portaudio )
+ pulseaudio? ( media-sound/pulseaudio )
+ speech? ( >=app-accessibility/speech-dispatcher-0.8.0 )
+ zeroconf? ( net-dns/avahi[mdnsresponder-compat] )
+"
+DEPEND="${RDEPEND}
+ ${PYTHON_DEPS}
+ >=dev-libs/boost-1.41.0
+ x11-base/xorg-proto
+"
+BDEPEND="
+ dev-qt/linguist-tools:5
+ virtual/pkgconfig
+"
+
+pkg_setup() {
+ python-any-r1_pkg_setup
+}
+
+# NB: qmake does not support multilib but it's fine to configure
+# for the native ABI here
+src_configure() {
+ myuse() {
+ [[ -n "${1}" ]] || die "myuse: No use option given"
+ use ${1} || echo no-${1}
+ }
+
+ local conf_add=(
+ bundled-celt
+ no-bundled-opus
+ no-bundled-speex
+ no-embed-qt-translations
+ no-server
+ no-update
+ $(myuse alsa)
+ $(myuse dbus)
+ $(usex debug 'symbols debug' release)
+ $(myuse g15)
+ $(usex jack '' no-jackaudio)
+ $(myuse opus)
+ $(myuse oss)
+ $(myuse portaudio)
+ $(myuse pulseaudio)
+ $(usex rnnoise bundled-rnnoise '')
+ $(usex speech '' no-speechd)
+ $(usex zeroconf '' no-bonjour)
+ )
+
+ use pch || conf_add+=( no-pch )
+
+ eqmake5 "${S}/main.pro" -recursive \
+ CONFIG+="${conf_add[*]}" \
+ DEFINES+="PLUGIN_PATH=/usr/$(get_libdir)/mumble"
+}
+
+multilib_src_compile() {
+ local emake_args=(
+ # place libmumble* in a subdirectory
+ DESTDIR_ADD="/${MULTILIB_ABI_FLAG}"
+ {C,L}FLAGS_ADD="$(get_abi_CFLAGS)"
+ )
+ # build only overlay library for other ABIs
+ multilib_is_native_abi || emake_args+=( -C overlay_gl )
+ emake "${emake_args[@]}"
+ emake clean
+}
+
+src_compile() {
+ multilib_foreach_abi multilib_src_compile
+}
+
+multilib_src_install() {
+ local dir=$(usex debug debug release)
+ insinto /usr/$(get_libdir)/${PN}
+ doins "${dir}/${MULTILIB_ABI_FLAG}"/libmumble.so*
+ if multilib_is_native_abi; then
+ dobin "${dir}"/mumble
+ doins "${dir}"/libcelt0.so* "${dir}"/plugins/lib*.so*
+ fi
+}
+
+src_install() {
+ multilib_foreach_abi multilib_src_install
+
+ newdoc README.Linux README
+ dodoc CHANGES
+ dobin scripts/mumble-overlay
+
+ insinto /usr/share/services
+ doins scripts/mumble.protocol
+
+ domenu scripts/mumble.desktop
+
+ doicon -s scalable icons/mumble.svg
+
+ doman man/mumble-overlay.1
+ doman man/mumble.1
+
+ insinto /usr/share/mumble
+ doins -r samples
+}
+
+pkg_preinst() {
+ xdg_pkg_preinst
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+ echo
+ elog "Visit https://wiki.mumble.info/ for futher configuration instructions."
+ elog "Run mumble-overlay to start the OpenGL overlay (after starting mumble)."
+ echo
+}
+
+pkg_postrm() {
+ xdg_pkg_postrm
+}
diff --git a/net-voip/mumble/mumble-1.4.230-r3.ebuild b/net-voip/mumble/mumble-1.4.230-r3.ebuild
new file mode 100644
index 000000000000..382e030edb65
--- /dev/null
+++ b/net-voip/mumble/mumble-1.4.230-r3.ebuild
@@ -0,0 +1,149 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{8..10} )
+inherit cmake flag-o-matic python-any-r1 xdg
+
+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=( '-*' celt-0.7.0-src celt-0.11.0-src themes/Mumble 3rdparty/rnnoise-src 3rdparty/FindPythonInterpreter )
+else
+ if [[ "${PV}" == *_pre* ]] ; then
+ SRC_URI="https://dev.gentoo.org/~polynomial-c/dist/${P}.tar.xz"
+ else
+ MY_PV="${PV/_/-}"
+ MY_P="${PN}-${MY_PV}"
+ SRC_URI="https://github.com/mumble-voip/mumble/releases/download/v${MY_PV}/${MY_P}.tar.gz"
+ S="${WORKDIR}/${P/_*}.src"
+ fi
+ KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
+fi
+
+SRC_URI+=" https://dev.gentoo.org/~polynomial-c/${PN}-1.4-openssl3.patch.xz"
+
+LICENSE="BSD MIT"
+SLOT="0"
+IUSE="+alsa +dbus debug g15 jack pipewire portaudio pulseaudio multilib nls +rnnoise speech test zeroconf"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-libs/openssl-1.0.0b:0=
+ dev-libs/poco[util,xml,zip]
+ >=dev-libs/protobuf-2.2.0:=
+ dev-qt/qtcore:5
+ dev-qt/qtgui:5
+ dev-qt/qtnetwork:5[ssl]
+ dev-qt/qtsql:5[sqlite]
+ dev-qt/qtsvg:5
+ dev-qt/qtwidgets:5
+ dev-qt/qtxml:5
+ >=media-libs/libsndfile-1.0.20[-minimal]
+ >=media-libs/opus-1.3.1
+ >=media-libs/speex-1.2.0
+ media-libs/speexdsp
+ sys-apps/lsb-release
+ x11-libs/libX11
+ x11-libs/libXi
+ alsa? ( media-libs/alsa-lib )
+ dbus? ( dev-qt/qtdbus:5 )
+ g15? ( app-misc/g15daemon:= )
+ jack? ( virtual/jack )
+ portaudio? ( media-libs/portaudio )
+ pulseaudio? ( media-sound/pulseaudio )
+ pipewire? ( media-video/pipewire )
+ speech? ( >=app-accessibility/speech-dispatcher-0.8.0 )
+ zeroconf? ( net-dns/avahi[mdnsresponder-compat] )
+"
+DEPEND="${RDEPEND}
+ ${PYTHON_DEPS}
+ dev-qt/qtconcurrent:5
+ dev-qt/qttest:5
+ >=dev-libs/boost-1.41.0
+ x11-base/xorg-proto
+"
+BDEPEND="
+ dev-qt/linguist-tools:5
+ virtual/pkgconfig
+"
+
+PATCHES=(
+ "${WORKDIR}/${PN}-1.4-openssl3.patch"
+ "${FILESDIR}/${PN}-1.4-crypto-threads.patch"
+ "${FILESDIR}/${PN}-1.4.230-gcc12-include-memory.patch"
+ "${FILESDIR}/${PN}-1.4.230-poco-link-cmake.patch"
+)
+
+pkg_setup() {
+ python-any-r1_pkg_setup
+}
+
+src_prepare() {
+ # required because of xdg.eclass also providing src_prepare
+ cmake_src_prepare
+}
+
+src_configure() {
+
+ local mycmakeargs=(
+ -Dalsa="$(usex alsa)"
+ -Dtests="$(usex test)"
+ -Dbundled-celt="ON"
+ -Dbundled-opus="OFF"
+ -Dbundled-speex="OFF"
+ -Ddbus="$(usex dbus)"
+ -Dg15="$(usex g15)"
+ -Djackaudio="$(usex jack)"
+ -Doverlay="ON"
+ -Dportaudio="$(usex portaudio)"
+ -Doverlay-xcompile="$(usex multilib)"
+ -Dpipewire="$(usex pipewire)"
+ -Dpulseaudio="$(usex pulseaudio)"
+ -Drnnoise="$(usex rnnoise)"
+ -Dserver="OFF"
+ -Dspeechd="$(usex speech)"
+ -Dtranslations="$(usex nls)"
+ -Dupdate="OFF"
+ -Dwarnings-as-errors="OFF"
+ -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
+
+ if use amd64 && use multilib ; then
+ # The 32bit overlay library gets built when multilib is enabled.
+ # Install it into the correct 32bit lib dir.
+ local libdir_64="/usr/$(get_libdir)/mumble"
+ local libdir_32="/usr/$(get_abi_var LIBDIR x86)/mumble"
+ dodir ${libdir_32}
+ mv "${ED}"/${libdir_64}/libmumbleoverlay.x86.so* \
+ "${ED}"/${libdir_32}/ || die
+ fi
+
+ insinto /usr/share/mumble
+ doins -r samples
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+ echo
+ elog "Visit https://wiki.mumble.info/ for futher configuration instructions."
+ elog "Run 'mumble-overlay <program>' to start the OpenGL overlay (after starting mumble)."
+ echo
+}
diff --git a/net-voip/mumble/mumble-9999.ebuild b/net-voip/mumble/mumble-9999.ebuild
new file mode 100644
index 000000000000..548fe5b1e282
--- /dev/null
+++ b/net-voip/mumble/mumble-9999.ebuild
@@ -0,0 +1,145 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{8..10} )
+inherit cmake flag-o-matic python-any-r1 xdg
+
+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=( '-*' celt-0.7.0-src celt-0.11.0-src themes/Mumble 3rdparty/rnnoise-src 3rdparty/FindPythonInterpreter 3rdparty/tracy 3rdparty/gsl )
+else
+ if [[ "${PV}" == *_pre* ]] ; then
+ SRC_URI="https://dev.gentoo.org/~polynomial-c/dist/${P}.tar.xz"
+ else
+ MY_PV="${PV/_/-}"
+ MY_P="${PN}-${MY_PV}"
+ SRC_URI="https://github.com/mumble-voip/mumble/releases/download/v${MY_PV}/${MY_P}.tar.gz"
+ S="${WORKDIR}/${P/_*}.src"
+ fi
+ KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
+fi
+
+LICENSE="BSD MIT"
+SLOT="0"
+IUSE="+alsa +dbus debug g15 jack pipewire portaudio pulseaudio multilib nls +rnnoise speech test zeroconf"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-libs/openssl-1.0.0b:0=
+ dev-libs/poco[util,xml,zip]
+ >=dev-libs/protobuf-2.2.0:=
+ dev-qt/qtcore:5
+ dev-qt/qtgui:5
+ dev-qt/qtnetwork:5[ssl]
+ dev-qt/qtsql:5[sqlite]
+ dev-qt/qtsvg:5
+ dev-qt/qtwidgets:5
+ dev-qt/qtxml:5
+ >=media-libs/libsndfile-1.0.20[-minimal]
+ >=media-libs/opus-1.3.1
+ >=media-libs/speex-1.2.0
+ media-libs/speexdsp
+ sys-apps/lsb-release
+ x11-libs/libX11
+ x11-libs/libXi
+ alsa? ( media-libs/alsa-lib )
+ dbus? ( dev-qt/qtdbus:5 )
+ g15? ( app-misc/g15daemon:= )
+ jack? ( virtual/jack )
+ portaudio? ( media-libs/portaudio )
+ pulseaudio? ( media-sound/pulseaudio )
+ pipewire? ( media-video/pipewire )
+ speech? ( >=app-accessibility/speech-dispatcher-0.8.0 )
+ zeroconf? ( net-dns/avahi[mdnsresponder-compat] )
+"
+DEPEND="${RDEPEND}
+ ${PYTHON_DEPS}
+ dev-cpp/nlohmann_json
+ dev-qt/qtconcurrent:5
+ dev-qt/qttest:5
+ >=dev-libs/boost-1.41.0
+ x11-base/xorg-proto
+"
+BDEPEND="
+ dev-qt/linguist-tools:5
+ virtual/pkgconfig
+"
+
+pkg_setup() {
+ python-any-r1_pkg_setup
+}
+
+src_prepare() {
+ sed '/TRACY_ON_DEMAND/s@ ON @ OFF @' -i src/CMakeLists.txt || die
+
+ # required because of xdg.eclass also providing src_prepare
+ cmake_src_prepare
+}
+
+src_configure() {
+
+ local mycmakeargs=(
+ -Dalsa="$(usex alsa)"
+ -Dbundled-celt="ON"
+ -Dbundled-json="OFF"
+ -Dbundled-opus="OFF"
+ -Dbundled-speex="OFF"
+ -Ddbus="$(usex dbus)"
+ -Dg15="$(usex g15)"
+ -Djackaudio="$(usex jack)"
+ -Doverlay="ON"
+ -Dportaudio="$(usex portaudio)"
+ -Doverlay-xcompile="$(usex multilib)"
+ -Dpipewire="$(usex pipewire)"
+ -Dpulseaudio="$(usex pulseaudio)"
+ -Drnnoise="$(usex rnnoise)"
+ -Dserver="OFF"
+ -Dspeechd="$(usex speech)"
+ -Dtests="$(usex test)"
+ -Dtracy="OFF"
+ -Dtranslations="$(usex nls)"
+ -Dupdate="OFF"
+ -Dwarnings-as-errors="OFF"
+ -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
+
+ if use amd64 && use multilib ; then
+ # The 32bit overlay library gets built when multilib is enabled.
+ # Install it into the correct 32bit lib dir.
+ local libdir_64="/usr/$(get_libdir)/mumble"
+ local libdir_32="/usr/$(get_abi_var LIBDIR x86)/mumble"
+ dodir ${libdir_32}
+ mv "${ED}"/${libdir_64}/libmumbleoverlay.x86.so* \
+ "${ED}"/${libdir_32}/ || die
+ fi
+
+ insinto /usr/share/mumble
+ doins -r samples
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+ echo
+ elog "Visit https://wiki.mumble.info/ for futher configuration instructions."
+ elog "Run 'mumble-overlay <program>' to start the OpenGL overlay (after starting mumble)."
+ echo
+}