KDE SC 4.4Beta2 from trunk on Ubuntu Karmic

[Update-05/01/2010] Kdesupport now requires a thread-safe version of libxml2-dev; if you are running Karmic, you have to download the sources and install the new library and header from the following link: https://launchpad.net/ubuntu/+source/libxml2/2.7.6.dfsg-1ubuntu1; this is not necessary if you are using Lucid Lynx.

[Update-24/12/2009] New dependencies are required, as pointed out in the kde-devel mailing list yesterday, you have to download, unzip and install the following new packages in order to fully enjoy KDE ;P

ftp://ftp.kde.org/pub/kde/stable/polkit-qt-1/polkit-qt-1-0.95.1.tar.bz2
ftp://ftp.kde.org/pub/kde/stable/apps/KDE4.x/admin/polkit-qt-0.9.3.tar.bz2
ftp://ftp.kde.org/pub/kde/stable/apps/KDE4.x/admin/polkit-kde-1-0.95.1.tar.bz2

KDE SC4.4 Beta2 Media Life wallpaper

KDE SC4.4 Beta2 Quadros wallpaper

Ok, since the steps are quite the same I previously described in this post, and since these days I’m too lazy to write a full-detailed how-to on building KDE, I’ll write here only the steps changed from the past post.

If you read some KDE developer’s blog in the few past months, you already noticed that some KDE modules are moving to git, so some of these will be managed from the kdesvn script, such as the QT repository.Β  But, before starting with the sources, as usual download some files (look at the Step0 section) plus libssh:

$ git clone git://git.libssh.org/projects/libssh/libssh.git

then clean up the whole KDE enviroment and install the needed files ( Step2 ): I added some new files,Β  so here it is the updated version:

$ sudo apt-get remove –purge kdebase* kde-* kdelibs* kdepim* kde-icons-oxygen libqt* libpoppler* poppler-utils libqca2 libqimageblitz4 libsoprano4 libstreamanalyzer0 libstreams0 libstrigiqtdbusclient0 libqca1c2 qca-dev

and install the following packages :

$ sudo apt-get install build-essential cdbs debhelper cmake libxml2-dev libxslt1-dev libbz2-dev shared-mime-info dbus-x11 libxkbfile-dev libgl1-mesa-dev libglu1-mesa-dev mesa-common-dev libxext-dev libjpeg62-dev libical-dev libpng12-dev subversion libsm-dev libxinerama-dev libtiff4-dev libxrender-dev libfontconfig1-dev libcurl4-openssl-dev libboost-dev libxcursor-dev doxygen libungif4-dev libdbus-1-dev libssl-dev libgpgme11-dev libasound2-dev kdesdk-scripts libpth-dev libjasper-dev ssh libglib2.0-dev libpcre3-dev diffstat libexpat-ocaml-dev libclucene-dev libclucene0ldbl libexiv2-dev quilt libspectre-dev xsltproc libxtst-dev libxdamage-dev libxcomposite-dev x-dev libfam0 libfam-dev libaspell-dev libenchant-dev libsmbclient-dev libopenexr-dev libraw1394-dev libpulse-dev libpci-dev libusb-dev network-manager-dev libgphoto2-2-dev mysql-server-core-5.1 mysql-admin libeet-dev gstreamer0.10-plugins-base sun-java6-jdk libcppunit-dev libgstreamer-plugins-base0.10-dev libmono-dev libiw-dev libxss-dev libslp-dev lm-sensors bluez libbluetooth-dev libgps-dev libxklavier-dev libsasl2-dev acl flex bison libck-connector-dev libsensors-dev libxrandr-dev lzma-dev libssh-dev libxft-dev libpolkit-grant-dev libpolkit-dbus-dev libosip2-dev libeigen2-dev libdvdread-dev libmusicbrainz-dev libflac-dev libflac++-dev libsndfile-dev libsamplerate-dev libogg-dev libmpcdec-dev libmad0-dev libmp3lame-dev libavbin-dev libavcodec-dev libswscale-dev libcdparanoia-dev libmysqld-dev libtidy-dev libimlib2-dev libnl-dev libexempi-dev libv4l-dev libgcal-dev xscreensaver libcfitsio3-dev libindi-dev xplanet libsane-dev libxxf86vm1 libchm-dev libdjvulibre-dev libepub-dev libacl1-dev libvncserver-dev libortp-dev libspeex-dev libotr2-dev libmsn-dev libmediastreamer-dev libmeanwhile-dev libgadu-dev libassuan-dev libpilotobjects-dev libhunspell-dev libsvn-dev libarchive-dev libfftw3-dev libtheora0 libvorbisenc2 libxine-dev libxine-xvdr libmtp-dev libloudmouth1-dev libxine1-ffmpeg libgpod-nogtk-devΒ  libaudio-dev liblcms1-dev libmng-dev libsqlite0 libsqlite0-dev libgmp3-dev libxmu-dev libaviformat-dev

