wiki:BuildingQt5OnHarmattan

Version 30 (modified by Simon Hausmann, 12 years ago) (diff)

--

Building the Qt port on MeeGo 1.2 Harmattan with Qt 5

See also 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

Build Instructions

  • Install dependencies:
    • 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
  • Apply the combined xinput2/harmattan patches to qtbase: Change to qtbase, download wget -O patch.txt http://paste.kde.org/133597/raw/ and apply with git am -3 patch.txt
  • DO NOT USE SHADOW BUILDS OF QT (MODULES) AT THE MOMENT.
  • Run configure in QtBase: ./configure -nokia-developer -fast -platform unsupported/linux-host-g++ -xplatform linux-g++-maemo -force-pkg-config -nomake tests
  • And build qtbase with make
  • Ensure your PATH is up-to-date: cd qtbase && export PATH=$PWD/bin:$PATH
  • Build QtXmlPatterns, QtDeclarative and QtScript (in that order). Simply run qmake and make in the directories of the modules.
  • 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:
    • Touch Input (xi2) support in Qt 5 for Harmattan (Jocelyn)
    • Input method support in Qt 5 for Harmattan
  • Most obvious WebKit issues:
    • Text is funny mis-rendered in MiniBrowser -touch. (Suspect Qt 5 scaled-text-with-raster-engine bug)
    • MiniBrowser doesn't show any web content on Harmattan (Jocelyn, work in progress with solution/patch)
  • 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)