Mer

(SB1 SDK Guide)
(New blueprint.)
Line 1: Line 1:
-
"Mer" is an experimental project, where an attempt of "reconstructing" the Maemo platform is done, based on the proposal on [[Maemo_Reconstructed]]. Mer means ocean in French, "more" in Danish, etc.. New blueprint for discussion can be found at [[Mer_Blueprint_New]].
+
The Mer platform is a Linux distribution for mobile devices based on the Maemo platform from Nokia. Mer goals include:
-
== Roadmap ==
+
*Improving and developing parts of Maemo that are of interest to the Maemo community.
 +
*Making it easier to port existing desktop applications by hildonizing and adjusting them to the tablet form factor.
 +
*Encouraging third party experimentation and development.
 +
*Supporting tablet hardware no longer receiving updated OS software by Nokia.
 +
*Making Maemo a generic platform for all tablet devices, including non-Nokia ones.
 +
*Focusing Maemo community efforts in platform-related areas
-
=== Iteration 1 (done) ===
+
Mer platform development will be done in the open, with public SCM repository, bugtrackers, and Wiki-based blueprint discussion.
-
'''Idea''': Build as much of Maemo trunk we can, adapt to Ubuntu, chaos coding, [http://jaiku.com/channel/reconstructedPOC microdocument through Jaiku], and make it work and run. Name was M-R PoC.
+
We should stop seeing the tablets as strictly under-powered embedded systems, and see them for what they really are: powerful, power-efficient, economical handheld computers.
-
'''Results''': 123MB flash for minimal Ubuntu base system, Xorg omapfb driver, tslib Hildon on top. Possible to do things like:
+
Historically, the Mer platform came from a discussion on [[Maemo_Reconstructed|reconstructing Maemo]] and a desire to make a proof of concept system of the thoughts in this proposal (M-R PoC), which developed into Mer after realization that it was a viable direction of development.
-
* [http://img.photobucket.com/albums/v119/JohnX/hildon-desktop-quicknote-menuxwd.png Hildon Desktop with Quicknote]
+
== Sprints ==
-
* [http://img.photobucket.com/albums/v119/JohnX/hildon-desktop-gqviewxwd.png Hildon Desktop with GQView]
+
-
A choice was made to restart and do things by the book. We originally based on Mojo Handhelds Ubuntu port to ARM.
+
We employ the [[Maemo.org_Sprints|Maemo.org sprints]] method as development method for Mer. That means, get yourself a maemo.org account, and read this document through if you would like to contribute :)
-
=== Iteration 2: Mer Alpha ===
+
Most Mer development talk goes on in #maemo on irc.freenode.net. If you do not have an IRC client, use www.mibbit.com. We currently use https://launchpad.net/m-r for collaboration, but will move to maemo.org eventually. Our current status is that we have a N8x0 image with nm-applet, advanced backlight, load-applet on top of a hildon-desktop using Fremantle components, on top of Xorg and Ubuntu Jaunty. Previous progress can be viewed at http://jaiku.com/channel/reconstructedPOC
-
'''Mer''': Provide a experimental system for Maemo community use, as a playground to try out new technologies and ideas on. Give community a voice in system architecture and continued development of the Maemo platform post Fremantle. Give the community ability to give documented, researched input to the development process of Maemo. Mer should be cross-platform, both for i386, armel, and not rely on running on specific devices.
+
We have fringe projects in 770, Zaurus, x86, Wii ports, and as such, code will be built first on x86 to ensure cross-platform, and then in our cross-compilers.
-
'''Upstream distribution''': Ubuntu 'Jaunty' for ARM and i386. Experiment with VFP/optimized versions (use of hwcap) for libraries that would benefit from it.
+
= Sprint January 2008 and before: Basic installable image =
-
Maemo trunk.
+
-
'''Development process''': Use of [http://launchpad.net/m-r Launchpad]. Everything must be done in bzr branches and published in the m-r project on Launchpad. Use of [http://merbuilder.jaiku.com builders], which only accepts bzr branches and source packages and are primary uploaders to repository. Packages must compile in both i386 and armel ideally.
+
The purpose of this milestone:
 +
* To provide a basic installable firmware image, both through installer and through flashing, for N8x0 tablets.  
 +
* The image must include a basic user interface and ability to connect to Wi-Fi networks.
 +
* To provide a installer and image for 770 tablets.
 +
* To provide initial developer tools so we can start developing for the tablets.
 +
* Begin initial talks with Nokia and maemo.org on how to distribute full firmware images.
 +
* Prepare for next milestone in terms of collaborative technologies.  
-
[http://jaiku.com/channel/reconstructedPOC Microdocumentation] is still done in Jaiku.
+
If you have a task that needs to be done to fullfill the purposes of this milestone, add it to the table below, set it to 'Just standing' status, and with no commit date and owner.  
-
'''Repository''': http://repository.mer.tspre.org/ as primary repository. Mirrors should be added.
+
If you want to take on a task, set the initial commit date, your nickname, and update your progress as you go, and update highlights of your work (including what gets added) as you work on it. Update your activity log each day you've performed something related to Mer.
-
==== Phase 1: Infrastructure setup ====
+
If you encounter any bugs in Maemo platform software while developing for Maemo, report them on bugs.maemo.org , and add the bug number to the sprint bug overview.
-
* Set up launchpad.net project (done).
 
-
* Set up APT repository (done)
 
-
* Set up i386 and armel builders (qemu and or beagleboard), which relies on clean buildd chroots (done)
 
-
Builder works by first attempting to generate a source package from a bzr branch (after getting build dependancies) in a buildd chroot, to make sure the packages are sane. Then it builds i386 and lets this do the binary i386 and binary indep packages. Then it lets the armel builder(s) do their job on compiling the package. This way we have an early warning if a package does not compile at all instead of wasting hours on waiting for armel builder to fail.
+
{| class="wikitable"
 +
| style="background:LightGreen" | Completed
 +
| style="background:LightBlue" | Good progress
 +
| Just standing
 +
| style="background:Orange" | Some help needed!
 +
| style="background:Tomato" | Really stuck/delayed
 +
|}
-
==== Phase 2: Establishing base system ====
+
{| class="wikitable sortable"
 +
|-
 +
! Committed
 +
! Task
 +
! Owner
 +
! %
 +
! Highlights
 +
|- style="background:LightBlue"
 +
| December || [[Task:Community_firmware_image_distribution|Proposal for distribution of firmware images including closed-source bits needed for community editions]] || Stskeeps || 10% || First proposal involving initfs bits proposed through maemo-community.
 +
|- style="background:LightGreen"
 +
| December || Initial imager - script to debootstrap and putting Mer on top of Ubuntu Jaunty minbase (x86, armel) for Mer/x86, Mer/armv5te (770,n8x0) || Stskeeps || 100% || [https://code.launchpad.net/~mer-committers/m-r/imager Provided here]
 +
|- style="background:LightGreen"
 +
| December || Basic hildon-desktop up on Xorg, running with advanced-backlight and load-applet || Stskeeps, johnx, etc. || 100% || In repository
 +
|- style="background:LightGreen"
 +
| December || Initial Scratchbox1 SDK for Mer/armv5te || Stskeeps || 100% || [[#SDK|Provided here]]
 +
|- style="background:LightBlue"
 +
| 2008-15-12 || [[#Mer_Installer|Installer for Mer on Diablo]] || b-man || 70% || [http://trac.tspre.org/meiz Initial versions]
 +
|- style="background:LightGreen"
 +
| 2008-17-12 || cx3110x-umac-module (symlink to umac.ko module || qwerty12 || 100% || Now in repository
 +
|- style="background:LightGreen"
 +
| 2008-17-12 || nokia-n8x0-firmware (symlink to firmwares in initfs) || qwerty12 || 100% || Now in repository
 +
|- style="background:LightGreen"
 +
| 2008-17-12 || hildon-desktop-env with hildon-input-method setup || qwerty12 || 100% || Now in repository
 +
|- style="background:LightGreen"
 +
| January || Diablo kernel that boots from rootfs instead of initfs, and runs /sbin/tablet-init instead of init || qwerty12 || 100% || [http://trac.tspre.org/qwerty12 Provided here]
 +
|- style="background:LightGreen"
 +
| January || Mer logo, (rescue menu) artwork, wallpaper, theme (titan) || wazd, Stskeeps || 100% || Now in repository (mer-omap-fb-splash, mer-rescue-menu, titan), also see [http://tabletui.wordpress.com/2009/01/12/repos-a-la-mer/ here]
 +
|- style="background:LightBlue"
 +
| January || Missing localization strings in Hildon, (#4001) || Stskeeps || 50% ||
 +
|- style="background:LightGreen"
 +
| January || Document how to get packages included in repository || Stskeeps || 100% || [[#Getting_your_package_included_in_the_Repository|provided here]]
 +
|- style=""
 +
| || [[#qemu-eabi_cputransp_for_Scratchbox|qemu-eabi cputransp for Scratchbox]]|| none || 0% ||
 +
|- style=""
 +
| || Fix backspace and enter kills Xorg bug || none || 0% ||
 +
|- style=""
 +
| || Upload new themes to repository (we only have titan and plankton atm) || none || 0% ||
 +
|- style=""
 +
| || Open system sounds (startup chime, touchscreen tap, etc) || none || 0% ||
 +
|- style=""
 +
| || Replacing SDK icons with more modern ones || none || 0% ||
 +
|- style=""
 +
| || Include dsme-tools from Deblet || none || 0% ||
 +
|- style=""
 +
| || Include wifi power saving from Deblet || none || 0% ||
 +
|- style=""
 +
| || Working X-terminal with hildon input method working || none || 0% ||
 +
|}
-
* Create bzr branches for Maemo trunk packages and push them to launchpad.
+
Bug reports in bugzilla discovered through or related to Mer development in this sprint:
-
* Compile these for i386, armel (first glib, then gtk, then .. ending with a full hildon desktop, python-desktop), and builder will upload to repository.
+
-
* Establish which dependancies applications targetting the Maemo platform, use, that are not OSS or dbus wrappers. What are the portability problems of the Maemo platform.
+
-
* Establish system architecture and abstractions (DSME, MCE, HAL, OHM, etc), must take into consideration the cross-platform nature of Mer.
+
-
* Establish where Mer begins and where it ends in terms of what does the generic platform include, and which is platform-specific / vendor-specific.
+
-
* Establish what constitutes stable packages for inclusion into beta/testing
+
-
* Establish what our relation to Maemo is, - Maemo council as governing body?
+
-
* Establish how Maemo packages conflict with desktop elements of upstream. (libgnomevfs, maemo GTK), and how these can work together.
+
-
* Establish how close we are to being like Maemo, by trying to build packages from Extras (mer-extras?)
+
-
* Work on image builders for the following targets:
+
-
** N8x0 tar.gz (compat with N8x0 bootmenu-svn initfs), fully open source
+
-
** N8x0 tar.gz (compat with N8x0 bootmenu-svn initfs), with value adders such as wifi/bluetooth firmware drivers, hald-addon-bme, gps driver, adobe flash, .. other apps, to show the ability of differentation
+
-
** N8x0 jffs2 rootfs (for QEMU-N8x0 emulation)
+
-
** BeagleBoard jffs2 rootfs
+
-
** i386 tar.gz (targeting Intel D945GCLF2 board)
+
-
** 770 tar.gz (compact with bootmenu-svn initfs), installable on RS-MMC.
+
-
==== Phase 3a: User interface ====
+
{{#bugzilla:id=4001,3858,3939,3997
 +
  |columns=id,severity,product,status,resolution,summary,to
 +
}}
-
* Theming (Plankton is one theme, but what other exists that are redistributable)
+
=== Activity log ===
-
* Icon sets (open license, redistributable)
+
-
* Control panels
+
-
* Translations?
+
-
* Systemui (normally seen when charging, or when pressing power button, or when you're locking your screen). Powerlaunch will be used for this.
+
-
* Experimental interactions? TV screen and wiimote?
+
-
* Tech demos: Mer on Beagleboard, netbook, ASUS Eee Top (touch?), N8x0, 770, Pandora, Zaurus, x86+TV screen
+
-
==== Phase 3b: Experimental system use ====
+
16th January
-
* Rescue menu & bootmenu
+
* stskeeps: remade Mer blueprint to fit more into maemo.org processes
-
* Clone-to-SD
+
-
* Unionfs use
+
-
* USB networking, Bluetooth PAN
+
-
* NTP synchronization
+
-
* .. others
+
-
== Appendixes ==
+
= Documentation and tasks =
-
=== Contributing to Mer ===
+
== SDK ==
-
 
+
-
The purpose of Mer is to support future OS development done in the tablet community and to aid in helping Maemo to be more in alignment with standard distributions and serve as an experimental community platform..
+
-
 
+
-
If you'd like to start contributing to Mer in any way:
+
-
 
+
-
* Get a Jaiku account (mail carsten.munk at gmail.com if you want an invite)
+
-
* Join the #reconstructedPOC channel on Jaiku, and microdocument your Mer related activities.
+
-
* Get a launchpad.net account.
+
-
* Ideally, if possible, hang out on #maemo on IRC, irc.freenode.net
+
-
* Participate in getting the blueprints for Mer made as described in Roadmap.
+
-
 
+
-
We are currently in need of:
+
-
 
+
-
* Maemo package porters (help getting the Maemo released source compiling and working in Mer.)
+
-
* People interested in system architecture (initfs, MCE, DSME, etc.)
+
-
* People with other devices than N8x0s that runs Linux that could benefit from Mer. (>= ARMv5t, x86 preferred
+
-
* Someone who can investigate the use of HWCAP, how can some libraries be compiled for ARMv7 and distributed alongside non-ARMv7 libs? What libraries benefit?
+
-
* People with community feel - working out the formalities, procedures for example, how can vendors work with a Mer style distribution?, how does one gain upload rights. Mer Extras or not? Mer PPA?
+
-
* Powerlaunch (powerlaunch.garage.maemo.org) scripters - possibly our systemui
+
-
* People interested in integrating non-hildon apps into hildon - and integrating Mer/Maemo UI parts into other DE's
+
-
* Theme and icon designers (open themes, icons)
+
-
* Launchpad maintainers
+
-
* Repository mirrors
+
-
* .. someone who can make a proper logo.
+
-
 
+
-
.. and more to come. But, please remember. Mer is '''not''':
+
-
 
+
-
* A Maemo competitor - Mer is meant as a proof of concept to research in what directions may be feasible and which may not be, to serve as properly researched and documented community input to the Maemo platform. To be able to show what the Maemo platform is capable of.
+
-
* An Nokia/Maemo-backed effort, - 100% done by tablet enthusiasts
+
-
* Something that is installable here and now
+
-
* Ready for use
+
-
 
+
-
=== Mer Developer Tools ===
+
-
+
-
* A jaunty-i386 chroot, grab debootstrap from http://archive.ubuntu.com/ubuntu/pool/main/d/debootstrap/debootstrap_1.0.10ubuntu1_all.deb and install it and do the following, where /TARGET is a place where you have space for a jaunty base.
+
-
 
+
-
<pre>
+
-
# debootstrap --verbose --components=main,universe,multiverse jaunty /TARGET http://archive.ubuntu.com/ubuntu
+
-
# export LC_ALL=C
+
-
# chroot /TARGET rm /usr/sbin/invoke-rc.d
+
-
# chroot /TARGET rm /sbin/start-stop-daemon
+
-
# chroot /TARGET ln -s /bin/true /usr/sbin/invoke-rc.d
+
-
# chroot /TARGET ln -s /bin/true /sbin/start-stop-daemon
+
-
# chroot /TARGET mount -t proc proc /proc
+
-
# chroot /TARGET mount -t devpts devpts /dev/pts
+
-
# cat > /TARGET/etc/apt/preferences
+
-
Package: *
+
-
Pin: origin repository.mer.tspre.org
+
-
Pin-Priority: 801
+
-
 
+
-
Package: *
+
-
Pin: release a=jaunty
+
-
Pin-Priority: 800
+
-
^D (control-D)
+
-
# cat > /TARGET/etc/apt/sources.list
+
-
deb http://archive.ubuntu.com/ubuntu jaunty main universe multiverse
+
-
deb-src http://archive.ubuntu.com/ubuntu jaunty main universe multiverse
+
-
deb http://repository.mer.tspre.org/ alpha main contrib non-free
+
-
deb-src http://repository.mer.tspre.org/ alpha main contrib non-free
+
-
^D
+
-
# chroot /TARGET apt-get update
+
-
# chroot /TARGET apt-get dist-upgrade
+
-
# chroot /TARGET apt-get install --force-yes -y bzr devscripts subversion build-essential dpkg-dev bzr-svn debhelper
+
-
# chroot /TARGET dpkg-reconfigure dash # Make /bin/sh not be dash.
+
-
# chroot /TARGET # you now have a Mer developer environment for i386.
+
-
</pre>
+
-
 
+
-
=== Guidelines for branching a Maemo package ===
+
-
 
+
-
'''For packages on https://stage.maemo.org/viewcvs.cgi/projects/?root=maemo'''
+
-
 
+
-
* Rule: When we are branching Maemo packages, we branch the tags (released packages). We have to respect the author's choice to release when they think the package is stable enough for release and we should not follow trunk unless it is absolutely needed (and justified in changelog)
+
-
* There might be certain exceptions in repository pre this rule was made, but this should stable out eventually
+
-
* Get bzr, bzr-svn, and run: '''bzr svn-branching-scheme --set https://stage.maemo.org/svn/maemo''' and set it to:
+
-
 
+
-
<pre>
+
-
projects/connectivity/*/tags/*
+
-
projects/connectivity/*/trunk
+
-
projects/connectivity/*/branches/*
+
-
projects/email/*/tags/*
+
-
projects/email/*/trunk
+
-
projects/email/*/branches/*
+
-
projects/haf/trunk/*
+
-
projects/haf/tags/*/*
+
-
projects/haf/branches/*/*
+
-
</pre>
+
-
 
+
-
To branch a Maemo package, example, https://stage.maemo.org/svn/maemo/projects/haf/tags/epeg/0.9.0.005maemo0/
+
-
 
+
-
<pre>
+
-
$ bzr branch https://stage.maemo.org/svn/maemo/projects/haf/tags/epeg/0.9.0.005maemo0/ epeg
+
-
$ cd epeg
+
-
$ cat debian/control # What is the source package called? SOURCE from now on.
+
-
$ bzr push lp:~LAUNCHPADUSERNAME/m-r/SOURCE
+
-
</pre>
+
-
 
+
-
So, a new version comes out of epeg, https://stage.maemo.org/svn/maemo/projects/haf/tags/epeg/0.9.0.005maemo1/
+
-
 
+
-
<pre>
+
-
$ cd epeg
+
-
$ bzr merge https://stage.maemo.org/svn/maemo/projects/haf/tags/epeg/0.9.0.005maemo1/
+
-
$ bzr commit -m "merged upstream changes from 0.9.0.005maemo1"
+
-
$ bzr push # upload changes to launchpad
+
-
</pre>
+
-
 
+
-
'''For packages on http://repository.maemo.org/pool/diablo/'''
+
-
 
+
-
* Retrieve the tar.gz, .diff.gz (if applies), .dsc, and dpkg-source -x *.dsc, source package hereby named SOURCE
+
-
* cd into the unpacked directory
+
-
* bzr init
+
-
* bzr add
+
-
* bzr commit -m "initial commit of <VERSION OF PACKAGE>"
+
-
* bzr push lp:~LAUNCHPADUSERNAME/m-r/SOURCE # upload to launchpad
+
-
 
+
-
=== Porting a Maemo package to Mer ===
+
-
 
+
-
* Follow the branching guidelines above
+
-
* Verify ./configure exists in source package.
+
-
* If not, verify an autogen.sh is mentioned in debian/rules. If it isn't, add NOCONFIGURE=1 ./autogen.sh before the ./configure call.
+
-
* In both cases, verify the source package has autoconf, libtool and automake as build dependancies
+
-
* If you change anything in the package, make sure to edit it in debian/changelog, use "merX" as suffix on versions. where X is the version of your changes. Make sure to document what you did in bzr commit -m "<Message>"
+
-
* When you pull new upstream version, make sure versions are aligned in the changelog (merX on the newest version)
+
-
* Verify it builds using dpkg-buildpackage.
+
-
 
+
-
=== Getting your package included in the Repository ===
+
-
 
+
-
* Make sure it compiles after getting your build dependancies, dpkg-buildpackage.
+
-
* Ideally test both dpkg-buildpackage -S -us -uc, dpkg-buildpackage -b -us -uc, dpkg-buildpackage -B (some packages may not build any arch-dep packages, so that's ok. Microdocument it on Jaiku.)
+
-
* bzr export <source package name> lp:~yourusername/m-r/<source package name> (gives you a checked out version, without metadata)
+
-
* cd <source package name>
+
-
* dpkg-buildpackage -S -us -uc, to generate a source package
+
-
* Upload the resulting source package (*.changes, *.tar.gz, possibly *.diff.gz) to your ~/incoming on the repo server.
+
-
* ssh yourlogin@reposerver /import-new-packages
+
-
 
+
-
(This will add the source package to repository)
+
-
 
+
-
* You need access to merbuilder & repository upload for the following, ask Stskeeps on Jaiku/IRC for this. Or refer on Jaiku to the source package and some may pick it up
+
-
* On http://jaiku.com/channel/merbuilder , write "build <SOURCE PACKAGE NAME>"
+
-
* Monitor progress at http://merbuilder.jaiku.com
+
-
* An LP player notes that it has picked up a package for building at a certain builder
+
-
* A toast means it baked properly on this architecture. And is uploaded to repository.
+
-
* A heart means it built properly on all architectures. And is uploaded to the repository
+
-
* A bomb means it failed to build on an architecture.
+
-
* A shopping wagon means it has noticed your build request and queued it.
+
-
 
+
-
=== Tainted branches on BZR ===
+
-
 
+
-
The following branches on launchpad, under ~carsten-munk/m-r are tainted - as in, it is not possible to sanely bzr merge with new updates from the Maemo SVN repository, due to late discovery of '''bzr svn-branching-scheme'''. If a new version come out or you want to alter the package, please branch off the tags in the repository and upload a branch of your own. The resulting packages are fine, but the uploaded branches are not feasible for distributed work.
+
-
 
+
-
*glib
+
-
*gtk+
+
-
*hildon-1
+
-
*mce-dummy
+
-
*libosso
+
-
*osso-gnome-vfs2
+
-
*sapwood
+
-
*gnome-vfs-filechooser-backend
+
-
*gtkhtml
+
-
*epeg
+
-
*libhildonhelp
+
-
*libhildonmime
+
-
*haf-marketing-release
+
-
*osso-uri-l10n
+
-
*osso-gwconnect
+
-
*hildon-fm-i10n
+
-
*hildon-thumbnail
+
-
*hildon-fm (now OK in ~mer-committers)
+
-
*osso-gnomevfs-extra
+
-
*osso-gwobex
+
-
*osso-af-settings
+
-
 
+
-
=== Draft: System architecture ===
+
-
 
+
-
==== System Init ramdisk / Initfs / etc. ====
+
-
 
+
-
Reference from proposal: http://wiki.maemo.org/Maemo_Reconstructed#Boot_process
+
-
 
+
-
Mer devices will normally after booting kernel, to have a proper "device" feel, have a start up phase and a failsafe, to prevent reboot loops, load device drivers for mounting the actual rootfs, rescue operations, etc.
+
-
 
+
-
The initfs can take multiple forms, - a jffs2, a cpio initrd (http://suse.mirrors.tds.net/pub/projects/loadlin/loadlin-1.6/initrd.txt), and so on.
+
-
 
+
-
The purpose of the initfs is to bring the device and the system to such a state that the actual Mer system can run.
+
-
 
+
-
 
+
-
 
+
-
===== Device State Management Entity =====
+
-
 
+
-
Description based loosely on Nokia's DSME, abstracted away from hardware specifics. Actual implementation may be based on the open source release of DSME when it comes out (hopefully around Fremantle alpha SDK)
+
-
 
+
-
Purpose:
+
-
* Handle pre-HAL/D-BUS/OHM functionality. It is booted up in initfs, as it is the most basic service Mer provides to provide the device feel.
+
-
* Provide a simple communication interface through a unix socket (stream) in initfs.
+
-
* Provide a module interface for loadable shared objects, which can register hooks in communication interface, hook into event loop/timers, etc. Modules should ideally document their interface. Vendors should strive towards generic interfaces, and differ on the implementation/act instead.
+
-
* Module API should be stable but extensible as to make vendor closed-source plugins possible, without harming upgrade possibility.
+
-
 
+
-
Mandatory functionality (in modules possibly):
+
-
* Early system logger, storing reboot/wd reasons
+
-
* Timeout for system startup, if system does not start up, show a message/icon, reboot?
+
-
* Preventing reboot loops
+
-
* Handling "why was the system booted" (bootreason), and providing this information to the OS.
+
-
* Way to make DSME exit gracefully, in case of non-Mer systems replacing DSME
+
-
* Aiding HW/Mer-(self) test (why does my system not boot)
+
-
 
+
-
Potential uses:
+
-
* Hardware watchdog
+
-
* Software watchdog?
+
-
* Process watchdog (does this belong in upstart?)
+
-
* Pre-HAL hardware access (icon+text display?)
+
-
 
+
-
== SB1 SDK Guide ==
+
First, install Fremantle SDK, and add yourself as a user to scratchbox.
First, install Fremantle SDK, and add yourself as a user to scratchbox.
Line 306: Line 131:
* You probably need to get EABI cpu transparency target too
* You probably need to get EABI cpu transparency target too
* 'not safe for cross-compilation' warnings (not true, i think)
* 'not safe for cross-compilation' warnings (not true, i think)
 +
* fakeroot apt-get dist-upgrade is good once in a while to keep up to date.
-
== December tasks ==
+
== Mer Installer ==
-
 
+
-
If you undertake one of these tasks, write your nickname in "Assigned to" and when you committed to this task, and when you're done, mark it as done, and add additional information about task result. When "debian package" without any mention of binary is made, it is meant a source package.
+
-
 
+
-
 
+
-
----
+
-
 
+
-
*Task: Installer for Mer on Diablo
+
-
*Assigned to (and when started and done): b-man, start 2008-12-15
+
-
*Dependancy: none
+
-
*Skillset needed: Shell scripting, debian packaging skills
+
-
*Why: Simple way of letting potential participants try out Mer.
+
-
*Description:
+
Make installer for Maemo/Diablo that does the following:
Make installer for Maemo/Diablo that does the following:
Line 328: Line 142:
* Sets up the bootmenu item for Mer.
* Sets up the bootmenu item for Mer.
-
----
+
== qemu-eabi cputransp for Scratchbox ==
-
 
+
-
*Task: qemu-eabi for scratchbox / Mer ARMEL-SDK
+
-
*Assigned to (and when started and done):
+
-
*Dependancy: none
+
-
*Skillset needed: Debian packaging (basic), Scratchbox (basic), Shell script (very basic)
+
-
*Why: To make python work under armel-sdk.
+
-
*Description:
+
See http://maemogeek.blogspot.com/2007/11/installing-qemu-arm-eabi-patch-into.html
See http://maemogeek.blogspot.com/2007/11/installing-qemu-arm-eabi-patch-into.html
Line 343: Line 150:
removing (sed -i?)
removing (sed -i?)
-
Edit http://wiki.maemo.org/Mer_Blueprint#SB1_SDK_Guide to make instructions use qemu-arm-eabi-sb2 instead, and getting your .deb package.
+
Edit [[#SDK||SDK]] to make instructions use qemu-arm-eabi-sb2 instead, and getting your .deb package.
-
----
+
== Getting your package included in the Repository ==
-
*Task cx3110x-umac-module package
+
* Make sure it compiles after getting your build dependancies, dpkg-buildpackage.
-
*Assigned to (and when started and done): qwerty12 (Started: 17/12/08) (Finished: 17/12/08)
+
* Ideally test both dpkg-buildpackage -S -us -uc, dpkg-buildpackage -b -us -uc, dpkg-buildpackage -B (some packages may not build any arch-dep packages, so that's ok. Microdocument it on Jaiku.)
-
*Dependancy: none
+
* bzr export <source package name> lp:~yourusername/m-r/<source package name> (gives you a checked out version, without metadata)
-
*Skillset needed: Debian packaging (basic)
+
* cd <source package name>
-
*Why: umac.ko is needed for diablo kernels to get wireless.
+
* dpkg-buildpackage -S -us -uc, to generate a source package
-
*Description:
+
* Upload the resulting source package (*.changes, *.tar.gz, possibly *.diff.gz) to your ~/incoming on the repo server.
 +
* ssh yourlogin@reposerver /import-new-packages
-
Make package that symlink /mnt/initfs/lib/modules/2.6.21-omap1/umac.ko to /lib/modules/2.6.21-omap1/umac.ko
+
(This will add the source package to repository)
-
----
+
* You need access to merbuilder & repository upload for the following, ask Stskeeps on Jaiku/IRC for this. Or refer on Jaiku to the source package and some may pick it up
-
 
+
* On http://jaiku.com/channel/merbuilder , write "build <SOURCE PACKAGE NAME>=<package version>"
-
*Task: nokia-n8x0-firmware
+
* Monitor progress at http://merbuilder.jaiku.com
-
*Assigned to (and when started and done): qwerty12 (Started: 17/12/08) (Finished: 17/12/08)
+
* An LP player notes that it has picked up a package for building at a certain builder
-
*Dependancy: none
+
* A toast means it baked properly on this architecture. And is uploaded to repository.
-
*Skillset needed: Debian Packaging (basic)
+
* A heart means it built properly on all architectures. And is uploaded to the repository
-
*Why: a way to bring wifi, bluetooth chip firmware to Mer
+
* A bomb means it failed to build on an architecture.
-
*Description:
+
* A shopping wagon means it has noticed your build request and queued it.
-
 
+
-
Make package that symlinks /mnt/initfs/usr/lib/hotplug/firmware/{3825.arm,3826.arm,bc4fw.bin,omap2420_pa.bin,omap2420_pafmt.bin,omap2420_papub.bin,omap2420_wrap.bin} to /usr/lib/hotplug/firmware/{same}.
+
-
 
+
-
Verify if firmware files in initfs differ on N800, N810, N810W.
+
-
 
+
-
-----
+
-
 
+
-
*Task: hildon-desktop-env with hildon-input-method setup
+
-
*Assigned to (and when started and done): qwerty12 (Started: 17/12/08) (Finished: 17/12/08)
+
-
*Dependancy:
+
-
*Skillset needed: Debian Packaging (basic), shell scripting
+
-
*Why: bringing hildon input method to Mer.
+
-
*Description:
+
-
 
+
-
We already have the hildon-input-method packages in respository, but we need to edit hildon-desktop-env to do the following when installed, and depend on the hildon input framework (+ example vkb) framework. Source is in repository (apt-get source hildon-desktop-env) and on launchpad:
+
-
 
+
-
<pre>
+
-
/etc/gtk-2.0$ cat gtk.immodules # put contents of this in this file.
+
-
"/usr/lib/gtk-2.0/2.10.0/immodules/hildon-im-module.so" "hildon-input-method" "Hildon Input Method" "hildon-input-method-framework" "/usr/share/locale" "*"
+
-
 
+
-
--EOF
+
-
 
+
-
$ hildon-im-recache
+
-
 
+
-
$ gconftool-2 -s /apps/osso/inputmethod/input_method_plugin -t string himExample_vkb
+
-
</pre>
+
-
 
+
-
----
+
-
 
+
-
(template)
+
-
 
+
-
*Task:
+
-
*Assigned to (and when started and done):
+
-
*Dependancy: none
+
-
*Skillset needed:
+
-
*Why:
+
-
*Description:
+
-
 
+
-
 
+
-
-----
+

Revision as of 15:40, 16 January 2009

The Mer platform is a Linux distribution for mobile devices based on the Maemo platform from Nokia. Mer goals include:

  • Improving and developing parts of Maemo that are of interest to the Maemo community.
  • Making it easier to port existing desktop applications by hildonizing and adjusting them to the tablet form factor.
  • Encouraging third party experimentation and development.
  • Supporting tablet hardware no longer receiving updated OS software by Nokia.
  • Making Maemo a generic platform for all tablet devices, including non-Nokia ones.
  • Focusing Maemo community efforts in platform-related areas

Mer platform development will be done in the open, with public SCM repository, bugtrackers, and Wiki-based blueprint discussion.

We should stop seeing the tablets as strictly under-powered embedded systems, and see them for what they really are: powerful, power-efficient, economical handheld computers.

Historically, the Mer platform came from a discussion on reconstructing Maemo and a desire to make a proof of concept system of the thoughts in this proposal (M-R PoC), which developed into Mer after realization that it was a viable direction of development.

Contents

Sprints

We employ the Maemo.org sprints method as development method for Mer. That means, get yourself a maemo.org account, and read this document through if you would like to contribute :)

Most Mer development talk goes on in #maemo on irc.freenode.net. If you do not have an IRC client, use www.mibbit.com. We currently use https://launchpad.net/m-r for collaboration, but will move to maemo.org eventually. Our current status is that we have a N8x0 image with nm-applet, advanced backlight, load-applet on top of a hildon-desktop using Fremantle components, on top of Xorg and Ubuntu Jaunty. Previous progress can be viewed at http://jaiku.com/channel/reconstructedPOC

We have fringe projects in 770, Zaurus, x86, Wii ports, and as such, code will be built first on x86 to ensure cross-platform, and then in our cross-compilers.

Sprint January 2008 and before: Basic installable image

The purpose of this milestone:

  • To provide a basic installable firmware image, both through installer and through flashing, for N8x0 tablets.
  • The image must include a basic user interface and ability to connect to Wi-Fi networks.
  • To provide a installer and image for 770 tablets.
  • To provide initial developer tools so we can start developing for the tablets.
  • Begin initial talks with Nokia and maemo.org on how to distribute full firmware images.
  • Prepare for next milestone in terms of collaborative technologies.

If you have a task that needs to be done to fullfill the purposes of this milestone, add it to the table below, set it to 'Just standing' status, and with no commit date and owner.

If you want to take on a task, set the initial commit date, your nickname, and update your progress as you go, and update highlights of your work (including what gets added) as you work on it. Update your activity log each day you've performed something related to Mer.

If you encounter any bugs in Maemo platform software while developing for Maemo, report them on bugs.maemo.org , and add the bug number to the sprint bug overview.


Completed Good progress Just standing Some help needed! Really stuck/delayed
Committed Task Owner  % Highlights
December Proposal for distribution of firmware images including closed-source bits needed for community editions Stskeeps 10% First proposal involving initfs bits proposed through maemo-community.
December Initial imager - script to debootstrap and putting Mer on top of Ubuntu Jaunty minbase (x86, armel) for Mer/x86, Mer/armv5te (770,n8x0) Stskeeps 100% Provided here
December Basic hildon-desktop up on Xorg, running with advanced-backlight and load-applet Stskeeps, johnx, etc. 100% In repository
December Initial Scratchbox1 SDK for Mer/armv5te Stskeeps 100% Provided here
2008-15-12 Installer for Mer on Diablo b-man 70% Initial versions
2008-17-12 cx3110x-umac-module (symlink to umac.ko module qwerty12 100% Now in repository
2008-17-12 nokia-n8x0-firmware (symlink to firmwares in initfs) qwerty12 100% Now in repository
2008-17-12 hildon-desktop-env with hildon-input-method setup qwerty12 100% Now in repository
January Diablo kernel that boots from rootfs instead of initfs, and runs /sbin/tablet-init instead of init qwerty12 100% Provided here
January Mer logo, (rescue menu) artwork, wallpaper, theme (titan) wazd, Stskeeps 100% Now in repository (mer-omap-fb-splash, mer-rescue-menu, titan), also see here
January Missing localization strings in Hildon, (#4001) Stskeeps 50%
January Document how to get packages included in repository Stskeeps 100% provided here
qemu-eabi cputransp for Scratchbox none 0%
Fix backspace and enter kills Xorg bug none 0%
Upload new themes to repository (we only have titan and plankton atm) none 0%
Open system sounds (startup chime, touchscreen tap, etc) none 0%
Replacing SDK icons with more modern ones none 0%
Include dsme-tools from Deblet none 0%
Include wifi power saving from Deblet none 0%
Working X-terminal with hildon input method working none 0%

Bug reports in bugzilla discovered through or related to Mer development in this sprint:

IDSeverityProductStatusResolutionSummary (4 tasks) Assignee
3858+normalSystem softwareRESOLVEDFIXEDmaemo-launcher build-depends on libhildondesktop-dev, which in turn build-depends on maemo-launcher-devGuillem Jover
3997criticalDevelopment platformRESOLVEDWONTFIXdbus-glib 0.78-0maemo1 causes hildon-desktop to crash in background-manager.hSoumya
4001normalDevelopment platformRESOLVEDWONTFIXMissing en_GB translations for logical names that already existed beforeSoumya
3939+normalDesktop platformRESOLVEDWONTFIXsapwood loops infinitely at malformed requestunassigned

Activity log

16th January

  • stskeeps: remade Mer blueprint to fit more into maemo.org processes

Documentation and tasks

SDK

First, install Fremantle SDK, and add yourself as a user to scratchbox.

As user:

ISSUES:

  • You might have to do export PKG_CONFIG_PATH=/usr/share/pkgconfig:/usr/lib/pkgconfig to get some pkg-config stuff going
  • You might have to set cpu right and such to target armv5el (no vfp)
  • You probably need to get EABI cpu transparency target too
  • 'not safe for cross-compilation' warnings (not true, i think)
  • fakeroot apt-get dist-upgrade is good once in a while to keep up to date.

Mer Installer

Make installer for Maemo/Diablo that does the following:

  • Depends on bootmenu (bootmenu with bootmenu.d item)
  • Allows simple installation (partition my internal/external MMC to 50mb FAT, 128mb swap, rest linux), or advanced (choose my own partition)
  • Partitions, mkfs.ext3's and unpacks a downloaded tar.gz (built by the imager, uploaded to some http.). Should support resume of dls (wget -c?)
  • Sets up the bootmenu item for Mer.

qemu-eabi cputransp for Scratchbox

See http://maemogeek.blogspot.com/2007/11/installing-qemu-arm-eabi-patch-into.html

Make a debian package with this binary (for i386), installing into /scratchbox/devkits/cputransp/bin/qemu-arm-eabi-sb2 and adding 'qemu-arm-eabi-sb2' to /scratchbox/devkits/cputransp/etc/cputransp-methods when installing, and removing when removing (sed -i?)

Edit |SDK to make instructions use qemu-arm-eabi-sb2 instead, and getting your .deb package.

Getting your package included in the Repository

  • Make sure it compiles after getting your build dependancies, dpkg-buildpackage.
  • Ideally test both dpkg-buildpackage -S -us -uc, dpkg-buildpackage -b -us -uc, dpkg-buildpackage -B (some packages may not build any arch-dep packages, so that's ok. Microdocument it on Jaiku.)
  • bzr export

    Invalid language.

    You need to specify a language like this: <source lang="html4strict">...</source>

    Supported languages for syntax highlighting:

    abap, actionscript, actionscript3, ada, apache, applescript, apt_sources, asm, asp, autoit, avisynth, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_mac, caddcl, cadlisp, cfdg, cfm, cil, cmake, cobol, cpp, cpp-qt, csharp, css, d, dcs, delphi, diff, div, dos, dot, eiffel, email, erlang, fo, fortran, freebasic, genero, gettext, glsl, gml, gnuplot, groovy, haskell, hq9plus, html4strict, idl, ini, inno, intercal, io, java, java5, javascript, kixtart, klonec, klonecpp, latex, lisp, locobasic, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, make, matlab, mirc, modula3, mpasm, mxml, mysql, nsis, oberon2, objc, ocaml, ocaml-brief, oobas, oracle11, oracle8, pascal, per, perl, php, php-brief, pic16, pixelbender, plsql, povray, powershell, progress, prolog, properties, providex, python, qbasic, rails, rebol, reg, robots, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, sql, tcl, teraterm, text, thinbasic, tsql, typoscript, vb, vbnet, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xml, xorg_conf, xpp, z80

Retrieved from "http://wiki.maemo.org/Mer"