Compiling Heron

Heron is currently available for Mac OS X 10.10,
Ubuntu 14.04, and CentOS
7. This guide describes the basics of the
Heron build system. For step-by-step build instructions for a specific platform,
the following guides are available:

Installing Bazel

Heron uses the Bazel build tool. Bazel releases can be found
here
and installation instructions can be found here.

To ensure that Bazel has been installed, run bazel version and check the
version (listed next to Build label in the script’s output) to ensure that you
have Bazel 0.5.4.

Configuring Bazel

There is a Python script that you can run to configure Bazel on supported
platforms:

$ cd /path/to/heron
$ ./bazel_configure.py

Building

Bazel OS Environments

Bazel builds are specific to a given OS. When building you must specify an
OS-specific configuration using the --config flag. The following OS values
are supported:

darwin (Mac OS X)

ubuntu (Ubuntu 14.04)

centos5 (CentOS 5)

For example, on Mac OS X (darwin), the following command will build all
packages:

$ bazel build --config=darwin heron/...

Production release packages include additional performance optimizations
not enabled by default. Enabling these optimizations increases build time.
To enable production optimizations, include the opt flag:

$ bazel build -c opt --config=PLATFORM heron/...

Building All Components

The Bazel build process can produce either executable install scripts or
bundled tars. To build executables or tars for all Heron components at once,
use the following bazel build commands, respectively:

Resulting artifacts can be found in subdirectories below the bazel-bin
directory. The heron-tracker executable, for example, can be found at
bazel-bin/heron/tools/tracker/src/python/heron-tracker.

Building Specific Components

As an alternative to building a full release, you can build Heron executables
for a single Heron component (such as the Heron
Tracker) by passing a target to the bazel
build command. For example, the following command would build the Heron Tracker: