Development/Building Packages

From Maemo Leste Wiki
Jump to navigationJump to search

Maintenance workflow

Each package in Maemo Leste uses a specific git-based workflow which makes it easy to track history and maintain in an easy way.

Taking the package as an example - a valid repository contains at least two git branches:

  1. master
  2. maemo/ascii

Ideally, the branches should have no difference, but sometimes this may vary. Your git repository should contain your code, and a debian directory - which contains the debian package build logic. The compat level of the package should be no less than 9 and preferably it should use debhelper.

Once you have your package ready and it builds locally on your Maemo Leste VM/device, there are just a couple more things to do to make it ready for building on Jenkins:

The git tag

In debian/changelog you should have your package version. It is very important to have a git tag that reflects this version so Jenkins and jenkins-debian-glue can figure out which revision to build.

Keep in mind that the git tag should only contain the upstream version and no package revisions, for example if we have:

libcal (0.3-2) unstable; urgency=medium

Our git tag would be 0.3, and not 0.3-1

Once tagged, push the tag to git origin.


Your debian directory should contain a file called gbp.conf with the following contents:



Once all this is in place, make sure that you have a maemo/$codename branch containing all this ready and pushed.

How you can build packages

Building a packages is easier than one might think, it requires roughly the following steps:

  1. . Access to a Devuan/Debian system (you can use a VM running Maemo Leste or a Device running Maemo Leste.
  2. . Source code of a package, obtain either via git or apt source <packagename>.
  3. . Build a package using dpkg-buildpackage -uc -b (run from source directory)
  4. . Optionally install build dependencies with apt (dpkg-buildpackage will tell you)

You can now install the package you have just built with dpkg -i somename.deb.

Also see:

Submitting changes

If you make changes to a package, please submit a pull request for the repository of that package, likely:

For now, we will take care of updating tags and branches.

How packages end up in the repository

There are currently two repositories:

The packages in the extras repository are not core, but useful applications nonetheless.

The codenames and an /etc/apt/sources.list file entry would look like the following:

deb ascii main contrib non-free

deb ascii main contrib non-free

Packages in this repository get build by Jenkins, to which a select group of people has access. (Parazyd, Wizzup, Spinal84)

How packages are built using Jenkins

Read only access to the http frontend: (write-access can be granted)

All packages are hosted on and a current list of all the packages in Jenkins can be found here:

Every repository has a branch for each release, for example:

  1. maemo/ascii - main branch for Devuan Ascii target
  2. maemo/ascii-devel - main branch for Devuan Ascii, but possibly with unstable version
  3. maemo/beowulf - main branch for Devuan Beowulf version of the package

See Development/Branches for more information on the usual branches flow.