Extras Repository


This page explains the requirements and the necessary steps to prepare software packages for maemo's extras repository.


Please note that right now there are four different upload possibilities (ie. upload or incoming queues). You should pick the right upload queue depending on the maemo release you would like to submit your package for.

At the time of writing we have the following maemo releases available:

For Nokia 770 developers:

  • gregale (2.2)

For Nokia N800 and N810 developers:

  • bora (3.x)

  • chinook (4.0)
  • sardine (unstable)

  • diablo (4.1)


First of all anyone who would like to upload package(s) to the repository needs an invitation. For this invite one should have a valid account at garage. Only garage administrators can select people and assign the necessary rights to the repository's incoming queue.

On the software side the only requirement is a working Linux computer with tools to create Debian packages and upload them with mainstream dput.

Upload Account

As stated before you need to register garage first. You can email garage admins with your interest to become a contributor to the extras repository. The email with a subject "upload account to extras" should be sent to garage at maemo dot org.

The admins also select from existing garage users, but in order to ensure that you will receive the necessary rights you must have a "proven track record" as a maemo developer. It means that you have been programming and preparing good quality software(s) for maemo. Your packages are installable with the Application Manager and naturally they do not brick one's device after installing :)


Upload only works with RSA SSH keys. Please make sure your SSH key has the type: 'rsa'.

Building and uploading a package

This is the 0.7 version of the workflow.


This workflow is meant for gregale (2.2), bora (3.x) and chinook (4.x) developers. Older releases use older Scratchbox version, hence some commands are different. If you are using older maemo SDK please do consider an update.

For chinook (4.0), diablo (4.1) and later, please use the new workflow using autobuilder!


1. Start maemo SDK: 'scratchbox'

2. Change to SDK_PC target: 'sb-conf select SDK_PC'
* Build the i386 version of the package:

dpkg-buildpackage -rfakeroot -i

TIP: if the output from dpkg-buildpackage contains the warning “dpkg-genchanges: not including original source code in upload” near the end, the *.orig.tar.gz source archive will not be included in your upload. If you have not uploaded a *.orig.tar.gz file in a previous upload, you should pass dpkg-buildpackage a “-sa” option, so that Extras will contain proper source packages. Consult the man page for dpkg-genpackage for further details.

3. Change to SDK_ARM target: sb-conf select SDK_ARM
* Build the ARM version of the package, binary only; no sources (they were built before)

dpkg-buildpackage -rfakeroot -B -i

4. If both versions built successfully, then quit scratchbox

5. Go to the directory where the package was built
TIP: This directory is probably inside the Scratchbox tree, e.g.:


6. Sign the .changes files

debsign -k<key_id> <i386>.changes
debsign -k<key_id> <armel>.changes

7. Make sure you have the necessary modifications in

login = <your_garage_login_name>
fqdn = garage
method = scp
hash = md5
allow_unsigned_uploads = 0
incoming = /var/www/extras/incoming/gregale
login = <your_garage_login_name>
fqdn = garage
method = scp
hash = md5
allow_unsigned_uploads = 0
incoming = /var/www/extras/incoming/bora
login = <your_garage_login_name>
fqdn = garage
method = scp
hash = md5
allow_unsigned_uploads = 0
incoming = /var/www/extras/incoming/chinook
login = <your_garage_login_name>
fqdn = garage
method = scp
hash = md5
allow_unsigned_uploads = 0
incoming = /var/www/extras/incoming/sardine


Host garage 
HostName garage.maemo.org
User <your_garage_login_name>
IdentityFile ~/.ssh/<your_private_ssh_key>


Please use an RSA key for SSH.

8. Upload the ready and signed packages with dput. Please choose the *right upload queue*!

dput mistral-extras *.changes

9. Upon successful upload the prompt will end like this:

Successfully uploaded packages.
Not running dinstall.

10. From this onwards your package is in the hands of the repository admins :)

11. If your upload was accepted then the package(s) will shortly appear in the extras repository, which you can access by apt-get.
Here are the corresponding lines to /etc/apt/sources.list:

#gregale (2.2) extras
deb http://repository.maemo.org/extras/ scirocco free
deb-src http://repository.maemo.org/extras/ scirocco free
#bora (3.x) extras
deb http://repository.maemo.org/extras/ bora free
deb-src http://repository.maemo.org/extras/ bora free
 #chinook (4.0) extras
deb http://repository.maemo.org/extras/ chinook free
deb-src http://repository.maemo.org/extras/ chinook free


Acceptance Procedure

Upon successful upload the system will:

  • first verify that the PGP/GPG signature of the package corresponds to the user's key

  • if the previous check was OK, then comes a light weight sanity check of the package.

    If the package survived these steps then it will be automatically processed and put to the extras repository.

.install Files

Upon successful upload your package(s) will automatically get the .install file(s). These files make possible that any maemo application can be installed on the Internet Tablet by a single click. The .install files are located in the following directories, depending on the maemo release:


If you would like to promote your fresh extras application then use the URL of the .install file. For instance send the URL to the maemo-users mailing list.

The .install files can also be used in the new Application Catalog.