Marble/PlasmaActiveEnvironment

    From KDE TechBase

    Marble Touch supports both the Qt Components for Meego and the Plasma Components (for touch). This article describes how to setup and run marble-touch for Plasma Active (using plasma components in the touch platform variant).

    Overview

    We'll briefly cover the prerequisites needed -- an installation of Qt 4.7 or later, an installation of the plasma components from KDE 4.9 or later and the setup of environment variables -- and the compilation of Marble. At the time of writing KDE 4.9 was not released yet, so we'll perform a local installation of kdelibs and kde-runtime which in turns brings you the required version of plasma components.

    Qt and other System Libraries

    Make sure to have a development version of Qt 4.7 or later installed. Qt Declarative support must be there. Marble Touch also requires (at runtime) the following declarative extensions of Qt or Qt related packages that you may have to install separately: QtMobility systeminfo, QtWebKit, Qt labs folderlistmodel.

    On a Debianish system, install the following packages:

    sudo aptitude install libqt4-dev libqtwebkit-qmlwebkitplugin libdeclarative-systeminfo libqt4-declarative-folderlistmodel
    

    KDE Libraries and Runtime

    Skip this section if KDE 4.9 is installed on your system.

    Please refer to the KDE development articles for details. In short, clone both kdelibs and kde-runtime

    git clone git://anongit.kde.org/kdelibs.git
    git clone git://anongit.kde.org/kde-runtime
    

    and install them using the same CMAKE_INSTALL_PREFIX. Let's assume this is /home/me/kde49. Check your installation by verifying that lib/kde4/imports/org/kde/plasma/components/qmldir exists in /home/me/kde49.

    Now setup your environment as follows:

    export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/home/me/kde49/lib
    export QML_IMPORT_PATH=${QML_IMPORT_PATH}:/home/me/kde49/lib/kde4/imports
    export KDE_PLASMA_COMPONENTS_PLATFORM=touch
    

    Marble (Touch)

    Like before I'll keep the description brief and ask you to refer to other articles for details.

    Get a recent copy of Marble from git master. Note that when setting it up for compilation you can compile either the KDE or the Qt only version. There'll be no difference; in doubt choose the -DQTONLY=TRUE variant.

    There's one important step now: Execute the script switch.bash to toggle between MeeGo and Plasma Components. Since MeeGo are default, you have to execute it once. When you do changes to the code which you plan to commit, switch back to MeeGo before committing them. With that in mind, switch to Plasma Components now:

    tools/qt-components/switch.bash plasma
    

    You can check what the script did using git diff. If you want to go back, just execute tools/qt-components/switch.bash meego.

    If you compile Marble now and install it to a local directory (let's say /home/me/marble, you need to alter your environment further:

    export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/home/me/marble/lib
    export QML_IMPORT_PATH=${QML_IMPORT_PATH}:/home/me/marble/lib/marble/plugins
    

    Finally you can start /home/me/marble/bin/marble-touch.

    It's easy to forget one or the other dependency or setup the environment in the wrong way, leading to marble-touch refusing to start. Here's a checklist:

    • Install the declarative packages mentioned in the sections above
    • Setup the LD_LIBRARY_PATH variable to include (colon separated) the KDE lib/ directory and Marble's lib/ directory.
    • Setup the QML_IMPORT_PATH variable to include (colon separated) the KDE lib/kde4/imports directory and Marble's lib/marble/plugins directory.
    Tip
    Set the QML_IMPORT_TRACE environment variable to 1 as a handy tool to debug qml import path issues