summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/mrbayes/package.py
blob: ee3c846408c931b25b58a3e6bac5e27a2ff2882b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)

from spack.package import *


class Mrbayes(AutotoolsPackage):
    """MrBayes is a program for Bayesian inference and model choice across a
    wide range of phylogenetic and evolutionary models. MrBayes uses Markov
    chain Monte Carlo (MCMC) methods to estimate the posterior distribution
    of model parameters."""

    homepage = "http://mrbayes.sourceforge.net"
    url = "https://github.com/NBISweden/MrBayes/releases/download/v3.2.7a/mrbayes-3.2.7a.tar.gz"

    license("GPL-3.0-or-later")

    version("3.2.7a", sha256="1a4670be84e6b968d59382328294db4c8ceb73e0c19c702265deec6f2177815c")
    version("3.2.7", sha256="39d9eb269969b501268d5c27f77687c6eaa2c71ccf15c724e6f330fc405f24b9")

    variant("mpi", default=True, description="Enable MPI parallel support")
    variant("beagle", default=True, description="Enable BEAGLE library for speed benefits")
    variant(
        "readline", default=False, description="Enable readline library, not recommended with MPI"
    )

    depends_on("libbeagle", when="+beagle")
    depends_on("mpi", when="+mpi")
    depends_on("readline", when="+readline")

    def configure_args(self):
        args = []
        if "~beagle" in self.spec:
            args.append("--with-beagle=no")
        else:
            args.append("--with-beagle=%s" % self.spec["libbeagle"].prefix)
        if "+readline" in self.spec:
            args.append("--with-readline=yes")
        else:
            args.append("--with-readline=no")
        if "~mpi" in self.spec:
            args.append("--with-mpi=no")
        else:
            args.append("--with-mpi=yes")
        return args

    def install(self, spec, prefix):
        mkdirp(prefix.bin)
        with working_dir("src"):
            install("mb", prefix.bin)