Qt Extended Improved
From Openmoko
Contents |
Community Resources
Qt Software cancelled the Qt Extended project on 3 March 2009 (Qt Software discontinues Qt Extended). The community created a fork of it and called it Qt Extended Improved:
- bug tracking system
- prebuilt rootfs images for 4.4.3 and kernel
- prebuilt tarballs of qt extended improved (use kernel made for 4.4.3)
- git repository
Installing Qt Extended Improved on the FreeRunner
Install Qt Extended 4.4.3
There are no rootfs images for Qt Extended Improved, so first we need to install Qt Extended 4.4.3, then we can upgrade to Qt Extended Improved. Follow the instructions at Qt Extended 4.4.3.
Install Qt Extended Improved
Boot your FreeRunner into Qt Extended 4.4.3. Create a USB network connection between your workstation and the FreeRunner. Download the most recent pre-built tarball. Now you must unpack the tarball to a temporary directory and copy its contents to the FreeRunner's /opt/Trolltech/Qtopia directory:
mkdir temp cd temp tar -xzvf ../qt-extended-improved-bin-only-20090316.tar.gz scp -r * 192.168.0.202:/opt/Trolltech/Qtopia/
this can be resumed in a simpler and quicker operation:
( dd if=../qt-extended-improved-bin-only-20090316.tar.gz ) | ( ssh 192.168.0.202 "cd /opt/Trolltech/Qtopia/ && tar xzv" )
Reboot your FreeRunner and you should be running Qt Extended Improved.
Building Qt Extended Improved
First download a source tar ball from the git repository. Then make the build directory and set the environment variables. In this example, I write the environment variables to a file then I source the file.
mkdir -p /opt/QtExtended/build cd /opt/QtExtended tar -xzvf qt-extended-improved.tar.gz echo "export QTOPIA_DEPOT_PATH=/opt/QtExtended/qt-extended-improved" >> setpaths echo "export QPEDIR=/opt/QtExtended/build/" >> setpaths . setpaths
Install the toolchain:
cd /opt wget http://qtextended.org/downloads/toolchains/arm920t-eabi.tgz tar xzvf arm920t-eabi.tgz /
Do the linux three-step: configure, make, make install. Plus we build the sdk so we can make our own apps later, if we want.
cd $QPEDIR $QTOPIA_DEPOT_PATH/configure -device neo -D _FORTIFY_SOURCE=0 make make install bin/qbuild sdk
The binaries are in the $QPEDIR/image directory. You can copy these to your freerunner over usb like this:
scp -r $QPEDIR/image/* 192.168.0.202:/opt/Trolltech/Qtopia/
Compiling an Example Qt Extended App
First set those indispensable Qt environment variables:
. /opt/QtExtended/setpaths
Next create a directory /opt/Qtopia/build/myapps. Copy the example app. Rename the example app to something that makes sense (how about "example"!). Create the Makefile and build the example.
desktop# mkdir /opt/QtExtended/build/myapps desktop# cd /opt/QtExtended/build/myapps desktop# cp -R $QTOPIA_DEPOT_PATH/examples/application . desktop# mv application example desktop# cd example desktop# $QPEDIR/bin/qbuild
Now you have an executable example. It won't execute on your workstation - you must secure copy it to your FreeRunner. Then secure shell into the FreeRunner, import the Qtopia environment variables and execute the app:
desktop# scp example root@freerunner:/home/root root@192.168.0.202's password: example 100% 33KB 33.4KB/s 00:00 desktop# ssh 192.168.0.202 root@freerunner's password: freerunner:~# . /opt/Trolltech/Qtopia/qpe.env freerunner:~# ./example
This is what you should see on the screen (click on image to zoom) :
Packaging
Create a .qpk file, an installable package:
desktop# $QPEDIR/bin/qbuild packages
Create a packages.list file for the software installer and put it in the http server root:
desktop# sudo $QTOPIA_DEPOT_PATH/bin/mkPackages /srv/www/htdocs/
Copy your new package to the http server root:
desktop# sudo cp pkg/*.qpk /srv/www/htdocs/
On your phone, find Settings > Software Packages; press the Downloads tab; go to Options > Edit Servers; Options > New; then enter a name and URL of http://192.168.0.200:80, or the URL for your web server. The software package manager should then be able to see $HTTPROOT/packages.list and install any packages you have.
mp3 Support
If you compile your own version of Qt Extended Improved, you can add mp3 support using this patch. Untar the file from your qt-extended-improved directory (it installs some files in the src tree) and patch using the patch file, eg:
desktop# cd $QTOPIA_DEPOT_PATH desktop# tar -xzvf qt-extended-4.4.3-libmad.tar.gz desktop# patch -p1 < qt-extended-4.4.3-libmad.patch
Now configure, build, etc.
Troubleshooting
If you encounter this error while compiling your example,
In file included from /opt/QtExtended/build/sdk/qtopiacore/target/include/QtCore/qglobal.h:58, from /opt/QtExtended/build/sdk/qtopiacore/target/include/QtCore/qatomic.h:41, from /opt/QtExtended/build/sdk/qtopiacore/target/include/QtCore/qvariant.h:41, from /opt/QtExtended/build/sdk/qtopiacore/target/include/QtCore/QVariant:1, from /opt/QtExtended/build/myapps/example/.uic/ui_examplebase.h:13: /opt/QtExtended/build/sdk/qtopiacore/target/include/QtCore/qconfig.h:2:66: error: /opt/QtExtended/build/sdk/sdk/qtopiacore/qconfig-qpe.h: No such file or directory
edit /opt/QtExtended/build/sdk/qtopiacore/target/include/QtCore/qconfig.h and remove one /sdk/ from /opt/QtExtended/build/sdk/sdk/qtopiacore/qconfig-qpe.h at the top of the file.
A better solution which will work for building packages too is to symbolic link the second sdk to the first...
cd $QPEDIR/sdk ln -s ../sdk sdk
Branches and Forks
There are various other branches and forks of qte/qtei that fix bugs or other things. List taken from http://lists.openmoko.org/pipermail/community/2009-April/046492.html
Major Distro Efforts
There are 3 major "distributions" for QtEI: karadogs, Radeks and Franky:
- Karadog runs on 2.6.24 and is behind patches
- Radek (based on karadog) is running on 2.6.28 and behind on
patches
- Franky is running based on Radek (patches included), but no binary
distro, just an install script.
Initial import of QTE 4.4.3 opensource release
QTMoko
QtEI on Debian by Radek.
Karadog
Trac, Releases, sources and semi-official Roadmap by HouYu Li
2010-04-20: web site broken.
Latest and Greatest
Franky Van Liedekerke's branch.
Install script and instructions. Execute the script on the Neo.