Building KDevelop 5 from source on Ubuntu 15.10
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.
Setup
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://git@git.kde.org/"]
pushInsteadOf = kde:
Install kdesrc-build
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.
Configure kdesrc-build
edit ~/.kdesrc-buildrc
Replace /path/to/kdesrc-build/kf5-qt5-build-include
with ~/kdesrc/kdesrc-build/kf5-qt5-build-include
in that file
Add 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 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
Running KDevelop
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
Restart KDevelop:
$ kdevelop
You're ready to contribute your patch now!
Contributing patches
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)
Troubleshooting
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.
Help
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 kdevelop-devel@kde.org
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!
Enjoy!
Update (Jan 2018): Removed any mention of the kdevplatform repository, which is now part of the KDevelop repository. Thus kdevplatform no longer needs to be built separately.