Spack is a package management tool designed to support multiple versions and configurations of software on a wide variety of platforms and environments. It was designed for large supercomputing centers, where many users and application teams share common installations of software on clusters with exotic architectures, using libraries that do not have a standard ABI.
For RevBayes, it handles installing and linking the Boost and MPI dependencies for you. It also handles differences in the build process between versions.
You will need to have C++ compiler installed on your computer, along with
python. On OSX, XCode is required.
git clone https://github.com/spack/spack.git cd spack source share/spack/setup-env.sh spack compiler find
spack install revbayes ~mpi spack load revbayes rb
spack install revbayes +mpi spack load revbayes mpirun rb-mpi
spack install revbayes@develop ~mpi spack load revbayes rb
spack install revbayes@develop +mpi spack load revbayes mpirun rb-mpi
You can install older versions by replacing
@develop in the development version commands with
spack install firstname.lastname@example.org ~mpi.
To get a list of available versions run:
spack info revbayes
The error message should have a list of of packages like so:
Matching packages: abe2xnq revbayes@email@example.com arch=linux-fedora31-skylake l6sv4oz revbayes@firstname.lastname@example.org arch=linux-fedora31-skylake
The text before
revbayes in each line is the hash for the package. You can get more information on the difference between the two packages by doing:
spack find --deps /abe2xnq
-- linux-fedora31-skylake / email@example.com --------------------------- revbayes@develop firstname.lastname@example.org email@example.com firstname.lastname@example.org
spack find --deps /l6sv4oz
==> 1 installed package -- linux-fedora31-skylake / email@example.com --------------------------- revbayes@develop firstname.lastname@example.org email@example.com firstname.lastname@example.org email@example.com firstname.lastname@example.org email@example.com firstname.lastname@example.org email@example.com firstname.lastname@example.org email@example.com
The difference here is that l6sv4oz was compiled with mpi support.
We can load it with
spack load /l6sv4oz