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

Pendant qq semaines j’ai pas compris pourquoi j’avais pas de systray.

C’était ennuyeux pour konversation ou KMail.

Eike Hein m’a donné la solution: libdbusmenu-qt5 et bien sur qt5.4 et sni-qt4 :)

Oui ça fait beaucoup mais sans cela ça marche pas et c’était très ennuyeux.

Voilà pour ceux qui cherchaient au cas ou.

Depuis quelques semaines j’ai fait la migration à Plasma5.

La seule application que je peux pas migrer encore est kmail (et applications associées).

Alors je pourrais utiliser les versions fournies par ma distro mais bon je suis dev donc j’ai besoin de la version ‘master’ :)

Donc c’est possible de faire cohabiter les 2 environnements dans le même répertoire, mais ça demande quelques changements.

Alors ma méthode:

-> builder tout kf5 sauf kdepim/akonadi (kdesrcbuild peut faire cela tout seul)

-> builder tout kde4 donc kdelibs/akonadi/kdepim* (bien sur pas le reste de kde4 qui servirait à rien et conflicterait).

Et ça marche bien :)

Alors comment je fais:

j’ai créé un répertoire:

“/kde5/source/kde5-4″ (le nom importe peu :) )

dedans j’ai mis un   kdesrc-buildrc ça a la configuration standard. (à adapter pour votre machine bien sur)

mais dans “extragear/utils/kdesrc-build/kf5-qt5-build-include”  j’ai commenté le build de  kdepim “#include kf5-kdepim-build-include”

une fois cela buildé on peut builder kde4

j’ai créé un sous répertoire “/kde5/source/kde5-4/kde4″

et là de même un kdesrc-buildrc-kde4 qui construit que ce qu’il faut

Et après un ptit bout de temps vous pouvez avoir un plasma5 et un kmail4

Et tout marche nickel:)

Une fois que vous avez cela pour mettre à jour il y a quelques petites choses à faire.

Le rebuild de plasma5 va pas marcher car il trouve les includes de kde4

Donc avant chaque build je fais:

“cd /opt/kde4-5″ (on répertoire ou se trouve le build)

mv include/*.h  /include/old/
mv kactivites/ kactivites-old
mv kio/ kio-old
mv plasma plasma-old

je build plasma5

et après je vais l’inverse:

mv include/old/*.h  /include/
mv kactivites-old/ kactivites
mv kio-old/ kio
mv plasma-old plasma

et je rebuild kde4

voilà et tout marche sur des roulettes :)

J’espère que ça aidera ceux qui veulent faire comme moi

Bon WE.

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.

Alors bonne année à tout le monde!!!

Je souhaite que KDE soit de plus en plus utilisé sur le bureau :)

Bon cette année devrait être l’année KF5, de plus en plus d’applications sont portées.

Donc je pense que d’ici 6 mois les distros l’utiliseront par défaut.

2015 devrait être une bonne année!