# Test suite only works on x86_64 # https://github.com/mumble-voip/mumble/issues/3845 %ifarch x86_64 %bcond_without tests %endif %global build_number 915 Name: mumble Version: 1.5.%{build_number} Release: %autorelease Summary: Low-latency and high-quality voice-chat program # primary license: BSD-3-Clause # themes/Mumble: Unlicense and WTFPL # 3rdparty/arc4random: ISC # 3rdparty/celt-0.7.0-src: BSD-3-Clause and GPL-2.0-or-later # 3rdparty/qqbonjour: BSD-3-Clause # 3rdparty/smallft: BSD-3-Clause License: BSD-3-Clause AND Unlicense AND WTFPL AND ISC AND GPL-2.0-or-later URL: https://www.mumble.info Source0: https://github.com/mumble-voip/mumble/releases/download/v%{version}/mumble-%{version}.tar.gz Source1: mumble-server.sysusers # downstream-only patches # https://docs.fedoraproject.org/en-US/packaging-guidelines/CryptoPolicies/ Patch0003: 0003-FIX-crypto-Fix-OpenSSL-const-X509_NAME-conversion.patch Patch0004: 0004-CHANGE-server-Default-to-system-crypto-policy.patch Patch0005: 0005-FIX-client-Avoid-loading-unversioned-libraries.patch BuildRequires: alsa-lib-devel BuildRequires: boost-devel BuildRequires: cmake BuildRequires: cmake(PocoXML) BuildRequires: cmake(PocoZip) BuildRequires: cmake(Qt5) BuildRequires: cmake(Qt5Concurrent) BuildRequires: cmake(Qt5Core) BuildRequires: cmake(Qt5DBus) BuildRequires: cmake(Qt5LinguistTools) BuildRequires: cmake(Qt5Network) BuildRequires: cmake(Qt5Sql) BuildRequires: cmake(Qt5Svg) %if %{with tests} BuildRequires: cmake(Qt5Test) %endif BuildRequires: cmake(Qt5Widgets) BuildRequires: cmake(Qt5Xml) BuildRequires: desktop-file-utils BuildRequires: gcc-c++ BuildRequires: glibc-devel BuildRequires: libXext-devel BuildRequires: libXi-devel BuildRequires: libappstream-glib BuildRequires: libcap-devel BuildRequires: pipewire-devel BuildRequires: pipewire-jack-audio-connection-kit-devel BuildRequires: pkgconfig(avahi-compat-libdns_sd) BuildRequires: pkgconfig(libcrypto) BuildRequires: pkgconfig(libssl) BuildRequires: pkgconfig(openssl) BuildRequires: pkgconfig(opus) BuildRequires: pkgconfig(protobuf) BuildRequires: pkgconfig(sndfile) BuildRequires: pkgconfig(speech-dispatcher) BuildRequires: pkgconfig(speexdsp) BuildRequires: portaudio-devel BuildRequires: pulseaudio-libs-devel BuildRequires: python3 BuildRequires: systemd-rpm-macros # There are multiple available audio backends which are opened at runtime. # They aren't linked against, but they are opened by the library name. # https://github.com/mumble-voip/mumble/issues/3794 %if 0%{?__isa_bits} == 32 %global libsymbolsuffix %{nil} %else %global libsymbolsuffix ()(%{__isa_bits}bit) %endif # src/mumble/JackAudio.cpp Recommends: libjack.so.0%{libsymbolsuffix} # to prefer the pipewire implementation of libjack Suggests: pipewire-jack-audio-connection-kit # src/mumble/PAAudio.cpp Recommends: libportaudio.so.2%{libsymbolsuffix} # src/mumble/PipeWire.cpp Recommends: libpipewire-0.3.so.0%{libsymbolsuffix} # src/mumble/PulseAudio.cpp Recommends: libpulse.so.0%{libsymbolsuffix} # modified version of OpenBSD's arc4random Provides: bundled(arc4random) # bundled C++ guidelines support library Provides: bundled(gsl) # bundled JSON library Provides: bundled(nlohmann_json) # modified version of Qt Quarterly example code Provides: bundled(qqbonjour) # bundled machine learning noise suppression library Provides: bundled(renamenoise) # modified version of vorbis's smallft Provides: bundled(smallft) ExcludeArch: %{ix86} %description Mumble is an Open Source, low-latency and high-quality voice-chat program written on top of Qt and Opus. %package server Summary: Mumble voice chat server # Renamed from murmur to mumble-server, per upstream preference. Provides: murmur = %{version}-%{release} Obsoletes: murmur < 1.3.4-10 # To be able to announce the presence of the server via Bonjour. Recommends: avahi %{?systemd_requires} %{?sysusers_requires_compat} %description server mumble-server (also called murmur) is part of the VoIP suite Mumble primarily aimed at gamers. %package plugins Summary: Plugins for VoIP program Mumble Requires: %{name} = %{version}-%{release} %description plugins Mumble-plugins is part of VoIP suite Mumble primarily intended for gamers. This plugin allows game linking so the voice of players will come from the direction of their characters. %package overlay Summary: Start games with the mumble overlay Requires: %{name} = %{version}-%{release} %description overlay Mumble-overlay is part of the Mumble VoIP suite aimed at gamers. If supported, starting your game with this script will enable an ingame Mumble overlay. %prep %autosetup -p1 pushd 3rdparty # remove bundled libraries that we have system copies of rm -rf jack pipewire portaudio pulseaudio popd # use system headers for audio backends sed \ -e 's|"${3RDPARTY_DIR}/jack"|"%{_includedir}/jack"|' \ -e 's|"${3RDPARTY_DIR}/portaudio"|"%{_includedir}"|' \ -e 's|"${3RDPARTY_DIR}/pipewire"|"%{_includedir}/pipewire-0.3" "%{_includedir}/spa-0.2"|' \ -e 's|"${3RDPARTY_DIR}/pulseaudio"|"%{_includedir}/pulse"|' \ -i src/mumble/CMakeLists.txt %build %cmake \ -DBUILD_NUMBER=%{build_number} \ %{?with_tests:-Dtests=ON} \ -Dupdate=OFF \ -Dbundled-speex=OFF \ -Dice=OFF \ -Doverlay-xcompile=OFF \ -Dwarnings-as-errors=OFF \ -DMUMBLE_INSTALL_SERVICEFILEDIR=%{_unitdir} \ -DMUMBLE_INSTALL_SYSUSERSDIR=%{_sysusersdir} \ -DMUMBLE_INSTALL_TMPFILESDIR=%{_tmpfilesdir} \ -DMUMBLE_INSTALL_SYSCONFDIR=%{_sysconfdir} %cmake_build %install %cmake_install # install custom sysusers file for mumble-server install -D -p -m 0644 %{SOURCE1} %{buildroot}%{_sysusersdir}/mumble-server.conf # dir for mumble-server.sqlite mkdir -p %{buildroot}%{_localstatedir}/lib/mumble-server/ # compatibility symlinks mkdir -p %{buildroot}%{_sbindir} ln -s mumble-server %{buildroot}%{_bindir}/murmurd ln -s mumble-server.1 %{buildroot}%{_mandir}/man1/murmurd.1 ln -s mumble-server.service %{buildroot}%{_unitdir}/murmur.service ln -s mumble-server.ini %{buildroot}%{_sysconfdir}/murmur.ini %check appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/info.mumble.Mumble.appdata.xml desktop-file-validate %{buildroot}%{_datadir}/applications/info.mumble.Mumble.desktop %if %{with tests} %ctest --exclude-regex '(TestSelfSignedCertificate|TestSettingsJSONSerialization)' %endif %post server %systemd_post mumble-server.service %preun server %systemd_preun mumble-server.service %postun server %systemd_postun_with_restart mumble-server.service %files %license LICENSE %doc README.md %{_bindir}/mumble %{_mandir}/man1/mumble.1* %{_datadir}/icons/hicolor/256x256/apps/mumble.png %{_datadir}/icons/hicolor/scalable/apps/mumble.svg %{_datadir}/applications/info.mumble.Mumble.desktop %{_metainfodir}/info.mumble.Mumble.appdata.xml %files server %license LICENSE %doc README.md %{_bindir}/mumble-server %{_bindir}/mumble-server-user-wrapper %{_mandir}/man1/mumble-server.1* %{_mandir}/man1/mumble-server-user-wrapper.1* %{_mandir}/man1/murmurd.1* %{_sbindir}/murmurd %{_unitdir}/mumble-server.service %{_unitdir}/murmur.service %{_sysusersdir}/mumble-server.conf %{_tmpfilesdir}/mumble-server.conf %config(noreplace) %attr(664,mumble-server,mumble-server) %{_sysconfdir}/mumble-server.ini %{_sysconfdir}/murmur.ini %dir %attr(-,mumble-server,mumble-server) %{_localstatedir}/lib/mumble-server/ %files plugins %license LICENSE %doc README.md %{_libdir}/mumble/plugins/ %files overlay %{_bindir}/mumble-overlay %{_mandir}/man1/mumble-overlay.1* %{_libdir}/mumble/libmumbleoverlay.so %{_libdir}/mumble/libmumbleoverlay.so.%{version} %changelog %autochangelog