Version 64 (modified by 13 years ago) ( diff ) | ,
---|
Building the Qt port on MeeGo 1.2 Harmattan with Qt 5
See also Building QtWebKit on Linux and Setting Up Development Environment For N9
This page, as well as the attempt of achieving this build, is work in progress.
Assumptions
- Working Scratchbox setup. Instructions are here: http://www.developer.nokia.com/Community/Wiki/Harmattan:Platform_Guide/Getting_started_with_Harmattan_Platform_SDK/Installing_Harmattan_Platform_SDK
- Running N950/N9 with root, security disabled and scratchbox home directory mounted via NFS
Installing Build Dependencies
Inside Scratchbox:
- Basic build deps, shared between Qt 5/4 and WebKit stuff:
fakeroot apt-get build-dep qt4-x11 libgrob-qtwebkit
(Yes, the libgrob-qtwebkit part is intentional) - Dependencies needed for XCB back-end:
fakeroot apt-get install libxcb1 libxcb1-dev libx11-xcb1 libx11-xcb-dev libxcb-keysyms1 libxcb-keysyms1-dev libxcb-image0 libxcb-image0-dev libxcb-shm0 libxcb-shm0-dev libxcb-icccm1 libxcb-icccm1-dev libxcb-sync0 libxcb-sync0-dev libxcb-xfixes0-dev
- Ensure the render packages are gone:
fakeroot apt-get remove --purge libxcb-render-util0 libxcb-render-util0-dev
Getting the Qt sources
Outside Scratchbox:
git clone git://gitorious.org/qt/qt5.git qt5
cd qt5
- Check out the current qt5 revision used by the bot to run tests:
git checkout 91f83fa33a1cc5a97b17d8e4d25e1bb952006061
- Initialize & Clone the sub-modules needed:
./init-repository --module-subset=qtbase,qtxmlpatterns,qtscript,qtdeclarative
Note: Use the following commands to update from a previous check-out:
cd qt5
git fetch --recurse-submodules
git checkout 91f83fa33a1cc5a97b17d8e4d25e1bb952006061
git submodule update --recursive
If you'd like to clean out everything(!), you can use the following sequence of commands:
cd qt5
git submodule foreach --recursive git clean -fdx
git clean -fdx
./configure ......
Build Instructions for Qt
Note: DO NOT USE SHADOW BUILDS OF QT (MODULES) AT THE MOMENT.
Inside Scratchbox in the qt5
directory:
export -n QTDIR
To unset QTDIR. Or make sure that QTDIR points to your qt5/qtbase directory. ./configure -developer-build -opensource -confirm-license -fast -force-pkg-config -nomake tests -nomake examples -nomake demos -platform linux-g++-maemo
Note the use of the maemo mkspec make
From the toplevel qt5 directory to build all modules in one shot. export PATH=$PWD/qtbase/bin:$PATH
Ensure your PATH is up-to-date to use the qt5 qmake instead of the default one.
Qt5 packages for Harmattan
If you don't want to build Qt5 from scratch you can use a repository with the Qt5 modules required by QtWebKit. Instructions on Qt wiki: http://wiki.qt-project.org/Qt_5_on_Nokia_N9
Build WebKit
perl Tools/Scripts/build-webkit --qt --release --no-3d-canvas --qmakearg="CONFIG+=use_qt_mobile_theme"
Install dependencies on the device
- Some packages are not in the device apt repositories and therefore need to be transfered from scratchbox.
- Execute the following lines inside scratchbox:
fakeroot apt-get -d install libxcb-image0 libxcb-keysyms1 libxcb-icccm1 libxcb-aux0 libxcb-event1 libxcb-property1 mkdir ~/swork/packages && cd ~/swork/packages cp /var/cache/apt/archives/libxcb-image0_* . cp /var/cache/apt/archives/libxcb-keysyms1_* . cp /var/cache/apt/archives/libxcb-icccm1_* . cp /var/cache/apt/archives/libxcb-aux0_* . cp /var/cache/apt/archives/libxcb-event1_* . cp /var/cache/apt/archives/libxcb-property1_* .
- Now ssh to the device and change into your NFS mounted directory to install the previously downloaded packages
cd /your_nfs_mount/swork/packages/ dpkg -i *
- Execute the following lines inside scratchbox:
WebKit snapshot packages for N9
(Almost) Daily snapshots of WebKit are available in the same repository of the Qt5 packages. The package is named 'webkit-snapshot' and the version number indicates the SVN revision that it was built with. The package copies everything from WebKitBuild/Release, except the Source folder, and installs to the same target directory of Qt5, /opt/qt5.
Installation (as root through developer mode "devel-su" command):
apt-get update apt-get install webkit-snapshot