Building and distributing framework 1.1.x

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

tar xzf framework-1.1.4-source.tar.gz

Build framework

cd $PRODUCTS/framework/v1_1_4
./ >& &

Getting other products

You can build a distribution tarball now, but most likely, you'll want a few more products in your distribution.

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


Get the source code

tar xzf heppdt-3.04.01-source.tar.gz

Build HepPDT

cd $PRODUCTS/heppdt/v3_04_01
./ >& &


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. Source for xerces_c is bundled with the geant4 source.

Get the source code

tar xzf geant4-9.3.p02-source.tar.gz

Build xerces_c

cd $PRODUCTS/xerces_c/v3_1_1
./ >& &

Build geant4

cd $PRODUCTS/geant4/v4_9_3_p02
./ >& &

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.


Distributing framework


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.

Note that the version of rlu-externals is independent of the version of framework or any other package.

cd <product-dir>
tar czf ../rlu-externals-<version>-<os>-noarch.tar.gz .updfiles upd g4*
tar czf ../rlu-externals-<version>-<os>-<architecture>-<compiler>.tar.gz setup .upsfiles ups \
            boost clhep cppunit cmake  framework  fw_externals gccxml geant4 heppdt libsigcpp \
            python root scons xerces_c

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, as above.

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