(Build packages required by art) (Build a distributable ups) (Building art externals)
(Building extra packages for the neutrino experiments) (Building extra packages for Mu2e)
(Building CET packages and art)
Building art externals¶
These instructions should be considered obsolete. Please see the download page for the art distribution.external packages needed by ART
|upd||installed by ups build|
|gcc||build or install second|
|boost||eN||debug, opt, or prof||built without boost python libraries|
|clhep||eN||debug, opt, or prof|
|cppunit||eN||debug, opt, or prof|
|fftw||gccXX||debug, opt, or prof||required by root|
|gccxml||gccXX||build requires cmake|
|libsigcpp||eN||debug, opt, or prof|
|libxml2||gccXX||debug, opt, or prof||required by root|
|python||gccXX||required by root|
|sqlite||gccXX||debug, opt, or prof|
|tbb||eN||debug, opt, or prof|
|root||eN, nu:eN, mu2e:eN||debug, opt, or prof||build last|
These directions start from scratch by building EVERYTHING.
Tarballs for supported distributions of art_exernals are at http://oink.fnal.gov/distro/art/
<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 ups.
- Next, we build products which depend only on gcc and cmake.
- Within these sub-groups, products can be built in any order, and in parallel.
- We recommend that you look at the various log files after they are created.
1. Make sure you have ups and cmake installed in your <product-dir>¶
Make sure you have the lastest ups release.
See the list at http://oink.fnal.gov/distro/relocatable-ups/
Make sure you downloaded all the source code.
2. Setup the environment¶
3. Next, build gcc:¶
cd <product_dir>/gcc/<version>/ ./buildGCC.sh >& log.buildGCC &
If building on ubuntu, make sure dejagnu is installed.
Please note that we require that gcc be available as a ups product.
Building gcc takes a long time. If available, you may prefer to download and install a binary tarfile from http://oink.fnal.gov/distro/packages/ For instance:cd <product_dir> curl -O http://oink.fnal.gov/distro/packages/gcc-4.8.1-slf5-x86_64.tar.bz2 tar xf gcc-4.8.1-slf5-x86_64.tar.bz2 rm gcc-4.8.1-slf5-x86_64.tar.bz2
4. Now, build remaining packages with this gcc¶
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 the "basequal" and either debug, opt, or prof
We will refer to this as <extra_qual> in the directions below.
cd <product_dir>/art_externals/<version>/scripts ./buildCore.sh <product_dir> <basequal> <extra_qual> for instance: ./buildCore.sh $PRODUCTS e4 prof
5. Getting root¶
ROOT is a complex product which depends on various other products.
buildCore.sh will do the basic build of root
However, builds of root for nu and mu2e require that you have already built either nu_extras or mu2e_extras
6. Distributing art_externals¶
Verify that ups recognizes all the products¶
- List all the products in <product-dir>
ups list -aK+
Your output might look like this:
"boost" "v1_45_0" "Linux64bit+2.6-2.5" "gcc45" "" "clhep" "v2_1_0_1" "Linux64bit+2.6-2.5" "gcc45" "" "cmake" "v2_6_4" "Linux64bit+2.6-2.5" "" "current" "cppunit" "v1_12_1" "Linux64bit+2.6-2.5" "gcc45" "" "fftw" "v3_2_2" "Linux64bit+2.6-2.5" "gcc45" "" "gcc" "v4_5_1" "Linux64bit+2.6-2.5" "" "" "gccxml" "v0_9_20101128" "Linux64bit+2.6-2.5" "gcc45" "" "libsigcpp" "v2_2_7" "Linux64bit+2.6-2.5" "gcc45" "" "libxml2" "v2_7_8" "Linux64bit+2.6-2.5" "gcc45" "" "python" "v2_4_2b" "Linux64bit+2.6-2.5" "gcc45" "" "root" "v5_28_00a" "Linux64bit+2.6-2.5" "gcc45" "" "upd" "v4_7_4b" "NULL" "" "current" "ups" "v4_9_1" "Linux64bit+2.6-2.5" "" "current"
- List the dependencies of root
ups depend root <version> -q <eN>:<extra_qual>
Your output might look like this:
$ ups depend root v5_34_05 -q e2:prof root v5_34_05 -f Linux64bit+2.6-2.5 -z /archives/fwdev/externals -q e2:prof |__fftw v3_3_2 -f Linux64bit+2.6-2.5 -z /archives/fwdev/externals -q gcc47:prof | |__gcc v4_7_1 -f Linux64bit+2.6-2.5 -z /archives/fwdev/externals |__libxml2 v2_8_0 -f Linux64bit+2.6-2.5 -z /archives/fwdev/externals -q gcc47:prof |__python v2_7_3 -f Linux64bit+2.6-2.5 -z /archives/fwdev/externals -q gcc47
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: sl4, sl5, etc.
- architecture: noarch, i686, or x86_64
- compiler: e2, gcc47, 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
- For art_externals, we put everything in one tarball since the noarch part is very small compared to the architecture specific part.
- Note that <product-dir> may also contain other products. These instructions are just for the products distributed as art_externals.
cd <product_dir>/art_externals/<version> ./tarArtExternals.sh <product_dir> <basequal> <extra_qual>
- This will create <product_dir>/art_externals-<version>-<os>-<architecture>-<basequal>-<extra_qual>.tar.gz
7. Getting a prebuilt tarball¶
- You can copy and unwind your own tarball wherever you need it.
- Tarballs for supported distributions of art_externals are at http://oink.fnal.gov/distro/art/