diff options
author | V3n3RiX <venerix@koprulu.sector> | 2022-07-09 15:43:36 +0100 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2022-07-09 15:43:36 +0100 |
commit | 2719f73b6813d11d13a9650cdd2ab8ec6e69385d (patch) | |
tree | 8c816148bcbd22757d892089c989ae614eae4f5a /net-voip/mumble | |
parent | 0f558761aa2dee1017b4751e4017205e015a9560 (diff) |
gentoo resync : 09.07.2022
Diffstat (limited to 'net-voip/mumble')
-rw-r--r-- | net-voip/mumble/Manifest | 10 | ||||
-rw-r--r-- | net-voip/mumble/files/mumble-1.4-crypto-threads.patch | 131 | ||||
-rw-r--r-- | net-voip/mumble/files/mumble-1.4.230-gcc12-include-memory.patch | 28 | ||||
-rw-r--r-- | net-voip/mumble/files/mumble-1.4.230-poco-link-cmake.patch | 24 | ||||
-rw-r--r-- | net-voip/mumble/metadata.xml | 17 | ||||
-rw-r--r-- | net-voip/mumble/mumble-1.3.4-r1.ebuild | 169 | ||||
-rw-r--r-- | net-voip/mumble/mumble-1.4.230-r3.ebuild | 149 | ||||
-rw-r--r-- | net-voip/mumble/mumble-9999.ebuild | 145 |
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 +} |