Preparing for Development
Development Libraries

Introduction
Moblin Image Creator allows you to install groups of related, bundled packages, called "functional sets" (fsets), onto your target. They consist of certain libraries and tools that enable different types of functionalities used for Moblin application development, system configuration, localization, etc. There are also some commonly used libraries and tools that you must install on the target for Moblin application development. This guide describes these and explains when they may be desired or required.

This document assumes that the reader is familiar with the following:
  • Basic Linux knowledge
  • Understanding of Mobile Internet Device (MID)
  • Basic knowledge of Moblin Image Creator
This document is divided into two parts:
  • The first part introduces the fsets in Moblin Image Creator and describes some basic fsets.
  • The second part describes individual packages (libraries and tools) that may be required for Moblin application development.

Functional Sets in Moblin Image Creator

This section discusses how to install functional sets (fsets) to your target image.

Concept
After creating a target using Moblin Image Creator, you can add one or more fsets to the target. A an fset is a bundle of individual packages that add a certain high level of functionality. Some are specifically aimed for development, system configuration, or localization. Some fsets may depend on other fsets. If you choose to install a an fset with dependencies, Moblin Image Creator will automatically install its dependent fsets.

Functional Set Configuration
When using Moblin Image Creator to build images, there are different platform architectures you may select among, based on the physical architecture of your device. For example, the Samsung Q1 Ultra* is currently being built with the McCaslin Low Power Intel Architecture (LPIA). If you select the platform mccaslin-lpia, Moblin Image Creator will allow you to install only the fsets specific to that platform. Some fsets are available to all architectures and some are specific to particular devices.

For each platform, there is detailed information describing the available fsets in the fset configuration file. By reading the file specific to your platform, you can add fsets according to your need. These files can usually be found at /usr/share/pdk/platforms/[chosen-platform]/fsets/base.fset on your workstation. For example, if your target platform is menlow-lpia, the fset configuration file would be located at /usr/share/pdk/platforms/menlow-lpia/fsets/base.fset.

Here is the snippet of the fset named Core, described in base.fset for the platform menlow-lpia:
[Core]
DESC=Fundamental fset that provides a root filesystem that uses the Ubuntu* kernel
PKGS=busybox-initramfs initramfs-tools pm-utils vbetool usplash-theme-ubuntu dosfstools psmisc
DEBUG_PKGS=man-database manpages openssh-client openssh-server
DEPS=ubuntu-kernel|moblin-kernel

In the above snippet,
"[Core]" is the fset name, indicated by the square-bracket deliminators.
"DESC=..." This field is a brief feature description of this fset.
"PKGS=..." This field lists all the packages (libraries and tools) that this fset contains; these packages will be automatically installed by apt or yum (depending on the package manager you are using) when you adds this fset to the target.
"DEBUG_PKGS=..." This field lists those packages that will be installed if selecting "Include Debug Packages (if any)" when adding fsets.
"DEPS=..." This field indicates the fsets that the fset named Core depends on. If these fsets are not added into the target before, they will be added automatically when adding the fset, Core.

Basic Functional Sets
Certain fsets are commonly used, either because they contain the most fundamental packages or they contain a wide variety of packages covering most users' needs. Other fsets are important, because they provide a very specific functionality. The following sections describe the content of these fsets.

Asian-Fonts
This fset adds fonts for viewing websites in Chinese, Japanese, and Korean, such as the Chinese Unicode TrueType Mingti style font and the Un series Korean TrueType fonts. This fset depends on the fset Core, and is available to all the platforms.

Core
This fset is a fundamental fset that provides a basic file-system. Currently, in Moblin Image Creator, this fset is available to all the platforms.

Take the platform menlow-lpia, for example. This fset provides a root file-system that uses Ubuntu kernel, which is provided by the fset Ubuntu-Kernel. The specific packages contained by this fset are described as follows:

