I am looking into implementing either easybuild or spack at my institution. We specialize in genomic pipelines and bioinformatics and I am looking for opinions on which would be a better fit.
I’ve tried both of these but use neither on systems I manage. This response will be relative to build systems like these in general rather than at a specific tool.
In my experience tools that add a meta layer to building software build the easy to build stuff that I don’t need help with really well and the stuff I do need help with, they still require effort and in many cases only add an extra layer of abstraction and complexity to the building. The problem with a lot of software, especially bioinformatics software, is that it is poorly written and the install steps poorly documented, out of date or rapidly changing. An extra layer of abstraction that can also have the same problems doesn’t really help with that.
What has worked well for me is
- Manage software with
- Disk space is cheap, minimize inter-module dependencies by putting deps right into the module (same --prefix) for complex packages.
- Use what works best, e.g. a module which loads anaconda, then having users
source activatefrom a collection of envs can be a timesaver for things that happen to install easily in a conda venv. Ditto for linuxbrew.
- Look for a dockerfile. Note I did NOT say use a container, they are rarely an improvement to any situation. But, the one thing docker has done is convince the container fanbois to write what are effectively executable and tested install instructions. It can be pretty easy to convert a dockerfile to a set of steps to use to just install something.
I installed snp-pipeline very easily with Spack, and it has these dependencies:
Bowtie2, SMALT, SAMtools, Picard, GATK, VarScan, tabix, bgzip, Bcftools, fastq-dump
I never tried Easybuild.