cmake: Modernize (and fix) deployment on macOS
authorManuel Nickschas <sputnick@quassel-irc.org>
Sun, 3 Jan 2021 13:48:36 +0000 (14:48 +0100)
committerManuel Nickschas <sputnick@quassel-irc.org>
Mon, 4 Jan 2021 07:16:42 +0000 (08:16 +0100)
commit082cb8c8eb6db90cbb2166a0098874e76d5c6ad9
treef1b5c06b46cf35e2d2c14f9956dfd718dcf3d36c
parent28eb43dd1ccd882b2975c346297842c1dc074469
cmake: Modernize (and fix) deployment on macOS

For the past decade or so, we have used a bunch of self-written python
and bash scripts for creating packages for macOS. These have not aged
well, and recently several workarounds had to be hacked in to keep
the machinery somewhat working at all. Still, invoking the scripts at
build time rather than install time caused a race condition where
sometimes not all the packages would be created in CI. To break the
camel's back, deploying dependencies no longer worked correctly and
broke the packages completely in 0.14-rc1.

Fix this by modernizing the whole deployment process and related
parts of the build system, replacing the custom scripts by relying
on Qt's and CMake's own tooling instead. Some workarounds still need
to be added to that to make everything work correctly (neither tool
can deal correctly with QtWebEngine, for some reason, and CMake's
Info.plist template lacks functionality), but the main part of the
work is now delegated to official tooling, everything properly
happend at install time avoiding race conditions in the build process,
and we can remove a bunch of decade-old and hardly maintained custom
code.

Also adapt the CI configuration to use -DBUNDLE instead of the
old -DDEPLOY, and remove the explicit setting of qmake's path too,
as it is no longer needed now.
13 files changed:
.github/workflows/main.yml
CMakeLists.txt
ChangeLog
cmake/FinalizeBundle.cmake.in [new file with mode: 0644]
cmake/MacOSXBundleInfo.plist.in [moved from scripts/build/Info.plist with 81% similarity]
cmake/QuasselMacros.cmake
data/qt.conf [new file with mode: 0644]
scripts/build/macosx_DeployApp.py [deleted file]
scripts/build/macosx_makePackage.sh [deleted file]
scripts/build/macosx_makebundle.py [deleted file]
scripts/build/macosx_qt.py [deleted file]
src/CMakeLists.txt
src/main/CMakeLists.txt