Building, running and Valgrinding KDE 4.2 svn from source ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ It is recommended to make a new user ("kde4", maybe) to do the building, and do all the following as that user. This means it can't mess up any existing KDE sessions/settings. Prelims (note, needed for both building and running KDE4): # Change these as you like; but "-g -O" is known to be a good # speed vs debuginfo-accuracy tradeoff for Valgrind export CFLAGS="-g -O" export CXXFLAGS="-g -O" export KDEINST=$HOME/InstKdeSvn ## change as you like export PATH=$KDEINST/bin:$PATH export LD_LIBRARY_PATH=$KDEINST/lib:$KDEINST/lib64:$LD_LIBRARY_PATH unset XDG_DATA_DIRS # to avoid seeing kde3 files from /usr unset XDG_CONFIG_DIRS export PKG_CONFIG_PATH=$KDEINST/lib/pkgconfig:$KDEINST/lib64/pkgconfig:$PKG_CONFIG_PATH # else kdelibs' config detection of strigi screws up Check these carefully before proceeding. env | grep FLAGS env | grep PATH env | grep XDG env | grep KDEINST The final installation will be placed in the directory $KDEINST. As a general comment, it is particularly important to read the output of the cmake runs (below), as these tell you of missing libraries that may screw up the build. After a cmake run, you may want to install some supporting libs (through yast, etc) before re-running cmake. The "rm -f CMakeCache.txt" ensures cmakes starts afresh. Getting the sources ~~~~~~~~~~~~~~~~~~~ # note also that this assumes that the KDE 4.2 sources are # acquired from the KDE trunk; that is, this is happening # prior to the 4.2 release. # note this takes ages, unless you are fortunate enough to have # a gazigabit-per-second network connection # checking out merely "trunk" is a really bad idea # due to the enormous amount of unnecessary stuff fetched. # svn co svn://anonsvn.kde.org/home/kde/trunk/kdesupport trunk_kdesupport svn co svn://anonsvn.kde.org/home/kde/trunk/KDE trunk_KDE # This alone soaks up about 2.5GB of disk space. # You'll also need to snarf a copy of qt-x11-opensource-src-4.4.3.tar.bz2 # (md5 = 00e00c6324d342a7b0d8653112b4f08c) Building Qt ~~~~~~~~~~~ First build qt-4.4.3 with QtDBus support and some other kind of support (can't remember what. jpeg?). These are both added by default provided the relevant packages are installed. Check the Qt configure output to be sure. bzip2 -dc qt-x11-opensource-src-4.4.3.tar.bz2 | tar xvf - cd qt-x11-opensource-src-4.4.3 emacs mkspecs/common/g++.conf # change QMAKE_CFLAGS_RELEASE and QMAKE_CFLAGS_DEBUG both to be -g -O # optionally, in src/corelib/tools/qvector.h, for the defns of # QVectorData and QVectorTypedData, change #if defined(QT_ARCH_SPARC) && defined(Q_CC_GNU) && defined(__LP64__) \ && defined(QT_BOOTSTRAPPED) # to "if 1 || defined ..." # twice (else get strange memcheck errors with QVector on ppc. Not # sure if this is a qt bug (possibly), a gcc bug (unlikely) or a # valgrind bug (unlikely)). I don't think this is necessary on x86 # or x86_64. echo yes | ./configure -platform linux-g++-64 -prefix $KDEINST # NB: change that to linux-g++-32 for a 32 bit build # check configure output before proceeding, to ensure that # qt will built with support for the following: # # QtDBus module ....... yes (run-time) # GIF support ......... plugin # TIFF support ........ plugin (system) # JPEG support ........ plugin (system) # PNG support ......... yes (system) # MNG support ......... plugin (system) # zlib support ........ system # OpenSSL support ..... yes (run-time) # # If some of these are missing ("... no"), then it means you need # to install the relevant supporting libs and redo the qt configure # (make confclean, then redo configure) make -j 2 make install # this takes approx 1 hour on a dual processor 2.5GHz PPC970 # check that this installed correctly # - qmake is in $KDEINST/bin and is linked against stuff in # $KDEINST/lib # - ditto designer and linguist # - check qmake, designer, linguist actually start up/run Building KDE ~~~~~~~~~~~~ The basic deal is for each package, use a separate source and build dir cd to the build dir (can be anything) then # note that LIB_SUFFIX must be "" for 32 bit builds and "64" for 64 bit builds rm -f CMakeCache.txt && cmake /path/to/source/tree/for/this/package -DCMAKE_INSTALL_PREFIX=$KDEINST -DCMAKE_BUILD_TYPE=debugfull -DLIB_SUFFIX=64 -DQT_QMAKE_EXECUTABLE=$KDEINST/bin/qmake # check output, particularly that it has the right Qt make # make -j 2 quite often screws up make install Packages should be built in the order: kdesupport kdelibs kdepimlibs kdebase-runtime kdebase-workspace kdebase This gives a working basic KDE. Then build the rest in any order, perhaps: kdegraphics kdeadmin kdeutils kdenetwork kdepim So the actual stuff to do is: cd ~ mkdir build cd build mkdir kdesupport cd kdesupport rm -f CMakeCache.txt && cmake ~/trunk_kdesupport \ -DCMAKE_INSTALL_PREFIX=$KDEINST -DCMAKE_BUILD_TYPE=debugfull \ -DLIB_SUFFIX=64 -DQT_QMAKE_EXECUTABLE=$KDEINST/bin/qmake make -j 2 make install cd ~/build mkdir kdelibs cd kdelibs rm -f CMakeCache.txt && cmake ~/trunk_KDE/kdelibs \ -DCMAKE_INSTALL_PREFIX=$KDEINST -DCMAKE_BUILD_TYPE=debugfull \ -DLIB_SUFFIX=64 -DQT_QMAKE_EXECUTABLE=$KDEINST/bin/qmake make -j 2 make install cd ~/build mkdir kdepimlibs cd kdepimlibs rm -f CMakeCache.txt && cmake ~/trunk_KDE/kdepimlibs \ -DCMAKE_INSTALL_PREFIX=$KDEINST -DCMAKE_BUILD_TYPE=debugfull \ -DLIB_SUFFIX=64 -DQT_QMAKE_EXECUTABLE=$KDEINST/bin/qmake make -j 2 make install cd ~/build mkdir kdebase-runtime cd kdebase-runtime rm -f CMakeCache.txt && cmake ~/trunk_KDE/kdebase/runtime \ -DCMAKE_INSTALL_PREFIX=$KDEINST -DCMAKE_BUILD_TYPE=debugfull \ -DLIB_SUFFIX=64 -DQT_QMAKE_EXECUTABLE=$KDEINST/bin/qmake make -j 2 make install cd ~/build mkdir kdebase-workspace cd kdebase-workspace rm -f CMakeCache.txt && cmake ~/trunk_KDE/kdebase/workspace \ -DCMAKE_INSTALL_PREFIX=$KDEINST -DCMAKE_BUILD_TYPE=debugfull \ -DLIB_SUFFIX=64 -DQT_QMAKE_EXECUTABLE=$KDEINST/bin/qmake make -j 2 make install cd ~/build mkdir kdebase-apps cd kdebase-apps rm -f CMakeCache.txt && cmake ~/trunk_KDE/kdebase/apps \ -DCMAKE_INSTALL_PREFIX=$KDEINST -DCMAKE_BUILD_TYPE=debugfull \ -DLIB_SUFFIX=64 -DQT_QMAKE_EXECUTABLE=$KDEINST/bin/qmake make -j 2 make install cd ~/build mkdir kdegraphics cd kdegraphics rm -f CMakeCache.txt && cmake ~/trunk_KDE/kdegraphics \ -DCMAKE_INSTALL_PREFIX=$KDEINST -DCMAKE_BUILD_TYPE=debugfull \ -DLIB_SUFFIX=64 -DQT_QMAKE_EXECUTABLE=$KDEINST/bin/qmake make -j 2 make install cd ~/build mkdir kdeadmin cd kdeadmin rm -f CMakeCache.txt && cmake ~/trunk_KDE/kdeadmin \ -DCMAKE_INSTALL_PREFIX=$KDEINST -DCMAKE_BUILD_TYPE=debugfull \ -DLIB_SUFFIX=64 -DQT_QMAKE_EXECUTABLE=$KDEINST/bin/qmake make -j 2 make install cd ~/build mkdir kdeutils cd kdeutils rm -f CMakeCache.txt && cmake ~/trunk_KDE/kdeutils \ -DCMAKE_INSTALL_PREFIX=$KDEINST -DCMAKE_BUILD_TYPE=debugfull \ -DLIB_SUFFIX=64 -DQT_QMAKE_EXECUTABLE=$KDEINST/bin/qmake make -j 2 make install cd ~/build mkdir kdenetwork cd kdenetwork rm -f CMakeCache.txt && cmake ~/trunk_KDE/kdenetwork \ -DCMAKE_INSTALL_PREFIX=$KDEINST -DCMAKE_BUILD_TYPE=debugfull \ -DLIB_SUFFIX=64 -DQT_QMAKE_EXECUTABLE=$KDEINST/bin/qmake make -j 2 make install cd ~/build mkdir kdepim cd kdepim rm -f CMakeCache.txt && cmake ~/trunk_KDE/kdepim \ -DCMAKE_INSTALL_PREFIX=$KDEINST -DCMAKE_BUILD_TYPE=debugfull \ -DLIB_SUFFIX=64 -DQT_QMAKE_EXECUTABLE=$KDEINST/bin/qmake make -j 2 make install cd ~/build mkdir kdeartwork cd kdeartwork rm -f CMakeCache.txt && cmake ~/trunk_KDE/kdeartwork \ -DCMAKE_INSTALL_PREFIX=$KDEINST -DCMAKE_BUILD_TYPE=debugfull \ -DLIB_SUFFIX=64 -DQT_QMAKE_EXECUTABLE=$KDEINST/bin/qmake make -j 2 make install cd ~/build mkdir kdemultimedia cd kdemultimedia rm -f CMakeCache.txt && cmake ~/trunk_KDE/kdemultimedia \ -DCMAKE_INSTALL_PREFIX=$KDEINST -DCMAKE_BUILD_TYPE=debugfull \ -DLIB_SUFFIX=64 -DQT_QMAKE_EXECUTABLE=$KDEINST/bin/qmake make -j 2 make install # still todo: koffice, amarok ? Running KDE ~~~~~~~~~~~ Make sure dbus is running (pstree -p <myusername> | grep dbus) If not running: eval `dbus-launch --auto-syntax` probably best to ensure there's only one instance, to avoid confusion You need PATH, LD_LIBRARY_PATH, XDG_DATA_DIRS and XDG_CONFIG_DIRS set as above Then run startkde in an xterm on the new X server