The gRPC implementation never left the experimental state and never reached a properly stable state to the point where we would feel good about enabling it by default. In addition to that, there has been no further attempts at finding and fixing the encountered issues in the implementation (except #3947 but that was discontinued). As such we had an essentially unmaintained piece of code in our server implementation that was known to be buggy and that nobody wanted to fix. In addition to that the implementation itself could not be considered very clean or elegant and therefore only represented a few smelly corners in our code base. For this reason, we decided to remove the gRPC support entirely from Mumble (for now). What we hope to gain by that is: - Prevent people from building unstable server versions and then coming to us complaining that it crashed/misbehaved - Removing (essentially) dead code - Reduce the RPC implementation complexity That last piece is crucial: By removing gRPC support we reduce the amount of supported RPC frameworks to only one (ignoring DBus for now). Our future plans include a refactoring of how RPC is being handled and implemented and only having to worry about maintaining compatibility with one RPC system is much easier than having to worry about two (with (slightly) different APIs). Once the RPC implementation has been rewritten, more RPC backends may be reintroduced and in that process we might investigate adding a proper gRPC implementation to the code (that then hopefully is more stable than the current one). Fixes #4567 Fixes #4197 Fixes #3496 Fixes #3429 Fixes #3265
3.6 KiB
Building on Linux
These are instructions for performing a regular build using the libraries that are shipped with your distribution. For instructions to build a static version of Mumble, checkout this file.
Dependencies
Ubuntu
In order to install the needed dependencies on Ubuntu, you have to run the following command:sudo apt install \
build-essential \
cmake \
pkg-config \
qt5-default \
qttools5-dev \
qttools5-dev-tools \
libqt5svg5-dev \
libboost-dev \
libssl-dev \
libprotobuf-dev \
protobuf-compiler \
libprotoc-dev \
libcap-dev \
libxi-dev \
libasound2-dev \
libogg-dev \
libsndfile1-dev \
libspeechd-dev \
libavahi-compat-libdnssd-dev \
libxcb-xinerama0 \
libzeroc-ice-dev \
libpoco-dev \
g++-multilib
The dependence on g++-multilib only applies if you are on a 64bit system and want to cross-compile overlay support for 32bit applications as well
(which is enabled by default). If you don't do this (-Doverlay-xcompile=OFF when invoking cmake), you also don't have to install g++-multilib.
You will need cmake v3.15 or later. If the version shipped by your distribution is not recent enough, you can install a recent one via the
official PPA or from the linked page.
CentOS 8
In order to install the needed dependencies on Cent OS 8, you have to run the following command:sudo dnf -y install epel-release
sudo dnf config-manager --set-enabled PowerTools
sudo dnf group install "Development Tools"
sudo dnf install https://zeroc.com/download/ice/3.7/el8/ice-repo-3.7.el8.noarch.rpm
sudo dnf install libice-c++-devel libice3.7-c++
sudo dnf install \
qt5-devel \
qt5-qtsvg-devel \
openssl-devel \
protobuf-devel \
libsndfile-devel \
libXi-devel \
libXext-devel \
speech-dispatcher-devel \
avahi-compat-libdns_sd-devel \
alsa-lib-devel \
libICE-devel \
libogg-devel \
boost-devel \
libcap-devel \
poco-devel \
gcc-toolset-9-gcc-c++
You will need cmake v3.15 or later. You can install a recent one from the linked page.
If you are using any other distribution that is not based on one of the distros listed above, you probably have to adapt the commands to your distro manually.
Running cmake
It is recommended to perform a so-called "out-of-source-build". In order to do so, navigate to the root of the Mumble directory and then issue the following commands:
mkdir build(Creates a build directory)cd build(Switches into the build directory)cmake ..(Actually runs cmake)
This will cause cmake to create the necessary build files for you. If you want to customize your build, you can pass special flags to cmake in step 3. For all available build options, have a look here.
E.g. if you only want to build the server, use cmake -Dclient=OFF ...
Building
By default cmake will create Makefiles if run on Linux, so in order to build, you can simply run make in the build directory. If you want to
parallelize the build (to speed things up), you can use make -j $(nproc).
If you want to stay independent of the type of the generated build files, you should issue cmake --build . (from the build directory) in order to
start the compilation. If you want to parallelize the build, use cmake --build . -j <jobs> where <jobs> is the amount of parallel jobs to be run
concurrently. A good choice usually is <jobs> = $(nproc).
FAQ
See the general build-FAQ.