This is an old revision of the document!


Tinderbox

This article describes the FreeBSD source tinderbox.

The tinderbox ecosystem consists of:

  • A build script, tinderbox that automates checking out a specific version of the FreeBSD src tree and building it
  • A supervisor script, tbmaster, that runs and monitors individual tinderbox instances, logs their output, and mails out failure notices
  • A CGI script, index.cgi, that reads a set of tbmaster logs and presents an easy-to-read HTML summary
  • A set of build servers that continuously test the tip of the most important FreeBSD branches
  • A web server that keeps a complete set of tinderbox logs and displays an up-to-date summary

The tinderbox scripts were developed (and are still maintained) by DagErlingSmørgrav. The original version was a shell script that ran on bento.freebsd.org once a day, after one Alpha-breaking commit too many. It was replaced with the current Perl implementation in early 2003.

All scripts and configuration files are kept in [http://www.freebsd.org/cgi/cvsweb.cgi/projects/tinderbox/ projects/tinderbox/].

This section has not yet been written. See the tinderbox(1) manual page for details.

This section has not yet been written. See the tbmaster(1) manual page for details.

This section has not yet been written.

This section has not yet been written.

The official tinderbox build servers are hosted by [http://www.sentex.ca/ Sentex Data Communications], who also host the [http://www.freebsd.org/projects/netperf/cluster.html FreeBSD netperf cluster].

There are currently three build servers:

  • freebsd-current.sentex.ca: builds HEAD for every tier 1, 2 and 3 platform, currently manages a full run in about five hours.
  • freebsd-stable.sentex.ca: builds RELENG_7 and still-supported 7.x branches for every tier 1 and 2 platform, currently manages a full run in about ten hours.
  • freebsd-legacy.sentex.ca: builds RELENG_5, RELENG_6 and still-supported 5.x and 5.6 release branches for every tier 1 platform, currently manages a full run in about thirteen hours.

The “tiers” used here are not quite the same as those [http://www.freebsd.org/doc/en_US.ISO8859-1/articles/committers-guide/archs.html defined in the Committers' Guide]:

  • Tier 1: amd64, i386/i386, i386/pc98, sparc64/sparc64
  • Tier 2: ia64, powerpc
  • Tier 3: arm, sparc64/sun4v
  • Tier 4: mips, s390

Summaries and logs from the official build servers are made available online at ].

Currently, this site is hosted by DagErlingSmørgrav. The site is set up as follows:

  • A cron job checks the build servers at regular intervals and downloads any new log files using rsync.
  • Apache is set up to use index.cgi as DirectoryIndex.
  • A [http://www.varnish-cache.org/ Varnish] instance in front of Apache ensures that index.cgi does not need to run more than once every two minutes.

Suggested improvements:

  • improve the logic tbmaster uses to extract the error message from the full log to put in the brief log.
  • when a build finishes, keep the source and object tree along with the log file, and filter the log file through a CGI script that adds markup linking every file name to the corresponding file in the source or object tree, and every compiler error or warning with the file and line it references.
  • instead of checking out a separate source tree for each platform, use a single source tree per iteration
  • store results (though perhaps not full logs) in a database
  • implement a better build scheduling algorithm which
    • avoids building branches that haven't changed since the last build
    • prioritizes some branches over others, e.g. security branches over stable branches over head
  • implement a patch-testing service where people with appropriate credentials can submit a patch and schedule a build run with that patch applied
  • tinderbox.1201686598.txt.gz
  • Last modified: 2008/01/30 09:49
  • by DagErlingSmørgrav