Subject: [bug#57135] [PATCH] gnu: Add mrbayes.

From: Ricardo Wurmus <[email-masked]>
Date: Thu, 18 Aug 2022 22:42:33 +0200

Hi Mădălin,

> * gnu/packages/bioinformatics.scm (mrbayes): New variable.

Thanks for the patch.

Unfortunately, there are a few problems.

- you added autoconf and automake, but neither of these is used as the
  git checkout includes a pre-built “configure” script and “Makefile.in”

- we cannot use the “configure” script as is, because the build system
  uses AX_EXT, which unconditionally adds -msse* compiler flags when the
  CPU on the build node supports these features.  This means that we
  cannot build a generic binary.  The build system ignores
  “--disable-sse”, “--disable-avx”, and “--disable-fma” because of
  AX_EXT.

- we cannot rebuild the “configure” script because the bootstrap phase
  fails with an error.  Adding pkg-config to the native inputs does not
  seem to fix this either, so more investigation is needed.

- consider adding openmpi and use --enable-mpi.

- consider shortening the description.  Especially the parts that
  mention proprietary software or trademarks (UNIX and Macintosh, as
  well as NVIDIA) should be removed.

Could you please revise this and send an updated patch?

-- 
Ricardo

diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index fcca9ef115..6ca257245a 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -11269,56 +11269,63 @@ (define-public mrbayes
                 "1c4qg4wd6lhj1if5g6462pk15bhh7v84ys92sp47yih7lrkk2jd6"))))
     (properties `((upstream-name . "MrBayes")))
     (build-system gnu-build-system)
+    (arguments
+     (list
+      #:configure-flags '(list "--enable-sse=no"
+                               "--enable-avx=no"
+                               "--enable-fma=no"
+                               "--with-mpi"
+                               "--without-beagle")
+      #:phases
+      `(modify-phases %standard-phases
+         (add-after 'unpack 'do-not-detect-CPU-features
+           (lambda _
+             (delete-file "configure")
+             (delete-file "aclocal.m4")
+             (substitute* "configure.ac"
+               (("AC_CONFIG_AUX_DIR.*") "")
+               (("AC_CONFIG_MACRO_DIRS.*") "")
+               (("^AX_EXT") "")))))))
+    (inputs
+     (list openmpi))
     (native-inputs
-     (list automake
-           autoconf))
+     (list autoconf autoconf-archive automake pkg-config))
     (home-page "https://github.com/NBISweden/MrBayes/")
     (synopsis "Bayesian inference of phylogeny")
     (description
-     "@code{MrBayes} is a program for Bayesian inference and model choice across
-a wide range of phylogenetic and evolutionary models.  @code{MrBayes} uses @dfn{
-MCMC} (Markov chain Monte Carlo) methods to estimate the posterior distribution
-of model parameters.  Program features include:
+     "@code{MrBayes} is a program for Bayesian inference and model choice
+across a wide range of phylogenetic and evolutionary models.  @code{MrBayes}
+uses @dfn{MCMC} (Markov chain Monte Carlo) methods to estimate the posterior
+distribution of model parameters.  Program features include:
+
 @itemize
-@item
-analysis of nucleotide, amino acid, restriction site, and morphological data;
-@item
-mixing of data types, such as molecular and morphological characters, in a single
-analysis;
-@item
-easy linking and unlinking of parameters across data partitions;
-@item
-multiple evolutionary models, including 4x4, doublet, and codon models for
-nucleotide data and many of the standard rate matrices for amino acid data;
-@item
-estimation of positively selected sites in a fully hierarchical Bayesian framework;
-@item
-full integration of the @code{BEST} algorithms for the multi-species coalescent;
-@item
-estimation of time calibrated (clock) trees using a variety of (strict and)
-relaxed-clock models;
-@item
-support for complex combinations of positive, negative, and backbone constraints
-on topologies;
-@item
-model jumping across the @code{GTR} model space and across fixed rate matrices
-for amino acid data;
-@item
-monitoring of convergence during the analysis, and access to a wide range of
-convergence diagnostics tools after the analysis has finished;
-@item
-rich summaries of posterior samples of branch and node parameters printed to
-majority rule consensus trees in FigTree format;
-@item
-implementation of the stepping-stone method for accurate estimation of model
-likelihoods for Bayesian model choice using Bayes factors;
-@item
-ability to spread jobs over a cluster of computers using @code{MPI} (for
-Macintosh and UNIX environments only);
-@item
-support for the @code{BEAGLE} library, resulting in dramatic speedups for codon
-and amino acid models on compatible hardware (NVIDIA graphics cards);
-@end itemize")
+@item analysis of nucleotide, amino acid, restriction site, and morphological
+  data;
+@item mixing of data types, such as molecular and morphological characters, in
+  a single analysis;
+@item easy linking and unlinking of parameters across data partitions;
+@item multiple evolutionary models, including 4x4, doublet, and codon models
+  for nucleotide data and many of the standard rate matrices for amino acid
+  data;
+@item estimation of positively selected sites in a fully hierarchical Bayesian
+  framework;
+@item full integration of the @code{BEST} algorithms for the multi-species
+  coalescent;
+@item estimation of time calibrated trees using a variety of (strict and)
+  relaxed-clock models;
+@item support for complex combinations of positive, negative, and backbone
+  constraints on topologies;
+@item model jumping across the @code{GTR} model space and across fixed rate
+  matrices for amino acid data;
+@item monitoring of convergence during the analysis, and access to a wide
+  range of convergence diagnostics tools after the analysis has finished;
+@item rich summaries of posterior samples of branch and node parameters
+  printed to majority rule consensus trees in FigTree format;
+@item implementation of the stepping-stone method for accurate estimation of
+  model likelihoods for Bayesian model choice using Bayes factors;
+@item ability to spread jobs over a cluster of computers using @code{MPI}.
+@end itemize
+")
     (license license:gpl3)))
 
 (define-public sjcount