| |
| 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 |
| |