Now it’s time to build and install the QT libraries ( Step2 ): since kdesvn-build script handle this for you, the only step you have to perform is adding some lines in the .kdesvn-buildrc file, after the end of the global definitions:

module qt-copy

configure-flags -qt-gif -debug -fast -no-separate-debug-info \
-system-libpng -system-libjpeg -system-zlib \
-dbus -webkit -no-phonon -plugin-sql-mysql \
-script -scripttools \
-nomake examples -nomake demos -prefix /opt/qt4 -v

make-options -j3

apply-qt-patches true

end module

then, type sudo kdesvn-build qt-copy and take a coffee !

By the way, I didn’t tested this new kdesvn feature ( I prefer the old “git clone/pull .. checkout .. blablabla .. install” stuff indeed ) because I actually build QT from scratch every 2 or 3 months, depending on the features/patched introduced; thus, I don’t need to rebuild QT everytime I type “sudo kdesvn-build” ( yeah I know, there is also the “–resume-from<module>” option but, you know, I’d rather prefer type the “git pull” stuff once in 3 months rather than the “kdesvn-build –resume-from blabla” twice a week πŸ˜› ).Β  So, think about your real need and then do your best choice πŸ˜‰ Now, you have to build all the packages you downloaded from the previous guide i linked at the beginning of this post; but, before doing that, install libssh:

Libssh :

  • $ cd your_libssh_directory
  • $ mkdir build && cd build
  • cmake .. && make && sudo make install

Now it’s time to download and build KDE sources: the process is almost the same I described in my last how-to with the following exceptions:

  • kdevplatform, kdevelop modules are now part of extragear/sdk module, so if you are using my kdesvn-buildrc config file, be sure to remove these two modules, and replace them with

module extragear/sdk

end module

and build and install the extragear/sdk/kdevplatform submodule; otherwise building the whole sdk in one step will fail.

  • konversation moved to git too, so if you want to try it, add the following lines in your kdesvn-buildrc file:

module konversation

repository git://gitorious.org/konversation/konversation.git
branch master
end module

and delete the old entry in extragear/network

Now you can run kdesvn-build =)

After this looong building, it’s time to set up kdm: as regards the kde4.desktop and kdestart.sh files, the procedure is the same described in the old Step4; things are slightly different only for kdm. Since K/Ubuntu 9.10 moved permanently to Upstart, I wanted to setup kdm in the right way, not with a workaround such as in my last how-to. So I cheked in the /kdm/README file, and I discovered the last update was ~2 years ago and contained only a guide to set it up with inittab ( my reaction –> O.o ). So I started reading how Upstart works and, after some wrong tries, I came up with a functioning procedure =)

Then, I wrote a mail to the kde-devel mailing lists to see if my procedure was making sense, and then finally a developers asked me to update the README file: here you can find out how to setup kdm in the right way ; )

The PlasMate TimeLine refactored

After a looooong time since my last commit in PlasMate ( damn university duties 😦 ), in this last week I started modifying the TimeLine code in order to allow its placement in every edge of the app. Indeed, until my today’s commit, the TimeLine was implemented with a QListWidget, so you can display your items only in a vertical layout; if you tried to move the TimeLine on the top or the bottom edge, the ugly result is shown in the screenshot below:

At a first sight, it seems to be placed in the left edge of the screen, but if you pay more attention, you can see that the TimeLine widget is placed in the bottom edge (see the size grip under the red “??”Β  for comparison), which is not how it should be shown !!!

So, I started rewriting the TimeLine using now a QTableWidget to display the elements, but during this improvement I remembered where the TimeLine came from. The TimeLine i wrote for the GSoC is similar to the Workflow widget, and that widget was taken from the Okular sidebar by Ruphy when he started the very first basis of PlasMate. And, as you know, Okular’s Sidebar does a lot of things we don’t actually need, so I came up with a deep refactoring of the whole TimeLine source code.

So, after few days gone-by refactoring and fixing some bothersome bugs (the worse of them appeared when down-sizing the window, which causes the scrollbar to be show and partially cover the icons or the text, depending on the widget orientation), the result is a fully placeable TimeLine, with a source code reduced of by a 20% factor πŸ™‚

Below, here it is a short video about how it behaves now.

It still has some ugly behaviours, but i hope to fix them in the next few days !

Coming soon: same diet for the workflow dockwidget πŸ˜‰