(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 | ||
cstxsd | |||
g4abla | |||
g4emlow | |||
g4neutron | |||
g4neutronxs | |||
g4photon | |||
g4pii | |||
g4radiative | |||
g4surface | |||
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 | ||
pdfsets | |||
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:
cd $PRODUCTS wget http://oink.fnal.gov/distro/art/nu_externals-<version>-source.tar.gz 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> ./buildXerces.sh <extra_qual> >& log.buildXerces.<extra_qual> &
Build cry¶
cd $PRODUCTS/cry/<version> ./buildCry.sh >& log.buildCry.sh &
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.
cd $PRODUCTS wget http://oink.fnal.gov/distro/packages/cstxsd-<version>-<os>-<platform>.tar.gz tar xzf cstxsd-<version>-<os>-<platform>.tar.gz
Build lhapdf¶
cd $PRODUCTS/lhapdf/<version> ./buildLhaPDF.sh <extra_qual> >& log.buildLhaPDF.<extra_qual> &
Get pdfsets¶
pdfsets contains the LHAPDF data sets.
cd $PRODUCTS/pdfsets/<version> ./getPdfSets.sh
Build pythia¶
cd $PRODUCTS/pythia/<version> ./buildPythia.sh <extra_qual> >& log.buildPythia.<extra_qual> &
Build log4cpp¶
cd $PRODUCTS/log4cpp/<version> ./buildLog4cpp.sh 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> ./buildMysql.sh >& log.buildMysql.sh &
5. Build products depending on python¶
Build postgresql¶
cd $PRODUCTS/postgresql/<version> ./buildPostgres.sh >& log.buildPostgres.sh &
6. Next, Build Geant4¶
Geant4 requires CLHEP (see art_externals) and xerces_c
cd $PRODUCTS/geant4/<version> ./buildGeant4.sh 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 getG4DataSets.sh:
cd $PRODUCTS/geant4/<version> ./getG4DataSets.sh
7. Building root¶
The nu build of root uses pythia, geant4, clhep, fftw, libxml2, mysql_client, postgresql, and python.
cd $PRODUCTS/root/<version> ./buildRoot.sh nu:e2 <extra_qual> >& log.buildRootNova.nu.<extra_qual> &
8. Build GENIE¶
GENIE depends on root, pythia, lhapdf, libxml2, and log4cpp.
cd $PRODUCTS/genie/<version> ./buildGenie.sh 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] ./tarNovaExtras.sh $PRODUCTS
- 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 http://oink.fnal.gov/distro/art/
- To conserve disk space, we strongly recommend deleting your local copy of the tarball after you unwind it.