To add a job, you need to:
- describe your package in
packages.nix
(e.g. fooFront
)
- add a release to
releases.nix
(e.g. fooFrontUnstable
), referring to fooFront in packages.nix
- 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:
$ cd release-branch/jobs/strategoxt/test
$ ./generate-test.sh fooFrontTrunk
$ ./fetch-inputs.sh
$ nix-build test.nix
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: