History:

Some weeks ago I spoke with David how to configure what debug to show in qt5 (now it uses qloggingcategory)

In kde4 time we had kdebugdialog. It allowed us to define some debug areas.

But we are not able to extend it because it was in kdelibs4support module and it was kdebug specific.

Qt5 doesn’t provide application to do it.

Application:

So I decided to create a new application named “kdebugsettings” (c) David :)

This application worked as old kdebugdialog, we have a file which defines categories.

This file is named kde.categories.

I added debug area that I found in source code. More areas will add in the future.

It will allow to generate qCDebug rule.

In kdebugsettings we have 2 tabs, one for kde applications which are defined in kde.categories and another one which allows to define custom rules (if you want to show warning/debug/all, enable/disable it).

Where to find it ?

It is stored in projects.kde.org, in playground/util module.

You can test it and report bug/feature etc.

Future:

I hope for 15.08 to release it.

Last week I decided to evaluate “Ninja”.

What is it ?

It’s a build system developed by Chrome for Chrome. Evan Martin Developed it during his work.

He wanted to create a fast build system. It was a success :)

How to use it ?

Easy you need to create a file named Ninja.build which defines all dependancy as a Makefile.

But it’s not a problem because CMake is able to generate it for you.

So for KDE it’s not a problem as we use CMake to generate projects.

So now the command line:

“cmake -GNinja ../”

Too bad we can’t override default cmake generator. So I created a alias on my computer to avoid to write each time a big command line:

Add “alias cmninja=’cmake -GNinja’” in .alias

After that you call it you will have a “ninja.build” in build directory.

Now for launching the build it it’s very easy: write “ninja”

make <-> Ninja commands:

Ninja has same commands as Make.

make clean <-> ninja -t clean
make -j8   <-> ninja -j8
make install <-> ninja install
make -k <-> ninja -k[X] (it will stop after X failed)

Pro/Cons ?

Pro:

  • Faster as Make when we build from scratch
  • Less verbose as make
  • Very fast when we build and there is no files which changed (the time can be divided by 3 some time). So very fast when we rebuild all kde :)
  • Ninja will detect the amount of CPUs and use them all. (Not necessary to use ninja -j<X>)

Cons:

  • We don’t have color output.
  • We can’t build in subdirectory. For example if I build kdepim and I hack kmail, I can go to kmail subdirectory. I very bad for it.
  • qmake doesn’t generate ninja.build so we can’t use in qmake project.

Can I use in kdesrc-build?

Yes you can ! I use it.

Correction: We can use it in top-level.

This morning I fixed kf5-frameworks-build-include which forced build system.

So now you can add “custom-build-command ninja” in global settings of kdesrc-buildrc

cmake-options -GNinja -DCMAKE_BUILD_TYPE:STRING=debug -DKDE4_BUILD_TESTS=true

(just adds “-GNinja” to your current cmake-options)

So how I use it?

I use it for building all plasma5/kf5, it’s very fast to build. So I am happy.

For kdepim I still use make as I want to build in subdirectory.

More information:

You can have more information here: http://martine.github.io/ninja/manual.html

In December I blogged about porting of kdegames to kf5.

My objective was to release some games for the ’15.04′.

So I worked harder to make it possible.

You can see status here : https://techbase.kde.org/Projects/Games/kdegame_apps_porting_kf5_status

So the plan now is to merge some application in master.

This WE we will merge libkdegames and the game names Bovo.

After that we will merge some applications when it’s possible (A game mustn’t have kdelibs4support, must have migration settings done, etc.) each 3 days until 15.04 freeze (in 4 weeks).

So we need YOU !

We need some testers to help us to make as bug free as possible.

As you saw I continue to work on 4.14 branch, in parallel I work on KF5 porting.

Why do I continue to work on 4.14 ?

Because KF5 kdepim version will not arrive before that AkonadiNext will be stable, so it will take time. AkonadiNext is writing from scratch.

I don’t know if you remember but during porting to akonadi, kdepim 4.4 was not improving during 2 years, no bug fixing, nothing. It was a very bad idea.

So I decided to continue to fix 4.14, until we release KF5.

What do I do in 4.14 ?

I continue to fix bug. And there is still a lot of bugs :)

I try to make it stable.

During this period I try to write a lot of unit-test on this branch.

Why do I write unit test ?

Because there is not unit test on kdepim :) It’s a good reason.

But there is a second reason, as I port kdepim to KF5 and it’s not stable to use it, I can’t know if all works fine. So I create unit test, I verify that it works on 4.14 and after that I just need to run unit test on KF5 to be sure that it works fine on KF5 too.

What do I do when I add a new feature in KF5 ?

Now each new feature that I add, or feature will add in kdepim will have a unit test.

So in KMail or in each lib/apps that I maintain in kdepim, I will not accept new feature if there is not unit-test, because it’s very useful and I don’t want to write them after :)

It’s a pain when we need to write unit test on a code that we didn’t write.

And sometime code is not adapted to create unit test so it’s necessary to rewrite it. (I rewrote some code in 4.14 to allow to create some unit test).

It’s more easy to create unit test when we write feature that write them after.

When I searched which modules were ported to KF5, I saw that kdegames programs were not ported.

Ok it’s not totally true, libkdegames/libkmahjongg/kmahjongg were ported to KF5.

So this week I decided to start to port them.

I did it because:

  • kdegames applications are small applications (I ported some programs in 15 minutes)
  • My porting scripts allowed me to speed porting.
  • Theses applications don’t use specify features.
  • Nobody did it

So after 3 days I ported:

  • granatier
  • kdiamond
  • killbots
  • ktuberling
  • lskat (in progress)
  • palapeli (in progress)

Ok there are not free-kdelibs4 but I hope to clean up it soon.

But there is a problem, I don’t like to play (and I don’t have time to do it)

So it will good if some guys can be able to test them. I can try to fix bug, but really I don’t have time to test all applications.

Or it will good if some guys can be able to remove some kdelibs4 support in these programs.

(You can use kdesrc-build to build them now).

I will continue to migrate games applications.