Builder for Maemo Extras (buildME).

Author: Ed Bartosh
Version: 13

Contents

1. What is it?

It's automatic package building system for Maemo Extras repository based on sbdmock package builder [1].

Typical usage scenario of builder is the following:
  • build Debian source package
  • upload it to builder incoming directory
  • wait for build results and logs
  • if build is OK builder will put result packages into extras-devel repository
  • if build is failed uploader should fix packages and re-upload them for the new build
  • builder sends a short report about the build to a dedicated mailing list
  • detailed logs can be found in results directory

2. How to prepare and upload source packages for build?

Source package can be produced using this command [2]:

dpkg-buildpackage -rfakeroot -sa -S

and signed with [3]:

debsign -k<key_id> <package>.changes

Uploading source packages for builder is similar to uploading to extras and extras-devel repositories [4]. To be able to upload source packages for building uploader must have upload rights to extras repository.

To upload sources to for build uploader should have the following section in /etc/dput.cf [5]:

[chinook-extras-builder]
login = <your_garage_login_name>
fqdn = garage.maemo.org
method = scp
hash = md5
allow_unsigned_uploads = 0
incoming = /var/www/extras-devel/incoming-builder/chinook

[diablo-extras-builder]
login = <your_garage_login_name>
fqdn = garage.maemo.org
method = scp
hash = md5
allow_unsigned_uploads = 0
incoming = /var/www/extras-devel/incoming-builder/diablo

Uploading is done by:

dput chinook-extras-builder *.changes

OR

dput diablo-extras-builder *.changes

NB: After a successful upload dput creates a .upload file. If you try to upload the same set of files, dput will refuse to do that. If you really want to upload it again (e.g. after uploading and have built a build dependency for a particular package), please use '-f' parameter:

dput -f chinook-extras-builder *.changes

OR

dput -f diablo-extras-builder *.changes

3. What happens when packages are uploaded?

The builder picks up packages from the builder queue and produces binaries for all required architectures. Architectures are determined by 'Architecture:' field of the package's debian/control file. For architecture 'any' builds are performed for all supported architectures. For architecture 'all' only one build for fastest architecture is performed. For specific architecture ('i386' and 'armel' at the moment) only one build for specified architecture is performed. Build is done in a clean environment. It means that scratchbox target created from scratch for each build. Only essential build packages and build dependencies specified in package's control file will be installed into target before build. Sbdmock uses packages from SDK and extras-devel repositories to satisfy build dependencies. Build is done using dpkg-buildpackage. Builder produces 2 logs:

root.log  -- information about setting up build target
build.log -- information about the actual build operation

4. What to expect as a result

When build is complete, status information is sent to the 'builds' mailing list [6].

Build results are available in results directory:

https://garage.maemo.org/builder/chinook/<package name and version>/

OR

https://garage.maemo.org/builder/diablo/<package name and version>/

Content of this directory depends on the build status. For successful builds you will find only log files. For failed build you will find the sources that triggered the build (they will be available in 'sources' subdirectory) and any produced binary packages (these will be available in 'results' subdirectory). Short build report is available from summary.log

NOTE: result directory will be rewriten by the builder if package with the same name and version is re-uploaded for the build.

If build is successful packages will be signed by builder and automatically uploaded to extras-devel repository.

5. References

[1]Scratchbox Debian package builder tool: http://bifh.org/wiki/sbdmock
[2]dpkg-buildpackage man page: http://www.penguin-soft.com/penguin/man/1/dpkg-source.html
[3]debsign man page: http://www.penguin-soft.com/penguin/man/1/debsign.html
[4]Maemo Extras Repository: http://maemo.org/community/application-catalog/extras_repository.html
[5]dput man page: http://www.penguin-soft.com/penguin/man/1/dput.html
[6]extras-cauldron-builds: https://garage.maemo.org/mailman/listinfo/extras-cauldron-builds