Package Name Package Description
busybox-initramfs A simple stand alone shell that provides the basic utilities needed for the initramfs
initramfs-tools Tools to create and boot an initramfs for packaged 2.6 Linux kernel
pm-utils Utilities and scripts for power management in LPIA
vbetool A tool to run real-mode video BIOS code to alter hardware state
usplash-theme-ubuntu Usplash theme for Ubuntu
dosfstools Utilities to create and check MS-DOS FAT file-systems on either hard disks or floppies under Linux
psmisc Utilities that use the proc file-system

Developer-Tools
When developing Moblin applications on the target file-system, it's recommended that you add the fset Developer-Tools to install the required packages for development.

This fset depends on the fset Core, and is available to all the platforms. The specific packages (libraries and tools) contained by this fset is described as follows:

Package Name Package Description
ubuntu-mobile-dev Development environment for Ubuntu Mobile
libtool Generic library support script
autoconf Automatic configure script builder
automake A tool for generating GNU Standards-compliant Makefiles
hildon-desktop-dev Development files for the Hildon Desktop, which is the desktop environment for embedded devices
man An interface to the on-line reference manuals
manpages Manual pages about using a GNU/Linux system
curl A tool used to get files from HTTP, HTTPS or FTP servers
python-dev Header files and a static library for Python*, which is an interactive high-level object-oriented language
dh-make A tool that converts source archives into Debian* package source

Device Configurations
Device Configurations related fsets provide device specific configuration files. These fsets are usually titled as [your device]-Config. Currently, Moblin Image Creator has the Samsung-Q1-Ultra-Config and CrownBeach-Config fsets available to all McCaslin and all Menlow platforms, respectively. Both device configuration fsets depend on the fset Core.

GNOME-Mobile
This fset provides a subset of GNOME components for building mobile Linux stacks. The packages it contains are primarily: mobile X window system-related packages; device drivers; libraries and python bindings of GStreamer*, D-Bus, GTK, etc; telepathy-related packages; GNOME menus; and icon theme-related packages.

This fset depends on the device configurations fset. For example, on the platform menlow-lpia, this fset depends on the fset CrownBeach-Config. The fset is available to all the platforms with only slight differences. The fset for menlow-lpia platform series contains additional packages listed as follows:

Package Name Package Description
libdrm2 The library provides userspace interface to kernel DRM services
xf86-video-psb / xserver-xorg-video-psb 2D graphics driver for Poulsbo

Full Mobile Stacks with or without Proprietary
The full mobile stacks-related fsets put the fundamental fsets together, including Core, device configurations fsets, etc. They include all of the components needed to load X, Hildon, and boot a mobile device to the Home Screen. Thus, for convenience, it is recommended to add such fsets into the target so as to install all the fundamental fsets for most users' needs.

The difference between the full mobile stack with proprietary and the full mobile stack [without proprietary], is the former contains an additional package that is used to download and install the Adobe Flash* Player plug-in for Netscape or Mozilla-based browsers.

The full mobile stack fsets are usually titled as [your device]-Full-Mobile-Stack or [your device]-Full-Mobile-Stack-with-Proprietary. Currently, Moblin Image Creator has the following fsets available to different platforms: Samsung-Full-Mobile-Stack, Samsung-Full-Mobile-Stack-with-Proprietary, CrownBeach-Full-Mobile-Stack, CrownBeach-Full-Mobile-Stack-with-Proprietary, Moblin-CrownBeach-Full-Mobile-Stack, and Moblin-CrownBeach-Full-Mobile-Stack-with-Proprietary.

Packages for Moblin Development
This section further describes some commonly used libraries specifically for Moblin application development. Some are already included by the fset Developer-Tools.

Hildon Libraries
Hildon, the GUI application framework of Maemo*, is based on GTK+, and some other technologies from the GNOME framework. Hildon contains some enhancements to GTK+, making it more suitable for the use on mobile devices. A more detailed description of Hildon can be found here.

