Difference between revisions of "Development/Building Packages"

From Maemo Leste Wiki
Jump to navigationJump to search
(→‎How you can build packages: Add instruction to help installing build deps automatically)
(→‎How you can build packages: Change order: first install build deps, then build the package)
Line 46: Line 46:
#. Access to a Devuan/Debian system (you can use a [[Virtual_Machine|VM running Maemo Leste]] or a [[:Category:Device|Device running Maemo Leste]].
#. Access to a Devuan/Debian system (you can use a [[Virtual_Machine|VM running Maemo Leste]] or a [[:Category:Device|Device running Maemo Leste]].
#. Source code of a package, obtain either via '''git''' or '''apt source <packagename>'''.
#. Source code of a package, obtain either via '''git''' or '''apt source <packagename>'''.
#. Build a package using '''dpkg-buildpackage -uc -b''' (run from source directory)
#. Install build dependencies (run from source directory):
#. Optionally install build dependencies with '''apt''' (dpkg-buildpackage will tell you). To install build deps automatically:
<code>sudo apt-get build-dep .</code>
<code>sudo apt-get build-dep <PACKAGE_DIR></code>
#. Build a package using '''dpkg-buildpackage -uc -b'''


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

Revision as of 03:56, 4 March 2020

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 https://github.com/maemo-leste/libcal/ 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.

gbp.conf

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

[DEFAULT]

upstream-tag=%(version)s

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. . Install build dependencies (run from source directory):

sudo apt-get build-dep .

  1. . Build a package using dpkg-buildpackage -uc -b

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

Also see: https://wiki.debian.org/HowToPackageForDebian

Submitting changes

If you make changes to a package, please submit a pull request for the repository of that package, likely: https://github.com/maemo-leste/PACKAGENAME

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 https://maedevu.maemo.org/leste ascii main contrib non-free

deb https://maedevu.maemo.org/extras 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: https://phoenix.maemo.org/ (write-access can be granted)

All packages are hosted on https://github.com/maemo-leste and a current list of all the packages in Jenkins can be found here:

https://github.com/maemo-leste/jenkins-integration/blob/master/config.py

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.

Maemo Leste Extras

If you wish to maintain your own package in Maemo Leste, you can apply a package at https://github.com/maemo-leste-extras/bugtracker Have a look at the README in that repository and open a ticket.