KDE on scratchbox for maemo 4
(→checkinstall) |
|||
Line 1: | Line 1: | ||
This article describes how to compile KDE for maemo. It takes the Nokia N810 as example device. It uses the cross-compiling environment scratchbox on an Intel-based computer. | This article describes how to compile KDE for maemo. It takes the Nokia N810 as example device. It uses the cross-compiling environment scratchbox on an Intel-based computer. | ||
+ | |||
+ | {|style="text-align:center" | ||
+ | |[[Image:Snapshot-ktimetracker-n810.jpg|thumb|265px|Ktimetracker]]|| '''ktimetracker is the todo management and time tracking component of [[Kontact | Kontact]], the integrated personal information manager from KDE. It can be compiled on scratchbox and run on the N810.''' | ||
+ | |} | ||
+ | |||
== Overview == | == Overview == |
Revision as of 17:01, 24 January 2010
This article describes how to compile KDE for maemo. It takes the Nokia N810 as example device. It uses the cross-compiling environment scratchbox on an Intel-based computer.
ktimetracker is the todo management and time tracking component of Kontact, the integrated personal information manager from KDE. It can be compiled on scratchbox and run on the N810. |
Contents |
Overview
- maemo is the core software stack that runs on mobile devices like Nokia's N810 or N900
- garage is where the projects for maemo are hosted, somewhat compareable to Sourceforge.
- OS2008 is maemo 4.x (more info). Compare it with Debian's Lenny.
- Diablo is the version (feature upgrade 2008) of maemo.
- Scratchbox is a cross-compiling environment to enable you to create software for maemo on an i386.
- Busybox is a single binary that allows you to run commands like ls, cat and bunzip2
- Hildon is an application framework and desktop shell for maemo, compare it to the role that Plasma plays in KDE 4
On the Nokia itself
- install openssh on the Nokia N810
- install subversion
ssh root@localhost apt-get install subversion
On your desktop
You cannot install scratchbox on an X64 computer, so, install an i386 into a VMWare virtual machine. The following describes how to install scratchbox into a SUSE 11.1 32bit installation. It might work same or similar with any Linux.
Set up scratchbox
First, we want to compile a "hello world" program for the Nokia. Here is how.
- Set up VMWare Server 2.0
- Install a virtual machine into VMWare Server, 40GB hard drive, 1024 GB RAM
- Install SUSE Linux 11.1 from DVD. At the bootscreen, type F7 and select X86 instead of X86_64. That way, you will get a 32bit operating system.
- Take a VMware SNAPSHOT from your virtual machine so you can revert to this state
- Boot your virtual machine
- Set up scratchbox
root@i386 # useradd -m scratchboxuser root@i386 # passwd scratchboxuser root@i386 # wget http://repository.maemo.org/stable/diablo/maemo-scratchbox-install_4.1.2.sh root@i386 # chmod 777 maemo-scratchbox-install_4.1.2.sh root@i386 # ./maemo-scratchbox-install_4.1.2.sh -s /scratchbox root@i386 # /scratchbox/sbin/sbox_adduser scratchboxuser root@i386 # su - scratchboxuser
- set up the SDK
scratchboxuser@i386 $ wget http://repository.maemo.org/stable/diablo/maemo-sdk-install_4.1.2.sh
Start the install script and accept all choices:
scratchboxuser@i386 $ sh maemo-sdk-install_4.1.2.sh
- start scratchbox
scratchboxuser@i386 $ /scratchbox/login [sbox-DIABLO_ARMEL: ~] > sb-conf select DIABLO_ARMEL
Re-login
To re-login after a reboot of your virtual machine run
root@i386 $ /scratchbox/sbin/sbox_ctl start root@i386 $ su - scratchboxuser scratchboxuser@i386 $ /scratchbox/login
Hello world
Now we write the canonical hello world program in C.
[sbox-DIABLO_ARMEL: ~] > cat > main.c << EOF #include <stdio.h> int main() { printf("hello world"); } EOF [sbox-DIABLO_ARMEL: ~] > gcc main.c [sbox-DIABLO_ARMEL: ~] > file a.out a.out: ELF 32-bit LSB executable, ARM, version 1 (SYSV), for GNU/Linux 2.6.8, dynamically linked (uses shared libs), not stripped
- copy the file to your Nokia N810 using scp
=> the file is executable on the Nokia
Install Qt
Now it's time to install qt. Add to your /etc/apt/sources.list:
deb http://repository.maemo.org/extras/ diablo free non-free deb-src http://repository.maemo.org/extras/ diablo free
and tell the system to re-read it:
apt-get update
install the qt development package:
apt-get install libqt4-dev
verify it has been installed:
mkdir qttest cd qttest/ cat >main.cpp #include <QApplication> #include <QPushButton> int main(int argc, char ** argv) { QApplication qa(argc,argv); QPushButton* qp=new QPushButton("hello world"); qp->show(); return qa.exec(); } qmake -project && qmake && make && ./qttest g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/targets/DIABLO_ARMEL/usr/share/qt4/mkspecs/linux-g++ -I. -I/targets/DIABLO_ARMEL/usr/include/qt4/QtCore -I/targets/DIABLO_ARMEL/usr/include/qt4/QtGui -I/targets/DIABLO_ARMEL/usr/include/qt4 -I. -I. -o main.o main.cpp g++ -Wl,-O1 -o qttest main.o -L/usr/lib -lQtGui -lQtCore -lpthread qttest: cannot connect to X server
Good - it tries to connect the X server, so it works.
See graphics
To see graphics, you need to start Xephyr. This example shows how to install and run it on SUSE Linux 11.1.
root@i386 $ yast -i xorg-x11-server-extra root@i386 $ Xephyr :4
Now back in your scratchbox
[sbox-DIABLO_ARMEL: ~/qttest] > export DISPLAY=:4 [sbox-DIABLO_ARMEL: ~/qttest] > ./qttest
Now you should see a "hello world" button in a graphical window.
Install cmake
[sbox-DIABLO_ARMEL: ~/qttest] > wget http://www.cmake.org/files/v2.6/cmake-2.6.2.tar.gz [sbox-DIABLO_ARMEL: ~/qttest] > tar xvzf cmake-2.6.2.tar.gz [sbox-DIABLO_ARMEL: ~/qttest] > cd cmake-2.6.2 [sbox-DIABLO_ARMEL: ~/qttest] > ./bootstrap && make -j4 && make install
I ran into this issue, so I created link.txt by compiling cmake in a non-scratchbox environment and copying it over.
shared-mime-info
Shared-mime-info 0.2 or greater is needed for KDE.
[sbox-DIABLO_ARMEL: ~] > cd [sbox-DIABLO_ARMEL: ~] > wget http://freedesktop.org/~hadess/shared-mime-info-0.20.tar.bz2 [sbox-DIABLO_ARMEL: ~] > bunzip2 shared-mime-info-0.20.tar.bz2 [sbox-DIABLO_ARMEL: ~] > tar xvf shared-mime-info-0.20.tar [sbox-DIABLO_ARMEL: ~] > cd shared-mime-info-0.20 [sbox-DIABLO_ARMEL: ~] > ./configure && make && make install
Make sure version 0.2 is in place:
[sbox-DIABLO_ARMEL: ~] > update-mime-database -v update-mime-database (shared-mime-info) 0.19 [...] [sbox-DIABLO_ARMEL: ~] > export PATH=/usr/local/bin:$PATH [sbox-DIABLO_ARMEL: ~] > update-mime-database -v update-mime-database (shared-mime-info) 0.20 [...]
kdesupport
Compile kdesupport
apt-get install libboost-dev apt-get install libboost-program-options-dev apt-get install xsltproc svn co https://svn.kde.org/home/kde/trunk/kdesupport cd kdesupport cmake . && make
If you again get the error about a missing link.txt, try copying /scratcbox/devkits/qemu/bin/qemu-arm-sb from a fremantle installation to /scratchbox/devkits/cputransp/bin and configure your target configuration to use this
make install
pcre
PCRE is needed for kdelibs
cd curl ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.9.tar.gz>pcre-7.9.tar.gz tar xvzf pcre-7.9.tar.gz cd pcre-7.9 ./configure && make && make install
libXslt
libxslt is needed for kdelibs
cd curl ftp://xmlsoft.org/libxslt/libxslt-1.1.26.tar.gz>libxslt-1.1.26.tar.gz tar xvzf libxslt-1.1.26.tar.gz cd libxslt-1.1.26 ./configure && make && make install
libgif-devel
apt-get install giflib-dev
kdelibs
cd svn co https://svn.kde.org/home/kde/branches/KDE/4.1/kdelibs mkdir kdelibs-build cd kdelibs-build cmake ../kdelibs && make && make install
[sbox-DIABLO_ARMEL: ~/kdelibs-build] > [sbox-DIABLO_ARMEL: ~/kdelibs-build] > kde4-config --version Qt: 4.5.2 KDE: 4.1.4 (KDE 4.1.4) kde4-config(8125) KLocalePrivate::initEncoding: Cannot resolve system encoding, defaulting to ISO 8859-1. kde4-config: 1.0
Congratulations! Your first kde 4 software is running :)
gpgme
gpgme is needed for kdepimlibs.
apt-get install libgpgme11-dev libgpg-error-dev
kdepimlibs
cd svn co https://svn.kde.org/home/kde/branches/KDE/4.1/kdepimlibs cd kdepimlibs cmake . && make && make install
checkinstall
Checkinstall is needed to build packages that we will copy.
wget http://www.asic-linux.com.mx/~izto/checkinstall/files/source/checkinstall-1.6.2.tar.gz tar xvzf checkinstall-1.6.2.tar.gz make make install
Repair installwatch
vi /usr/local/bin/installwatch
Set
FAIL=1
to
FAIL=0