(Build packages required by art) (Build a distributable ups) (Building art externals)
(Building extra packages for NOvA) (Building extra packages for Mu2e) (Building CET packages and art)

Building extra packages for neutrino experiments

These instructions should be considered obsolete. Please see the download page for the nu distribution.

In addition to the art externals products, the neutrino experiments also use the following products:

Product Qualifier Extra Qualifier Notes
cry gccXX
geant4 e2 debug, opt, or prof
genie e2 debug, opt, or prof
lhapdf e2 debug, opt, or prof
log4cpp e2 debug, opt, or prof
mysql_client e2
postgresql gccXX
pythia gccXX debug, opt, or prof
xerces_c e2 debug, opt, or prof
root nu:e2 debug, opt, or prof the nu build of root requires a number of packages

<product-dir> is the fully qualified path to your external packages directory.

  • The build order is very important. Several products rely on the existence of other products.
  • We start by building those products which have no depencencies except the existence of packages already in art_externals.
  • We recommend that you look at the various log files after they are created.

1. Make sure you have the art externals installed in your <product-dir>

Build a distributable ups
Building art externals

2. Setup the environment

For the purposes of this build, make sure that the PRODUCTS variable only points to <product-dir>.
This variable is used in the build scripts.

source <product-dir>/setup
bash: export PRODUCTS=<product-dir>
tcsh: setenv PRODUCTS <product-dir>

Get and unwind the nova_externals source code tarball:

tar xzf nu_externals-<version>-source.tar.gz

3. build types

There are 3 available build types: opt, debug, and prof.
If you are unsure which to use, start by building for debug.
We have found very little difference in performance between opt and prof,
and therefore recommend building prof (for profile) for increased performance.

You MUST specify either debug, opt, or prof for most of these build scripts.
Exceptions are cry, mysql_client, pdfsets, and postgresql.
We will refer to this as <extra_qual> in the directions below.

4. Now build packages which have no extra dependencies:

Build xerces_c

cd $PRODUCTS/xerces_c/<version>
./ <extra_qual> >& log.buildXerces.<extra_qual> &

Build cry

cd $PRODUCTS/cry/<version>
./ >& &

Get cstxsd

  • From the CodeSynthesis XSD download page:
    "The XSD compiler is a complex software package with many
    dependencies and, on some platforms, a non-trivial build
    procedure. We therefore recommend that you use the precompiled
    binary distributions"
  • We have repackaged CodeSynthesis XSD for SLF5 so far.
tar xzf cstxsd-<version>-<os>-<platform>.tar.gz

Build lhapdf

cd $PRODUCTS/lhapdf/<version>
./ <extra_qual> >& log.buildLhaPDF.<extra_qual> &

Get pdfsets

pdfsets contains the LHAPDF data sets.

cd $PRODUCTS/pdfsets/<version>

Build pythia

cd $PRODUCTS/pythia/<version>
./ <extra_qual> >& log.buildPythia.<extra_qual> &

Build log4cpp

cd $PRODUCTS/log4cpp/<version>
./ gcc46 <extra_qual> >& log.buildLog4cpp.<extra_qual> &
edit bin/log4cpp-config by hand to replace the hard coded path with ${LOG4CPP_FQ_DIR}

Build mysql_client

cd $PRODUCTS/mysql_client/<version>
./ >& &

5. Build products depending on python

Build postgresql

cd $PRODUCTS/postgresql/<version>
./ >& &

6. Next, Build Geant4

Geant4 requires CLHEP (see art_externals) and xerces_c

cd $PRODUCTS/geant4/<version>
./ gcc46 <extra_qual> >& log.buildGeant4.<extra_qual> &

The Geant4 optional data files are installed as separate products which may be used when needed.
The simplest way to install these packages is via upd, using

cd $PRODUCTS/geant4/<version>

7. Building root

The nu build of root uses pythia, geant4, clhep, fftw, libxml2, mysql_client, postgresql, and python.

cd $PRODUCTS/root/<version>
./ nu:e2 <extra_qual> >&<extra_qual> &

8. Build GENIE

GENIE depends on root, pythia, lhapdf, libxml2, and log4cpp.

cd $PRODUCTS/genie/<version>
./ nova <extra_qual> >& log.buildGenie.nova.<extra_qual> &

9. Distributing nova_extras

Verify that ups recognizes all the products

  • List all the products in <product-dir>
ups list -aK+

Build the distributable ups tar file.

  • Some definitions used to name the tarball:
  • version: usually written as, for instance, 0.5.0 instead of v0_5_0
  • os: slf5, slf6, etc.
  • architecture: noarch, i686, or x86_64
  • compiler: gcc47, e2, etc.
  • e2 is gcc 4.7.x with c++11 extensions enabled
  • For general distribution, we allow people to define their own <product-dir>, so we build the tarball from inside <product-dir>
  • We tar the noarch and architecture specific packages separately.
  • Note that <product-dir> will also contain other products. These instructions are just for the extra nu packages.
cd $PRODUCTS/art_externals/<version>[/scripts]
  • This will create $PRODUCTS/nova_extras-<version>-noarc.tar.gz and $PRODUCTS/nova_extras-<version>-<os>-<architecture>-<compiler>.tar.gz

10. Getting a prebuilt tarball

  • You can copy and unwind your own tarball wherever you need it.
  • Tarballs for supported distributions of nova_extras are at
  • To conserve disk space, we strongly recommend deleting your local copy of the tarball after you unwind it.