1 Commits

Author SHA256 Message Date
a4d52428a7 Import openSUSE:Leap:16.0 modifications 2025-08-12 12:16:07 +02:00
16 changed files with 1016 additions and 234 deletions

37
_service Normal file
View File

@@ -0,0 +1,37 @@
<services>
<service name="obs_scm" mode="manual">
<param name="url">https://github.com/mumble-voip/mumble.git</param>
<param name="scm">git</param>
<param name="changesgenerate">enable</param>
<param name="filename">mumble</param>
<param name="versionformat">@PARENT_TAG@</param>
<param name="revision">v1.5.735</param>
<param name="versionrewrite-pattern">v(.*)</param>
<param name="versionrewrite-replacement">\1</param>
</service>
<service name="set_version" mode="manual"/>
<service name="tar" mode="buildtime">
<!-- throw away a number of unused, bundled libs -->
<param name="exclude">3rdparty/GL</param>
<param name="exclude">3rdparty/gsl</param>
<param name="exclude">3rdparty/jack</param>
<param name="exclude">3rdparty/march-override-*</param>
<param name="exclude">3rdparty/minhook</param>
<param name="exclude">3rdparty/nlohmann_json</param>
<param name="exclude">3rdparty/pipewire</param>
<param name="exclude">3rdparty/portaudio</param>
<param name="exclude">3rdparty/pulseaudio</param>
<param name="exclude">3rdparty/speexdsp-build</param>
<param name="exclude">3rdparty/speexdsp</param>
<param name="exclude">3rdparty/tracy</param>
<param name="exclude">3rdparty/xinputcheck*</param>
<param name="exclude">installer</param>
<param name="exclude">src/mumble/qttranslations</param>
<!-- and the licence texts, see license.patch -->
<param name="exclude">3rdPartyLicenses</param>
</service>
<service name="recompress" mode="buildtime">
<param name="file">*.tar</param>
<param name="compression">xz</param>
</service>
</services>

6
_servicedata Normal file
View File

@@ -0,0 +1,6 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/mumble-voip/mumble.git</param>
<param name="changesrevision">f9f2d1b63b15883a470d1abe184342fe509b6dfb</param>
</service>
</servicedata>

View File

@@ -1,13 +1,12 @@
diff -Nur mumble-src/plugins/CMakeLists.txt new/plugins/CMakeLists.txt
--- mumble-src/plugins/CMakeLists.txt 2022-08-21 18:52:23.000000000 +0200
+++ new/plugins/CMakeLists.txt 2022-09-01 12:24:10.507433751 +0200
@@ -24,6 +24,9 @@
foreach(ITEM ${ITEMS})
if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}")
--- mumble-1.5.517/plugins/CMakeLists.txt.orig 2023-03-06 10:12:15.561392259 +0000
+++ mumble-1.5.517/plugins/CMakeLists.txt 2023-03-06 10:13:47.946025289 +0000
@@ -91,6 +91,9 @@ list(REMOVE_DUPLICATES AVAILABLE_PLUGINS
# target.
foreach(CURRENT_PLUGIN IN LISTS AVAILABLE_PLUGINS)
set(PLUGIN_RETRACTED OFF)
+ if (ITEM STREQUAL "gtav" AND CMAKE_SIZEOF_VOID_P LESS 8)
+ continue()
+ endif()
set(PLUGIN_RETRACTED OFF)
# If the plugin is retracted the corresponding CMakeLists.txt is supposed to set the
# If the plugin is retracted the corresponding CMakeLists.txt is supposed to set the
# PLUGIN_RETRACTED variable in the parent scope so that we can access it here

54
licenses.patch Normal file
View File

@@ -0,0 +1,54 @@
Index: mumble-1.5.634/scripts/generate_license_header.py
===================================================================
--- mumble-1.5.634.orig/scripts/generate_license_header.py
+++ mumble-1.5.634/scripts/generate_license_header.py
@@ -22,49 +22,10 @@ repoRoot = os.path.normpath(os.path.join
# List of (3rdparty) licenses [<variableName>, <pathToLicenseFile>, <DisplayName>, <URL>, (<define-guard>)?]
licenses = [
["licenseMumble", "LICENSE", "Mumble", "https://www.mumble.info/"],
- ["licenseSPEEXDSP", "3rdparty/speexdsp/COPYING", "SpeexDSP", "http://www.speex.org/"],
- ["licenseOpenSSL", "3rdPartyLicenses/openssl_license.txt", "OpenSSL", "http://www.openssl.org/"],
- ["licenseLibsndfile", "3rdPartyLicenses/libsndfile_license.txt", "libsndfile", "http://www.mega-nerd.com/libsndfile/"],
- ["licenseOgg", "3rdPartyLicenses/libogg_license.txt", "libogg", "http://www.xiph.org/"],
- ["licenseVorbis", "3rdPartyLicenses/libvorbis_license.txt", "libvorbis", "http://www.xiph.org/"],
- ["licenseFLAC", "3rdPartyLicenses/libflac_license.txt", "libFLAC", "http://flac.sourceforge.net/"],
- ["licenseMachOverride", "3rdPartyLicenses/mach_override_license.txt", "mach_override", "https://github.com/rentzsch/mach_star", "Q_OS_MAC"],
- ["licenseMinHook", "3rdparty/minhook/LICENSE.txt", "MinHook", "https://github.com/TsudaKageyu/minhook", "Q_OS_WIN64"],
- ["licenseQtTranslations", "src/mumble/qttranslations/LICENSE",
- "Additional Qt translations", "https://www.virtualbox.org/ticket/2018", "USING_BUNDLED_QT_TRANSLATIONS"],
["licenseFlagIcons", "3rdparty/flag-icons/LICENSE", "flag-icons", "https://flagicons.lipis.dev/" ],
- ["licenseXInputCheck", "3rdparty/xinputcheck-src/COPYING.txt", "XInputCheck (SDL_IsXInput function)", "https://www.libsdl.org/"],
["licenseQQBonjour", "3rdparty/qqbonjour/LICENSE", "QQBonjour", "https://doc.qt.io/archives/qq/qq23-bonjour.html"],
["licenseSmallFT", "3rdparty/smallft/LICENSE", "smallft", "https://www.xiph.org"],
- ["licenseOldStyleLicenseHeaders", "3rdPartyLicenses/mumble-old-license-headers/LICENSE.txt", "Old-style Mumble license headers", "https://www.mumble.info"],
["licenseArc4RandomUniform", "3rdparty/arc4random/LICENSE", "arc4random_uniform", "https://www.openbsd.org"],
- ["licenseMariaDBCConnector", "3rdPartyLicenses/mariadb_c_connector_license.txt", "MariaDB Connector/C", "https://www.mariadb.org", "USE_BUILDENV"],
- ["licenseZlib", "3rdPartyLicenses/zlib_license.txt", "ZLIB", "https://www.zlib.net", "USE_BUILDENV"],
- ["licenseProtobuf", "3rdPartyLicenses/protobuf_license.txt", "Protobuf", "https://developers.google.com/protocol-buffers", "USE_BUILDENV"],
- ["licenseExpat", "3rdPartyLicenses/expat_license.txt", "Expat", "http://libexpat.org", "USE_BUILDENV"],
- ["licenseBoost", "3rdPartyLicenses/boost_license.txt", "Boost C++ Libraries", "https://www.boost.org/", "USE_BUILDENV"],
- ["licenseBzip2", "3rdPartyLicenses/bzip2_license.txt", "bzip2", "http://www.bzip.org", "USE_BUILDENV"],
- ["licenseBerkeleyDB", "3rdPartyLicenses/berkeleydb_license.txt", "BerkeleyDB", "https://www.oracle.com/database/berkeley-db", "USE_BUILDENV"],
- ["licenseFreetype", "3rdPartyLicenses/freetype_license.txt", "Freetype", "https://www.freetype.org/", "USE_BUILDENV"],
- ["licenseHarfBuzzNG", "3rdPartyLicenses/harfbuzzng_license.txt", "HarfBuzz", "https://www.freedesktop.org/wiki/Software/HarfBuzz", "USE_BUILDENV"],
- ["licenseLibPNG", "3rdPartyLicenses/libpng_license.txt", "LibPNG", "http://www.libpng.org/pub/png/libpng.html", "USE_BUILDENV"],
- ["licenseLibjpegTurbo", "3rdPartyLicenses/libjpeg_turbo_license.txt", "libjpeg-turbo", "http://www.libjpeg-turbo.org", "USE_BUILDENV"],
- ["licenseZeroCIce", "3rdPartyLicenses/zeroc_ice_license.txt", "ZeroC Ice", "https://zeroc.com/", "USE_BUILDENV"],
- ["licenseMcpp", "3rdPartyLicenses/mcpp_license.txt", "mcpp", "http://mcpp.sourceforge.net/", "USE_BUILDENV"],
- ["licenseMDNSResponder", "3rdPartyLicenses/mdnsresponder_license.txt", "mDNSResponder", "https://opensource.apple.com/tarballs/mDNSResponder/", "USE_BUILDENV"],
- ["licensePCRE", "3rdPartyLicenses/pcre_license.txt", "PCRE", "http://www.pcre.org/", "USE_BUILDENV"],
- ["licenseQt", "3rdPartyLicenses/qt_license.txt", "Qt", "https://www.qt.io/", "USE_BUILDENV"],
- ["licenseSQLite3", "3rdPartyLicenses/sqlite3_license.txt", "SQLite3", "http://sqlite.org", "USE_BUILDENV"],
- ["licenseXar", "3rdPartyLicenses/xar_license.txt", "XAR", "https://opensource.apple.com/source/xar/", "USE_BUILDENV"], # macOS only
- ["licenseAvahi", "3rdPartyLicenses/avahi_license.txt", "Avahi", "https://www.avahi.org/", "USE_BUILDENV"], # Linux only
- ["licenseDBus", "3rdPartyLicenses/dbus_license.txt", "D-Bus", "https://www.freedesktop.org/wiki/Software/dbus", "USE_BUILDENV"], # Linux only
- ["licenseAppImageRuntime", "3rdPartyLicenses/appimage_runtime_license.txt", "AppImage Runtime", "http://www.appimage.org", "USE_BUILDENV"], # Linux only
- ["licenseSquashfuse", "3rdPartyLicenses/squashfuse_license.txt", "squashfuse", "https://github.com/vasi/squashfuse", "USE_BUILDENV"], # Linux only
- ["licenseLibfuse", "3rdPartyLicenses/libfuse_license.txt", "libfuse", "https://github.com/libfuse/libfuse/", "USE_BUILDENV"], # Linux only
- ["licenseGlib", "3rdPartyLicenses/glib_license.txt", "glib", "https://developer.gnome.org/glib/", "USE_BUILDENV"], # Linux only
- ["licenseLibcap2", "3rdPartyLicenses/libcap2_license.txt", "libcap2", "https://sites.google.com/site/fullycapable/", "USE_BUILDENV"], # Linux only
- ["licenseLibdaemon", "3rdPartyLicenses/libdaemon_license.txt", "libdaemon", "http://0pointer.de/lennart/projects/libdaemon/", "USE_BUILDENV"], # Linux only
- ["licenseLibffi", "3rdPartyLicenses/libffi_license.txt", "libffi", "https://sourceware.org/libffi/", "USE_BUILDENV"] # Linux only
]

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:378e61d5bfa58ba51bfbb645067f459214a9872da09b306f2c2c3f1902200547
size 9457292

View File

@@ -1,7 +0,0 @@
-----BEGIN PGP SIGNATURE-----
iHUEABYIAB0WIQQe3r4qk8uX+pkD1S4l9jxmJF38YAUCYyDKFwAKCRAl9jxmJF38
YCVbAP0aRBeveBh85FMS8CHFG3dpr9ozmJG4FEmv1lXTtX1NgAEArAjt9Jr/e+AC
fmT1W39pGjwC8PvQKdQ/clFhsZuing8=
=5b4g
-----END PGP SIGNATURE-----

View File

@@ -0,0 +1,38 @@
Index: mumble-1.5.629/src/mumble/CMakeLists.txt
===================================================================
--- mumble-1.5.629.orig/src/mumble/CMakeLists.txt
+++ mumble-1.5.629/src/mumble/CMakeLists.txt
@@ -1027,7 +1027,6 @@ if(jackaudio)
)
target_compile_definitions(mumble_client_object_lib PUBLIC "USE_JACKAUDIO")
- target_include_directories(mumble_client_object_lib SYSTEM PUBLIC "${3RDPARTY_DIR}/jack")
endif()
if(oss)
@@ -1049,7 +1048,8 @@ if(pipewire)
)
target_compile_definitions(mumble_client_object_lib PUBLIC "USE_PIPEWIRE")
- target_include_directories(mumble_client_object_lib SYSTEM PUBLIC "${3RDPARTY_DIR}/pipewire")
+ target_include_directories(mumble_client_object_lib SYSTEM PUBLIC "/usr/include/pipewire-0.3")
+ target_include_directories(mumble_client_object_lib SYSTEM PUBLIC "/usr/include/spa-0.2")
endif()
if(portaudio)
@@ -1060,7 +1060,6 @@ if(portaudio)
)
target_compile_definitions(mumble_client_object_lib PUBLIC "USE_PORTAUDIO")
- target_include_directories(mumble_client_object_lib SYSTEM PUBLIC "${3RDPARTY_DIR}/portaudio")
endif()
if(pulseaudio)
@@ -1071,7 +1070,6 @@ if(pulseaudio)
)
target_compile_definitions(mumble_client_object_lib PUBLIC "USE_PULSEAUDIO")
- target_include_directories(mumble_client_object_lib SYSTEM PUBLIC "${3RDPARTY_DIR}/pulseaudio")
endif()
if(wasapi)

