Installing the packages required by the Calice Reconstruction software:
The get_soft Script
The script get_soft.sh can be used to grep all packages
which are needed to compile the calice software. The script contains
a long list with the needed packages, their location, their versions
and check sums (The check sum verification can be disabled by replacing
the check sum by - ). The check sum verification is
a bit fragile.
The script will create one directory LC (can be changed with the option
--prefix [dir_name]. The source packages
will be installed in LC/src, the compiled libraries
and executables will be installed in LC/lib, LC/extern/lib,
LC/autotools/lib, LC/bin, LC/extern/bin,
LC/autotools/bin. The directory LC/src/log
contains information about the installed or to-be-installed packages.
The files with the extension .level give some information
about the compilation/installation progress of a package. The file
contains a simple number with the meaning:
- initial status
- successfully downloaded
- check sum is calculated and it matches the check sum specified in the
get_soft.sh script. A md5 checksum is calculated from the total compound of
all files listed in [name]-[version].files:
checksum=$(cat $(cat [name]-[version].files) | md5sum )
- the package is configured (ready for compilation).
- the compilation was successful.
- the package is installed.
To return to an earlier level it is sufficient to change this number.
For a clean restart, one should also delete the source. It should
be save to interrupt the script at any time and to run it multiple
times. Eventually, a partly downloaded package must be deleted manually.
2.1 Desy Linux
The configure script of CLHEP identifies the compiler kxx and
uses it instead of g++. I suppose that kxx will not produce
code which is binary compatible with g++, i.e. it will be difficult
to link CLHEP to other C++ libraries. Anyway the compilation fails on
DYSS.
Solution: set the environment variable CXX:
CXX=g++ [....]/tools/get_soft.sh --prefix [install path] ... other options ...
2.2 Red Hat 7.3
Red Hat ships with an ancient GNU C/C++ compiler version (2.96) which
may cause some problems. I experienced the following problems:
- During compilation: ``exit(int) not found.''
Solution: add ``#include <stdlib.h> ``
- During compilation: ``std::atoll not found''. Or something similar.
Solution: the function ``atoll'' is defined in the C-header
file ``stdlib.h''. Add the ``#include <stdlib.h>
`` to the complaining source file. You may also have to remove
the compiler switch --ansi.
- During linking: ``undefined versioned symbol name __dynamic_cast@@CXXABI_1.2''
Solution: the libtool which is used to build the shared libraries
is probably trying to link against a library which is compiled by
a different compiler or compiler version (like for example g++ 3.2).
Presumably this problem occurs for packages which use libtool
for compiling and linking. A copy of the libtool script should be
located in the top level directory of the package. You can try to
remove path names from the shell variable (defined in the libtool
script): TODO.