This tutorial is intented for people who are using Debian, and want to check out or test some idea on KDE code without much setting up to do.
This tutorial shows a way of easily downloading and compiling and running the necessary software.
First you need to add the source repositories to your installation. This is normally done by editing /etc/apt/sources.list as user root and adding a line starting with deb-src:
kdesudo kwrite /etc/apt/sources.list
The easy way is to copy your existing deb line onto a new line, and change deb to deb-src:
In most(all?) of the cases this will work.
Then you must let this change know to the package manager, so do as root:
Setting up the dependencies
Now you want to be able to build a certain package, and in this example we will build the kcontrol configuration modules(aka KCM modules) and the application containing them called systemsettings. Let's say we want to see if we can maybe fix some bug in the Display configuration module, which is called randr actually. In debian the package is systemsettings, so first we will get the build dependencies of that package, so do as root:
aptitude build-dep systemsettings
This will download and install all needed dependencies which are some build tools and otherwise mostly packages with -dev at the end of them, which are in most cases a bunch of header files.
Getting the source
Now in your home directory, as a regular user, make a new directory, and go into it:
Now we get the sources in this directory by simply doing:
apt-get source systemsettings
This downloads the source and applies all the debian patches for you. In this case, it downloads kdebase-workspace because the systemsettings code is only a small part of the kdebase-workspace package. Now go into the newly extracted directory. This is kdebase-workspace-4.3.2 in my case.
Building the source
Now we go into the source directory, and let "cmake" generate the Makefiles, which are then used by the "make" command to build the code. But first we change the owner from root back to our user "karel". This is done like this:
[email protected]:/home/karel/kde4devel/kdebase-workspace-4.3.2 # chown -R karel.karel ../* [email protected]:/home/karel/kde4devel/kdebase-workspace-4.3.2 # exit [email protected]:/home/karel/kde4devel/kdebase-workspace-4.3.2 # cmake . [email protected]:/home/karel/kde4devel/kdebase-workspace-4.3.2 # cmake-gui .
Now select only the components starting with "BUILD_" you want. In my case it was rather the components I'm sure of that I don't want :). So I ended up with only BUILD_kcontrol and systemsettings. Then click on the "Configure" button and then on the "Generate" button. Close the program now. Now we have makefiles for everything we want to build. So now do the make command to build what we have selected:
[email protected]:/home/karel/kde4devel/kdebase-workspace-4.3.2 # make
Now it is built!
Running the program
To run our module, we go to the directory of the randr module. There we tell it to do a "make install" as root. This will install the needed files to /usr/local.
[email protected]:/home/karel/kde4devel/kdebase-workspace-4.3.2/kcontrol/randr# make install
We need to tell our current session the additional KDE path where it needs to look for services and libraries and programs. This is done by filling in the KDEDIRS environment variable like this:
[email protected]:/home/karel/kde4devel/kdebase-workspace-4.3.2/kcontrol/randr # export KDEDIRS=/usr/local
Then we start the randr module like this:
[email protected]:/home/karel/kde4devel/kdebase-workspace-4.3.2/kcontrol/randr # ./krandrtray
This starts the tray icon which find the kcm module "randr" first in the KDEDIRS location, so this one is loaded. If you start the systemsettings program, it also loads in the same way the kcm config module in /usr/local. So this depends on the KDEDIRS variable, without it, the randr module found in the default debian location is used!
So now you can change something in the code, run "make" and then "make install" as root(or "sudo make install") in the correct directory, and you can test the program out.