Software/TinderboxWiki

Tinderbox

The concept of a tinderbox originated with the Mozilla project, where it is extensively used to continually monitor the state of the development tree on many platforms simultaneously.

It consists of a server and one or more clients. The server maintains the uploaded logs of builds and generates from a database the results of those builds on a constant basis, so a developer can see almost immediately if they have broken a build on some platform by a check-in. It is worth looking at the Mozilla tinderbox and understand all it can do. It may motivate you to help complete setting up tinderbox on freedesktop.org.

The tinderbox allows a developer to quickly:

If the tree did not build on a client, you'll see by the red of its box for a build, and if it's most recently completed build failed, the column will be "flaming": the tree is on fire.

Tinderbox is a set of perl scripts, and runs on Linux, Unix, !OS/X, and Microsoft Windows.

Etiquette

Breaking the build is unfriendly. And the tinderbox comes with an obligation to not break your co-collaborator's builds on other platforms.

Please perform significant check-ins early in the day whenever possible, and watch the tinderbox until you have "green" on all major platforms. It is unfriendly to do check-ins and leave town, or leave the source tree in an unbuildable state for any longer than absolutely necessary. Reverting changes that break builds is good practice if you can't get the problem straightened out in a timely fashion.

Freedesktop.org tinderboxes

New tinderboxes are easy to establish via the admin interface and tinderbox.anholt.net is the current tinderbox being used by the monolithic Xorg distribution testing. The trees currently supported are

Let EricAnholt know if you think a tinderbox would be useful for your project.

CVS access to the tinderclient

You can either use your freedesktop.org account and SSH or use anonymous CVS with:

$ cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/sysadmin login
CVS password: <hit return>
$ cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/sysadmin co tinderclient

Browse CVS with View CVS.

Required software: xorg

Required software: XMonolithic

Required software: cairo

Required software: liboil

Required software: kaffe

Required software: psas

Tinderclient Installation

Installing a client is very easy.

The script will create a directory of the tree's name in whatever directory you are in when you run "run-client", and do a CVS checkout and build of the module specified in the tinderbox itself in a subdirectory of that. Once a day, it is supposed to do a "clobber" build, where the entire directory is deleted and the files checked out fresh, and performs a "make World". Once the initial build is complete, the script we use (confusingly also called !XMonolithic) will do just do a cvs update and another make, rather than a "make -k World".

Since CVS is so broken, the xorg and probably XMonolith trees now always clobber, and never cvs up. You probably want to keep a mirror: start keeping one with rsync, and bug EricAnholt to change your config; especially if you're running multiple clients.

One way to run this is to place them in a detached screen:

 # screen -d -m ./run-client.sh somebody-i386

You can then review and re-attach to them as follows:

 # screen -list
 There is a screen on:
                        20464.pts-5.cl012                (Detached)
 1 Socket in /var/run/screen/S-root.

 # screen -r 20464.pts-5.cl012

Please update your tinderclient scripts regularly when there are changes.

If the build succeeds (it did not detect any lines with "***" in them in the logs), then you get a "green" on that client's timeline.

The To Do list

There are a number of features not yet implemented in freedesktop's tinderbox:

People interested in helping set up all of this would be greatly appreciated; I've filed bugs in bugzilla against tinderbox on these topics to keep track of them. If you want to work on one of them, assign the bug to yourself so we know who is working on them.

Tinderbox version.

This version of tinderbox is based on the tinderbox3 work that Cliff White and Christian Reis have been doing on behalf of OSDL, the Open Source Development labs extending the orginal tinderbox3 work of John Kaiser. Mozilla is still running the original version of tinderbox, and tinderbox 2 is confusingly in Mozilla's CVS, with the most recent documents all about tinderbox 2. It appears Mozilla may eventually convert to tinderbox3, completely skipping tinderbox 2.

Our great thanks for all the help Cliff and Christian have provided and the funding that OSDL provided to them for working on Tinderbox 3.

John Dennis was very helpful getting the client XMonolithic.pm client into better shape.