From: Julian Seward Date: Thu, 30 Oct 2008 13:17:35 +0000 (+0000) Subject: Add notes on how to build/run KDE 4.2. X-Git-Tag: svn/VALGRIND_3_4_0~173 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0401fb27063bfd080a71155310c131316db62bd4;p=thirdparty%2Fvalgrind.git Add notes on how to build/run KDE 4.2. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8721 --- diff --git a/docs/internals/Makefile.am b/docs/internals/Makefile.am index 91a1abcea2..691d229478 100644 --- a/docs/internals/Makefile.am +++ b/docs/internals/Makefile.am @@ -4,6 +4,7 @@ EXTRA_DIST = \ BIG_APP_NOTES.txt \ darwin-notes.txt darwin-syscalls.txt \ directory-structure.txt \ + howto_BUILD_KDE42.txt \ howto_oprofile.txt \ m_replacemalloc.txt \ m_syswrap.txt module-structure.txt notes.txt porting-HOWTO.txt \ diff --git a/docs/internals/howto_BUILD_KDE42.txt b/docs/internals/howto_BUILD_KDE42.txt new file mode 100644 index 0000000000..1756c809b1 --- /dev/null +++ b/docs/internals/howto_BUILD_KDE42.txt @@ -0,0 +1,291 @@ + +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 | 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 +