View File

@@ -0,0 +1,36 @@
From f4259722553335d79e9d28948ab7bdb00293a5ec Mon Sep 17 00:00:00 2001
From: Carl George <carlwgeorge@gmail.com>
Date: Tue, 8 Apr 2025 23:25:52 -0500
Subject: [PATCH] BUILD(overlay): Fix building with GCC 15
C23 added the bool keyword, which results in an error if you try to
define an identifier named bool and then build with GCC 15. We can use
stdbool.h to define bool instead.
https://gcc.gnu.org/gcc-15/porting_to.html#c23-new-keywords
---
overlay_gl/overlay.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/overlay_gl/overlay.c b/overlay_gl/overlay.c
index 680241e1bbb..bf3051e540f 100644
--- a/overlay_gl/overlay.c
+++ b/overlay_gl/overlay.c
@@ -14,6 +14,7 @@
#include <pwd.h>
#include <semaphore.h>
#include <stdarg.h>
+#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -37,9 +38,6 @@
# include <link.h>
-typedef unsigned char bool;
-# define true 1
-# define false 0
#elif defined(TARGET_MAC)
# include <AGL/agl.h>
# include <Carbon/Carbon.h>

BIN
mumble-1.5.735.obscpio LFS Normal file

Binary file not shown.

View File

@@ -1,35 +0,0 @@
# This file is part of package mumble-server.
#
# Copyright (c) 2013 Pascal Bleser <pascal.bleser@opensuse.org>
# Author: Pascal Bleser
#
# Description:
#
# Used to start the Mumble server (murmurd)
#
[Unit]
Description=Mumble Server (murmur)
Requires=var-run.mount network.target remote-fs.target time-sync.target
After=var-run.mount network.target remote-fs.target time-sync.target mysql.target
[Service]
# added automatically, for details please see
# https://en.opensuse.org/openSUSE:Security_Features#Systemd_hardening_effort
ProtectSystem=full
ProtectHome=true
PrivateDevices=true
ProtectHostname=true
ProtectClock=true
ProtectKernelTunables=true
ProtectKernelModules=true
ProtectKernelLogs=true
ProtectControlGroups=true
RestrictRealtime=true
# end of automatic additions
User=mumble-server
Group=mumble-server
ExecStart=/usr/bin/mumble-server -fg -ini /etc/mumble-server.ini
[Install]
WantedBy=multi-user.target

534
mumble-unbundle-tracy.patch Normal file
View File

