If the actual build is skipped due to a duplicate workflow run, the
build number script won't run. This can be problematic if this would
have been the only place where the script runs for the given commit as
that'll mean that for this commit no build number will be tagged on our
central server.
Therefore, we now fetch the build number in a separate step that will
not be skipped, if the build itself is skipped.
Since newer versions of libsndfile now link to the system-wide installed
Opus version (on Linux distros), there would be a conflict between
symbols defined in the system-wide installation and the self-built
(bundled) Opus library.
This, as it turned out, can lead for instance to failing assertions due
to pointer identities no longer holding because e.g. a function from the
self-built Opus version ends up calling a sub-function from the
system-wide Opus installation instead. This is also the root cause for
the infamous "Opus crash" or "Audio wizard crash".
In order to avoid these issues, we don't ship a bundled Opus version
anymore and instead make it a build prerequisite to have Opus installed
on your system.
Fixes#5302
We were still using a runner on Ubuntu 18.04, which is getting
deprecated by GitHub in the near future. In order to avoid having
failing CI jobs due to that and also in order to keep up with changes in
Ubuntu, we now build on 20.04 and 22.04 instead.
This commit introduces an automatic approach that will publish the
Windows installers to the WinGet repository every time a release is
created on GitHub.
Fixes#5870
GitHub Actions previously did not use the build number token. This is
changed by this commit. In order to to so, the build process has been
outsourced into its own script.
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#4567Fixes#4197Fixes#3496Fixes#3429Fixes#3265
This PR streamlines the settings format on all OS and (hopefully) increases the readability
of the settings file A LOT (more or less self-explaining settings identifiers instead of some
weird terms or variable names only understood by the core devs themselves (if at all)).
In addition to and surrounding this feature, several changes, improvements and fixes on
the general topic of handling settings are included as well. See individual commit messages
for details.
Fixes#1940
As an aside: This change is an important step towards being able to provide portable Mumble
installations.
This flag makes sure that the verbose output of running the test cases
is not shown, unless the test fails. In that case the full output is
displayed (for that test case).