Overview

The buildit script is a handy way to build and test the system.  It has countless features and options to make building and testing really easy, particularly in a multi-machine environment, where you edit on one machine and build and test on others.  If you really want to get the most of it, take a look at all the options by running:

bin/buildit -h

...or read the script itself.

Examples

Here we just provide a hand full of examples of how it is often used, first for building and secondly for testing (which includes building).  Please add to the list if you have other really useful ways of using it.  In the examples below, we'll use three hypothetical hosts: habanero (your desktop), jalapeno (a remote x86 machine) and chipotle (a remote PowerPC machine).

Building

To build a production image on your desktop, habanero, do the following: 

bin/buildit habanero production

Or equivalently:

bin/buildit localhost production

To build a production image on the remote machine jalapeno, do the following: 

bin/buildit jalapeno production

Cross Platform Building 

To build a production image on the remote PowerPC machine chipotle, do the following: 

bin/buildit chipotle production

Since building on a PowerPC machine can take a long time, you might prefer to build on your x86 machine jalapeno and cross-build to chipotle.  In that case you would just do the following: 

bin/buildit jalapeno -c chipotle production

In each case, buildit figures out the host types by interrogating them and does the right thing (forcing a PPC build on the x86 host jalapeno since you've told it you want a build for chipotle, which it knows is PPC).  Buildit caches the host information, and will prompt you the first time it encounters a new host. 

Full Build Specification 

If you want to specify the build fully, you can do something like this:

bin/buildit jalapeno FastAdaptive MarkSweep

If you want to specify multiple different GCs you could do:

bin/buildit jalapeno FastAdaptive MarkSweep SemiSpace GenMS

which would build all three configurations on jalapeno.

Profiled Builds

Jikes RVM has the capacity to profile the boot image and then re-build an optimized boot image based on the profiles.  This process takes a little longer, but results in measurably faster builds, and so should be used when doing performance testing.  Buildit lets you do this trivially:

bin/buildit jalapeno --profile production

Testing

Jikes RVM currently has a notion of a "test-run", which defines a complete test scenario, including tests and builds.  An example is pre-commit, which runs a small suite of pre-commit tests.  It also has the notion of a "test", which just specifies a particular set of tests, not the full scenario.  An example is dacapo, which just runs the DaCapo test suite (see the testing/tests directory for the available tests).

Running a test-run

To run the pre-commit test-run on your host jalapeno just do:

bin/buildit jalapeno --test-run pre-commit jalapeno

Running a test

To run the dacapo tests against a production on the host jalapeno, do:

bin/buildit jalapeno -t dacapo production

To run the dacapo tests against a FastAdaptive MarkSweep build, on the host jalapeno, do:

bin/buildit jalapeno -t dacapo FastAdaptive MarkSweep

To run the dacapo and SPECjvm98 tests against production on the host jalapeno, do:

bin/buildit jalapeno -t dacapo -t SPECjvm98 production