"non standalone app bundle" builds on Mac

René J.V. Bertin rjvbertin at gmail.com
Sun Nov 6 08:54:29 GMT 2016


Hi,

As some of you may have picked up from my posts on other KDE MLs, I've been working to bring "KF5" to MacPorts via a set of ports that continue the tradition started with the KDE4 ports, and that correspond to MacPorts' approach. Everything is built as much as possible the way it is on Linux, to ensure the largest possible feature set, including an adapted KDE platform theme plugin allowing central selection of an application style, etc.

Overall this works fine but there are a select few exceptions that require extensive patching to the build system because the devs have made the assumption that builds on Mac are always supposed to lead to standalone app bundles. To be clear: most apps with a GUI should indeed live in an app bundle, that bundle need not contain more than the bundle exec, an Info.plist and the app icon. All the rest can be in traditional locations under a shared prefix (/opt/local by default in MacPorts).

It turn out that Krita is one of those select fews. I haven't followed the split-off closely so I don't know if this ML is still the best place to raise questions about building on Mac, but I hope I can still reach at least some Krita devs here.

Just how (un)sympathetic an attitude can I expect towards the idea of doing a "linuxy" build on Mac? Would you consider patches that make this optional, IOW, that uncouple the build type from CMake's platform token ("APPLE") but put it under control of an option (e.g. "APPLE_STANDALONE_BUNDLE") which could perfectly well be ON by default? Would there motivation to help me find "obscure" locations in the source code where build type and install location assumptions are being made?

Concerning that last aspect, and re: Krita, I notice:
- the code uses a legacy (but still working) Qt token (Q_OS_MAC) but also an obsolete token (Q_WS_MAC) which I thought is no longer defined
- seems to try to bypass QStandardPaths by setting up an XDG_DATA_DIRS env. variable

After a few hours of work I'm now at a point where Krita builds and doesn't immediately abort or exit with an error message (nb: qFatal() just provokes what looks like a crash on Mac with stock Qt; the error message is never shown). It crashes immediately though when I open the preferences (settings) dialog - which starts DrKonqi just as you'd expect it to. I haven't yet had the time to figure out the reason for this crash, but it's an example of the sort of issue I might be asking for guidance about.

While I could work around the whole issue with a few patches to the build system and symlinks in the app bundle to emulate a standalone bundle, I'd prefer to do this properly. Once committed (in all senses of the term), that should be easier to maintain and feel less like an uphill battle.

Thanks,
René



More information about the calligra-devel mailing list