Friday, December 11, 2009

Build kde4 from source

Kool Desktop Environment (KDE)

Updated to kde-4.4.0 2/10/2010
  • TODO: untested
  • sip and PyQT urls missing - fix? OK, I hate when they move stuff.
  • Qt-4.6.0 required for version on this page
  • kde 4.3.4 / Qt-4.5.3 version saved here
  • See build kde 4.4.3
I found instructions to compile and install kde4 from source at blfs wiki, kde howto, and Community Driven BLFS. I tried to make a composite because they match up very loosely. To install kde4 from sources took several false starts before the build order was working and it stopped whining about something missing. It takes lots of time and it eats lots of space while it is building. So when I tried to install this on a 5 GB partition, it ran out of space. I moved /sources to another partition and made a symlink.

To build kde from source is a big job. But it's nice to be able to start with a minimal menu and add things rather than to start huge and remove things until it all breaks. Eventually, this very long build was finished and ready for a test drive and some tweaking.

Briefly:
1 - Prerequisites
2 - Pre-installation configuration
3 - dbus-glib (if not installed)
4 - hal-info (if not installed)
5 - eggdbus (a.k.a. D-Bus GObject Bindings) (if not installed)
6 - cppunit
7 - Qt4
8 - cmake
9 - automoc4
10 - xcb-proto (if not installed)
11 - libxcb (if not installed)
12 - phonon
13 - clucene-core
14 - strigi
15 - soprano
16 - boost-jam
17 - boost
18 - kdelibs
19 - qimageblitz
20 - akonadi
21 - libgpg-error
22 - gpgme
23 - cyrus-sasl
24 - libical
25 - tcp_wrappers
26 - openldap
27 - kdepimlibs
28 - kdelibs-experimental
29 - sip
30 - PyQt
31 - eet
32 - qzion
33 - qedje
34 - kdebindings
35 - kdebase-workspace
36 - kdebase
37 - oxygen-icons
38 - eigen
39 - kdeartwork
40 - kdebase-runtime
41 - kdemultimedia
42 - Starting kde
43 - Bugus bugs
44 - Looking forward




# I had previously installed:

LFS development version

from BLFS development version:
wget pkg-config Python libxml2 libxslt expat
freetype fontconfig XML-Parser URI
X-Window-System nss openssl pciutils
cairo glib-2 pango atk tiff libjpeg gtk+-2
dbus libusb usbutils hal alsa-lib alsa-utils
shared-mime-info hicolor-icon-theme
xine-lib xine-ui libdvdcss intltool cups
giflib lesstif imlib2 libglade scrollkeeper
xvidcap giflib

and
ttf-bitstream-vera fonts
copied to /usr/lib/X11/fonts/TTF

Not sure which are prerequisites.



BUILD KDE 4.4.0

Total SBU: 131.08
Total download MiB: 448.74



# PRE-INSTALLATION CONFIGURATION for qt-4.6.0 and kde-4.4.0



# If X-Window-System is installed in /usr, create a compatibility symlink
because developers still think it is /usr/X11R6

ln -v -sn /usr /usr/X11R6

# Make sure the link is right

# This allows Fontconfig to use the TrueType fonts provided by X (which are scalable and of higher quality).

ln -v -sn /usr/lib/X11/fonts/TTF /usr/share/fonts/X11-TTF

# Create directories for ldconfig

install -v -d /opt/kde-4.4.0/lib
install -v -d /opt/qt-4.6.0/lib
ln -v -sfn qt-4.6.0 /opt/qt

# Make sure the link is right

# Add qt and kde libs to /etc/ld.so.conf

cat >> /etc/ld.so.conf << "EOF"
# Begin qt addition to /etc/ld.so.conf
/opt/qt/lib
# End qt addition

# Begin kde addition to /etc/ld.so.conf
/opt/kde-4.4.0/lib
# End kde addition
EOF

# Add qt to man path

cat >> /etc/man_db.conf << "EOF"
# Begin qt addition to man_db.conf
MANDATORY_MANPATH /opt/qt/doc/man
# End qt addition to man_db.conf
EOF

# Set paths needed during build and to run kde

cat >> /etc/profile.d/extrapaths.sh << "EOF"
# kde additions to /etc/profile.d/extrapaths.sh
pathappend /usr/local/share XDG_DATA_DIRS
pathappend /usr/share XDG_DATA_DIRS
pathappend /etc/xdg XDG_CONFIG_DIRS
export KDE_VERSION=4.4.0
pathappend /etc/kde/xdg XDG_CONFIG_DIRS
pathappend /opt/kde-${KDE_VERSION} KDE_PREFIX
pathappend $KDE_PREFIX/share XDG_DATA_DIRS
# end additions for kde
EOF

# VERY IMPORTANT !!!


# Logout completely before proceeding.








# That is essential to provide the proper build paths.

echo "Logout completely before proceeding."
echo "Or shutdown/restart before proceeding."
echo "It is essential for the proper build paths."