Moblin also uses Hildon as an application framework. Here are three major Hildon libraries that you may need to install for Moblin application development:

  • libhildon: This library contains is the widgets collection that can be used by Moblin applications. It provides an enhancement on the standard GTK+ widgets that enables specific mobile functionality and provides richer graphics. This will automatically get installed when adding the fset Developer-Tools.
  • libhildondesktop: This library is the desktop environment for hand-held devices. Features it provides include task navigation, status bar items (such as showing battery/wireless information), and system menu, etc. In Moblin, both "Home" and "Marquee" are developed based on libhildondesktop. This will automatically get installed when adding the fset Developer-Tools.
  • libhildonfm: This library is the Hildon File Management and is based on GNOME VFS. It provides a unified management mechanism to local and remote/internet file management. The Hildon File Management library includes a bunch of easy-to-use, built-in objects, such as standard Hildon file selection/chooser dialog, file container widget, and the ability to query file information and attributes.
You can use apt or yum (depending on the package manager you are using) to install Hildon development files explicitly. For example, when using apt to install the development files of the three major Hildon libraries above, you can run apt-get install libhildon-1-dev libhildondesktop-dev libhildonfm2-dev.

GStreamer* Libraries
GStreamer is a framework for creating streaming media applications. The framework is designed to make it easy to write applications ranging from simple Ogg/Vorbis playback to complex audio (mixing) and video (non-linear editing) processing.

One of the most obvious uses of GStreamer is media player. GStreamer already includes components for building a media player that can support a very wide variety of formats. Developers can also add new codecs and filters by writing a simple plug-in with a clean, generic interface[1].

More documents can be found at http://gstreamer.freedesktop.org/. You can download the GStreamer packages from this website. Also, you can use apt or yum to install GStreamer. For example, when using apt to install Gstreamer Core development files, you can run apt-get install libgstreamer0.10-dev.

Helix* Libraries
Helix* is very similar to GStreamer, which is also a multimedia framework to handle video and audio coding, synchronizing, and other processes. It is cross-platform (Symbian*, Linux*, Windows*, Solaris*, Mac*, etc.), and is sponsored by Real Network Corp. It has many success models (such as media players) on handset devices. Comparing with GStreamer, Helix supports DRM (Digital Rights Management)[2]. More detailed information can be found at http://helixcommunity.org/.

To set up a Helix engine on a Moblin target file-system for development, you can follow the instructions in this document.

D-Bus Related Libraries
D-Bus is a message bus system, that is, a simple way for applications to talk to one another. In addition to interprocess communication, D-Bus helps coordinate the process lifecycle; it makes it simple and reliable to code a "single instance" application or daemon, and to launch applications and daemons on demand when their services are needed[3]. More detailed information can be found at http://www.freedesktop.org/wiki/Software/dbus.

LibOSSO, a wrapper of the D-Bus's low level APIs, is a library all applications designed for Maemo are expected to use. It provides a notification mechanism to applications so they can close gracefully in the event of system shut down or low memory. In addition, LibOSSO conveniently isolates the application from possible implementation changes on D-Bus level.

LibOSSO also provides useful utility functions to handle autosaving and state saving features of the platform, process hardware state and device mode changes and other important events happening in Internet Tablets. It also provides convenient utility wrapper functions to send remote procedure method calls over the D-Bus[4]. You can refer to http://maemo.org/maemo_training_material/maemo4.x/html/maemo_Platform_Development/
Chapter_02_LibOSSO.html
for more detailed information about LibOSSO.

You can use apt or yum to install D-Bus related development files. For example, when using apt to install LibOSSO development files, you can run apt-get install libosso-dev.

Reference Documents
The following documents are used as references in the writing of this document. Please refer to these documents for further details.

  1. GStreamer Introduction - http://gstreamer.freedesktop.org/
  2. Helix Introduction - http://helixcommunity.org/
  3. DBus Introduction - http://www.freedesktop.org/wiki/Software/dbus
  4. Maemo platform training - http://maemo.org/maemo_training_material/maemo4.x/html/maemo_Platform_Development/
    Chapter_02_LibOSSO.html