Buildfarm Configuration

Stratego -- Strategies for Program Transformation
To add a job, you need to:

  1. describe your package in packages.nix (e.g. fooFront)
  2. add a release to releases.nix (e.g. fooFrontUnstable), referring to fooFront in packages.nix
  3. add a job to the buildfarm jobs.nix (e.g. fooFrontTrunk), referring to fooFront in packages.nix

Pointers

Package Descriptions

See the other package descriptions for examples. Important are:

  • packageName (e.g. "foo-front")
  • attrPrefix (e.g. "fooFront")
  • contactEmail
  • notifyAddresses (non-empty list of email addresses)
  • svn, with usually a trunk attribute
  • requires (e.g. [aterm sdf2Bundle strategoxt])
    • Dependencies on other packages that are being built in this buildfarm. The exact package to built against will be determined by the inputs of the build job, which are links to release-info.xml.
  • svnRequires (e.g. requires)
  • buildInputs (e.g. [pkgs.pkgconfig])
    • dependencies from nixpkgs, not being built in this buildfarm
  • svnBuildInputs
    • stuff needed when building from svn, not being built in this buildfarm
  • systemSupported (e.g. systemSupport pkgs commonSystemsSupported)

Make sure that the file is syntactically correct before committing: packages.nix is imported by the jobs configuration. If there is a syntactic problem in packages.nix, then the entire buildfarm will go down. You can use nix-instantiate to check the syntax of packages.nix, or (better) you can evaluate the entire jobs.nix file (see Jobs).

Releases

Just copy one of the examples.

Jobs

This file is somewhat documented. Adding a job without strange dependencies should be fairly easy.

Make sure to check if the job you added is syntactically correct, otherwise the entire buildfarm will go down. For that, instantiate the main jobs.nix file (which is one level up from the strategoxt directory).

$ pwd
/home/martin/wc/supervisor/strategoxt

$ /nix/bin/nix-instantiate ../jobs.nix --eval-only --strict --xml 

You can also test your job. First you have check out a couple of directories:

$ svn co https://svn.cs.uu.nl:12443/repos/trace/release/trunk release
$ svn co https://svn.cs.uu.nl:12443/repos/trace/configurations/trunk/tud/supervisor

After this, you must update the file release/jobs/strategoxt/test/generate-test.sh and make it point to the release directory you checked out. After this, you're ready to start building:

$ cd release/jobs/strategoxt/test
$ ./generate-test.sh fooFrontTrunk
$ ./fetch-inputs.sh
$ nix-build test.nix

where fooFrontTrunk should be substitued with your favourite package.

Configuration

Want something else?

If you don't want to use the system of packages.nix and dependencies on releases produced by the buildfarm, then you can take a look at the Nix jobs: