ICEDUST dependency requirements ====================================== Aims ---- * To run on a range of operating systems * To provide external packages that it depends on, that would not typically be installed on these operating systems * To keep reasonably up to date and to avoid being stuck with old versions that do not receive bug fixes * To require only free and open source external packages (there may be some restricted packages for optional components, for example hadron event generators) Operating System ---------------- The ICEDUST framework will be primarily developed on a range of Linux distributions. The developers should avoid choices that make it hard to port to other systems, and will try to aid users who wish to use other systems. If users have a specific OS they would like supported, they may need to contribute and provide access to a test machine. A regular testing system will be made to avoid regressions on supported systems. External Requirements --------------------- The framework requires certain common external packages to be installed. These are expected to be installed on the operating system. * A BASH shell * A C and C++ compiler and associated libraries * Python 2 interpreter * Perl 5 interpreter In addition several packages external packages are installed and maintained by the framework. These are referred to as included external packages. We will aim to keep these reasonably up to date. * GSL (GNU Scientific Library) * CLHEP * ROOT * GEANT * MYSQL * MYSQLPYTHON Framework developers should aim to keep their code compatible with a reasonable set of versions of the non included external packages, by not requiring functions that are only available in the newest versions. A suggested set of minimum requirements are based on the packages installed in RHEL/CentOS/Scientific Linux 6 (Released 2011). * BASH 4.2 * GCC 4.4 * Python 2.6 * Perl 5.10 This allows us to take advantage of some newer features in these packages. However the are still RHEL/CentOS/Scientific Linux 5 machines around, which the framework currently supports. It expected that many universities and grid sites will be migrating from 5 to 6 this year, so we should avoid breaking compatibility for a few months. To maintain support for these systems the minimum requirements would be. * BASH 3.1 * GCC 4.1 * Pythoon 2.4 * Perl 5.8 New requirements ---------------- The list of required software will probably grow by a few packages with time. New requirements should be discussed on the software mailing list. Some potential packages are: * xerces-c (for xml) * Qt (graphics toolkit) * Coin3D (3D toolkit) * Dawn and dawn_cut (Geometry visualisation) Notes to aid compatibility -------------------------- * Python shebang Python files should have the header #!/usr/bin/env python2 This will ensure that they will use Python 2 from the unix `PATH` environment. Just specifying `python` will give Python 3 on some systems * Shell scripts #!/bin/sh should only be used in posix compatible scripts as it may point to a minimal shell. If a script uses bash features it should use #!/bin/bash