EasyBuild
From Bioinformatics.Org Wiki
EasyBuild is a tool that allows you to easily deliver Bioinformatics tools (and not only), as long as you can provide a) a compiler, eg. gcc b) Python 2.x (for x>=4) c) environment-modules v3.2.10 or later. The net effect of this is that you get full freedom in the software environment, able to mix-n-match different versions etc.
As visible at http://hpcugent.github.io/easybuild/, EasyBuild is a software build and installation framework written in Python that allows you to install software in a structured, repeatable and robust way. It is motivated by the need for a tool that allows to:
- independently install multiple versions of software side-by-side
- support multiple compilers and libraries for building software and its dependencies
- keep the software build configuration simple
- divert from the standard configure / make / make install with custom procedures (which is often necessary for scientific software)
- use environment modules for dependency resolution and making the software available to users in a transparent way
- keep record of the installation logs
- keep track of installation configuration in version control
Some key properties of EasyBuild:
- installation configuration is done using a (very concise) .eb specification file
- custom behaviour is described in easyblocks; these are Python classes that can be plugged into the EasyBuild framework
- the generation of the module files to easily make the software available to users
- the dependencies for installation are resolved using environment modules and can be automatically installed using the robot feature
- after the installation, the specification files can be sent to a repository for archiving
A notable feature of EasyBuild is the exceptional handling of toolchains; for instance, the goolf toolchain includes Gcc-OpenMPI-OpenBLAS-scaLapack, FFTW. Using goolf, you can build mpiBLAST or R; then you can easily swap goolf with ictce, for deriving Intel builds. Finally, building for accelerators is substantially well structured: goolfc is basically goolf with CUDA; see GROMACS over goolfc!
You can see an example of what an HPC environment would look like, and how complex situations you can manage, over here: http://hpcbios.readthedocs.org/en/latest/HPCBIOS_2012-92.html