Using novainst to install the offline software

This describes how to build the NOvA offline software (translated from with appropriate modifications).

  • Quick Start
    For bash
       bash> novasvnurl=svn+ssh://
       bash> svn export $novasvnurl/installation/trunk/novainst/novainst
       bash> ./novainst trunk all

    For tcsh

       tcsh> set novasvnurl=svn+ssh://
       tcsh> svn export $novasvnurl/installation/trunk/novainst/novainst
       tcsh> ./novainst trunk all

  • Automatic installation with novainst

    You can automatically install "trunk" or a frozen release with novainst. If there is a pending upgrade, you can also install that with novainst.

  • Download novainst script

    The novainst script should always be freshly downloaded from our SVN Repository, either from the trunk or a release. If you have a pre-existing one, remove it.

    For example, getting from the trunk:
       svn export svn+ssh://
  • Run novainst

    To download, compile and build everthing, just run:

       shell> ./novainst <release_version> all

    Note that <release_version> can be 'trunk', to get the bleeding edge, or 'upgrade' to try out a pending upgrade. That's it.

    • External packages
      Package Name Package Version Description Used by
      CLHEP Class library for HEP Geant4
      CMake 2.4.6 Cross Platform Make GCCXML
      CMT v1r20p20090520 Configuration Management Tool Everywhere
      CRY 1.5 Cosmic-ray Shower Library Event Generation
      GCCXML 0.9.0_20081130 XML output extension to GCC Reflex Dictionary
      Geant4 Simulation of the passage of particles through matter Simulation
      GENIE 2.5.1 The GENIE Neutrino Monte Carlo Generator Event Generation
      GSL 1.10 GNU Scientific Library Sensitivity calculation using GLoBES
      LHAPDF 5.8.0 Provides unified and easy to use interface to modern PDF sets GENIE
      Libxml2 2.7.3 The XML C parser and toolkit of Gnome GENIE
      Log4cpp 1.0 A library for flexible logging to files, syslog, IDSA and other destinations GENIE
      PostgreSQL 8.4.0 Database toolkit Database
      Pythia6 6.4.12 An event generator for a large number of physics processes GENIE
      Python 2.5.4 An interpreted, interactive, object-oriented, extensible programming language PyROOT
      ROOT 5.2.00c A Data Analysis Framework Almost everywhere
      SQLite 3.6.8 Cross-platform C library that implements a self-contained, embeddable, zero-configuration SQL database engine Python
      Xerces-C 2.8.0 A validating XML parser written in a portable subset of C++ FMWK and novafmwk
  • Test the Installation

    Once you have finished the installation, you can test it as follows (replace "trunk" with the release number if installing a frozen release):

       shell> cd /path/to/your/nova-trunk
       shell> source
       shell> cd novafmwk/novaRelease/cmt
       shell> source
       shell> evd [options]   # EventDisplay
       shell> ana [options]   # 

  • Details and caveats of using novainst
    • Prerequisites
      • Script tools - novainst needs:
        bash : Bourne again shell. It may work on a plain Bourne shell.
        wget or curl: command line download tool.
        build tools : svn, make, compilers, etc (but not CMT, it will provide this).
      • Assumed libraries
        Many basic libraries are assumed to exist and typically do on a "usual" platform or can be trivially installed via native package management tools. They are considered outside the scope of novainst. As they are numerous, this list is not exhaustive:
        libc/libm : needed by everything
        libreadline : needed by PostgreSQL
        X11, OpenGL (MesaGL) : needed by ROOT
        libXp-devel, xorg-x11-xbitmaps : needed by OpenMotif
        libreadline-dev : optional, but useful for Python
        Note: it is common for systems to only have the run time versions of these libraries and be missing the compile time versions. Make sure you have the "-dev" (Debian and related) or "-devel" (RH and related) versions of the package.
    • Required disk space
      A full build will need close to 13GB of disk space available. Make sure you invoke novainst from a directory that has this much available. Removing external/build and external/tarFiles reduced the size to 5.3GB
    • Required time
      Depending on your CPU, network and disk speed you can expect the install to take a minimum of 2-3 hours.
    • Progress
      As it runs, novainst will print terse status messages. To see details run the following in a second window:
         shell> tail -f novainst-recent.log
    • Partial running
      By default, novainst starts from an empty directory and (eventually) gives you a fully built set of packages. It is also possible to do this step wise by replacing the "all" argument with the step you wish to take:
         shell> ./novainst <STEP>

      To see what steps are available run
         shell> ./novainst help
    • Options
      • Projects step rebuilding options
        The default novainst run skips rebuilding if the projects directories exist, such as $SITEROOT/fmwk/fmwkRelease/$CMTCONFIG. This behaviour can be modified by the rebuild options "-r" and "-c" .

        Rebuild options : * -r : dumb rebuilding by removing release/output directories of projects, * -c : attempt at clever rebuilding based on comparisons of the svn last changed revision of project folders, eg $SITEROOT/novafmwk, between novainst project builds.

        For example, a dumb rebuild of all projects (no checkout or externals ):
           shell> ./novainst -r trunk projects

        An update followed by a rebuild of only changed projects:
           shell> ./novainst trunk checkout 
           shell> ./novainst -c trunk projects
      • externals
        NOTE: GDML, OpenMotif, and OpenScientist are optional packages.
    • Environment

      The novainst script is intended to do its job with out you needing to have any special environment. To handle unusual situations it is possible to control its internals by putting shell commands in ~/.novainstrc or in the directory from where novainst is invoked: .novainstrc

      In general you must understand the novainst script to know what to put in these files.  However, some possibilities include:
      • Overriding default compilers
      • Overriding external/ install method

        Note: this feature currently does not work.

    • Trouble Shooting

      If novainst fails to do its job check the file novainst-YYMMDD-HHMMSS.log for any clues, and create a ticket for future reference.

      novainst tries to be [[wikt:idempotent|idempotent]].  As a consequence, once it succeeds in any particular step, that step doesn't need to be redone.  So, if trouble does arise, only bother debugging the step that failed.
      • OpenMotif problems

        OpenMotif may fail to build "wmluitok" with an error about missing symbol "main". If so, make sure "libfl" is installed. This is part of the "flex" package.

        If you got error like this:
        I18List.c:23:28: X11/bitmaps/gray: No such file or directory
        I18List.c: In function `CreateGCs':
        I18List.c:2074: error: `gray_bits' undeclared (first use in this function)
        I18List.c:2074: error: (Each undeclared identifier is reported only once
        I18List.c:2074: error: for each function it appears in.)
        I18List.c:2075: error: `gray_width' undeclared (first use in this function)
        I18List.c:2075: error: `gray_height' undeclared (first use in this function)
        You need the xbitmaps package.
      • OpenScientist problems

        Coin needs OpenGL development libraries and will may fail to find GL/glu.h if they are not installed.
        Debian: install the "libglu1-mesa-dev" package

        The build may fail due to missing "-lXi" missing library
        Debian: install the "libxi-dev" package
      • Geant4 problems

        Geant4 may fail to build if Xaw development files are not installed.
        Debian: install the "libxaw7-dev" (or higher) package.

        Geant4 may fail when there is another version of geant4 installed and G4INCLUDE is defined.
        Fix it with "unset G4INCLUDE", then restart the installation.
    • Mac OSX installation
      As of 31 Oct., the novainst script can successfully install nova on Mac OS X 10.5.8 version.
    • 64 bit Linux
      As of 31 Oct., the novainst script can successfully install nova on 64-bit version of # Scientific Linux Fermi 4.6 & 5.3