Building Kleopatra git master
There is a lot of documentation available at techbase.kde.org this page mainly is an example on how you can do this.
See the kleopatra Project page for repository information.
Dependencies
This is a list of dependencies needed system to compile the required frameworks and Kleopatra. Please add additional dependencies if you needed them.
Note: This was written for the full KDEPIM repo and needs to be updated now that Kleopatra is in it's own repository.
Debian Jessie
apt-get install libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev libasound2-dev \ libnss3-dev libjson-perl libx11-xcb1 libx11-xcb-dev libxrender-dev git build-essential cmake \ libgpgme11-dev libgcrypt20-dev docbook-xsl libxslt1-dev libboost1.55-all-dev libsasl2-dev libldap2-dev \ libgif-dev libjpeg-dev libpolkit-backend-1-dev libpolkit-agent-1 xsltproc libssl-dev libxcursor-dev \ libxcomposite-dev libxdamage-dev libxrandr-dev libfontconfig1-dev flex bison gperf\ libicu-dev libxslt-dev ruby ^libxcb.* libglu1-mesa-dev libxi-dev perl python libepoxy\ libical-dev libqrencode-dev libprison-dev libxapian-dev libdmtx-dev libfontconfig1-dev\ libfreetype6-dev libx11-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev\ libx11-xcb-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev\ libxcb-sync0-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev
Ubuntu Trusty
apt-get build-dep qtbase5-dev apt-get install libbz2-dev libxslt-dev libxml2-dev shared-mime-info oxygen-icon-theme \ libgif-dev libvlc-dev libvlccore-dev doxygen gperf bzr libxapian-dev fontforge libgcrypt20-dev \ libattr1-dev network-manager-dev libgtk-3-dev xsltproc xserver-xorg-dev \ xserver-xorg-input-synaptics-dev libpwquality-dev modemmanager-dev libepoxy libepoxy-dev \ libpolkit-agent-1-dev libnm-util-dev libnm-glib-dev libegl-mesa-dev \ libqt5x11extras5-dev libboost-all-dev libical-dev libsasl2-dev libgpgme11-dev \ libcap-dev libpci-dev libjson-perl libgstreamer1.0-dev docbook-xsl libxslt1-dev libboost1.55-all-dev \ libldap2-dev libjpeg-dev libpolkit-backend-1-dev libssl-dev libxcursor-dev libxcomposite-dev libxdamage-dev \ libxrandr-dev libfontconfig1-dev flex bison libicu-dev ruby ^libxcb.* libx11-xcb-dev libglu1-mesa-dev \ libxrender-dev libxi-dev build-essential perl python git libical-dev libqrencode-dev libprison-dev \ libdmtx-dev
Compiling into a custom prefix
This is an example how to compile Kleopatra and installing it into a custom prefix.
The example prefix is kf5. The example snippets use make -j
Preparing the environment
export CUSTOM_PREFIX=~/kf5 mkdir -p $CUSTOM_PREFIX/src cd $CUSTOM_PREFIX/src
Qt 5
Note: Kleopatra only needs the following modules (while this documentation builds all qt modules): Qt5Widgets Qt5Gui QtWidgets Qt5Core Qt5Tools Qt5Xml Qt5Newtwork Qt5Svg Qt5PrintSupport Qt5WinExtras (for windows)
cd $CUSTOM_PREFIX/src git clone git://code.qt.io/qt/qt5.git --branch 5.5 cd qt5 ./init-repository ./configure -prefix $CUSTOM_PREFIX/qt5 -opensource -confirm-license -nomake tests -nomake examples -dbus -no-separate-debug-info -xcb -qpa xcb -no-gtkstyle -release -force-debug-info -reduce-relocations -optimized-qmake make -j`nproc` && make install
KDE Frameworks
You should take a look at the KDE documentation: https://community.kde.org/Frameworks/Building
Here are my notes how I did this:
git config --global url."git://anongit.kde.org/".insteadOf kde: && \ git config --global url."ssh://git@git.kde.org/".pushInsteadOf kde: cd $CUSTOM_PREFIX/src mkdir -p extragear/utils git clone kde:kdesrc-build extragear/utils/kdesrc-build ln -s extragear/utils/kdesrc-build/kdesrc-build . wget "http://www.davidfaure.fr/kde/kf5-qt5-kdesrc-buildrc" -O "kdesrc-buildrc"
Now edit the paths in the kdesrc-buildrc.
Example:
global qtdir /home/aheinecke/arbeit/kf5/qt5 source-dir /home/aheinecke/arbeit/kf5/src build-dir /home/aheinecke/arbeit/kf5/build kdedir /home/aheinecke/arbeit/kf5 git-repository-base kde-projects kde: cmake-options -DCMAKE_BUILD_TYPE:STRING=debug -DKDE4_BUILD_TESTS=false make-options -j8 cxxflags -pipe -DQT_STRICT_ITERATORS -DQURL_NO_CAST_FROM_STRING -DQT_NO_HTTP -DQT_NO_FTP -Wformat -Werror=format-security -Werror=return-type -Wno-variadic-macros -Wlogical-op -Wmissing-include-dirs branch-group kf5-qt5 end global include extragear/utils/kdesrc-build/kf5-qt5-build-include
Now we can start compiling:
./kdesrc-build --include-dependencies kleopatra
Look out for errors and fix them :-)
Runtime Setup
The script attachment:frameworks-env.sh is an example that sets up your environment and adds some convenience build functions. Take a look at the script first and edit paths where necessary.
To use KF5 from your prefix set the following environment variables:
export KF5=$CUSTOM_PREFIX export QTDIR=$CUSTOM_PREFIX/qt5 export XDG_DATA_DIRS=$KF5/share:$XDG_DATA_DIRS:/usr/share export XDG_CONFIG_DIRS=$KF5/etc/xdg:$XDG_CONFIG_DIRS:/etc/xdg export PATH=$KF5/sbin:$KF5/bin:$QTDIR/bin:$PATH export QT_PLUGIN_PATH=$KF5/lib/plugins:$KF5/lib64/plugins:$KF5/lib/x86_64-linux-gnu/plugins:$QTDIR/plugins:$QT_PLUGIN_PATH export KDE_SESSION_VERSION=5 export KDE_FULL_SESSION=true export XDG_DATA_HOME=$KF5/.local/share export XDG_CONFIG_HOME=$KF5/.config export XDG_CACHE_HOME=$KF5/.cache export CMAKE_PREFIX_PATH=$KF5:$CMAKE_PREFIX_PATH export LD_LIBRARY_PATH=$KF5/lib:$LD_LIBRARY_PATH export PKG_CONFIG_PATH=$KF5/lib/pkgconfig:$PKG_CONFIG_PATH export KSYCOCA=$CUSTOM_PREFIX/sycoca2
Tipps
Logging
To get a nicer logging pattern:
export QT_MESSAGE_PATTERN="`echo -e "\033[32m%{time h:mm:ss.zzz}%{if-category}\033[32m %{category}:%{endif} %{if-debug}\033[35m%{function}%{endif}%{if-warning}\033[33m%{backtrace depth=3}%{endif}%{if-critical}\033[31m%{backtrace depth=3}%{endif}%{if-fatal}\033[31m%{backtrace depth=3}%{endif}\033[0m %{message}"`"
To configure logging:
export QT_LOGGING_CONF=$CUSTOM_PREFIX/src/logging.rules echo [Rules] > $CUSTOM_PREFIX/src/logging.rules echo log_kleopatra.debug=true >> $CUSTOM_PREFIX/src/logging.rules echo kdepim.kleopatra.debug=true >> $CUSTOM_PREFIX/src/logging.rules
VIM
There is a very useful vim script available at: https://techbase.kde.org/Policies/Kdelibs_Coding_Style#Vim Vim users should take a look at it.