mirror of
https://github.com/ioacademy-jikim/debugging
synced 2025-06-10 01:16:12 +00:00
292 lines
8.7 KiB
Plaintext
292 lines
8.7 KiB
Plaintext
|
|
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
|
|
|