As part of my daily activities at basysKom on QtWebKit maintenance and development for Nokia devices, it is interesting to keep a track on latest developments circa QtWebKit. There is currently a promising project of a Qt5/WebKit2-based browser called Snowshoe mainly developed by my fellow friends from INdT which is completely open-source. This browser requires latest Qt5 and QtWebKit binaries and thus requires us to have a functional build system environment. There is a guide available on WebKit's wiki (link) which is very helpful but lacks some information about compilation issues found when following the setup steps. So I am basing this guide from that wiki page and I hope that it gets updated soon :)
On this guide it is assumed the following:
- All commands are issued on a Linux console. I am not aware of how this guide would work on other systems.
- All commands are supposed to be issued inside base directory, unless expressely said otherwise (ie. cd <QT5_DIR>).
- You might want to check if you have git and rsync packages installed in your system.
1. Install Qt SDK
In order to build Qt5 and QtWebKit for Nokia N9, you need to set up a cross-compiler. Thankfully, Qt SDK already comes with a working setup. Please download the online installer from Qt Downloads section (link).
NOTE: The offline installer comes with an outdated version of the MADDE target, which can be updated by running the script below and chosing "Update components" when asked:$ ~/QtSDK/SDKMaintenanceTool
2. Directory setup
It is suggested (and actually required by some build scripts) to have a base directory which holds Qt5, Qt Components and WebKit project sources. The suggested base directory can be created by running:
$ mkdir -p ~/swork **NOTE**: You can actually choose another directory name, but so far it is required by some scripts to have at least a symbolic link pointing to *<HOME\_DIR>/swork*.
3. Download convenience scripts
$ git clone https://github.com/resworb/scripts.git browser-scripts
$ wget http://trac.webkit.org/attachment/wiki/SettingUpDevelopmentEnvironmentForN9/rsync-scripts.tar.gz?format=raw $ tar xzf rsync-scripts.tar.gz
4. Download required sources
$ git clone git://gitorious.org/qtwebkit/testfonts.git
4.2. Qt5, QtComponents and WebKit
The script below when successfully run will create ~/swork/qt5, ~/swork/qtcomponents and ~/swork/webkit directories:
$ browser-scripts/clone-sources.sh --no-ssh **NOTE:** You can also manually download sources, but remember to stick with the directory names described above.
5. Pre-build hacks
5.1. Qt5 translations
Qt5 translations are not being properly handled by cross-platform toolchain. This happens mainly because lrelease application is called to generate Qt message files, but since it is an ARMEL binary your system is probably not capable of running it natively (unless you have a misc_runner kernel module properly set, then you can safely skip this step). In this case, you can use lrelease from your system's Qt binaries without any worries.
If you have a Scratchbox environment set, it is suggested for you to stop its service first:
$ sudo service scratchbox-core stop
Now you can manually generate Qt message files by running this:
$ cd ~/swork/qt5/qttranslations/translations $ for file in `ls *ts`; do lrelease $file -qm `echo "$file" | sed 's/ts$/qm/'`; done
5.2. Disable jsondb-client tool
QtJsonDB module from Qt5 contains a tool called jsondb-client, which depends on libedit (not available on MADDE target). It is safe to disable its compilation for now:
$ sed -i 's/jsondb-client//' ~/swork/qt5/qtjsondb/tools/tools.pro
6. Build sources
You can execute the script that will build all sources using cross-compilation setup:
$ browser-scripts/build-sources.sh --cross-compile
If everything went well, you now have the most up-to-date binaries for Qt5/WebKit2 development for Nokia N9. Please have a look at WebKit's wiki for more information about how to update sources after a previous build and information on how to keep files in sync with device. The guide assumes PR1.1 firmware for N9 device, which is already outdated, so I might come up next with updated instructions on how to safely sync files to your PR1.2-enabled device.
That's all for now, I appreciate your comments and feedback!