# Build dbus-glib
# Needed if not installed
PKG="dbus-glib"
PKG_VERSION="0.82"
PKG_FILE="dbus-glib-0.82.tar.gz"
BUILD_SBU=0.19
DOWNLOAD_MiB=0.64
URL=http://dbus.freedesktop.org/releases/dbus-glib/dbus-glib-0.82.tar.gz
MD5="aa2a4517de0e9144be3bce2cf8cdd924"

./configure --prefix=/usr \
--sysconfdir=/etc \
--libexecdir=/usr/lib/dbus-1.0/dbus-1 &&
make
make install





# Build hal-info
# Needed if not installed
PKG="hal-info"
PKG_VERSION="20090414"
PKG_FILE="hal-info-20090414.tar.gz"
BUILD_SBU=0.03
DOWNLOAD_MiB=0.13
URL=http://hal.freedesktop.org/releases/hal-info-20090414.tar.gz
MD5="ae7177ab8f0163d3ef2df71f0de2b357"

./configure --prefix=/usr
make install





# Build eggdbus
# GObject bindings for D-Bus
# Needed if not installed
PKG="eggdbus"
PKG_VERSION="0.5"
PKG_FILE="eggdbus-0.5.tar.gz"
BUILD_SBU=0.46
DOWNLOAD_MiB=0.75
URL=http://hal.freedesktop.org/releases/eggdbus-0.5.tar.gz
MD5="44f1f6387c49e8198d7aa755aeee46c6"

./configure --prefix=/usr &&
make
make install





# Build cppunit
# a C++ unit testing framework
PKG="cppunit"
PKG_VERSION="1.12.1"
PKG_FILE="cppunit-1.12.1.tar.gz"
BUILD_SBU=0.50
DOWNLOAD_MiB=0.73
URL=http://downloads.sourceforge.net/cppunit/cppunit-1.12.1.tar.gz
MD5="bd30e9cf5523cdfc019b94f5e1d7fd19"

./configure --prefix=/usr \
--disable-dependency-tracking &&
make &&
make install





# Build Qt4
PKG="qt-everywhere-opensource-src"
PKG_VERSION="4.6.0"
PKG_FILE="qt-everywhere-opensource-src-4.6.0.tar.gz"
BUILD_SBU=38
DOWNLOAD_MiB=119.58
URL=http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.6.0.tar.gz
MD5=""

./configure -prefix /opt/qt-4.6.0 \
-release \
-nomake examples \
-nomake demos \
-no-separate-debug-info &&
make
make install





# Build cmake
PKG="cmake"
PKG_VERSION="2.6.4"
PKG_FILE="cmake-2.6.4.tar.gz"
BUILD_SBU=2.00
DOWNLOAD_MiB=3.13
URL=http://www.cmake.org/files/v2.6/cmake-2.6.4.tar.gz
MD5="50f387d0436696c4a68b5512a72c9cde"

./bootstrap --prefix=/usr \
--docdir=/share/doc/cmake-2.6.4 \
--datadir=/share/cmake-2.6.4 \
--mandir=/share/man &&
make &&
make install





# Build automoc4
# automoc4 is used to run moc on the right binaries in a QT4 or KDE4 application
PKG="automoc4"
PKG_VERSION="0.9.88"
PKG_FILE="automoc4-0.9.88.tar.bz2"
BUILD_SBU=0.02
DOWNLOAD_MiB=0.01
URL=ftp://ftp.kde.org/pub/kde/stable/automoc4/0.9.88/automoc4-0.9.88.tar.bz2
MD5="91bf517cb940109180ecd07bc90c69ec"

if [ -n "$KDE_PREFIX" ]; then
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=${KDE_PREFIX} ..
make
make install
cd ..
fi





# Build xcb-proto
# Needed if X-Window-System was built --without-xcb
PKG="xcb-proto"
PKG_VERSION="1.5"
PKG_FILE="xcb-proto-1.5.tar.bz2"
BUILD_SBU=0.01
DOWNLOAD_MiB=0.09
URL=http://xcb.freedesktop.org/dist/xcb-proto-1.5.tar.bz2
MD5="7d0481790104a10ff9174895ae954533"

./configure --prefix=/usr --sysconfdir=/etc \
--mandir=/usr/share/man \
--localstatedir=/var
make
make install





# Build libxcb
# Needed if X-Window-System was built --without-xcb
PKG="libxcb"
PKG_VERSION="1.4"
PKG_FILE="libxcb-1.4.tar.bz2"
BUILD_SBU=0.29
DOWNLOAD_MiB=0.29
URL=http://xcb.freedesktop.org/dist/libxcb-1.4.tar.bz2
MD5="b00fd506c717dea01f595e8da31f6914"

./configure --prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
--localstatedir=/var \
--docdir='${datadir}'/doc/libxcb-1.4
make
make install