@@ -0,0 +1,534 @@
Index: mumble-1.5.735/src/CMakeLists.txt
===================================================================
--- mumble-1.5.735.orig/src/CMakeLists.txt
+++ mumble-1.5.735/src/CMakeLists.txt
@@ -12,8 +12,6 @@ option(qssldiffiehellmanparameters "Buil
option(zeroconf "Build support for zeroconf (mDNS/DNS-SD)." ON)
-option(tracy "Enable the tracy profiler." OFF)
-
option(bundled-gsl "Use the bundled GSL version instead of looking for one on the system" ON)
@@ -192,23 +190,6 @@ if(qssldiffiehellmanparameters)
target_compile_definitions(shared PUBLIC "USE_QSSLDIFFIEHELLMANPARAMETERS")
endif()
-# Note: We always include and link against Tracy but it is only enabled, if we set the TRACY_ENABLE cmake option
-# to ON, before including the respective subdirectory
-set(TRACY_ENABLE ${tracy} CACHE BOOL "" FORCE)
-set(TRACY_ON_DEMAND ON CACHE BOOL "" FORCE)
-# We force to build Tracy as a static library in order to not create a dependency on the respective .so file
-# (can cause issues for packagers as that dependency is retained even though Tracy is disabled)
-set(PREV_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})
-set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
-add_subdirectory("${3RDPARTY_DIR}/tracy" "tracy" EXCLUDE_FROM_ALL)
-disable_warnings_for_all_targets_in("${3RDPARTY_DIR}/tracy")
-message(STATUS "Tracy: ${TRACY_ENABLE}")
-
-# Restore whatever BUILD_SHARED_LIBS was set to before
-set(BUILD_SHARED_LIBS ${PREV_BUILD_SHARED_LIBS} CACHE BOOL "" FORCE)
-
-target_link_libraries(shared PUBLIC Tracy::TracyClient)
-
# Add the GSL
if(bundled-gsl)
add_subdirectory("${3RDPARTY_DIR}/gsl" "${CMAKE_CURRENT_BINARY_DIR}/gsl" EXCLUDE_FROM_ALL)
Index: mumble-1.5.735/src/murmur/AudioReceiverBuffer.cpp
===================================================================
--- mumble-1.5.735.orig/src/murmur/AudioReceiverBuffer.cpp
+++ mumble-1.5.735/src/murmur/AudioReceiverBuffer.cpp
@@ -8,8 +8,6 @@
#include <algorithm>
#include <cassert>
-#include <tracy/Tracy.hpp>
-
AudioReceiver::AudioReceiver(ServerUser &receiver, Mumble::Protocol::audio_context_t context,
const VolumeAdjustment &volumeAdjustment)
: m_receiver(receiver), m_context(context), m_volumeAdjustment(volumeAdjustment) {
@@ -67,8 +65,6 @@ void AudioReceiverBuffer::addReceiver(co
void AudioReceiverBuffer::forceAddReceiver(ServerUser &receiver, Mumble::Protocol::audio_context_t context,
bool includePositionalData, const VolumeAdjustment &volumeAdjustment) {
- ZoneScoped;
-
std::vector< AudioReceiver > &receiverList = includePositionalData ? m_positionalReceivers : m_regularReceivers;
std::unordered_map< const ServerUser *, std::size_t > &userEntryIndices =
includePositionalData ? m_positionalReceiverIndices : m_regularReceiverIndices;
@@ -93,8 +89,6 @@ void AudioReceiverBuffer::forceAddReceiv
}
void AudioReceiverBuffer::preprocessBuffer() {
- ZoneScoped;
-
preprocessBuffer(m_regularReceivers);
preprocessBuffer(m_positionalReceivers);
}
@@ -115,8 +109,6 @@ std::vector< AudioReceiver > &AudioRecei
}
void AudioReceiverBuffer::preprocessBuffer(std::vector< AudioReceiver > &receiverList) {
- ZoneScoped;
-
#ifndef NDEBUG
// Sort the list such that entries with same receiver are next to each other
std::sort(receiverList.begin(), receiverList.end(), [](const AudioReceiver &lhs, const AudioReceiver &rhs) {
Index: mumble-1.5.735/src/murmur/Server.cpp
===================================================================
--- mumble-1.5.735.orig/src/murmur/Server.cpp
+++ mumble-1.5.735/src/murmur/Server.cpp
@@ -37,10 +37,6 @@
#include <boost/bind/bind.hpp>
-#include "TracyConstants.h"
-#include <tracy/Tracy.hpp>
-#include <tracy/TracyC.h>
-
#include <algorithm>
#include <cassert>
#include <vector>
@@ -78,8 +74,6 @@ QSslSocket *SslServer::nextPendingSSLCon
Server::Server(int snum, QObject *p) : QThread(p) {
- tracy::SetThreadName("mumble-server");
-
bValid = true;
iServerNum = snum;
#ifdef USE_ZEROCONF
@@ -734,8 +728,6 @@ void Server::udpActivated(int socket) {
}
void Server::run() {
- tracy::SetThreadName("Audio");
-
qint32 len;
#if defined(__LP64__)
unsigned char encbuff[Mumble::Protocol::MAX_UDP_PACKET_SIZE + 8];
@@ -779,8 +771,6 @@ void Server::run() {
++nfds;
while (bRunning) {
- FrameMarkNamed(TracyConstants::UDP_FRAME);
-
#ifdef Q_OS_UNIX
int pret = poll(fds.data(), nfds, -1);
if (pret <= 0) {
@@ -854,8 +844,6 @@ void Server::run() {
#endif
// Capture only the processing without the polling
- ZoneScopedN(TracyConstants::UDP_PACKET_PROCESSING_ZONE);
-
if (len == 0) {
break;
} else if (len == SOCKET_ERROR) {
@@ -890,8 +878,6 @@ void Server::run() {
&& m_udpDecoder.decodePing(
gsl::span< Mumble::Protocol::byte >(encrypt, static_cast< std::size_t >(len)))
&& m_udpDecoder.getMessageType() == Mumble::Protocol::UDPMessageType::Ping) {
- ZoneScopedN(TracyConstants::PING_PROCESSING_ZONE);
-
gsl::span< const Mumble::Protocol::byte > encodedPing =
handlePing(m_udpDecoder, m_udpPingEncoder, true);
@@ -922,8 +908,6 @@ void Server::run() {
continue;
}
} else {
- ZoneScopedN(TracyConstants::DECRYPT_UNKNOWN_PEER_ZONE);
-
// Unknown peer
foreach (ServerUser *usr, qhHostUsers.value(ha)) {
if (checkDecrypt(
@@ -977,8 +961,6 @@ void Server::run() {
break;
}
case Mumble::Protocol::UDPMessageType::Ping: {
- ZoneScopedN(TracyConstants::UDP_PING_PROCESSING_ZONE);
-
Mumble::Protocol::PingData pingData = m_udpDecoder.getPingData();
if (!pingData.requestAdditionalInformation && !pingData.containsAdditionalInformation) {
// At this point here, we only want to handle connectivity pings
@@ -1008,8 +990,6 @@ void Server::run() {
}
bool Server::checkDecrypt(ServerUser *u, const unsigned char *encrypt, unsigned char *plain, unsigned int len) {
- ZoneScoped;
-
QMutexLocker l(&u->qmCrypt);
if (u->csCrypt->isValid() && u->csCrypt->decrypt(encrypt, plain, len)) {
@@ -1026,8 +1006,6 @@ bool Server::checkDecrypt(ServerUser *u,
}
void Server::sendMessage(ServerUser &u, const unsigned char *data, int len, QByteArray &cache, bool force) {
- ZoneScoped;
-
#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
if ((u.aiUdpFlag.loadRelaxed() == 1 || force) && (u.sUdpSocket != INVALID_SOCKET)) {
#else
@@ -1140,8 +1118,6 @@ void Server::addListener(QHash< ServerUs
void Server::processMsg(ServerUser *u, Mumble::Protocol::AudioData audioData, AudioReceiverBuffer &buffer,
Mumble::Protocol::UDPAudioEncoder< Mumble::Protocol::Role::Server > &encoder) {
- ZoneScoped;
-
// Note that in this function we never have to acquire a read-lock on qrwlVoiceThread
// as all places that call this function will hold that lock at the point of calling
// this function.
@@ -1221,15 +1197,11 @@ void Server::processMsg(ServerUser *u, M
QHash< ServerUser *, VolumeAdjustment > cachedListeners;
if (u->qmTargetCache.contains(static_cast< int >(audioData.targetOrContext))) {
- ZoneScopedN(TracyConstants::AUDIO_WHISPER_CACHE_STORE);
-
const WhisperTargetCache &cache = u->qmTargetCache.value(static_cast< int >(audioData.targetOrContext));
channel = cache.channelTargets;
direct = cache.directTargets;
cachedListeners = cache.listeningTargets;
} else {
- ZoneScopedN(TracyConstants::AUDIO_WHISPER_CACHE_CREATE);
-
const unsigned int uiSession = u->uiSession;
qrwlVoiceThread.unlock();
qrwlVoiceThread.lockForWrite();
@@ -1275,8 +1247,6 @@ void Server::processMsg(ServerUser *u, M
}
}
- ZoneNamedN(__tracy_scoped_zone2, TracyConstants::AUDIO_SENDOUT_ZONE, true);
-
buffer.preprocessBuffer();
bool isFirstIteration = true;
@@ -1300,8 +1270,6 @@ void Server::processMsg(ServerUser *u, M
if (isFirstIteration
|| !Mumble::Protocol::protocolVersionsAreCompatible(encoder.getProtocolVersion(),
currentRange.begin->getReceiver().m_version)) {
- ZoneScopedN(TracyConstants::AUDIO_ENCODE);
-
encoder.setProtocolVersion(currentRange.begin->getReceiver().m_version);
// We have to re-encode the "fixed" part of the audio message
@@ -1318,9 +1286,7 @@ void Server::processMsg(ServerUser *u, M
audioData.volumeAdjustment = currentRange.begin->getVolumeAdjustment();
// Update data
- TracyCZoneN(__tracy_zone, TracyConstants::AUDIO_UPDATE, true);
gsl::span< const Mumble::Protocol::byte > encodedPacket = encoder.updateAudioPacket(audioData);
- TracyCZoneEnd(__tracy_zone);
// Clear TCP cache
tcpCache.clear();
@@ -1683,8 +1649,6 @@ void Server::connectionClosed(QAbstractS
}
void Server::message(Mumble::Protocol::TCPMessageType type, const QByteArray &qbaMsg, ServerUser *u) {
- ZoneScopedN(TracyConstants::TCP_PACKET_PROCESSING_ZONE);
-
if (!u) {
u = static_cast< ServerUser * >(sender());
}
@@ -2354,8 +2318,6 @@ bool Server::canNest(Channel *newParent,
}
WhisperTargetCache Server::createWhisperTargetCacheFor(ServerUser &speaker, const WhisperTarget &target) {
- ZoneScoped;
-
QMutexLocker qml(&qmCache);
WhisperTargetCache cache;
Index: mumble-1.5.735/src/murmur/AudioReceiverBuffer.h
===================================================================
--- mumble-1.5.735.orig/src/murmur/AudioReceiverBuffer.h
+++ mumble-1.5.735/src/murmur/AudioReceiverBuffer.h
@@ -14,8 +14,6 @@
#include <unordered_map>
#include <vector>
-#include <tracy/Tracy.hpp>
-
class AudioReceiver {
public:
AudioReceiver(ServerUser &receiver, Mumble::Protocol::audio_context_t context,
@@ -74,8 +72,6 @@ public:
constexpr static const int maxDecibelDiff = 5;
template< typename Iterator > static ReceiverRange< Iterator > getReceiverRange(Iterator begin, Iterator end) {
- ZoneScoped;
-
ReceiverRange< Iterator > range;
range.begin = begin;
Index: mumble-1.5.735/src/murmur/TracyConstants.h
===================================================================
--- mumble-1.5.735.orig/src/murmur/TracyConstants.h
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2021-2023 The Mumble Developers. All rights reserved.
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file at the root of the
-// Mumble source tree or at <https://www.mumble.info/LICENSE>.
-
-#ifndef MUMBLE_MURMUR_TRACYCONSTANTS_H_
-#define MUMBLE_MURMUR_TRACYCONSTANTS_H_
-
-namespace TracyConstants {
-static constexpr const char *UDP_PACKET_PROCESSING_ZONE = "udp_packet_processing";
-static constexpr const char *TCP_PACKET_PROCESSING_ZONE = "tcp_packet_processing";
-static constexpr const char *PING_PROCESSING_ZONE = "tcp_ping";
-static constexpr const char *UDP_PING_PROCESSING_ZONE = "udp_ping";
-static constexpr const char *DECRYPT_UNKNOWN_PEER_ZONE = "decrypt_unknown_peer";
-
-static constexpr const char *UDP_FRAME = "udp_frame";
-
-static constexpr const char *AUDIO_SENDOUT_ZONE = "audio_send_out";
-static constexpr const char *AUDIO_ENCODE = "audio_encode";
-static constexpr const char *AUDIO_UPDATE = "audio_update";
-static constexpr const char *AUDIO_WHISPER_CACHE_STORE = "audio_whisper_cache_restore";
-static constexpr const char *AUDIO_WHISPER_CACHE_CREATE = "audio_whisper_cache_create";
-} // namespace TracyConstants
-
-#endif // MUMBLE_MURMUR_TRACYCONSTANTS_H_
Index: mumble-1.5.735/docs/dev/Profiling.md
===================================================================
--- mumble-1.5.735.orig/docs/dev/Profiling.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# Profiling
-
-Mumble comes with built-in support for the [Tracy](https://github.com/wolfpld/tracy) profiler. In order to activate the baked-in instrumentation, use
-`-Dtracy=ON` when compiling Mumble. When using that option, you should see a line in the cmake output that says `TRACY_ENABLE: ON`.
-
-
-## Instrumented parts
-
-Currently only the Mumble server is instrumented (can be profiled using Tracy).
-
-
-## Instructions
-
-Once you have built Mumble with `-Dtracy=ON`, Mumble will act as a Tracy _client_ (in Tracy terms) which means that you can connect any Tracy _server_
-to it. Most commonly, you'll want to use either the `profiler` or the `capture`. Both of these programs live in the tracy submodule
-(`3rdparty/tracy/`) and can be built from there. For build instructions, see the
-[Tracy Manual](https://github.com/wolfpld/tracy/releases/latest/download/tracy.pdf).
-
-The `profiler` is an interactive GUI that can be attached to a currently running Mumble instance to see the profiling data (more or less) in realtime
-or you can open a previously recorded trace for analysis. Note that it is also possible to connect to a Mumble instance on a remote machine using this
-tool. All that is required is that it is able to establish a TCP connection to the target machine.
-
-The `capture` tool has to be run on the same machine as the Mumble instance that shall be profiled. It is a command-line tool that will attach to a
-running Tracy _client_ as soon as it is started. It will dump the captured data directly into a file, that can later on be opened in `profiler` for
-further analysis. This tool is recommended when you want to profile over a longer period of time or you don't want to add the burden of sending all
-profiling data out through the network, while Mumble is running.
-
-
-## Notes
-
-- Profiling should generally be done in `Release` mode in order to obtain reasonable data
-- If you are having issues connecting your Tracy _server_ to the Mumble server, you should not let it fork. The default behavior in release
- mode is to fork, but you can change that by using the `-fg` parameter when starting the server.
Index: mumble-1.5.735/docs/dev/build-instructions/cmake_options.md
===================================================================
--- mumble-1.5.735.orig/docs/dev/build-instructions/cmake_options.md
+++ mumble-1.5.735/docs/dev/build-instructions/cmake_options.md
@@ -224,11 +224,6 @@ Build binaries in a way that allows easi
Build tests.
(Default: ${packaging})
-### tracy
-
-Enable the tracy profiler.
-(Default: OFF)
-
### translations
Include languages other than English.
Index: mumble-1.5.735/src/murmur/Messages.cpp
===================================================================
--- mumble-1.5.735.orig/src/murmur/Messages.cpp
+++ mumble-1.5.735/src/murmur/Messages.cpp
@@ -26,8 +26,6 @@
#include <cassert>
#include <unordered_map>
-#include <tracy/Tracy.hpp>
-
#define RATELIMIT(user) \
if (user->leakyBucket.ratelimit(1)) { \
return; \
@@ -163,8 +161,6 @@ bool isChannelEnterRestricted(Channel *c
}
void Server::msgAuthenticate(ServerUser *uSource, MumbleProto::Authenticate &msg) {
- ZoneScoped;
-
if (uSource->sState == ServerUser::Authenticated && (msg.tokens_size() > 0 || !uSource->qslAccessTokens.empty())) {
// Process a change in access tokens for already authenticated users
QStringList qsl;
@@ -651,8 +647,6 @@ void Server::msgAuthenticate(ServerUser
}
void Server::msgBanList(ServerUser *uSource, MumbleProto::BanList &msg) {
- ZoneScoped;
-
MSG_SETUP(ServerUser::Authenticated);
QSet< Ban > previousBans, newBans;
@@ -733,8 +727,6 @@ void Server::msgUDPTunnel(ServerUser *,
}
void Server::msgUserState(ServerUser *uSource, MumbleProto::UserState &msg) {
- ZoneScoped;
-
MSG_SETUP(ServerUser::Authenticated);
VICTIM_SETUP;
@@ -1193,8 +1185,6 @@ void Server::msgUserState(ServerUser *uS
}
void Server::msgUserRemove(ServerUser *uSource, MumbleProto::UserRemove &msg) {
- ZoneScoped;
-
MSG_SETUP(ServerUser::Authenticated);
VICTIM_SETUP;
@@ -1232,8 +1222,6 @@ void Server::msgUserRemove(ServerUser *u
}
void Server::msgChannelState(ServerUser *uSource, MumbleProto::ChannelState &msg) {
- ZoneScoped;
-
MSG_SETUP(ServerUser::Authenticated);
Channel *c = nullptr;
@@ -1518,8 +1506,6 @@ void Server::msgChannelState(ServerUser
}
void Server::msgChannelRemove(ServerUser *uSource, MumbleProto::ChannelRemove &msg) {
- ZoneScoped;
-
MSG_SETUP(ServerUser::Authenticated);
Channel *c = qhChannels.value(msg.channel_id());
@@ -1537,8 +1523,6 @@ void Server::msgChannelRemove(ServerUser
}
void Server::msgTextMessage(ServerUser *uSource, MumbleProto::TextMessage &msg) {
- ZoneScoped;
-
MSG_SETUP(ServerUser::Authenticated);
QMutexLocker qml(&qmCache);
@@ -1748,8 +1732,6 @@ void logACLs(Server *server, const Chann
void Server::msgACL(ServerUser *uSource, MumbleProto::ACL &msg) {
- ZoneScoped;
-
MSG_SETUP(ServerUser::Authenticated);
Channel *c = qhChannels.value(msg.channel_id());
@@ -1961,8 +1943,6 @@ void Server::msgACL(ServerUser *uSource,
}
void Server::msgQueryUsers(ServerUser *uSource, MumbleProto::QueryUsers &msg) {
- ZoneScoped;
-
MSG_SETUP(ServerUser::Authenticated);
MumbleProto::QueryUsers reply;
@@ -1990,8 +1970,6 @@ void Server::msgQueryUsers(ServerUser *u
}
void Server::msgPing(ServerUser *uSource, MumbleProto::Ping &msg) {
- ZoneScoped;
-
MSG_SETUP_NO_UNIDLE(ServerUser::Authenticated);
QMutexLocker l(&uSource->qmCrypt);
@@ -2021,8 +1999,6 @@ void Server::msgPing(ServerUser *uSource
}
void Server::msgCryptSetup(ServerUser *uSource, MumbleProto::CryptSetup &msg) {
- ZoneScoped;
-
MSG_SETUP_NO_UNIDLE(ServerUser::Authenticated);
QMutexLocker l(&uSource->qmCrypt);
@@ -2044,8 +2020,6 @@ void Server::msgContextActionModify(Serv
}
void Server::msgContextAction(ServerUser *uSource, MumbleProto::ContextAction &msg) {
- ZoneScoped;
-
MSG_SETUP(ServerUser::Authenticated);
unsigned int session = msg.has_session() ? msg.session() : 0;
@@ -2072,8 +2046,6 @@ QString convertWithSizeRestriction(const
}
void Server::msgVersion(ServerUser *uSource, MumbleProto::Version &msg) {
- ZoneScoped;
-
RATELIMIT(uSource);
uSource->m_version = MumbleProto::getVersion(msg);
@@ -2096,8 +2068,6 @@ void Server::msgVersion(ServerUser *uSou
}
void Server::msgUserList(ServerUser *uSource, MumbleProto::UserList &msg) {
- ZoneScoped;
-
MSG_SETUP(ServerUser::Authenticated);
// The register permission is required on the root channel to be allowed to
@@ -2173,8 +2143,6 @@ void Server::msgUserList(ServerUser *uSo
}
void Server::msgVoiceTarget(ServerUser *uSource, MumbleProto::VoiceTarget &msg) {
- ZoneScoped;
-
MSG_SETUP_NO_UNIDLE(ServerUser::Authenticated);
int target = static_cast< int >(msg.id());
@@ -2222,8 +2190,6 @@ void Server::msgVoiceTarget(ServerUser *
}
void Server::msgPermissionQuery(ServerUser *uSource, MumbleProto::PermissionQuery &msg) {
- ZoneScoped;
-
MSG_SETUP_NO_UNIDLE(ServerUser::Authenticated);
Channel *c = qhChannels.value(msg.channel_id());
@@ -2237,8 +2203,6 @@ void Server::msgCodecVersion(ServerUser
}
void Server::msgUserStats(ServerUser *uSource, MumbleProto::UserStats &msg) {
- ZoneScoped;
-
MSG_SETUP_NO_UNIDLE(ServerUser::Authenticated);
VICTIM_SETUP;
const BandwidthRecord &bwr = pDstServerUser->bwr;
@@ -2326,8 +2290,6 @@ void Server::msgUserStats(ServerUser *uS
}
void Server::msgRequestBlob(ServerUser *uSource, MumbleProto::RequestBlob &msg) {
- ZoneScoped;
-
MSG_SETUP_NO_UNIDLE(ServerUser::Authenticated);
int ntextures = msg.session_texture_size();
@@ -2378,8 +2340,6 @@ void Server::msgSuggestConfig(ServerUser
}
void Server::msgPluginDataTransmission(ServerUser *sender, MumbleProto::PluginDataTransmission &msg) {
- ZoneScoped;
-
// A client's plugin has sent us a message that we shall delegate to its receivers
if (sender->m_pluginMessageBucket.ratelimit(1)) {

View File

@@ -1,3 +1,164 @@
-------------------------------------------------------------------
Fri Jul 18 05:14:45 UTC 2025 - Carsten Ziepke <kieltux@gmail.com>
- Use SHARED_LINKER_FLAGS="-lGL" also for Leap 16, fixes building
-------------------------------------------------------------------
Thu Jun 26 13:40:44 UTC 2025 - Andreas Stieger <andreas.stieger@gmx.de>
- Fix build with gcc15 (boo#1245428):
* add mumble-1.5.735-fix-gcc15.patch
* disable warnings-as-errors, see PR#6517 upstream
-------------------------------------------------------------------
Sun Dec 8 19:20:50 UTC 2024 - Andreas Stieger <andreas.stieger@gmx.de>
- Update to version 1.5.735:
* TRANSLATION: Backport translations
* CI(appveyor): Workaround for FXC failing to run with error C0000139
* DOCS(server): Add Documentation key to mumble-server unit
* FIX(cmake): Ensure the client installer target is built after its dependencies
* FIX(cmake): Don't set WORKING_DIRECTORY for ExternalProject_Add()
* TRANSLATION: Backport translations
* FIX(client): Fix AudioWizard echo cancellation checkbox
* FIX(client): Use correct off audio cue
* FIX(plugins): Load correct pages for modules
* FIX(client): Limit size of the chat bar
* FIX(client): Save local volume adjustment when clicking slider bar
* FIX(client): Prevent sending plain text on fast CTRL+V + ENTER
* TRANSLATION: Update translation files
* FIX(client): Replace dead URL in Certificate Wizard
* TRANSLATION: Update translation files
* FIX(client): Remove mention of the Mumble wiki
* MAINT: Remove mentions of the Mumble wiki
* FIX(server): Change server thread name to "mumble-server" instead of "Main"
* FIX(client, server): Remove redundant OpenSSL locking callback check
* BUILD: Fix compiler warnings on 32bit architectures
* FIX(client): Fix crash on mono pos. audio warning from audio thread
* BUILD: Disable MSVC 17.8 warning for stdext::checked_array_iterator
* CI(cirrus): Disable warnings-as-errors for the 1.5.x branch
* CI(cirrus): Install "ice37" package instead of "ice"
* FIX(client, plugins): Wrong sample count in plugin callback
* MAINT: Update backport config
* MAINT: Only run backport action when PR is merged
* FIX(client): Do not spam log when adjusting volume of clients without certificate
* FIX(client): Update tab order in AudioInput.ui
* BUILD: Use correct type for num locks
* FIX(client): Do not duplicate group name in ACLEditor combobox
* FIX(a11y): In ACLEditor make space popup the combobox list
* FIX(client): In ACLEditor apply changes to group or user on lost focus
* FIX(server): Allow to move temporary channels provided sufficient permissions
* REFAC(client): Use ellipsis character ("…") instead of three dots ("...") in elideText
* FIX(client): Remove placeholder wrapping in ChatBar
* FIX(client): Improve handling of the GlobalShortcutButtons dialog
* FIX(client): Correctly remember muted state across restarts
* FIX(client): Capture "this" explicitly in lambdas
* FIX(client): Crash when loading settings
-------------------------------------------------------------------
Mon May 20 07:04:42 UTC 2024 - Andreas Stieger <andreas.stieger@gmx.de>
- update to 1.5.634:
* first stable release in the 1.5.x series
* flag icons replaced with an MIT licensed version
- replace mumble-cxx17.patch with a cmake option
- drop mumble-1.5.629-The-OCB-design-is-in-the-public-domain.patch
now upstream
-------------------------------------------------------------------
Thu Apr 25 20:44:16 UTC 2024 - Andreas Stieger <andreas.stieger@gmx.de>
- enable and fix tests: TestSettingsJSONSerialization fails loading
qt xcb in headless
-------------------------------------------------------------------
Tue Apr 23 23:11:54 UTC 2024 - Andreas Stieger <andreas.stieger@gmx.de>
- Address licensedigger concerns:
* drop qttranslations from tarball, adjust licenses.patch
* The OCB design is in the public domain
add mumble-1.5.629-The-OCB-design-is-in-the-public-domain.patch
* drop unneeded installer files from tarball
* unbundle audio back-end headers from tarball:
pulseadio, jack, portadio, pipewire
add mumble-1.5.629-unbundle-audio-backends.patch
- change from tarball to obscpio and build-time service
-------------------------------------------------------------------
Sat Apr 20 15:26:53 UTC 2024 - Andreas Stieger <andreas.stieger@gmx.de>
- switch to source service generated tarball that has a number of
unused, bundled libraries removed. Patch the sources to not
require that they are present - add licenses.patch
-------------------------------------------------------------------
Sat Apr 20 11:07:09 UTC 2024 - Andreas Stieger <andreas.stieger@gmx.de>
- mumble 1.5.629 (RC3)
* ReNameNoise as a replacement for RNNoise
* Accessibility across the entire application
* Add ability to record MP3s
* UI updates
* bug fixes
- packaging changes:
* use system libraries where available and clean up dependencies
* move appdata to client package
* remove usage of tracy - mumble-unbundle-tracy.patch
- drop patches:
* fix-pkg_get_variable.patch - reworked upstream
* mumble-1.5.517-qsystemlocaledate.patch - not needed
* reproducible.patch - merged
* mumble-leap-cxx17-filesystem.patch - not needed
-------------------------------------------------------------------
Thu Feb 22 12:38:25 UTC 2024 - pgajdos@suse.com
- Use %patch -P N instead of deprecated %patchN.
-------------------------------------------------------------------
Thu Jan 25 06:45:30 UTC 2024 - Bernhard Wiedemann <bwiedemann@suse.com>
- Add reproducible.patch to sort the file list (boo#1041090)
-------------------------------------------------------------------
Thu Jan 18 21:07:38 UTC 2024 - Andreas Stieger <andreas.stieger@gmx.de>
- Fix build with Qt 5.15 / OpenGL (boo#1218944)
- Fix mumble-server.service (gh#mumble-voip/mumble/6273)
-------------------------------------------------------------------
Thu Nov 23 19:14:57 UTC 2023 - Andreas Stieger <andreas.stieger@gmx.de>
- enable pulseaudio support boo#1217419
-------------------------------------------------------------------
Sat Oct 28 12:38:53 UTC 2023 - Andreas Stieger <andreas.stieger@gmx.de>
- simplify spec file and package license file
-------------------------------------------------------------------
Fri Oct 27 16:14:04 UTC 2023 - Marguerite Su <i@marguerite.su>
- fix FTBFS (boo#1215996)
* needs to build with CXX17 standard
* QSystemLocaleDate is deprecated
* <filesystem> sometimes must be <experimental/filesystem>
-------------------------------------------------------------------
Mon Apr 17 13:15:06 UTC 2023 - Marcel Kuehlhorn <tux93@opensuse.org>
- Remove DBus service (boo#1209338)
-------------------------------------------------------------------
Mon Mar 6 14:57:20 UTC 2023 - Marcel Kuehlhorn <tux93@opensuse.org>
- Update to 1.5.517
- Add fix-pkg_get_variable.patch to fix CMake not using the correct
pkgconf variables, also needs BuildRequires: systemd
- Update fix-64bit-only-plugins.patch
- Use systemd-sysusers for user creation when available
- Update keyring
-------------------------------------------------------------------
Wed Sep 21 18:14:40 UTC 2022 - Carsten Ziepke <kieltux@gmail.com>
@@ -166,7 +327,7 @@ Sat Jul 11 18:06:46 UTC 2020 - Andreas Stieger <andreas.stieger@gmx.de>
- fetch upstream release signing key for 2020
-------------------------------------------------------------------
Fri Jun 19 20:00:00 2020 UTC - Markus Ebner <info@ebner-markus.de>
Fri Jun 19 20:00:00 UTC 2020 - Markus Ebner <info@ebner-markus.de>
- Update to upstream version 1.3.1
- Security

View File

@@ -1,14 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEYc+ZpRYJKwYBBAHaRw8BAQdAQ2CMVy22HgodygMg6PdMKN/k9mmgBnwk8PYh
tbFQ8H20T011bWJsZSBBdXRvbWF0aWMgQnVpbGQgSW5mcmFzdHJ1Y3R1cmUgMjAy
MiA8bXVtYmxlLWF1dG8tYnVpbGQtMjAyMkBtdW1ibGUuaW5mbz6IlgQTFggAPhYh
BB7eviqTy5f6mQPVLiX2PGYkXfxgBQJhz5mlAhsDBQkB4oUABQsJCAcCBhUKCQgL
AgQWAgMBAh4BAheAAAoJECX2PGYkXfxg9tQBAONPZDuPtEPvORzSCj+GSrJuUQs9
otoKM4Kaw95gicqeAP9gZPQiMEtLdaFSCTrHyX81ThlFc743TfV0rnQjStssAbg4
BGHPmaUSCisGAQQBl1UBBQEBB0CqFAKH11vICUmxDUihx1EQe/knrhAEhKbTGvkw
yuP/YAMBCAeIfgQYFggAJhYhBB7eviqTy5f6mQPVLiX2PGYkXfxgBQJhz5mlAhsM
BQkB4oUAAAoJECX2PGYkXfxgvEMBAKEuOsFq6DXryTfK0JmigF7sZPx9o+ADmior
3CSS+OZZAP41mncTcTdKkCirrjdFX2mm3W1Pb0tjx07HnxUMUEo1Dw==
=CCBp
-----END PGP PUBLIC KEY BLOCK-----

4
mumble.obsinfo Normal file
View File

@@ -0,0 +1,4 @@
name: mumble
version: 1.5.735
mtime: 1733494911
commit: f9f2d1b63b15883a470d1abe184342fe509b6dfb

View File

@@ -1,7 +1,9 @@
#
# spec file for package mumble
#
# Copyright (c) 2022 SUSE LLC
# Copyright (c) 2024 SUSE LLC
# Copyright (c) 2025 Andreas Stieger <Andreas.Stieger@gmx.de>
# Copyright (c) 2024 Tobias Burnus <burnus@gmx.de>
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -16,84 +18,83 @@
#
# requires libzeroc-ice, not available yet
%bcond_without ice
%bcond_without jack
%bcond_without pulseaudio
%bcond_without system_opus
%bcond_without system_speex
# mumble must be able to talk to other clients which may use
# different versions of celt. Since each celt release is
# incompatible to each other mumble bundles some specific
# versions.
%bcond_with system_celt
# on Tumbleweed with gcc15, TestSSLLocks::stress() time out on aarch64 and i586
%ifarch x86_64
%bcond_without tests
%else
%bcond_with tests
%endif
%bcond_without server
Name: mumble
Version: 1.4.287
Version: 1.5.735
Release: 0
Summary: Voice Communication Client for Gamers
# For Legal: the bundled opus and speex subdirectories are not built.
# Most files are BSD-3-Clause, celt also contains BSD-2-Clause files.
License: BSD-2-Clause AND BSD-3-Clause
# Most files are BSD-3-Clause
# 3rdparty/arc4random/LICENSE: MIT
# 3rdparty/SPSCQueue: MIT
# 3rdparty/flag-icons: MIT
License: BSD-2-Clause AND BSD-3-Clause AND MIT
Group: Productivity/Multimedia/Sound/Utilities
URL: http://mumble.sourceforge.net/
Source: https://github.com/mumble-voip/%{name}/releases/download/v%{version}/%{name}-%{version}.tar.gz
Source1: https://github.com/mumble-voip/%{name}/releases/download/v%{version}/%{name}-%{version}.tar.gz.sig
Source3: murmur.apparmor
# http://mumble.info/gpg/gpg.txt
Source4: https://raw.githubusercontent.com/mumble-voip/mumble-gpg-signatures/master/mumble-auto-build-2022.asc#/%{name}.keyring
Source5: mumble-server.service
URL: https://www.mumble.info/
Source: %{name}-%{version}.tar.xz
Source6: baselibs.conf
# PATCH-FIX-UPSTREAM fix-64bit-only-plugins.patch -- Requires 64bit memory alignment ( https://github.com/mumble-voip/mumble/issues/5849 )
Patch0: fix-64bit-only-plugins.patch
BuildRequires: cmake >= 3.15
BuildRequires: gcc-c++
# PATCH-FIX-UPSTREAM mumble-1.5.735-fix-gcc15.patch -- fix build with gcc15 https://github.com/mumble-voip/mumble/pull/6775
Patch1: mumble-1.5.735-fix-gcc15.patch
# Patches related to dependency unbundling
Patch100: licenses.patch
Patch101: mumble-unbundle-tracy.patch
Patch103: mumble-1.5.629-unbundle-audio-backends.patch
BuildRequires: c++_compiler
BuildRequires: cmake >= 3.20
BuildRequires: libboost_headers-devel
BuildRequires: libcap-devel
BuildRequires: libogg-devel
BuildRequires: libsndfile-devel
BuildRequires: libspeechd-devel
BuildRequires: pkgconfig
BuildRequires: protobuf-devel
BuildRequires: update-desktop-files
BuildRequires: cmake(Microsoft.GSL)
BuildRequires: cmake(PocoXML)
BuildRequires: cmake(PocoZip)
BuildRequires: cmake(Qt5Concurrent)
BuildRequires: cmake(Qt5Core)
BuildRequires: cmake(Qt5DBus)
BuildRequires: cmake(Qt5LinguistTools)
BuildRequires: pkgconfig(Qt5Concurrent)
BuildRequires: pkgconfig(Qt5DBus)
BuildRequires: pkgconfig(Qt5Gui)
BuildRequires: pkgconfig(Qt5Network)
BuildRequires: pkgconfig(Qt5Sql)
BuildRequires: pkgconfig(Qt5Svg)
BuildRequires: pkgconfig(Qt5TextToSpeech)
BuildRequires: pkgconfig(Qt5Widgets)
BuildRequires: pkgconfig(Qt5Xml)
BuildRequires: cmake(Qt5Network)
BuildRequires: cmake(Qt5Sql)
BuildRequires: cmake(Qt5Svg)
BuildRequires: cmake(Qt5TextToSpeech)
BuildRequires: cmake(Qt5Widgets)
BuildRequires: cmake(Qt5Xml)
BuildRequires: pkgconfig(alsa)
BuildRequires: pkgconfig(avahi-compat-libdns_sd)
BuildRequires: pkgconfig(gl)
BuildRequires: pkgconfig(libopenssl)
BuildRequires: pkgconfig(xi)
Requires: lsb-release
%if 0%{?sle_version} >= 150300 && 0%{?is_opensuse}
BuildRequires: pcre2-devel
%endif
%if %{with system_celt}
BuildRequires: libcelt-devel
Requires: libcelt0 > 0.7.0
%endif
%if %{with system_opus}
BuildRequires: pkgconfig(jack)
BuildRequires: pkgconfig(libcrypto)
BuildRequires: pkgconfig(libpcre2-posix)
BuildRequires: pkgconfig(libpipewire-0.3)
BuildRequires: pkgconfig(libpulse)
BuildRequires: pkgconfig(libssl)
BuildRequires: pkgconfig(nlohmann_json)
BuildRequires: pkgconfig(opus)
%endif
%if %{with system_speex}
BuildRequires: pkgconfig(speex)
BuildRequires: pkgconfig(portaudio-2.0)
BuildRequires: pkgconfig(speech-dispatcher)
BuildRequires: pkgconfig(speexdsp)
BuildRequires: pkgconfig(xext)
BuildRequires: pkgconfig(xi)
BuildRequires: pkgconfig(zlib)
%if %{with tests}
BuildRequires: cmake(Qt5Test)
%endif
%if %{with ice}
BuildRequires: pkgconfig(ice)
%if %{with server}
BuildRequires: pkgconfig(libcap)
%endif
%if %{with pulseaudio}
BuildRequires: pulseaudio-devel
%if 0%{?suse_version} <= 1550
BuildRequires: protobuf-devel
%else
BuildRequires: cmake(protobuf)
%endif
%if %{with jack}
BuildRequires: libjack-devel
%if 0%{?suse_version} > 1600
BuildRequires: cmake(SndFile)
%else
BuildRequires: libsndfile-devel
%endif
%ifarch x86_64
BuildRequires: gcc-c++-32bit
@@ -104,12 +105,6 @@ Conflicts: %{name}-32bit < %{version}
Recommends: %{name}-64bit
Conflicts: %{name}-64bit < %{version}
%endif
#
%if 0%{?snapshot:1}
Conflicts: mumble < %{version}
Provides: mumble = %{version}
%endif
#
%description
Low-latency, high-quality voice communication for gamers. Includes game
@@ -117,119 +112,135 @@ linking, so voice from other players comes from the direction of their
characters, and has echo cancellation so the sound from your loudspeakers
won't be audible to other players.
%if %{with server}
%package server
Summary: Voice Communication Server for Gamers
Group: Productivity/Multimedia/Sound/Utilities
Requires: lsb-release
Requires(pre): %{_sbindir}/useradd
Recommends: libQt5Sql5-mysql
Recommends: libQt5Sql5-postgresql
Recommends: libQt5Sql5-sqlite
%{?systemd_requires}
%if 0%{?snapshot:1}
Conflicts: mumble-server < %{version}
Provides: mumble-server = %{version}
%endif
%description server
Low-latency, high-quality voice communication for gamers. Includes game
linking, so voice from other players comes from the direction of their
characters, and has echo cancellation so the sound from your loudspeakers
won't be audible to other players.
%endif
%prep
%autosetup -p1 -n %{name}-%{version}.src
%autosetup -p1
%build
%cmake \
-Dupdate:BOOL=OFF \
-Doverlay-xcompile:BOOL=OFF \
-Dsymbols:BOOL=ON \
-Dcrash-report:BOOL=OFF \
-DMUMBLE_INSTALL_PLUGINDIR=%{_libdir}/mumble/plugins \
-DCMAKE_MODULE_LINKER_FLAGS="" \
-DCMAKE_SHARED_LINKER_FLAGS="" \
%if 1
-Dice=OFF \
%if %{with server}
-Dserver:BOOL=ON \
-Dice:BOOL=OFF \
%else
-Dserver:BOOL=OFF \
%endif
%if %{with system_celt}
-Dbundled-celt:BOOL=OFF \
-Dupdate:BOOL=OFF \
-Dcrash-report:BOOL=OFF \
-Ddisplay-install-paths:BOOL=ON \
-Doverlay-xcompile:BOOL=OFF \
-Dsymbols:BOOL=ON \
-DMUMBLE_INSTALL_PLUGINDIR=%{_libdir}/mumble/plugins \
-Dbundled-gsl:BOOL=OFF \
-Dbundled-json:BOOL=OFF \
-Dbundled-renamenoise:BOOL=ON \
-Dbundled-speex:BOOL=OFF \
-Dqtspeech:BOOL=ON \
-Dbundle-qt-translations:BOOL=OFF \
%if 0%{?suse_version} >= 1600
-DCMAKE_SHARED_LINKER_FLAGS="-lGL" \
%endif
%if %{with system_speex}
-Dbundled-opus:BOOL=OFF \
%if 0%{?suse_version} <= 1550
-DCMAKE_MODULE_LINKER_FLAGS="" \
-DCMAKE_SHARED_LINKER_FLAGS="" \
%endif
%if %{with system_speex}
-Dbundled-speex:BOOL=OFF \
%endif
%if !%{with pulseaudio}
-Dpulseaudio:BOOL=OFF \
%if %{with tests}
-Dtests:BOOL=ON \
%endif
-DCMAKE_CXX_STANDARD=17 \
-Dwarnings-as-errors:BOOL=OFF \
%{nil}
# build fails for high -j so we overwrite with 1 here
%cmake_build -j1
%cmake_build
%install
%cmake_install
install -D -m 0640 scripts/murmur.ini %{buildroot}%{_sysconfdir}/mumble-server.ini
mkdir -p %{buildroot}%{_docdir}/%{name}
cp -a scripts LICENSE README.md %{buildroot}%{_docdir}/%{name}
cp -a scripts README.md %{buildroot}%{_docdir}/%{name}
find %{buildroot}%{_docdir}/%{name}/scripts -type f -name '*.py' -exec chmod -x {} \;
find %{buildroot}%{_docdir}/%{name}/scripts -type f -name '*.rb' -exec chmod -x {} \;
find %{buildroot}%{_docdir}/%{name}/scripts -type f -name '*.sh' -exec chmod -x {} \;
find %{buildroot}%{_docdir}/%{name}/scripts -type f -name '*.bat' -exec chmod -x {} \;
# Server
##
mkdir -p %{buildroot}%{_tmpfilesdir}
cat >> %{buildroot}%{_tmpfilesdir}/mumble-server.conf <<EOF
d %{_localstatedir}/run/mumble-server 0755 mumble-server mumble-server -
EOF
install -D -m 0644 %{SOURCE3} %{buildroot}%{_sysconfdir}/apparmor.d/usr.sbin.murmurd
install -D -m 0644 %{SOURCE5} %{buildroot}%{_unitdir}/mumble-server.service
install -D -m 0644 scripts/murmur.conf %{buildroot}%{_sysconfdir}/dbus-1/system.d/mumble-server.conf
install -D -m 0644 scripts/murmur.ini %{buildroot}%{_sysconfdir}/mumble-server.ini
%if %{with server}
# This was messed up by https://github.com/mumble-voip/mumble/pull/6100
# I wasted enough time trying to patch this, so this is brute force
# Also see -Ddisplay-install-paths and output of cmake
mkdir -p %{buildroot}%{_sysconfdir}/mumble
mkdir -p %{buildroot}%{_unitdir}
mkdir -p %{buildroot}%{_sysusersdir}
mv -v %{buildroot}%{_prefix}%{_sysconfdir}/mumble/mumble-server.ini %{buildroot}%{_sysconfdir}/mumble/mumble-server.ini
mv -v %{buildroot}%{_prefix}%{_sysconfdir}/systemd/system/mumble-server.service %{buildroot}%{_unitdir}/mumble-server.service
mv -v %{buildroot}%{_prefix}%{_sysconfdir}/sysusers.d/mumble-server.conf %{buildroot}%{_sysusersdir}/mumble-server.conf
# z not authorized and not required
rm %{buildroot}%{_prefix}%{_sysconfdir}/tmpfiles.d/mumble-server.conf
# fix path in service
sed -i -e 's|%{_prefix}%{_sysconfdir}|%{_sysconfdir}|g' %{buildroot}%{_unitdir}/mumble-server.service
%endif
%check
%if %{with tests}
# TestSettingsJSONSerialization fails loading qt xcb in headless
export QT_QPA_PLATFORM=offscreen
%ctest
%endif
%if %{with server}
%pre server
getent group mumble-server >/dev/null || groupadd -r mumble-server || :
getent passwd mumble-server >/dev/null || \
%{_sbindir}/useradd -r -d %{_localstatedir}/lib/mumble-server -s /bin/false -c "Mumble VoIP Server" -g mumble-server mumble-server 2> /dev/null || :
%service_add_pre mumble-server.service
%preun server
%service_del_preun mumble-server.service
%post server
systemd-tmpfiles --create %{_tmpfilesdir}/mumble-server.conf || true
%service_add_post mumble-server.service
%postun server
%service_del_postun mumble-server.service
%endif
%files
%exclude %{_docdir}/%{name}/scripts/murmur.ini
%license LICENSE
%doc %{_docdir}/%{name}
%{_bindir}/mumble
%{_bindir}/mumble-overlay
%{_mandir}/man1/mumble-overlay.*
%{_mandir}/man1/mumble.*
%{_mandir}/man1/mumble-overlay.1%{?ext_man}
%{_mandir}/man1/mumble.1%{?ext_man}
%dir %{_datadir}/icons/hicolor
%dir %{_datadir}/icons/hicolor/*
%dir %{_datadir}/icons/hicolor/*/apps
%{_datadir}/icons/hicolor/*/apps/mumble.*
%{_datadir}/applications/*
%{_libdir}/mumble
%files server
%doc %{_docdir}/%{name}/scripts/murmur.ini
%{_bindir}/mumble-server
%config %{_sysconfdir}/dbus-1/system.d/mumble-server.conf
%config(noreplace) %{_sysconfdir}/mumble-server.ini
%{_tmpfilesdir}/mumble-server.conf
%{_unitdir}/mumble-server.service
%{_mandir}/man1/mumble-server.*
%{_mandir}/man1/mumble-server-user-wrapper.*
%{_datadir}/metainfo/info.mumble.Mumble.appdata.xml
%dir %{_sysconfdir}/apparmor.d
%config %{_sysconfdir}/apparmor.d/usr.sbin.murmurd
%if %{with server}
%files server
%license LICENSE
%{_bindir}/mumble-server
%{_bindir}/mumble-server-user-wrapper
%dir %{_sysconfdir}/mumble
%config(noreplace) %{_sysconfdir}/mumble/mumble-server.ini
%{_unitdir}/mumble-server.service
%{_sysusersdir}/mumble-server.conf
%{_mandir}/man1/mumble-server.1%{?ext_man}
%{_mandir}/man1/mumble-server-user-wrapper.1%{?ext_man}
%endif
%changelog

View File

@@ -1,42 +0,0 @@
# Last Modified: Thu Mar 24 13:33:08 2011
#include <tunables/global>
profile murmurd /usr/sbin/murmurd {
#include <abstractions/base>
#include <abstractions/nameservice>
#include <abstractions/openssl>
#include <abstractions/ssl_certs>
#include <abstractions/user-tmp>
# needed for real time scheduling of the mixer threads
capability sys_resource,
network inet dgram,
network inet stream,
network netlink,
/usr/share/icu/*/icu*.dat r,
/etc/mumble-server.ini rk,
/usr/bin/lsb_release cx,
/var/lib/mumble-server/ rwk,
/var/lib/mumble-server/** rwk,
/var/log/mumble-server/murmur.log w,
/var/run/mumble-server/mumble-server.pid w,
profile /usr/bin/lsb_release {
#include <abstractions/base>
#include <abstractions/consoles>
/{usr/,}bin/bash rm,
/proc/meminfo r,
/usr/bin/getopt rmix,
/usr/bin/head rmix,
/usr/bin/grep rmix,
/usr/bin/sed rmix,
/usr/bin/cut rmix,
/usr/bin/lsb_release r,
/etc/SuSE-release r,
}
#include if exists <local/usr.bin.mumble-server>
}