wiki:BuildingQt5OnHarmattan

Version 61 (modified by lauro.neto@openbossa.org, 9 years ago) (diff)

Add information about qt5 packages for n9.

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

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 QTDIRTo 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
makeFrom the toplevel qt5 directory to build all modules in one shot.
export PATH=$PWD/qtbase/bin:$PATHEnsure 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. Currently only armel packages are available, built using the weekly hashes.

On scratchbox:

On the device:

  • Run the script http://qtlabs.org.br/~lmoura/install_qt5.sh as root
  • To become root, on a developer-mode enabled device, use "devel-su" on the terminal or through ssh.
  • The script will create a qt5.list file on /etc/apt/sources.list.d/ with the repository line above and install all "qt5-*" packages.
  • Along with the Qt5 packages the repository will provide the missing xcb-util packages, using the scratchbox' ones.

Usage:

  • All modules are installed to /opt/qt5. To use qmlscene and friends, point PATH to /opt/qt5/bin.

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 *