Jump to content

Krita/linuxbuild

From KDE Community Wiki
Revision as of 15:47, 8 October 2018 by Wolthera (talk | contribs) (remove opensuse deps.)

Preparation

This guide explains how to build Krita from standard Qt 5 and KDE Frameworks 5 development packages provided with your favorite linux distribution. This should be straightforward, but for more detail you can look into the old instructions for building Calligra.

You'll need to install a whole host of fairly small packages. The easiest thing you can do is to run the cmake config, and read the output. CMake will tell you what dependancies are still missing, and also what each dependancy does. That way, if you for example do not care for audio playback, you don't have to install those packages.


Building Krita

Once you have installed the dependencies, you are ready to clone the Krita repository.

cd ~/kf5/src               (Or, wherever you want to download the source code)
git clone git://anongit.kde.org/krita


CMake commands

Krita's build system has diverged from the Calligra build system. For example, Krita does not use productsets any longer.

Optimization level RelWithDebInfo is nearly always good enough for everyday debugging, and it can be used to paint with. Basically we have two build modes: for painters and for developers.

For painters:

  • disable unittests so the build becomes faster
  • disable safe asserts. it means when a not-too-serious problem arises, Krita will just dump a warning message into the console instead of crashing with an assert.
cd ~/kf5/build/krita
cmake ~/kf5/src/krita \                         ## your source directory
   -DCMAKE_INSTALL_PREFIX=~/kf5/inst \          ## your installation directory
   -DCMAKE_BUILD_TYPE=RelWithDebInfo \
   -DBUILD_TESTING=FALSE \
   -DHIDE_SAFE_ASSERTS=TRUE
make -j8 install

For developers:

  • enable unittests so you never break the builds
  • enable safe asserts. If a safe assert happens, it means there is a bug in Krita and should be fixed, even though recovery procedure can workaround it.
cd ~/kf5/build/krita
cmake ~/kf5/src/krita \                         ## your source directory
   -DCMAKE_INSTALL_PREFIX=~/kf5/inst \          ## your installation directory
   -DCMAKE_BUILD_TYPE=RelWithDebInfo \
   -DBUILD_TESTING=TRUE \
   -DHIDE_SAFE_ASSERTS=FALSE
make -j8 install


Remember that you can change build settings with cmake . -DNEW_SETTING or by using cmake-gui found in the package cmake-qt-gui

Environment variables

XDG_DATA_DIRS. You should need only one environment variable to run Krita 3:

export XDG_DATA_DIRS=~/kf5/inst/share:$XDG_DATA_DIRS

KRITA_PLUGIN_PATH. Krita's plugin loading can be a bit fragile, especially when debugging. You can force Krita to look in a specific folder for plugins using the environment variable KRITA_PLUGIN_PATH. For example, on a Kubuntu system with an install for Krita in ~/, the plugins are located in ~/kf5/inst/lib/x86_64-linux-gnu, so for proper debugging:

export KRITA_PLUGIN_PATH="~/kf5/inst/lib/x86_64-linux-gnu"

QT_MESSAGE_FORMAT and QT_LOGGING_RULES See main.cc and http://woboq.com/blog/nice-debug-output-with-qt.html

Troubleshooting

  1. When building master and SIP you might want to add -DPYQT_SIP_DIR_OVERRIDE=/usr/share/sip/PyQt5/ to make it find the files correctly. This is a bug in the current cmake files that will be fixed later.
  2. WARNING cmake versions 3.1.3 - 3.2.3 have some problems with automoc so the unittests in krita will not be built. If you happen to have this version of cmake (e.g. Ubuntu 15.10) please build hewer cmake manually and call the binary directly from the build directory