[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Upstream looks for a proper way to build the packages by itself



Dear mentors,

I'm an uploader of the buildbot and buildbot-slave Debian packages and
a contributor to the buildbot project[1] itself. As you may wonder,
buildbot is a distributed continious integration tool written in
Python. And since this is a continious integration tool, it would be
great if it could support building packages too. In the end it would
be great to make this tool able to build packages for most popular
distros. Buildbot architecture considers all work should be done on
slaves and report the results to master which is great for
multiplatform build process. This experience will also be useful for
other projects willing to use buildbot.

There are two tarballs released from one VCS (buildbot and
buildbot-slave)[3]. In the end each tarball is a source for its Debian
package. Currently I ended with a following scheme which is applied
for every revision:

When all tests have passed on all platforms, tarball for both master
and slave is generated:
(cd master && python setup.py sdist)
(cd slave && python setup.py sdist)

These tarballs are uploaded to master where they are available for
download by HTTP. Then another builder (e.g. prepared Debian squeeze
or some Ubuntu box with buildslave) starts the package building
itself:

1) get debian package sources (I use git-buildpackage) from one of the
repositories[4,5]
2) get the new tarball. this is done in two steps:
  a) get a slightly modified debian/watch file which points to the
right place where we uploaded the tarballs
  b) use uscan along with downloaded watch file to get new version
3) run git-import-orig to get new sources into the git working
directory (we'll get a new version taken from a tarball name which
will appear in all other places in the package)
4) update changelog with git-dch
5) build the package with git-buildpackage
6) upload the package(currently just upload, will possibly use
reprepro and dupload)

This approach is tested and may be observed on my test site [6]. It
allows me to test package building during the same CI process as
development because package will be rebuilt on both upstream VCS
update and debian package source VCS update. However I'm not the first
one willing to perform this so maybe there is a better way to organize
this. Also I'm looking for a scalable in sense of Linux distributions
(or even Windows in future) and I'm not sure how to scale current
approach. It appears I would need a separate repository for every
distro which is not very great I believe.

Thank you for your help in advance.

 [1]: http://buildbot.net
 [2]: http://buildbot.buildbot.net
 [3]: http://trac.buildbot.net/wiki/CuttingReleases
 [4]: https://github.com/jollyroger/debian-buildbot
 [5]: https://github.com/jollyroger/debian-buildbot-slave
 [6]: http://buildbot.homeous.org.ua

-- 
WBR, Andriy Senkovych


Reply to: