We regret to have to announce that the FiveM/FXServer Linux server builds are considered an endangered species. This is due to the following reasons:
Alpine dropped libc++ packages and didn’t update clang packages for quite some time. This broke our build as they no longer provide libc++ at all.
gcc is unsuitable for compiling FiveM codebase due to bugs with advanced C++ features, and insufficient error reporting to write code around it. This code compiles fine with both clang and cl, meanwhile even GCC 8.2.0 does not work.
libstdc++ was long-unsuitable for building FiveM, now does work at compile-time but there’s runtime errors due to TLS models, dlopen with RTLD_LOCAL and Mono, so any libstdc++ build of FiveM would be unable to have Mono work. libc++ does handle this properly.
Other distributions (non-Alpine) are not suited for distribution as a minimal root filesystem + ‘portable’ binary (not dependent on any system files/libraries), since they either use glibc (which depends on a hardcoded prefix), are too large, or similarly don’t ship dependencies we require (mono, v8, libc++/clang, libcurl working with OpenSSL/mbedTLS since nodejs does not build with libressl and musl does not support symbol versioning).
In addition, breakpad does not build with musl (only supports glibc and bionic), so we can’t do any server crash reporting, so Linux builds are useless for helping reporting any server issues. Also, performance profilers are markedly inferior to ETW on Windows, and gdb breaks with our musl setup and shows ‘no shared libraries loaded’ when clearly having shared libraries loaded. This has made Linux a horrible experience for server owners experiencing any uncommon issues, as we literally can’t get any data off of their issue reports.
If anyone here happens to have sufficient experience with dealing with portable Linux toolchains, can perhaps nudge the Alpine maintainers to mainline libc++ again (or update LLVM to 7.0, see a recent pull request by an Alpine community member), or otherwise knows how to fix this, help would be very appreciated.
It is recommended to move servers to Windows to maintain service continuity, and have the ability to upload dumps and other diagnostics due to the superior runtime instrumentation tooling existing on the Windows platform.
For now, we are investigating our options when it comes to reviving the Linux builds.
I’m a proponent of Linux servers for personal use due to the fact that (I believe) Windows licenses are more expensive than all Linux licenses (if there are even costs), but I fully understand this decision.
This issue is totally out of your control and I hope that more alpine users will experience this issue, resulting in an eventual fix/addition to their product.
You guys have tried your best. I hope that the rest of the community sees this too.
They get paid for it, but you are not worried about a janitor who didn’t remove your garbage - you stop paying him. Is it logical? Is logical. It’s about the same situation, and don’t try to convince me - it’s a fact, “FiveM” - is a business, is a service.