[Buildbot-devel] Splitting slave from master

Dustin J. Mitchell dustin at zmanda.com
Sat Jun 5 19:33:48 UTC 2010


On Sat, Jun 5, 2010 at 11:17 AM, Greg Ward <greg at gerg.ca> wrote:
> Mercurial has two top-level packages, 'mercurial' and 'hgext'.  Works
> just fine.  I know for sure that distutils doesn't care.  Neither does
> Python, nor RPM nor dpkg nor any other software that you're likely to
> encounter.

I shouldn't have used the term "package" - what I'd like is to have
two separate installable, um, "things" (eggs in setuptools' terms):

easy_install buildslave # <--- has very few requirements other than Twisted
easy_install buildbot # <--- has lots of requirements

This has the advantage of making the more common installation
(buildslave) much simpler and faster, and also allows us to test that
more widely - for example, a buildslave will work fine under cygwin,
but apparently pysqlite doesn't work under cygwin so it's impossible
to run a master there.

So that's my plan.  At this point, I'm looking at just making a
master/ and slave/ directory in version control, and putting a
distinct setup.py in each of them.  The package namespaces are
non-overlapping (to keep things simple - I know setuptools supports
namespaces, but I'm wary..): buildslave.* for buildslave stuff and
buildbot.* for buildmaster (so no change in master-side module names).

I'm finishing it up, but the work in progress is here:
  http://github.com/djmitche/buildbot/tree/splitslave

And this is being tracked in bug #880.

I'm still interested in examples of apps that have this kind of split
(client/server, master/slave, lite/full) and use two distinct
"things".

Dustin

-- 
Open Source Storage Engineer
http://www.zmanda.com




More information about the devel mailing list