= 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 [[https://projects.kde.org/projects/kde/pim/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.