← Back to team overview

launchpad-dev team mailing list archive

Immediate plan for Build Farm generic jobs

 

Howdy folks

Next week is UDS, which I am attending, so I won't be spending much time on 
the generic build farm jobs work.

Muharem has been working on a branch to convert the schema (which jml approved 
today) and to change our code that uses it to work with the new schema.  It is 
largely done, and we hope to land it today.

https://code.edge.launchpad.net/~al-maisan/launchpad/bqim-479079

Once it has landed, this opens the door for some Translations and Code work.  
Namely:

 * New tables, BuildPackageBranchJob, BuildPackageRecipeJob and 
BuildTranslationsJob (or similar names as you prefer)
 * Model code for new tables

The new tables should reference the Job table, other than that you are free to 
have whatever data you need for this build job type.  I expect you'll need to 
spend some time working this out.

The model code should implement the interface ISoyuzJob (although this is a 
terrible name, it will be changed) which is declared in 
lib/lp/soyuz/interfaces/soyuzjob.py.

See lib/lp/soyuz/model/buildpackagejob.py for an example of something that 
implements it.

Tim and Danilo, I think you're putting mwh and jtv on these tasks?

Michael N, who is at UDS for the first 2 days, will start the refactoring work 
on IBuilder when he gets back (Hi Michael!).  The current implementation is 
very Soyuz-specific and references Builds and the like.  We need to separate 
it into a basic IBuilder and more specific IPackageBuilder non-model class.  
Once that is done, we can start writing IPackageBranchBuilder etc which will 
deal with the specifics of handing off and receiving jobs of other types 
to/from the build farm.  The underlying IBuilder should be doing most of this 
work and it's up to Michael to figure out how it will work, exactly.

There is one nightmare part to this - the implementation of 
IBuilder.findBuildCandidate().  This is currently a very ugly query that 
decides which job to dispatch next, based on a few criteria about the jobs.  I 
expect it to get to troll-like ugliness by the time we finish and I'm not sure 
how it will work yet, it depends on how Michael re-factors IBuilder and sets 
up an interface that other builders must implement.

See more details here:
https://dev.launchpad.net/Soyuz/Specs/BuilddGeneralisation
which includes the project plan as a Planner attachment.

Cheers
J



Follow ups