The diagram below and the description that follows outline the tasks performed on each run of the auto build.
Process diagram

Initialize

  1. The master configuration file (specified with the --config command line option) is processed and used to create the various Perl objects required for the build
  2. An exclusive lock is aquired to prevent multiple instances of the builder running concurrently. If the lock can't be aquired the builder exits silently. This allows a simple crontab entry to run the builder every 5 minutes - it merely exits if its already running.
  3. The priority of the build process is lowered to help ensure that the build machine remains relatively responsive even when under heavy load.
  4. Global environment variables specified in the config file are set to have effect for the remainder of the build run.

Checkout

  1. Initialize each repository with any global configuration such as environment variables, or in the case of Perforce, build the client view.
  2. If the module is new, then checkout the sources. If the module already exists, then update the sources (if required).
  3. If the module was new / changed, then clear out the build cache for that module

Build

  1. Take a snapshot of the virtual install root for the module.
  2. Invoke the control file to perform the build.
  3. Detect any new packages in the various package spool directories
  4. Populate the cache with changed/new files from the virtual install root, and with generated packages.

Output

  1. Copy the generated packages to an output directory, for example, for a web or FTP site.
  2. Save the build log files to an output directory.
  3. Generated HTML status pages listing modules built and their corresponding packages and log files.
  4. Send email alerts to the build maintainer and / or development team upon both success and failure.
  5. Generate ISO images containing a bundle of packages.