Note: These instructions apply for Ubuntu 16.04, too
Recently, I've got several mails from people desperately trying to compile KDevelop on Ubuntu-based distros. Let's give them a hand by providing them a quick start guide!
This is a brief version of what's in https://community.kde.org/Frameworks/Building (which really needs a major overhaul at this point -- lots of outdated or redundant information in there. I also had my trouble setting this up from scratch, believe me or not)
I've tested this HOWTO on a fresh Ubuntu 15.10 VM.
Disclaimer: This HOWTO will just compile the bare minimum, we're not going to compile either of Qt5, KF5 or LLVM/Clang. We'll happily chose the distro package of a needed dependency when available.
Install required dependencies
Start a terminal (konsole, xterm, your choice)
$ sudo apt-get build-dep qtbase5-dev $ sudo apt-get install build-essential 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 libxcb-keysyms1-dev libepoxy-dev libpolkit-agent-1-dev libnm-util-dev libnm-glib-dev libegl1-mesa-dev libxcb-xkb-dev libqt5x11extras5-dev libwww-perl libxml-parser-perl libjson-perl libboost-dev libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev libarchive-dev liblmdb-dev cmake git extra-cmake-modules "libkf5.*-dev" libgrantlee5-dev llvm libclang-dev
Git remote prefix
Let's setup a "kde:" prefix for git commands. Add the following text to your ~/.gitconfig:
[url "git://anongit.kde.org/"] insteadOf = kde: [url "ssh://firstname.lastname@example.org/"] pushInsteadOf = kde:
kdesrc-build is, simply put, a user-space package manager, which compiles KDE-related projects from source and installs them into a designated directory.
Let's set up kdesrc-build to install KDevelop into our $HOME:
mkdir ~/kdesrc cd ~/kdesrc git clone kde:kdesrc-build cd kdesrc-build cp kdesrc-buildrc-kf5-sample ~/.kdesrc-buildrc # Install a symlink of kdesrc-build to a location in PATH mkdir ~/bin ln -s $PWD/kdesrc-build ~/bin export PATH=~/bin:$PATH
You should append the line
export PATH=~/bin:$PATH to ~/.bashrc so
kdesrc-build is available in PATH everytime you open a terminal.
~/kdesrc/kdesrc-build/kf5-qt5-build-include in that file
ignore-kde-structure true and
make-options -jN to the global section in ~/.kdesrc-buildrc (this will make your life easier...):
global ... ignore-kde-structure true make-options -j5 # NOTE: 5 is the number of jobs, this should usually be (number-of-cpu-cores + 1) ... end global
Installing KDevelop and dependencies
Let kdesrc-build handle the compilation + installation of KDevelop and its (direct) dependencies
$ kdesrc-build --debug libkomparediff2 kdevplatform kdevelop-pg-qt kdevelop
The --debug parameter will give you the verbose output, all command invocations and compiler output. Helpful for trouble-shooting.
Note: If you ever want to update+recompile your complete KDevelop checkout(s), you simply run above command again (it'll reuse your old build information, so it'll just recompile the bare minimum)
Setting up a script for preparing the environment
Copy these commands to a new file called ~/.env-kf5:
export KF5=~/kde-5 export QTDIR=/usr export CMAKE_PREFIX_PATH=$KF5:$CMAKE_PREFIX_PATH 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/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 # (lib64 instead of lib, on OpenSUSE and similar) export QML2_IMPORT_PATH=$KF5/lib/qml:$KF5/lib64/qml:$KF5/lib/x86_64-linux-gnu/qml:$QTDIR/qml export QML_IMPORT_PATH=$QML2_IMPORT_PATH export KDE_SESSION_VERSION=5 export KDE_FULL_SESSION=true
Small note: If you're running a 32 bit kernel, replace lib64 with lib32 and x86_64-linux-gnu with i386-linux-gnu in above script
Every time you want to use your self-compiled KDevelop, you simply spawn a new terminal, and then run:
$ source ~/.env-kf5 $ kdevelop
That's it already! You should have a working version of KDevelop 5 running now!
Hacking on KDevelop
Enter the source directory, edit files (of course you can do that by importing ~/kdesrc/kdevelop into KDevelop, too!
$ cd ~/kdesrc/kdevelop <edit files>
Now, to recompile kdevelop, just invoke kdesrc-build again:
$ kdesrc-build --debug kdevelop
OR just go to the build directory and invoke:
$ cd ~/kdesrc/build/kdevelop $ make install
The same procedure applies for the kdevplatform repository -- in case you need to work on that part of KDevelop:
$ cd ~/kdesrc/kdevplatform <edit files> ...
You're ready to contribute your patch now!
The recommended way to contribute patches it to post them to KDE's Phabricator instance. The easiest way to create patches is to use Phabricator's Arcanist command-line tool.
The very brief version of what you have to do is:
$ cd ~/kdesrc/kdevelop <edit files> $ arc diff <arc will guide you through the required steps>
See here for more details: https://techbase.kde.org/Development/Phabricator#Using_Arcanist (in case you're not familiar with Arcanist at all)
Problems with kdesrc-build
In case kdesrc-build fails it will usually print a few lines like this at the end of the run:
<<< PACKAGES FAILED TO BUILD >>> libkomparediff2 - ~/kdesrc/log/2016-02-16-07/libkomparediff2/cmake.log :-(
Inspect that log to figure out what's going on:
$ cat ~/kdesrc/log/2016-02-16-07/libkomparediff2/cmake.log CMake Error at CMakeLists.txt:5 (find_package): Could not find a package configuration file provided by "ECM" (requested version 0.0.9) with any of the following names: ECMConfig.cmake ecm-config.cmake Add the installation prefix of "ECM" to CMAKE_PREFIX_PATH or set "ECM_DIR" to a directory containing one of the above files. If "ECM" provides a separate development package or SDK, be sure it has been installed.
In this case: the ECM (extra cmake modules) package is missing. The way you usually fix these kind of problems is to head over to http://packages.ubuntu.com and search for the distro package providing a particular file (ECMConfig.cmake in this case).
So the package search reveals
extra-cmake-modules being a hot candidate; to fix above error we simply install the package and the restart the build:
$ apt-get install extra-cmake-modules <restart build> $ kdesrc-build ...
The error should be gone now.
We're highly active in IRC, feel free to join us by visiting #kdevelop on Freenode. A web-based client can be found here: https://kiwiirc.com/client/irc.freenode.org/kdevelop
Just contact one of the core developers with the nick names milian, scummos, apol or kfunk if you need help.
The other way to get in touch is to write a mail to email@example.com
See here for details on how to reach us: https://www.kdevelop.org/contribute-kdevelop
We're always trying to be as helpful as possible!