# Build phonon
# multimedia API for KDE 4, supports backends xine, GStreamer, etc.,
# replaces aRts
PKG="phonon"
PKG_VERSION="4.3.0"
PKG_FILE="phonon-4.3.0.tar.bz2"
BUILD_SBU=0.50
DOWNLOAD_MiB=0.54
URL=ftp://ftp.kde.org/pub/kde/stable/phonon/4.3.0/phonon-4.3.0.tar.bz2
MD5="f851219ec1fb4eadc7904f053b6b498d"

if [ -n "$KDE_PREFIX" ]; then
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=${KDE_PREFIX} ..
make
make install
cd ..
fi





# Build clucene-core
# a high-performance, full-featured text search engine.
PKG="clucene-core"
PKG_VERSION="0.9.21"
PKG_FILE="clucene-core-0.9.21.tar.bz2"
BUILD_SBU=1.16
DOWNLOAD_MiB=1.46
URL=http://downloads.sourceforge.net/clucene/clucene-core-0.9.21.tar.bz2
MD5="181cf9a827fd072717d9b09d1a1bda74"

patch -Np1 << 'EOF'
# per: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=505667
--- clucene-core-0.9.21/src/CLucene/util/bufferedstream.h~
+0000
+++ clucene-core-0.9.21/src/CLucene/util/bufferedstream.h
+0000
@@ -29,6 +29,7 @@
#include "streambase.h"
#include "inputstreambuffer.h"
#include <cassert>
+#include <cstdio>

namespace jstreams {

EOF

./configure --prefix=/usr &&
make &&
make install





# Build strigi
# crawler that can index data
PKG="strigi"
PKG_VERSION="0.6.4"
PKG_FILE="strigi-0.6.4.tar.bz2"
BUILD_SBU=2.14
DOWNLOAD_MiB=0.85
URL=http://sourceforge.net/projects/strigi/files/strigi/strigi-0.6.4/strigi-0.6.4.tar.bz2/download
MD5="324fd9606ac77765501717ff92c04f9a"
PATCH1=http://paldo.org/paldo/sources/strigi/strigi-0.6.4-gcc-4.4-2.patch.bz2

if [ -n "$KDE_PREFIX" ]; then
bzcat ../strigi-0.6.4-gcc-4.4-2.patch.bz2 | patch -Np1
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=${KDE_PREFIX} ..
make
make install
cd ..
fi





# Build soprano
# C++/Qt4 framework for RDF data.
PKG="soprano"
PKG_VERSION="2.3.1"
PKG_FILE="soprano-2.3.1.tar.bz2"
BUILD_SBU=0.79
DOWNLOAD_MiB=1.83
URL=http://sourceforge.net/projects/soprano/files/Soprano/2.3.1/soprano-2.3.1.tar.bz2/download
MD5="c9a2c008b80cd5d76599e9d48139dfe9"

if [ -n "$KDE_PREFIX" ]; then
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=${KDE_PREFIX} ..
make
make install
cd ..
fi






# Build boost-jam
# a build tool based on FTJam
# a make(1) replacement
PKG="boost-jam"
PKG_VERSION="3.1.17"
PKG_FILE="boost-jam-3.1.17.tgz"
BUILD_SBU=0.07
DOWNLOAD_MiB=1.11
URL=http://downloads.sourceforge.net/boost/boost-jam-3.1.17.tgz
MD5="f4afd896788f2327fd35c128ddc6e340"

./build.sh &&
cd bin.linux* &&
cp -v bjam /usr/bin &&
cd ..





# Build boost
# a collection of free, peer-reviewed C++ libraries
PKG="boost"
PKG_VERSION="1_37_0"
PKG_FILE="boost_1_37_0.tar.bz2"
BUILD_SBU=8.85
DOWNLOAD_MiB=28.07
URL=http://downloads.sourceforge.net/boost/boost_1_37_0.tar.bz2
MD5="8d9f990bfb7e83769fa5f1d6f065bc92"

./configure --prefix=/usr \
--with-toolset=gcc \
--with-bjam=/usr/bin/bjam &&
make &&
make install &&
ln -sfnv boost-1_37/boost /usr/include/boost





# Build kdelibs
PKG="kdelibs"
PKG_VERSION="4.4.0"
PKG_FILE="kdelibs-4.4.0.tar.bz2"
BUILD_SBU=21.41
DOWNLOAD_MiB=10.03
URL=http://download.kde.org/stable/4.4.0/src/kdelibs-4.4.0.tar.bz2
MD5="86d2f40e2b838fbe60e625dd2450b871c9bfe5c7"

if [ -n "$KDE_PREFIX" ]; then
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=${KDE_PREFIX} \
-DSYSCONF_INSTALL_DIR=/etc/kde \
-DCMAKE_BUILD_TYPE:STRING=Release \
..
make
make install
cd ..
fi






# Build qimageblitz
PKG="qimageblitz"
PKG_VERSION="0.0.4"
PKG_FILE="qimageblitz-0.0.4.tar.bz2"
BUILD_SBU=0.08
DOWNLOAD_MiB=0.05
URL=http://sourceforge.net/projects/qimageblitz/files/qimageblitz/QImageBlitz%200.0.4/qimageblitz-0.0.4.tar.bz2/download
MD5="cb87c7f1c0455e8984ee4830f1e749cf"

if [ -n "$KDE_PREFIX" ]; then
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=${KDE_PREFIX} ..
make
make install
cd ..
fi






# Build akonadi
# a PIM Storage Service
PKG="akonadi"
PKG_VERSION="1.2.1"
PKG_FILE="akonadi-1.2.1.tar.bz2"
BUILD_SBU=1.03
DOWNLOAD_MiB=0.17
URL=http://download.akonadi-project.org/akonadi-1.2.1.tar.bz2
MD5="f9c1d000844f31c67360078ddf60bec2"

if [ -n "$KDE_PREFIX" ]; then
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=${KDE_PREFIX} ..
make
make install
cd ..
fi






# Build libgpg-error
# a library with GnuPG related error codes and descriptions
PKG="libgpg-error"
PKG_VERSION="1.7"
PKG_FILE="libgpg-error-1.7.tar.bz2"
BUILD_SBU=0.05
DOWNLOAD_MiB=0.39
URL=ftp://ftp.gnupg.org/gcrypt/libgpg-error/libgpg-error-1.7.tar.bz2
MD5="62c0d09d1e76c5b6da8fff92314c4665"

./configure --prefix=/usr &&
make
make install






# Build gpgme
# support for cryptography
PKG="gpgme"
PKG_VERSION="1.2.0"
PKG_FILE="gpgme-1.2.0.tar.bz2"
BUILD_SBU=0.14
DOWNLOAD_MiB=0.81
URL=ftp://gd.tuwien.ac.at/privacy/gnupg/gpgme/gpgme-1.2.0.tar.bz2
MD5="508ee686bd275d908d1dc1938810e045"

./configure --prefix=/usr
make
make install





# Build cyrus-sasl
# a library for integration of secure network authentication
PKG="cyrus-sasl"
PKG_VERSION="2.1.23"
PKG_FILE="cyrus-sasl-2.1.23.tar.gz"
BUILD_SBU=0.20
DOWNLOAD_MiB=1.54
URL=ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-2.1.23.tar.gz
MD5="2eb0e48106f0e9cd8001e654f267ecbc"

sed -i "/elif/s/WITH_DES/defined &/" plugins/digestmd5.c &&
./configure --prefix=/usr --sysconfdir=/etc \
--with-dbpath=/var/lib/sasl/sasldb2 \
--with-saslauthd=/var/run &&
make &&
make install &&
install -v -m755 -d /usr/share/doc/cyrus-sasl-2.1.23 &&
install -v -m644 doc/{*.{html,txt,fig},ONEWS,TODO} \
saslauthd/LDAP_SASLAUTHD /usr/share/doc/cyrus-sasl-2.1.23 &&
install -v -m700 -d /var/lib/sasl





# Build libical
# libical is used in calendaring and scheduling
PKG="libical"
PKG_VERSION="0.44"
PKG_FILE="libical-0.44.tar.gz"
BUILD_SBU=0.31
DOWNLOAD_MiB=1.10
URL=http://sourceforge.net/projects/freeassociation/files/libical/libical-0.44/libical-0.44.tar.gz/download
MD5="e0403c31e1ed82569325685f8c15959c"

./configure --prefix=/usr &&
make &&
make install





# Build tcp_wrappers
# fine-grained control over access
PKG="tcp_wrappers"
PKG_VERSION="7.6"
PKG_FILE="tcp_wrappers_7.6.tar.gz"
BUILD_SBU=0.02
DOWNLOAD_MiB=0.09
URL=ftp://ftp.porcupine.org/pub/security/tcp_wrappers_7.6.tar.gz
MD5="e6fa25f71226d090f34de3f6b122fb5a"
PATCH1=http://www.linuxfromscratch.org/patches/blfs/svn/tcp_wrappers-7.6-shared_lib_plus_plus-1.patch

patch -Np1 -i ../tcp_wrappers-7.6-shared_lib_plus_plus-1.patch &&
sed -i -e "s,^extern char \*malloc();,/* & */," scaffold.c &&
make REAL_DAEMON_DIR=/usr/sbin STYLE=-DPROCESS_OPTIONS linux &&
make install





# Build openldap
PKG="openldap"
PKG_VERSION="2.4.19"
PKG_FILE="openldap-2.4.19.tgz"
BUILD_SBU=1.58
DOWNLOAD_MiB=5.22
URL=ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.4.19.tgz
MD5="4a6dab2711fcf141f19bb680bc335887"

sed -i 's@\(^STRIP = \).*@\1 @' build/top.mk &&
CPPFLAGS="-D_GNU_SOURCE" ./configure --prefix=/usr --sysconfdir=/etc \
--libexecdir=/usr/lib/openldap --localstatedir=/srv/ldap --disable-debug \
--enable-dynamic --enable-crypt --enable-modules --enable-wrappers \
--enable-bdb=mod --enable-hdb=mod --enable-ldap=mod \
--enable-monitor=mod --enable-perl=mod --enable-relay=mod \
--enable-dyngroup=mod --enable-dynlist=mod --enable-memberof=mod \
--enable-ppolicy=mod --enable-valsort=mod \
--disable-bdb --disable-hdb --with-ldbm-api=gdbm &&
make depend &&
make &&
make install &&
ln -sv ../lib/openldap/slapd /usr/sbin/slapd &&
install -dv -m755 /usr/share/doc/openldap-2.4.19/{drafts,guide,rfc} &&
install -v -m644 doc/drafts/* /usr/share/doc/openldap-2.4.19/drafts &&
install -v -m644 doc/rfc/* /usr/share/doc/openldap-2.4.19/rfc &&
cp -Rv doc/guide/* /usr/share/doc/openldap-2.4.19/guide






# Build kdepimlibs
PKG="kdepimlibs"
PKG_VERSION="4.4.0"
PKG_FILE="kdepimlibs-4.4.0.tar.bz2"
BUILD_SBU=4.19
DOWNLOAD_MiB=1.70
URL=http://download.kde.org/stable/4.4.0/src/kdepimlibs-4.4.0.tar.bz2
MD5="76e41917a9e2d6e4a78ecacf235a3b3a2a7d9ba0"

if [ -n "$KDE_PREFIX" ]; then
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=${KDE_PREFIX} \
-DSYSCONF_INSTALL_DIR=/etc/kde \
-DCMAKE_BUILD_TYPE=Release \
..
make
make install
cd ..
fi





# Build kdelibs-experimental
Apparently not used or available
PKG="kdelibs-experimental"
PKG_VERSION="4.4.0"
PKG_FILE="kdelibs-experimental-4.4.0.tar.bz2"
BUILD_SBU=0.10
DOWNLOAD_MiB=0.03
URL=http://download.kde.org/stable/4.4.0/src/kdelibs-experimental-4.4.0.tar.bz2
MD5="ee3eb713d703b8bba9de61197f6943c4"

if [ -n "$KDE_PREFIX" ]; then
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=${KDE_PREFIX} \
-DSYSCONF_INSTALL_DIR=/etc/kde \
-DCMAKE_BUILD_TYPE=Release \
..
make
make install
cd ..
fi





# Build sip
# a protocol used for controlling multimedia
PKG="sip"
PKG_VERSION="4.10"
PKG_FILE="sip-4.10.tar.gz"
BUILD_SBU=0.09
DOWNLOAD_MiB=0.63
URL=http://www.riverbankcomputing.com/static/Downloads/sip4/sip-4.10.tar.gz
MD5=""

python configure.py &&
make &&
make install





# Build PyQt
# Python bindings for Qt4
PKG="PyQt-x11-gpl"
PKG_VERSION="4.7"
PKG_FILE="PyQt-x11-gpl-4.7.tar.gz"
BUILD_SBU=7.5
DOWNLOAD_MiB=6.66
URL=http://www.riverbankcomputing.com/static/Downloads/PyQt4/PyQt-x11-gpl-4.7.tar.gz
MD5=""

# You MUST type yes to accept license. !!From a terminal!!
# ... AND ... the output must not be captured to a log!!!
python configure.py
make &&
make install





# Build eet
# a data encoding, decoding and storage library
PKG="eet"
PKG_VERSION="svn-35608"
PKG_FILE="eet-svn-35608.tar.bz2"
BUILD_SBU=0.12
DOWNLOAD_MiB=1.25
URL=http://dev.openbossa.org/qedje/downloads/source/eet/eet-svn-35608.tar.bz2
MD5="fef331a76a67d82d118b75bfa3bba547"

./autogen.sh --prefix=/usr &&
make &&
make install





# Build qzion
# a canvas abstraction used by QEdje
PKG="qzion"
PKG_VERSION="0.4.0"
PKG_FILE="d32223eae1bba7f1b191c334668f3f7dd662f582.tar.gz"
BUILD_SBU=0.38
DOWNLOAD_MiB=0.27
URL=http://code.openbossa.org/projects/qzion/repos/mainline/archive/d32223eae1bba7f1b191c334668f3f7dd662f582.tar.gz
MD5="4cd70c7d347be60e8bbb84a5a4b8d565"

# The gcc-4.4 const char * business again!
# http://sisyphus.ru/br/srpm/Sisyphus/qzion/patches
# 'qzion-0.4.0-gcc44.patch'
patch -Np1 << 'EOF'
--- qzion-mainline/python/qzion/qzionobject.sip
+++ qzion-mainline/python/qzion/qzionobject.sip 2009-05-26 08:33:48.000000000 -0400
@@ -10,7 +10,7 @@

%ConvertToSubClassCode
static struct classes {
- char *name;
+ const char *name;
sipWrapperType **type;
} cls[] = {
{sipName_QZionText, &sipClass_QZionText},
EOF

mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DSKIP_TESTS=ON &&
make &&
make install
cd ..





# Build qedje
# simplifies development of complex UI interfaces
PKG="qedje"
PKG_VERSION="0.4.0"
PKG_FILE="0206ec8f2a802bf51455179933d8b7ab3e41a38b.tar.gz"
BUILD_SBU=0.28
DOWNLOAD_MiB=0.18
URL=http://code.openbossa.org/projects/qedje/repos/mainline/archive/0206ec8f2a802bf51455179933d8b7ab3e41a38b.tar.gz
MD5="72a92a56f56681b633bd0f779afb3379"

mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DSKIP_TESTS=ON &&
make &&
make install
cd ..





# Build kdebindings
PKG="kdebindings"
PKG_VERSION="4.4.0"
PKG_FILE="kdebindings-4.4.0.tar.bz2"
BUILD_SBU=12.35
DOWNLOAD_MiB=4.65
URL=http://download.kde.org/stable/4.4.0/src/kdebindings-4.4.0.tar.bz2
MD5="232ca73567463a03ae3660afd66a6acfe3298e6f"

if [ -n "$KDE_PREFIX" ]; then
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=${KDE_PREFIX} ..
make
make install
cd ..
fi





# Build kdebase-workspace
PKG="kdebase-workspace"
PKG_VERSION="4.4.0"
PKG_FILE="kdebase-workspace-4.4.0.tar.bz2"
BUILD_SBU=13.93
DOWNLOAD_MiB=59.62
URL=http://download.kde.org/stable/4.4.0/src/kdebase-workspace-4.4.0.tar.bz2
MD5="86f8046f8fa3a4b53389353217cf8da8941a1d9c"

if [ -n "$KDE_PREFIX" ]; then
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=${KDE_PREFIX} \
-DSYSCONF_INSTALL_DIR=/etc/kde \
-DCMAKE_BUILD_TYPE=Release \
..
make
make install
cd ..
fi





# Build kdebase
PKG="kdebase"
PKG_VERSION="4.4.0"
PKG_FILE="kdebase-4.4.0.tar.bz2"
BUILD_SBU=6.03
DOWNLOAD_MiB=3.96
URL=http://download.kde.org/stable/4.4.0/src/kdebase-4.4.0.tar.bz2
MD5="a1c978ca44f807cd98dd0d675aa2033eea4accc2"

if [ -n "$KDE_PREFIX" ]; then
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=${KDE_PREFIX} \
-DSYSCONF_INSTALL_DIR=/etc/kde \
-DCMAKE_BUILD_TYPE=Release \
..
make
make install
cd ..
fi





# Build oxygen-icons
PKG="oxygen-icons"
PKG_VERSION="4.4.0"
PKG_FILE="oxygen-icons-4.4.0.tar.bz2"
BUILD_SBU=0.04
DOWNLOAD_MiB=119.96
URL=http://download.kde.org/stable/4.4.0/src/oxygen-icons-4.4.0.tar.bz2
MD5="8793dc6a67885b2038ca570fe5e2553a0a7635c1"

if [ -n "$KDE_PREFIX" ]; then
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=${KDE_PREFIX}
make
make install
cd ..
fi





# Build eigen
# a C++ template library for linear algebra
PKG="eigen"
PKG_VERSION="2.0.10"
PKG_FILE="2.0.10.tar.bz2"
BUILD_SBU=0.01
DOWNLOAD_MiB=0.35
URL=http://bitbucket.org/eigen/eigen/get/2.0.10.tar.bz2
MD5="4b73cd71a887b7e501fa9c4760e3d33a"

if [ -n "$KDE_PREFIX" ]; then
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=${KDE_PREFIX} \
-DSYSCONF_INSTALL_DIR=/etc/kde \
-DCMAKE_BUILD_TYPE=Release
make
make install
cd ..
fi





# Build kdeartwork
PKG="kdeartwork"
PKG_VERSION="4.4.0"
PKG_FILE="kdeartwork-4.4.0.tar.bz2"
BUILD_SBU=0.52
DOWNLOAD_MiB=62.36
URL=http://download.kde.org/stable/4.4.0/src/kdeartwork-4.4.0.tar.bz2
MD5="5e1a95ddca0dcfbd22bd3ed095519a487a84aa4a"

if [ -n "$KDE_PREFIX" ]; then
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=${KDE_PREFIX} \
-DSYSCONF_INSTALL_DIR=/etc/kde \
-DCMAKE_BUILD_TYPE=Release
make
make install
cd ..
fi





# Build kdebase-runtime
PKG="kdebase-runtime"
PKG_VERSION="4.4.0"
PKG_FILE="kdebase-runtime-4.4.0.tar.bz2"
BUILD_SBU=4.25
DOWNLOAD_MiB=6.99
URL=http://download.kde.org/stable/4.4.0/src/kdebase-runtime-4.4.0.tar.bz2
MD5="9fa8b0371d255536b945c1c099c2f2f15751fe0f"

if [ -n "$KDE_PREFIX" ]; then
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=${KDE_PREFIX} \
-DSYSCONF_INSTALL_DIR=/etc/kde \
-DCMAKE_BUILD_TYPE=Release
make
make install
cd ..
fi





# Build kdemultimedia
PKG="kdemultimedia"
PKG_VERSION="4.4.0"
PKG_FILE="kdemultimedia-4.4.0.tar.bz2"
BUILD_SBU=1.46
DOWNLOAD_MiB=1.52
URL=http://download.kde.org/stable/4.4.0/src/kdemultimedia-4.4.0.tar.bz2
MD5="592419ff9c5da9dfe2fbb9b4bc8b84856186881b"

if [ -n "$KDE_PREFIX" ]; then
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=${KDE_PREFIX} \
-DSYSCONF_INSTALL_DIR=/etc/kde \
-DCMAKE_BUILD_TYPE=Release
make
make install
cd ..
fi






# Starting kde -- 3 ways


#1

cat >> ~/.xinitrc << EOF
exec dbus-launch --exit-with-session startkde
EOF

# Shouldn't have anything else in ~/.xinitrc

startx

#2

sudo kdm

#3

cat >> /etc/inittab << EOF
X:5:respawn:/opt/kde-4.4.0/bin/kdm -nodaemon
EOF

sudo /sbin/init 5

# If you really like it, modify /etc/inittab
id:3:initdefault:
to
id:5:initdefault:





Some people don't like KDE4
  • Pasting with the center mouse button doesn't often paste what expected.
  • Apparenly no way to save screen size, although there is a setting.
  • Sometimes, kickoff menu draws a border with no way to do anything.
  • But you can switch menu between kickoff and classic style -- thank you.
  • Go round in circles between System and Settings->System Settings to get what wanted.
  • But it looks better than old kde.


It's not as quick as xfce4, but its not horrible. It looks pretty good, but there are some annoyances ... tiny things that should have been easy to do right ... and I was about to reformat the thing. Instead, I keep hammering at it.

The kde4 screen resolution is not restored the way I set it after logoff/logon. To overcome this annoying disfunction, I used xrandr -q to get the numbers for the screen resolution I like. Then I made a desktop file in /usr/share/applications

[Desktop Entry]
Type=Application
Exec=xrandr -s 0 -r 70
Icon=xfce-terminal
Terminal=false
Name=xrandr 70
Categories=System;
StartupNotify=false

Then System Settings->Advanced->Autostart->Add Program
Now, when I log in, it starts at ITS default, then the screen goes blank for a moment while xrandr is setting it the way I want, and then its ok.

Note: xrandr -h tells that -s <size> and -r <rate> and man xrandr does not tell that.

Kde4 does not restore screen resolution at login seems as though it has been confirmed by popular vote, but the more votes, the better.


It seemed like kde was ignoring my XTerm app-defaults in /usr/share/X11/app-defaults and then I realized they were lower-casing xterm which apparenly overrides the mixed-case XTerm. So I put a ! comment in front of theirs, so I could use mine.

Patch
--- /opt/kde-4.4.0/share/apps/kdisplay/app-defaults/XTerm.ad.orig 2009-12-08 20:58:15.000000000 -0500
+++ /opt/kde-4.4.0/share/apps/kdisplay/app-defaults/XTerm.ad 2009-12-15 19:34:27.000000000 -0500
@@ -1,4 +1,4 @@
-xterm*background: WINDOW_BACKGROUND
-xterm*foreground: WINDOW_FOREGROUND
-xterm.SimpleMenu*background: BACKGROUND
-xterm.SimpleMenu*foreground: FOREGROUND
+!xterm*background: WINDOW_BACKGROUND
+!xterm*foreground: WINDOW_FOREGROUND
+!xterm.SimpleMenu*background: BACKGROUND
+!xterm.SimpleMenu*foreground: FOREGROUND


I made a patch to kde4 clear recently used permanently, because I happen not to want them and I would get very tired of always having to keep clearing them. To even get the options to clear recently used applications and/or to clear recently used documents, you have to be using the kickoff menu style. If you prefer the classic menu style, you first have to switch to kickoff menu style by right clicking on the menu icon.

The kde4 recent documents and applications cannot be suppressed or disabled as they could be on old kde by setting number to zero. This bugs me so much I made this kde4 disable recent patch which effectively has zero recent applications. The recent documents seem to stay away after you have cleared them and they discontinue accumulating.
kdebase-workspace-4.4.0-norecent.patch

--- plasma/applets/kickoff/core/recentapplications.cpp.orig 2009-12-15 16:22:35.000000000 -0500
+++ plasma/applets/kickoff/core/recentapplications.cpp 2009-12-15 16:22:48.000000000 -0500
@@ -114,7 +114,7 @@
}
};

- static const int DEFAULT_MAX_SERVICES = 5;
+ static const int DEFAULT_MAX_SERVICES = 0;
int defaultMaxServices, maxServices;
// queue to keep track of the order in which services have been used
// (most recently used at the back)
Another method to prevent it keeping track has been suggested. http://forum.kde.org/viewtopic.php?f=66&t=83686
This unable to configure kickoff recent applications list seems as though it might be escalated to confirmed status by popular vote, but the more votes, the better.

The default favorites bug me too because they are not my favorites. You can remove them from favorites, but if you remove all the favorites, then the next time you logon, the default favorites (again, not my favorites) will be back. I don't like that, so I made this kde4 favorites no-defaults patch.
kdebase-workspace-4.4.0-nofavdefaults.patch

--- plasma/applets/kickoff/core/favoritesmodel.cpp.orig 2009-12-16 12:58:46.000000000 -0500
+++ plasma/applets/kickoff/core/favoritesmodel.cpp 2009-12-16 13:02:29.000000000 -0500
@@ -93,9 +93,11 @@

KConfigGroup favoritesGroup = componentData().config()->group("Favorites");
QList<QString> favoriteList = favoritesGroup.readEntry("FavoriteURLs", QList<QString>());
+/*
if (favoriteList.isEmpty()) {
favoriteList = defaultFavorites();
}
+*/

foreach (const QString &favorite, favoriteList) {
FavoritesModel::add(favorite);

I have not found any way to disable those giant balloon tooltips.
Vote for Offer option for small text tooltips - Bug 232405
Vote for Allow tooltips to be turned off for all panel widgets - Bug 192155

I wish the kickoff style menu would have from left to right, Applications, Computer, Leave, Favorites, Recently Used, so that it wouldn't be necessary to move the mouse just to see the REAL menu which is Applications.

I just noticed this. Is it kool or is it klunky?
-- Only for Classic Menu Style --
Right click on menu icon
Left Click Application Launcher Menu Settings

You may check/uncheck to show these items:
Recently Used Applications
Recently Used Documents
Favorites
Bookmarks
Computer
Recently Used
System Settings
Run Command
Switch User
Save Session
Lock Screen
Standby
Suspend to Disk
Suspend to Ram
Restart
Shutdown
Logout
Leave

Apparently, it does have a setting for
number of recently used applications.
I'll have to re-test that.

If you Switch to Kickoff Menu Style
Those are reset to defaults
You don't get option to check or uncheck them

You can change the menu icon

If you switch to the other Menu Style
it resets to default

Klipper broke the mouse so I removed it.


Looking ahead ...
kde-4.4 expected release 2/09/2010
  • Requires Qt4.6 compilation with Qt4.5 will fail.
  • KDE 4.4 Beta1 (a.k.a 4.3.80) sources
  • KDE 4.4 Beta 2 (a.k.a 4.3.85) sources
  • KDE 4.4 RC1 (a.k.a 4.3.90) sources
  • Adventurous may try substitute kde 4.4 (Beta-x / RC-x) and qt-4.6 sources in above instructions to see how buggy/better kde 4.4 might be.
  • kde 4.3.4 version saved here

10 Comments:

Blogger linux fan said...

KDE 4.4 RC2 (a.k.a 4.3.95) sources

January 25, 2010 at 2:01 PM  
Blogger linux fan said...

KDE 4.4.0 sources

February 10, 2010 at 2:12 PM  
Blogger Unknown said...

wow.....amazing article, thanks for sharing.

February 25, 2010 at 5:11 AM  
Blogger linux fan said...

KDE 4.4.1 sources
Bufix already. Sometime, substitute all "4.4.0" with "4.4.1" in instructions should work.

March 3, 2010 at 2:38 PM  
Blogger linux fan said...

Moving LibAttica to kdesupport breaks build of kdelibs 4.4.

This libattica has been discovered Here and Here: svn ls svn://anonsvn.kde.org/home/kde/tags/kdesupport-for-4.4/attica

March 19, 2010 at 1:54 PM  
Blogger linux fan said...

Is phonon now phonon-4.4.0?

March 27, 2010 at 11:07 AM  
Blogger linux fan said...

Releases are going too fast to keep up.
4.4.2 - March 30
4.4.3 - May 4
Still looking for a way to disable the
giant balloon tooltips. In KDE3 this was called "mouseover effects and had the
option to disable."

March 27, 2010 at 11:15 AM  
Blogger linux fan said...

sip and pyqt go missing every time they release a new one. Check http://www.riverbankcomputing.com/static/Downloads

March 27, 2010 at 2:35 PM  
Blogger linux fan said...

KDE 4.4.2 sources

March 30, 2010 at 12:28 PM  
Blogger linux fan said...

Currently trying to build KDE 4.4.2 and many new wrinkles being ironed out -- soon I hope.

Slackware's AlienBOB presented KDE 4.4.2 on April Fool's day featuring many solutions.

April 2, 2010 at 10:52 AM  

Post a Comment

Subscribe to Post Comments [Atom]

Click blog title for the latest post