[[PageOutline]] = Building the Qt port on MeeGo 1.2 Harmattan with Qt 5 = See also [wiki:BuildingQtOnLinux Building QtWebKit on Linux] This page as well as the attempt of achieving this build is work in progress. It's also our TODO list to get there. == Goal == The goal is to get WebKit trunk running on the N9/N950, to a state where it can be developed sensibly. == 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 reset --hard 37ea8e961b8fdaaa1f36758b8ad059b23c013f15}}} * Initialize & Clone the sub-modules needed: {{{./init-repository --module-subset=qtbase,qtxmlpatterns,qtscript,qtdeclarative}}} * Apply the combined xinput2/harmattan patches to qtbase: Change to {{{qtbase}}}, download {{{wget -O patch.txt http://paste.kde.org/133687/raw/}}} and apply with {{{git am -3 patch.txt}}} Note: '''DO NOT USE SHADOW BUILDS OF QT (MODULES) AT THE MOMENT'''. == Build Instructions for Qt == Inside Scratchbox: * Run configure in the qt5 directory: {{{./configure -nokia-developer -fast -platform unsupported/linux-host-g++ -xplatform linux-g++-maemo -force-pkg-config -nomake tests}}} * And run {{{make}}} from the toplevel qt5 directory to build all modules in one shot. * Ensure your PATH is up-to-date: {{{export PATH=$PWD/qtbase/bin:$PATH}}} == Build WebKit == * {{{perl Tools/Scripts/build-webkit -2 --qt --release --no-3d-canvas --makearg="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 * }}} == Current Issues / TODO == If you find any issues that you're working on, just add them below :) * Qt 5 TODOs: * Input method support in Qt 5 for Harmattan * Rewrite MiniBrowser in QML * Figure out "kinetic" scrolling (pending QScroller decision) === Done === * Qt 5 TODOs: * Build issue with the -platform/-xplatform switch and fontconfig/freetype (Simon). * No interaction with page possible when launching MiniBrowser with -touch. Due to broken touch mocking. (Simon) * Text is funny mis-rendered in MiniBrowser -touch. (Fixed, pending review/inclusion in qtbase. Patch at http://paste.kde.org/134605/ ) * Touch Input (xi2) support in Qt 5 for Harmattan (Jocelyn. Fixed in qtbase master) * Most obvious WebKit issues: * MiniBrowser doesn't show any web content on Harmattan (Jocelyn. Fixed in qtbase master)