Installing a local copy

There are three stages to installing a local copy of NOvA offline software:

  1. Installing external products - these are the pre-requisites that NOvA soft builds against
  2. Bootstrap NOvA soft - this creates the necessary directory structure and installs the build related tools needed (SRT)
  3. Building and installing NOvA soft

Installing Externals Products (Prerequisites) - Skip if you are on a GPVM node

You firstly need to create a directory in which to install external products:

mkdir -p /path/to/externals
export EXTERNALS=/path/to/externals

We maintain scripts that should install all the necessary externals for a particular release, and a script that is kept up to date to install the latest externals for the development version of NOvA soft.

To download and run this script do (this example is for development, for a specific release replace development with the release name):

svn co svn+ssh://

Bootstrap NOvA offline software

NOvA offline software offers two ways of building it (using CMake or the SRT build system). At present the building of releases and nightly builds of development is carried out using the SRT build system. These instructions, therefore, describe the SRT build method. SRT requires some tools to be downloaded and a specific directory structure to be created. Don't worry - there is a bootstrap script that does this all for you:

cd /path/to/software
chmod +x nova_srt_bootstrap
./nova_srt_bootstrap /path/to/software
source NOVA_BUILD_DIR/srt/

Update the release that you want

Firstly you must download the script that does the heavy lifting:

chmod +x update-release

There are three types of releases that one can "update" and then build:

  1. development - this is the trunk of the repository
  2. SYY_MM_DD / FAYY_MM_DD / CRYY_MM_DD - these are tagged releases, which are static and don't change
  3. ND-Development / ND_Test - these are both branches, they are split off from the trunk, but are under active development

1 release=development

./update-release -rel development

2 release=SYY_MM_DD (or FAYY_MM_DD or CRYY_MM_DD)

Where $release should be replaced with the release you want (for example S15-05-22)

./update-release -rel $release 

3 release=ND-Development (or release=ND_Test)

Important make sure to use the "--branch" option indicating branch

./update-release --branch -rel $release 

The above example is for the development version of NOvA software. For a specific release replace 'development' with 'release name'.

Set up and build a release

Now you are ready to try to build a release. From a fresh terminal you can setup NOvA offline software like so:


Where RELEASE can be development or a tagged release name (i.e. S15-03-31). BUILD can be maxopt or debug (these correspond to the compiler options that optimise for performance or debugging purposes, most people run using maxopt).

Most users find it useful to define the following function in the .bashrc or .bash_profile:

function setup_nova(){



Then users can setup a release as follows (for development maxopt):

setup_nova -r development -b maxopt

Building NOvA software

To compile the code in a release, do not do a simple gmake all in the release directory. This will fail. The novasoft_build was designed to compile packages in the proper order. To build a base release, execute the following:

first setup a release as above

${SRT_PUBLIC_CONTEXT}/SRT_NOVA/scripts/novasoft_build -rel ${RELEASE} -p 17 -failonerror

The environment variable SRT_PUBLIC_CONTEXT is set during the setup_nova stage above. RELEASE should be set to the release that will be built (for example development). The above builds the 'maxopt' version of NOvA software, in order to build the 'debug' version an additional -debug flag needs to be passed:

${SRT_PUBLIC_CONTEXT}/SRT_NOVA/scripts/novasoft_build -rel ${RELEASE} -p 17 -failonerror -debug