ci: Modernize the Github Actions workflow and (mostly) fix CI
- Update the list of Linux distros to contain versions of Ubuntu
that are currently supported. New baseline is Jammy Jellyfish
(LTS 22.04).
- Update the checkout action to v4 to avoid deprecation warnings.
- Use an explicit action for ccache support, instead of caching
manually. This simplifies quite some steps and should work
more reliably.
- macos-latest (14) now builds on Apple Silicon (arm64). Build on
both macOS 13 and latest so we get packages for both x86_64
and arm64. Rename packages to contain the architecture, replacing
the long outdated MacOSX name by macOS, too.
Unfortunately, XCode 14.x is now the oldest version supported
by Github, so we have to use this even though Qt does not
officially support it (yet).
- Disable qca on macOS for the time being, as Homebrew no longer
provides a Qt5 version of it. To be reenabled once Quassel has
migrated to Qt6 as well.
- Pin Craft to qt5-lts for the time being, as master is moving to Qt6.
- However, the Windows builds are currently broken due to issues
with Craft (or our configuration thereof). Make optional for now,
until we find a solution.
Previously, the check worked by including qglobal.h and checking
whether the QT_NO_SSL define is set. This check no longer works
in macOS builds for some reason.
Make it more explicit by actually trying to use QSslSocket.
Some versions of GCC detect a potentially dangling reference
in CoreAccountModel. This is a false positive as the referenced
value does not change while it is used, but rewrite the code
anyway to avoid this warning.
uisupport: fix application name for .desktop shell integration
When building for KDE (cmake -DUSE_KDE=1), the KAboutData constructor
as invoked by uisupport causes the resulting application name to be
"org.kde.quassel".
At least on GNOME, this "org.kde.quassel" doesn't match the
corresponding "quasselclient.desktop" file, which means the app doesn't
get a pretty name/icon in the app launcher.
The solution is to call KAboutData::setDesktopFileName() with the
desired name.
This issue doesn't occur when building with USE_KDE=0 for two reasons:
one, because QtUiApplication already calls
QGuiApplication::setDesktopFileName() with the correct value, and two,
if desktopFileName is unset, the binary name "quasselclient" would be used
instead, which still matches "quasselclient.desktop".
An alternative workaround would be to set this flag in the
quasselclient.desktop file:
StartupWMClass=org.kde.quassel
But I would say this is worse because the "org.kde" doesn't make sense,
since this is not a KDE project.
Fix the Craft Windows CI build by ignoring the Python 2 build
dependency from QtWebEngine. As we rely on KDE's prebuilt packages,
this does not affect us.