Project

General

Profile

Building and distributing framework 1.1.x

These instructions are strictly archival.

Building framework

Framework releases 1.1.x and older all use scons for the build system.

Start by building fw_externals v0_5_0.

Now you can build framework.

Note that scons does an "in source" build.

Only framework 1.1.4 and later will work with fw_externals v0_5_0.

Setup the environment if necessary.
For the purposes of this build, make sure that the PRODUCTS variable only points to <product-dir>.

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

Get the source code

cd $PRODUCTS
wget http://oink.fnal.gov/distro/rlu-externals/rlu-externals-1.1.4-source.tar.gz
tar xzf rlu-externals-1.1.4-source.tar.gz

Build framework

cd $PRODUCTS/framework/v1_1_4
./buildFramework.sh >& log.buildFramework.sh &

Getting other products

Distributions of framework 1.1.x also require geant4, heppdt, and the geant4 "data files".

heppdt

Build HepPDT

cd $PRODUCTS/heppdt/v3_04_01
./buildHepPDT.sh >& log.buildHepPDT.sh &

geant4

Geant4 is built with support for OpenGL and GDML enabled. This means that xerces_c is required.
The build also requires clhep and the GNU Fortran compiler.

Build xerces_c

cd $PRODUCTS/xerces_c/v3_1_1
./buildXerces.sh >& log.buildXerces.sh &

Build geant4

cd $PRODUCTS/geant4/v4_9_3_p02
./buildGeant4.sh >& log.buildGeant4.sh &

Geant4 is declared with qualifiers that specify whether it was built with g77 or gfortran, and also whether OpenGL or GDML is enabled. (This is somewhat historic in nature and may change.) The list of supported flavor-qualifier pairs is below.

"geant4" "v4_9_3_p02" "Linux+2.6-2.3.4" "g77-OpenGL-GDML" "" 
"geant4" "v4_9_3_p02" "Linux64bit+2.6-2.3.4" "g77-OpenGL-GDML" "" 
"geant4" "v4_9_3_p02" "Linux+2.6-2.5" "gfortran-OpenGL-GDML" "" 
"geant4" "v4_9_3_p02" "Linux64bit+2.6-2.5" "gfortran-OpenGL-GDML" "" 

To use geant4 on a Scientific Linux 4.x machine: setup geant4 v4_9_3_p02 -q g77-OpenGL-GDML

To use geant4 on a Scientific Linux 5.x machine: setup geant4 v4_9_3_p02 -q gfortran-OpenGL-GDML

geant4 "data files"

The geant4 "data files" are distributed as separate null-flavored products. Once you've got this far, the simplest way to install them is via upd. A script is provided in the geant4 source code distribution to do this.

$PRODUCTS/geant4/v4_9_3_p02/installGeant4DataFiles.sh

Extra root build

Framework 1.1.4 is built with root v5_18_00f. If you need a newer release of root, root v5_28_00_p02 is included in the distribution. This is a Fermi patch release and requires fftw, libxml2, and python. Python is already part of fw_externals.

Build fftw:

cd $PRODUCTS/fftw/v3_2_2
./buildFFTWnative.sh >& log.buildFFTWnative.sh &

Build libxml2:

cd $PRODUCTS/libxml2/v2_7_8
./buildLibxml2native.sh >& log.buildLibxml2native.sh &

Verify that the necessary rpms are installed on your machine. All rpms under the "required rpm" section must be present. Missing rpms need to be installed by a sysadmin.

$PRODUCTS/root/v5_28_00_p02/checkRpms

Build root:

cd $PRODUCTS/root/v5_28_00_p02
./buildRootNative.sh >& log.buildRootNative.sh &

Distributing framework

Cleanup

Delete any source code tar files you downloaded.

rm -f $PRODUCTS/*.tar.gz

Build the relocateable tar file.

Some definitions used to name the tarball:

  • version: usually written as, for instance, 1.1.4 instead of v1_1_4
  • os: sl4, sl5, etc.
  • architecture: noarch, i686, or x86_64
  • compiler: gcc34, gcc41, gcc45, etc.

For general distribution, we allow people to define their own <product-dir>, so we build the tarball from inside <product-dir>

  • Note that there are two hidden directories, .updfiles and .upsfiles, which need to be included explicitly
  • We find it advantageous to distribute this complete package in two sets of tarballs. One tarball with architecture specfific packages and the other, noarch, tarball with packages which are not architecture dependent.
$PRODUCTS/rlu_scripts/makeRluTar.sh $PRODUCTS <tarfile directory> <sl4|sl4x|sl5|sl5x> [noarch]
  • This script creates rlu-externals-<version>-<os>-<architecture>-<compiler>.tar.gz, containing fftw, framework, geant4, heppdt, libxml2, root, and xerces_c.
  • sl4, sl4x, sl5, and sl5x are shorthand for 32bit Scientific Linux 4, 64bit Scientific Linux 4, 32bit Scientific Linux 5, or 64bit Scientific Linux 5. Choose the option that matches your build machine.
  • The optional noarch directive creates rlu-externals-<version>-noarch.tar.gz, containing rlu_scripts, geant4/<version>/source, g4abla, g4emlow, g4neutron, g4photon,g4radiative, and g4surface.

If you are using a <product-dir> which will have the same name everywhere, you can just tar at that level. However, you may also find it advantageous to distribute this in two pieces.

cd <product-dir>/..
tar czf fw_externals-<version>-<os>-<architecture>-<compiler>.tar.gz <product-dir>

Getting a prebuilt tarball

You can copy and unwind your own tarball wherever you need it.

Tarballs for supported distributions are at http://oink.fnal.gov/distro/rlu-externals/